Heuristic Search This page intentionally left blank Heuristic Search Theory and Applications Stefan Edelkamp ă Stefan Schrodl AMSTERDAM ã BOSTON • HEIDELBERG • LONDON NEW YORK • OXFORD • PARIS • SAN DIEGO SAN FRANCISCO • SINGAPORE • SYDNEY • TOKYO Morgan Kaufmann is an imprint of Elsevier Acquiring Editor: Rachel Roumeliotis Development Editor: David Bevans Project Manager: Sarah Binns Designer: Joanne Blank Morgan Kaufmann Publishers is an imprint of Elsevier 225 Wyman Street, Waltham, MA 02451, USA This book is printed on acid-free paper c 2012 Elsevier Inc All rights reserved No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without permission in writing from the publisher Details on how to seek permission, further information about the Publisher’s permissions policies, and our arrangements with organizations such as the Copyright Clearance Center and the Copyright Licensing Agency can be found at our Web site: www.elsevier.com/permissions This book and the individual contributions contained in it are protected under copyright by the Publisher (other than as may be noted herein) Notices Knowledge and best practice in this field are constantly changing As new research and experience broaden our understanding, changes in research methods, professional practices, or medical treatment may become necessary Practitioners and researchers must always rely on their own experience and knowledge in evaluating and using any information, methods, compounds, or experiments described herein In using such information or methods they should be mindful of their own safety and the safety of others, including parties for whom they have a professional responsibility To the fullest extent of the law, neither the Publisher nor the authors, contributors, or editors assume any liability for any injury and/or damage to persons or property as a matter of products liability, negligence or otherwise, or from any use or operation of any methods, products, instructions, or ideas contained in the material herein Library of Congress Cataloging-in-Publication Data Edelkamp, Stefan Heuristic search: theory and applications / Stefan Edelkamp, Stefan Schră dl o p cm ISBN 978-0-12-372512-7 (hardback : acid-free paper) Heuristic algorithms I Schră dl, Stefan II Title o QA76.9.A43E34 2011 005.1’1–dc22 2011005844 British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library For information on all Morgan Kaufmann publications, visit our Web site at www.mkp.com or www.elsevierdirect.com Printed in the United States of America 11 12 13 14 15 Contents List of Algorithms xvii Preface xxiii PART I HEURISTIC SEARCH PRIMER CHAPTER Introduction 1.1 Notational and Mathematical Background 1.1.1 Pseudo Code 1.1.2 Computability Theory 1.1.3 Complexity Theory 1.1.4 Asymptotic Resource Consumption 1.1.5 Symbolic Logic 1.2 Search 1.3 Success Stories 1.4 State Space Problems 1.5 Problem Graph Representations 1.6 Heuristics 1.7 Examples of Search Problems 1.7.1 Sliding-Tile Puzzles 1.7.2 Rubik’s Cube 1.7.3 Sokoban 1.7.4 Route Planning 1.7.5 TSP 1.7.6 Multiple Sequence Alignment 1.8 General State Space Descriptions 1.8.1 Action Planning 1.8.2 *Production Systems 1.8.3 Markov Decision Processes 1.8.4 Generic Search Model 1.9 Summary 1.10 Exercises 1.11 Bibliographic Notes 3 9 12 14 15 19 19 22 22 24 25 26 29 29 32 35 36 37 39 45 CHAPTER Basic Search Algorithms 47 2.1 Uninformed Graph Search Algorithms 2.1.1 Depth-First Search 2.1.2 Breadth-First Search 2.1.3 Dijkstra’s Algorithm 48 50 51 53 v vi Contents 2.2 2.3 2.4 2.5 2.6 2.1.4 Negatively Weighted Graphs 2.1.5 Relaxed Node Selection 2.1.6 *Algorithm of Bellman-Ford 2.1.7 Dynamic Programming Informed Optimal Search 2.2.1 A* 2.2.2 On the Optimal Efficiency of A* *General Weights 2.3.1 Cost Algebras 2.3.2 Multiobjective Search Summary Exercises Bibliographic Notes 57 58 60 62 68 69 74 75 76 79 80 82 86 CHAPTER *Dictionary Data Structures 89 3.1 Priority Queues 3.1.1 Bucket Data Structures 3.1.2 Heap Data Structures 3.2 Hash Tables 3.2.1 Hash Dictionaries 3.2.2 Hash Functions 3.2.3 Hashing Algorithms 3.2.4 Memory-Saving Dictionaries 3.2.5 Approximate Dictionaries 3.3 Subset Dictionaries 3.3.1 Arrays and Lists 3.3.2 Tries 3.3.3 Hashing 3.3.4 Unlimited Branching Trees 3.4 String Dictionaries 3.4.1 Suffix Trees 3.4.2 Generalized Suffix Trees 3.5 Summary 3.6 Exercises 3.7 Bibliographic Notes 89 90 97 110 111 112 121 130 134 138 139 139 139 141 142 143 146 151 154 157 CHAPTER Automatically Created Heuristics 161 4.1 4.2 4.3 4.4 Abstraction Transformations Valtorta’s Theorem *Hierarchical A* Pattern Databases 162 164 165 167 Contents 4.5 4.6 4.7 4.8 4.4.1 Fifteen-Puzzle 4.4.2 Rubik’s Cube 4.4.3 Directed Search Graphs 4.4.4 Korf’s Conjecture 4.4.5 Multiple Pattern Databases 4.4.6 Disjoint Pattern Databases *Customized Pattern Databases 4.5.1 Pattern Selection 4.5.2 Symmetry and Dual Pattern Databases 4.5.3 Bounded Pattern Databases 4.5.4 On-Demand Pattern Databases 4.5.5 Compressed Pattern Databases 4.5.6 Compact Pattern Databases Summary Exercises Bibliographic Notes vii 168 169 170 170 172 173 177 178 179 180 183 183 185 185 187 190 PART II HEURISTIC SEARCH UNDER MEMORY CONSTRAINTS CHAPTER Linear-Space Search 195 5.1 *Logarithmic Space Algorithms 5.1.1 Divide-and-Conquer BFS 5.1.2 Divide-and-Conquer Shortest Paths Search 5.2 Exploring the Search Tree 5.3 Branch-and-Bound 5.4 Iterative-Deepening Search 5.5 Iterative-Deepening A* 5.6 Prediction of IDA* Search 5.6.1 Asymptotic Branching Factors 5.6.2 IDA* Search Tree Prediction 5.6.3 *Convergence Criteria 5.7 *Refined Threshold Determination 5.8 *Recursive Best-First Search 5.9 Summary 5.10 Exercises 5.11 Bibliographic Notes 195 196 196 197 198 201 204 206 206 212 217 218 219 220 222 223 CHAPTER Memory-Restricted Search 227 6.1 Linear Variants Using Additional Memory 228 6.1.1 Transposition Tables 228 6.1.2 Fringe Search 231 viii Contents 6.2 6.3 6.4 6.5 6.6 6.7 6.1.3 *Iterative Threshold Search 6.1.4 MA*, SMA, and SMAG Nonadmissible Search 6.2.1 Enforced Hill-Climbing 6.2.2 Weighted A* 6.2.3 Overconsistent A* 6.2.4 Anytime Repairing A* 6.2.5 k-Best-First Search 6.2.6 Beam Search 6.2.7 Partial A* and Partial IDA* Reduction of the Closed List 6.3.1 Dynamic Programming in Implicit Graphs 6.3.2 Divide-and-Conquer Solution Reconstruction 6.3.3 Frontier Search 6.3.4 *Sparse Memory Graph Search 6.3.5 Breadth-First Heuristic Search 6.3.6 Locality Reduction of the Open List 6.4.1 Beam-Stack Search 6.4.2 Partial Expansion A* 6.4.3 Two-Bit Breadth-First Search Summary Exercises Bibliographic Notes 233 235 240 240 243 244 246 250 251 251 254 255 255 257 259 261 264 266 266 270 271 273 275 279 CHAPTER Symbolic Search 283 7.1 7.2 7.3 7.4 Boolean Encodings for Set of States Binary Decision Diagrams Computing the Image for a State Set Symbolic Blind Search 7.4.1 Symbolic Breadth-First Tree Search 7.4.2 Symbolic Breadth-First Search 7.4.3 Symbolic Pattern Databases 7.4.4 Cost-Optimal Symbolic Breadth-First Search 7.4.5 Symbolic Shortest Path Search 7.5 Limits and Possibilities of BDDs 7.5.1 Exponential Lower Bound 7.5.2 Polynomial Upper Bound 7.6 Symbolic Heuristic Search 7.6.1 Symbolic A* 7.6.2 Bucket Implementation 284 286 290 291 291 293 294 296 298 299 299 300 302 302 305 Contents 7.7 7.8 7.9 7.10 7.11 7.6.3 Symbolic Best-First Search 7.6.4 Symbolic Breadth-First Branch-and-Bound *Refinements 7.7.1 Improving the BDD Size 7.7.2 Partitioning Symbolic Algorithms for Explicit Graphs Summary Exercises Bibliographic Notes ix 307 308 309 309 310 311 311 313 317 CHAPTER External Search 319 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 Virtual Memory Management Fault Tolerance Model of Computation Basic Primitives External Explicit Graph Search 8.5.1 *External Priority Queues 8.5.2 External Explicit Graph Depth-First Search 8.5.3 External Explicit Graph Breadth-First Search External Implicit Graph Search 8.6.1 Delayed Duplicate Detection for BFS 8.6.2 *External Breadth-First Branch-and-Bound 8.6.3 *External Enforced Hill-Climbing 8.6.4 External A* 8.6.5 *Lower Bound for Delayed Duplicate Detection *Refinements 8.7.1 Hash-Based Duplicate Detection 8.7.2 Structured Duplicate Detection 8.7.3 Pipelining 8.7.4 External Iterative-Deepening A* Search 8.7.5 External Explicit-State Pattern Databases 8.7.6 External Symbolic Pattern Databases 8.7.7 External Relay Search *External Value Iteration 8.8.1 Forward Phase: State Space Generation 8.8.2 Backward Phase: Update of Values *Flash Memory 8.9.1 Hashing 8.9.2 Mapping 8.9.3 Compressing 8.9.4 Flushing 320 321 321 323 324 324 325 326 328 328 330 332 334 340 342 342 343 344 345 346 348 348 349 349 349 353 354 354 356 358 826 Index Relaxed Weak Queue, 106–108, 110, 157–158 River Crossing, 83 Route Planning, 24–25 Rovers, 674 Rubik’s Cube, 10, 22 Run-Relaxed Weak Queue, 157 Same Game, 565 Satellite, 674 Sequential Ordering, 189, 192 Set covering, 577 Settlers, 675 Single Source Shortest Paths, 47, 62, 196, 298, 311, 319, 324, 325 Skat, 566, 568 Smallest Enclosing Square, 627 Sokoban, 3, 9, 10, 22, 23, 45, 89, 116, 138, 284, 301, 305, 317, 441, 442, 445, 450, 453, 459, 463 STAR abstraction, 163 Stochastic Shortest Path, 553 Storage, 674 Strips, 29, 30, 38, 42, 163, 186, 365, 453, 463, 673, 696 Strips Abstraction, 163 Strips Planning, 29, 453 Strongly Connected Component, 311 Subset Sum, 642 Sudoku, 574, 579 Suffix List, 131, 133, 134, 137, 152, 158 Suffix Tree, 142, 143, 147, 150, 153, 159 Suffix Trie, 143 TSP, 25–26, 646 Thirty-Five-Puzzle, 45, 187, 295, 335, 348, 398 Three-Puzzle, 35 Tic-Tac-Toe, 521, 544, 545, 563, 566 Topological Sorting, 311, 318 Tournament Tree, 324 Towers-of-Hanoi, 10, 179, 370, 418, 424, 427 Traveling Purchase Problem, 675 Trie, 139, 141, 143, 147 Trucks, 675 Twenty-Four-Puzzle, 19, 45, 172, 174, 191, 208, 223 Two Ladder, 667 Umts, 675 Vertex Cover, 572, 604, 620 Weak Queue, 107, 152 Weak-Heapsort, 157 Wusel, 43, 46 64-bit compression, 406 A A∗ , 69–75 ABC procedure, 537 abstract description language, 673 abstract planning problem, 680 abstract problem graph, 343, 392 abstraction, 161, 185, 191, 703 abstraction database heuristic, 735 abstraction refinement, 161 abstraction transformation, 161, 162, 165 abstraction-directed model checking, 704 AC load balancing strategy, 387 AC-3, 576–577, 581, 629 AC-8, 576–577, 581, 629 acceptor processor, 388 Ackermann function, 41 action, 3, 12, 30, 35, 285, 694 action cost partitioning, 312 action execution time window, 696 action graph, 699 action planning, 3, 11, 29–32, 192, 280, 296, 673–699 action-execution step, 469–470 action-selection step, 469 action-value function, 540 active process heuristic, 707 activeness heuristic, 707–709, 719–720 adaptive sort, 356 ADD, 312, 569 adding finite-domain variables (with BDDs), 289 additional context, 698 additive penalty, 446 adjacency list, 15, 326, 328 adjacency matrix, 14, 47, 62, 210 ADL, 673, 697 admissible compression, 184 admissible heuristic, 18, 162, 171, 174, 697 admissible macro, 450 admissible pruning, 429, 430, 458–459 admissible weight function, 198, 204, 205 affine gap cost, 28, 65, 66 agent-centered search, 465–466, 514 Aho-Corasick algorithm, 435–438 algebraic decision diagram, 569 algorithm A, 58 algorithm flood, 634, 654 alive procedure, 444 all-different constraint, 571, 575, 579, 580 alphametic, 574 amino acid, 26, 27, 46 amortized complexity, 7, 92 ample set, 453–455, 464 ample set construction, 454 ancestor (of a node), 15 AND/OR graph, 552–559 anomaly (in a knowledge-based system), 701 ant algorithm, 652–657 antidiagonal, 63, 255, 767, 768 anytime A∗ , 277 anytime repairing A∗ , 246–250 API, 401 approximation, 26, 28, 34 approximation algorithm, 45, 599, 630, 645, 647, 687, 744 ARA∗ , 247–249 arc consistency, 571, 575–579 arc consistent (CSP), 575 arc consistent (variable pair), 575 arithmetic CSP, 578 arity, array compaction, 406–407 arrow path, 724 articulation, 24 aspiration criterion, 638 aspiration search, 530–531 assembly language level program model checking, 714, 716 assertion, 706 assertion violation, 717 assignment costs, 686 assignment graph, 580 assumption based truth maintenance system, 729 asymptotic branching factor, 206–211 asynchronous distribution, 379 asynchronous IDA∗ , 382–385 asynchronous parallel search, 420 asynchronous search, 375, 380, 384 asynchronous setting, 369, 379, 420 ATMS, 729 atom, 8, 42–43 auto tactic, 733 automata-based model checking, 703 Index automated theorem proving, 730–734 automatically inferred pruning knowledge, 429 average macro solution length, 450 B back leak, 259, 260, 763, 767, 772 back-propagation, 443 backbone, 595–596 backdoor, 595–596 backjumping, 583–584 backmarking, 585–587 backtracking, 581–582 backup induction, 554 backward edge, 455 backward proof, 733 backward search, 679 ball, 22 base model, 777 BDD, 283, 286–290 beam search, 251 beam width, 251, 266 beam-stack, 267 beam-stack search, 266–270 belief state, 504–506, 703 Bellman equation, 36, 37, 67, 747 Bellman-Ford algorithm, 47, 81, 86, 311 best-first minimax search, 567 best-first search (for two-player games), 533–534 best-fit, 599 BFS, 51–53 BFS level, 177, 272–273, 292, 294, 298, 326, 348, 402 BFS number, 362 BFS tree, 331 BHFFA, 410, 411, 427 bibliographic search problem, 433 bidirectional heuristic front-to-front algorithm, 410, 411, 427 bidirectional heuristic search, 370 bidirectional search, 408–419 big-oh notation, bin completion, 599–600 binary constraint, 573 binary constraint network, 609 binary CSP, 573 binary search tree, 98, 385 bioinformatics, 759 bionic algorithm, 652 bipartite graph, 24, 579 birthday problem, 406 bit-state hashing, 134–136 black-box semantic, 674, 693, 694 blank, 19 BLAST, 771 blast tactic, 733 blind search, 16, 291–299 block, 4, 401 block (in a rank sequence), 107 block size, 321 BnB, 198–201 Boltzman constant, 636 Boolean constraint, 571 bootstrap method, 540 bootstrapping, 442, 458, 524 bound variable, bounded model checking, 317, 736 bounding, 198 bounding box, 742 bounds consistency, 577–578 box, 22 branch-and-bound, 198–201 branch-and-bound search tree, 199, 201 branching, 198, 571 branching factor, 15, 206–211 branching partitioning, 310, 312 branching rule, 379, 581 breadth-first duplicate detection search, 431 breadth-first heuristic search, 261–264 breadth-first search, 47, 51–53 brute-force algorithm, 647 brute-force branching factor, 216, 217 brute-force search tree, 206, 211, 215, 216 Bă chi automaton, 615617, 631 u bug hunting estimate, 704 business work-flow analysis, 702 C cache anomalies, 321 cache-oblivious algorithm, 361 canonicalize, 447 Carrillo-Lipman bound, 769, 770, 772 CAS, 378 cascading cut, 105, 107 causal graph, 685–687 causal graph analysis, 685 central processing unit (CPU), 370 chairman, 108 character, 113 characteristic equation, 209 characteristic function, 283–285 827 children layer, 389 Christofides’ algorithm, 646 chronological backtracking, 629 Church-Turing thesis, circularity anomaly, 727 CKKA, 598 clause, 592 clause form, 731 cleaning transformation, 108, 109 client, 378, 398, 399 clique pattern database compression, 184 CLM, 657 clock valuation function, 721 clock variable, 721 closed under entailment, 723 closed world assumption, 29 clustering, 388 CNLP, 657, 669 coalescing, 401 collapse compression, 137 combinatorial game theory, 521, 568 communication protocol, 705–713 commutative action, 453 compare-and-swap, 378, 425 complete binary tree, 98 complete deductive system, complete greedy algorithm, 598 complete Karmakar-Karp algorithm, 598 complete search process, 633 completeness (of a search algorithm), 456 complexity theory, 5–6 compound statement, computability theory, 4–5 computable function, computational biology, 9, 27, 757 computer ant, 634, 652 concise hash function, 403 configuration, 12 configuration space, 773–777 conflict analysis, 288 conflict anomaly, 727 congruence relation, 447 conjunctive normal form, 8, 620 consistency, 575–580 consistency (in a knowledge-based system), 701 consistent formula, consistent heuristic, 3, 18 consolidate, 105 consolidation, 104–106 conspiracy number search, 567 828 Index conspiracy search, 537 constant, constrain operator, 309 constraint, 572 constraint function, 618 constraint graph, 583, 609 constraint local minimum, 657 constraint modeling, 571 constraint optimization, 618–619 constraint optimization problem, 572, 618 constraint partitioning, 699 constraint propagation, 571 constraint satisfaction problem, 572, 581 constraint search, 571 continuous nonlinear programming, 657 contracted locus, 143 control knowledge, 612, 631 control knowledge in LRTA∗ , 479 convex hull, 43 convex set, 750 Cook’s theorem, 286 cooling scheme, 637 correct deductive system, cost, 14 cost (of an action), 35 cost consistency, 747 cost function, 53, 618 cost structure, 77, 78 cost-to-go function, 66 counterexample, 703 counterexample guided error refinement, 704, 705, 735 credit search, 629 critical node, 528 critical path, 611 critical role (of correct software), 701 critical tree, 528, 529, 534 cross-over operator, 642 crypto-arithmetic puzzle, 574 CSP, 572 cubie, 22 cuckoo hashing, 128–130 cuckoo process, 128, 129 cut, 105 cycle argument, 474, 483 cycle detection search, 426, 710 D DAG, 325 dangerous state, 708 data abstraction, 161 data partitioning, 384 data stream, 344 Datalog, 550 Davis-Putnam Logmann-Loveland algorithm, 594 dead reckoning, 739 dead-end detection, 430 dead-end pruning, 458–459 deadlock, 705, 707, 708 deadlock formula, 708 debugger, 713 decidable logic, decidable problem, decision problem, decision tree, 529 decomposed state, 444 deductive system, Deep Blue, 10 deep cut-off, 526 Deep Fritz, 10, 520 deep pruning, 547 Deep Thought, 521 deficiency anomaly, 727 delay transition, 721 delayed duplicate detection, 319, 359 delayed expansion strategy, 309 dependency network, 728 dependent actions, 693 depth-bounded discrepancy search, 591 depth-first branch-and-bound, 195, 199 depth-first iterative-deepening, 195, 201 depth-first search, 47, 50–51 depth-slicing, 375 derived predicate, 674, 695–696 descendant (of a node), 15 deterministic planning, 673 deterministic search model, 36 deterministic Turing machine, 591 DFBnB, 195, 199 DFID, 195, 201 DFS, 50 diagnosis, 727–730 diagnosis system, 730 diagnostic variable, 730 diagonizable matrix, 209 diamond property, 454 difference bound matrix, 312 difference constraint, 721 digital (binary) sum, 564 digital map, 737 Dijkstra’s algorithm, 47 diminishing pebble, 668 direct conflict, 694 direct numerical conflict, 694 directed acyclic graph, 325 directed automated theorem proving, 701 directed model checking, 701 directed state space problem, 23 discount, 65 disjoint hash function, 403 disjoint pattern database, 173–177 disjoint state abstraction, 175 disjunctive normal form, disjunctive partitioning, 312 disk striping, 321 distance, 13 distance move, 452 distant move pair, 452 distributed algorithm, 369 distributed memory model, 397 distributed response strategy, 376 distributed search, 369–427 divide-and-conquer, 62 divide-and-conquer algorithm, 196–197 divide-and-conquer beam search, 266 divide-and-conquer beam stack search, 267 divide-and-conquer bidirectional search, 257 divide-and-conquer decomposition search, 568 divide-and-conquer forward frontier search, 257–259 divide-and-conquer solution reconstruction, 262 DNA, 26 domain abstraction, 163 domain expert pruning knowledge, 429 domain metric, 673 domain range, 577 domain splitting, 581 domain transition graph, 685 domain-independent planning, 673 dominance condition, 604 dominance condition on feasible bin completions, 599 don’t care (proposition), 680 donor processor, 388 double bit-state hashing, 251 double hashing, 124 DPLL, 594 dual encoding, 573 Index dual pattern database, 179–180 duality, 180 duplicate (node), 49 duplicate (string), 432 duplicate detection scope, 265 duration, 695 dynamic backtracking, 584–585 dynamic incremental hashing, 155 dynamic load balancing, 384 dynamic perfect hashing, 127 dynamic programming, 62–68, 255, 543, 678–679 dynamic pruning, 458 dynamic substring pruning, 438 dynamic variable reordering, 288 E early duplicate detection, 328, 391 early merging, 359, 390 edge, 12 edge ant walk, 493, 501, 657 edge counting, 493 edge partitioning, 364 edge transition, 721 edit distance, 28 effective branching factor, 23 efficiency, 372 eigenvalue problem, 209 ELF, 713 eligibility trace, 567 embarrassing parallel, 398 embedded system verification, 702 embedding, 162 enabledness preserving action, 453 encapsulated variable, 573 endgame database, 522 enforced hill climbing, 240–242 equilibrium distribution, 212 equilibrium fraction (of nodes), 206, 207 equivalence class, 447 error, 539 error trail, 715 essential language extension, 673 Euclidean distance, 25, 745 Euler tour, 328, 374 evaluation, 634 evaluation function, 633, 641 evaluation function parameter, 542 eventually (operator), 613 evolutionary algorithm, 639–645 evolutionary distance, 28 executed action, 35 existential elimination, existential introduction, exit distance, 276 expand queue, 394 expansion (of a node), 15, 49 expected cost, 520 expected return, 36 expected reward, 520 explanation-based learning, 543 explanatory phase, 702 explicit graph, 14 explicit state space graph, 15 explicit-state model checking, 702 explicit-state pattern database, 683 explicit-state search, 283 exploitation (of the search space), 274 exploration (of a node), 15 exploration (of the search space), 274 exploration-exploitation dilemma, 542 Extended IDA∗ , 276 extended locus, 143 extended successor relation, 634 extended weight function, 198 external A∗ , 320 external A∗ search, 334 external B-tree, 362 external BFS, 326, 328, 360 external binary search tree, 362 external breadth-first branch-and-bound, 320, 330–332 external breadth-first heuristic search, 331, 332, 347 external breadth-first search, 319 external depth-first search, 319, 325 external Dijkstra search, 324 external Dijkstra’s algorithm, 47, 53–57 external enforced hill climbing, 320, 332–334 external explicit-graph DFS, 325–326 external explicit graph search algorithm, 324–328 external explicit-graph BFS, 326–328 external linked list, 361 external memory data structure, 323 external pattern database, 346–347 external queue, 361 external scanning, 323 external sorting, 323, 341 external stack, 361 external symbolic pattern database, 348 external value iteration, 349–353 829 F fact, 29 fact space exploration, 681 factorial base, 118 factorial base (of a permutation), 118 fail-safe variant, 526 failure function, 435 FALCONS, 489 fast learning and converging search, 489 FASTA, 763, 771 fault-finding phase, 702 feasibility problem, 635 feasible object set, 599 features, 542 fellow, 108 Fibonacci number, 40 FIFO, 51 finite state controller, 559 finite state machine pruning, 435–438 firing sequence, 717 first fail, 581 first order logic, 730 first-fit, 621 first-fit decreasing, 599 first-in first-out, 51 first-in-first-out (paging strategy), 320 first-order predicate logic, fitness, 639 fitness function, 641 fixpoint, 31 fixpoint (computation), 289 FKS hashing, 128 FKS hashing scheme, 126–127 Floyd-Warshall algorithm, 47, 62 fluent, 673 folding, 388 forbidden word, 431 formula progression, 614–615 formula-based heuristic, 705–707 forward checking, 581 forward expansion, 554 forward proof, 733 forward pruning, 537 forward search, 679 forward set simplification, 293, 309 forward-chaining search, 449 free ball, 441 free variable, freespace, 773 frequency (of pattern searches), 445 fringe search, 231–233 front-to-front, 410 830 Index frontier search, 257–259, 319, 346, 389 frontier set simplification, 293 FSM distance heuristic, 709 full state hashing, 375 fully expanded, 453 function, functional A∗ , 733–735 G GA, 634, 641–643 Galileo, 740 game description language, 550 game theory, 550, 567, 568 game tree, 524–525 gap, 28, 63, 273 gap opening, 27 GDE, 728–729 GDL, 550 general cost structure, 76, 78 general diagnostic engine, 728–729 general game playing, 11, 45, 550–552 general purpose GPU programming, 400 generalization of dead-end pattern, 441 generalized suffix tree, 89, 146–151, 438 generation (of a node), 61, 173, 224 generic search model, 29, 36–37 genetic operator, 642 geocoding, 744 global hashing, 388 global positioning system, 737, 739 global sequence alignment, 762 global variable, 199, 201, 709, 714 globally (operator), 613 goal constraint, 571, 613 goal preference, 617 goal state, 26, 37, 291, 298, 457, 474, 491, 561, 634, 725 golden ratio, 113 GPGPU, 400 GPS, 11, 739 GPU, 370, 400–408 GPU-based search, 370, 405 gradient decent, 668 gradient descent, 539, 542, 635 graph leveling, 388 graph morphism, 723, 725 graph transition system, 723–726 graphics processing unit (GPU), 370, 400 greedy best-first search, 73, 87, 243, 307–308, 497, 733 greedy heuristic, 597 greedy plan extraction, 31, 690 greedy policy, 37 grounded planning domain, 30 GSAT algorithm, 595 H Hamming distance heuristic, 718–719, 725 Hamming sphere algorithm, 649, 650 hand-off, 377 hard constraint, 571, 619, 697 hard problem, 591–609 hardware verification, 9, 318 harmless dead-end, 276 harmonic number, 136 harmonic sum, 136 hash compaction, 136–137, 158 hash table folding, 183 hash-based distribution, 375 hash-based duplicate detection, 342–343, 359, 388 hash-based partitioning, 404–406 head (of a string), 143 heap, 97–110 heap property, 98 heap store, 107 heap-ordered multiway tree, 100 heuristic, 15–19, 26, 47, 75, 161, 302–309, 465, 477–479, 597–598, 607–608, 690–691, 703–704, 707–713, 715–720 heuristic function, 69, 75, 212, 304, 608 heuristic knowledge in LRTA∗ , 479–480 heuristic search, 47, 68, 121, 261–264, 302–309, 418–419, 572 heuristic search algorithm, 16, 68, 263, 347, 752, 762 hierachical A∗ , 165–167 high-level variable, 687 hill-climbing, 240–242, 280, 332–334, 635–636, 668 Hirschberg’s algorithm, 256, 257, 762 history heuristic, 530, 567 Hoare calculus, 690 holy grail, 759 homomorphism, 162 horizon effect, 537, 562 Horn backdoor, 596 Horn clause, 732 Horner’s rule (for evaluating polynimials), 114 Huffman compression, 185 hyper-arc consistency, 577 hyperarcs, 553 hypercube, 27 hypergraph, 552, 553 I I/O efficiency, 319, 324, 354, 364, 388, 723 IDA∗ , 195, 203–218, 233, 236, 251–254, 276, 346, 382–385 IDDP, 764, 770, 772 IDLA∗ , 439 IE, 219 ILP, 618 image, 283, 290, 310 immediate duplicate detection, 353, 361, 365 immediate reward, 540 implicit graph, 15, 47, 48, 328–342 implicit state space graph, 15 improved limit discrepancy search, 589, 591 in-order traversal, 385 in-place locking, 378 inadmissible macro, 450 inadmissible pruning, 266 inclusion check, 722 inconsistent node, 244 incremental duplicate learning A∗ , 438–440 incremental hashing, 111, 113, 116, 158, 375 incremental pruning, 459 incremental state space generation, 15 indel, 27, 28 independence ratio, 375, 377 independent action, 453 inductive logic programming, 542 inference rule, 9, 32, 674, 697 infinite path, 56, 65, 613, 615, 690 influence, 452–453 informed search, 68, 81 inherently sequential, 694, 695 initial population, 641 initial state, 12, 31, 33, 41, 166, 183, 284, 304, 346, 429, 449, 697, 720 initial state set, 286 input resolution, 732 instruction-level paralellelism, 369 integer linear program, 618, 661 Index intelligent authoring, 727 intelligent debugging, 728 intelligent tutoring, 727 interleaved variable ordering, 288 interleaving heuristic, 716 internal node heuristic, 732, 733 international planning competition, 45, 674, 735, 771 interpretation, invariant analysis, 717 invariant constraint, 721 inverse, 119, 161, 167, 431, 703 inverse macro, 452 inversible action, 170, 180, 433 inversion, 20, 120 inverted index, 118 invisible action, 454 Isabelle, 736 isolated field procedure, 441 isomorphism heuristic, 725 iterative broadening, 251, 252, 280, 629 iterative deepening (in two-player search), 525 iterative deepening A∗ , 195, 204–218, 233, 236, 251, 254, 276, 345, 382, 385 iterative expansion, 219 iterative threshold search, 233–235, 279 iterative-deepening dynamic programming, 763–764 ITS, 233–235, 279 K Kalman filter, 741 Karmakar-Karp heuristic, 597–598 kernel, 259, 401 knowledge-based system, 701, 726–727 Kripke structure, 702, 703 L labeling, 524, 571, 581, 681, 727 Lagrange multiplier, 634, 657–660 language (induced by the model), 703 language (induced by the specification), 703 Las Vegas algorithm, 633, 647 lasso, 703, 710 last-in first-out, 50, 320 last-in-first-out (paging strategy), 320 lattice, 27, 255 layered plan graph construction, 677 lazy state space generation, 15 lcp, 440 LDFS, 569 LDS, 588–591, 619–620 leader (of a run), 108 learning DFS, 569 learning real-time A∗ , 466–473 least-recently-used (paging strategy), 320 leftmost tip node, 234 Lehmer generator, 116 Lempel-Ziv compression, 185 lexicographic rank, 118, 159 LIFO, 50, 320 lifted search space, 710 lifted state space, 634 limit discrepancy search, 588–591, 619–620 linear conflict heuristic, 21 linear probing, 123, 354, 358 linear program, 618, 661 linear speedup, 372 linear temporal logic, 613, 621, 697, 703 linearly priced timed automaton, 722 list ranking, 374 literal, 8, 592 little-oh notation, live transition, 717 liveness as safety model checking, 710, 735 liveness property, 703 LM load balancing strategy, 387 load balancing, 375, 378, 385, 387 local hashing, 388, 425 local pattern, 23 local search, 465, 633, 638, 663 local search space, 468, 472, 479, 482, 487, 498, 499, 561 local sequence alignment, 762 local variable, 661, 711 locality, 116, 264–265, 343, 347 locality (for delayed duplicate detection), 343 locality (for structured duplicate detection), 343 locality (of abstract state space graph), 347 locality (of state vector), 116 locally consistent, 581 lock heuristic, 716 lock-free hash table, 378, 426 lock-free hashing, 378–379 locking, 387 831 logistics, 571, 622, 675 lollipop state space, 511 long run minimization (of solution costs), 480 longest common prefix, 146, 440 loosely called action, 471 loss backup, 543 low-level variable, 685, 686 lower bound, 7, 10, 18, 28, 45, 86, 130, 199, 299, 302, 340–342, 397, 477, 479, 606 LP, 618 LRTA∗ , 466–496 LRTA∗ improvement (for fast-acting agents), 480 LRTA∗ improvement (for slowly-acting agents), 480 LRTA∗ with lookahead, 473–474 LTL, 613, 621, 697, 703 M machine learning, 191–192, 463, 539, 561, 636, 759 macro, 450 macro action, 22, 191, 430, 450 macro learning, 450, 459 macro operator, 450 macro problem solving, 449–452, 459 macro table, 450–452 makespan, 630, 674 mammalian cell cycle control, 760, 771 Manhattan distance heuristic, 21, 115, 334, 374, 414, 446 map matching, 737, 741–744 marked node, 107–108 marking (in a Petri net), 717 Markov chain, 35, 741 Markov decision process, 35–36, 495, 519 Markov decision process problem, 35, 65–68, 495 master, 378, 380, 391, 394, 395, 398, 400 matching, 579 matrix multiplication, 374, 579 MAX-k-SAT, 630, 646–647, 648 max-atom heuristic, 678–679 max-atom-pair heuristic, 679 maximal pattern size, 445 maximum flow, 24, 580 maximum matching, 580, 606, 607 maximum weighted bipartite matching, 174 832 Index maxMem, 187, 235, 266 MDP, 35–36, 65–68, 495 member (of a run), 107 membership problem, 111 memorizing, 441 memory aware recursive best-first search, 219 memory hierarchy, 319, 322 memory leak, 237 memory locality, 320, 755 memory-enhanced test framework, 532–533, 562 merge (weak-heap), 102 merging strategy, 356 merit function, 69 message-passing, 711 metric planning, 673, 687–691 Metropolis algorithm, 634, 637 Min-LRTA∗ , 482–483, 493 min-max LRTA∗ , 494–495, 504–506 min-max-learning real-time A∗ , 494–495, 504–506 minimal constraint network, 609 minimal matching (heuristic), 24 minimal temporal constraint network, 610 minimax, 519, 525 misplaced-tile heuristic, 21 mistake-bounded error model, 480, 495 modal operator, 613 model automaton, 615, 703 model checking, 701, 702, 704, 710, 713–717, 721 model checking object code, 713 model checking problem, 703–704, 710 model checking software, 713 model counting, 287 model relaxation, 704 model-based diagnosis, 727 molecule, 42 Monien-Speckenmeyer algorithm, 647–648 monotone heuristic, 18, 718 Monte Carlo algorithm, 633, 647 Monte Carlo policy evaluation, 68 Monte Carlo randomized search, 634 Monte Carlo sampling, 538, 552 Monte Carlo search, 537, 562 Moore’s Law, 319 most general unifier, 730 most-blocked heuristic, 716 motion-planning problem, 773, 776 move, 12 move ordering, 529–530 move-alternation property, 272 MRBFS, 219 MST, 26, 646 MTD(f), 532, 534 multiobjective search, 48, 79–80 multiplayer game, 10, 538, 547–549 multiple pattern database, 172–173, 681–683 multiple-goal heuristic search, 370, 418–419 multiplicative hashing, 113 multiplying finite-domain variables (with BDDs), 289 multivalued pattern database, 191 multivalued variable encoding, 681, 682, 685 multiway tree, 100 mutation operator, 640, 642, 684 mutex action, 676 mutex proposition, 676 mutually exclusive lock, 385 mutually substring free, 439 N NAND-flash, 353 navigation, 737 navigationpile, 155–156 negmax, 519, 524, 525, 530 neighborhood, 633, 634 next time (operator), 613 no-free-lunch theorem, 662, 663 no-good, 600, 729 node, 12 node counting, 491–492, 500–501, 502, 512 node expansion efficiency, 116 node ordering, 234, 255, 382, 695 node store, 107, 108 nondeterministic environment, 519 nondeterministic search model, 29, 36 nondeterministic Turing machine, 5, 6, 591, 593 noop, 31 noop action, 676, 680 normal form, 731 NP, NP-complete, 25, 175, 178, 593 NP-complete problem, 6, 591 NP-containment, 591 NP-hardness, 591 nucleotide base, 26 null move, 537 null-window search, 531, 532 O objective function, 25, 79, 572, 617, 618, 633, 635, 638, 642, 643 observed action, 35 obstacle, 42 oct-tree data structure, 769 off-chip global memory, 401 off-chip local memory, 401 off-line heuristic, 703 on-chip register, 401 on-chip shared memory, 401 on-demand pattern database, 183 on-line heuristic, 703 on-the-fly state space generation, 15 open addressing, 121, 123, 131, 133, 134, 136, 153 open subgoal heuristic, 733 operations research, 198 operator, 12 optical storage media, 195 optimal alignment, 11, 27, 28, 255 optimal parallel plan, 695 optimal plan, 37, 300, 301, 675 optimal policy, 36, 65, 349, 539, 540, 560 optimal solution, 14, 25, 28 optimal value function, 36, 37, 68, 540, 541 optimality (of a search algorithm), 53, 78, 81, 198, 251, 440, 450 optimization problem, 79, 199, 331, 598, 634, 635, 662 oracle, order preserving (hash function), 347 ordered hashing, 124, 125, 136, 406 ordered search tree algorithm, 198 original maze, 445 orthogonal hash function, 342 othello, 567 out-degree (of a node), 15 outer fragment (of a proof tree), 732 overall distribution, 212–213 overapproximation, 704 overconsistent A∗ , 244–246 overconsistent node, 245 overconstraint SAT problem, 595 oversubscribed problem, 571 Index P PAC, 669 page, 320 page fault, 320, 752, 755, 756 page frame, 320 paging strategy, 320 pair transformation, 108, 109 pairing, 100 parallel A∗ , 388 parallel algorithm, 6, 369, 371–374 parallel branch-and-bound, 379–380 parallel depth-first branch-and-bound, 379 parallel depth-first search, 369, 379 parallel external A∗ , 388, 392–398 parallel external breadth-first search, 370, 388–391 parallel external search, 370, 388 parallel global A∗ , 385–387 parallel IDA∗ , 379, 382 parallel local A∗ , 385, 387–388 parallel memory model, 388 parallel merging, 374 parallel plan, 31, 675, 677, 695 parallel random access machine, 370–372, 374, 388 parallel search, 369, 370, 385, 397, 418, 420, 421, 522 parallel sorting, 374, 406 parallel state space search, 369, 374 parallel structured duplicate detection, 391–392, 393 parameter-free genetic algorithm, 634 parametric planning domain, 30, 448 paranoid assumption, 547 parent (of a node), 15 parent layer, 262, 389 parent transformation, 108, 109 parity, 20, 119 parity (of permutation), 119, 294 partial A∗ , 251–254 partial assignment, 573, 594, 605, 619, 620, 681, 721 partial expansion A∗ , 270–271 partial IDA∗ , 251–254 partial order reduction, 430, 453–458 partial path, 26, 143, 153 partial position, 442, 444, 446 partial solution, 26, 554, 558, 602, 604 partial state hashing, 375 partial state storage, 251, 253 partial sum, 373 partially expanded, 453 partially expanded node, 236 partially observable Markov decision process, 35, 507 particle swarm optimization, 669 partition function, 375 partition search, 535–536 partitionable (mixed) neighborhood, 661 partitioned transition relation, 315 path consistency, 571, 578, 580, 581 path consistent CSP, 579 path constraint, 571, 612–617, 621 path-max heuristic, 237 pattern database, 161, 167–168, 172–177, 177–185, 294–296, 346–348, 398–400, 680 pattern database partitioning, 312 pattern gene, 684 pattern mutation, 684 pattern search, 445–446 pattern selection problem, 178 pattern store, 445 pattern trie compaction, 185 Paturi-Pudl´ k-Zane algorithm, 648 a PDDL, 30, 32, 33, 674, 688, 692–693, 696–697, 710–712, 720, 726, 761 PDDL semantic, 673–674 PDISK, 388 penalty, 446 penalty table, 445–446 pending queue, 690, 691 perfect hash function, 118–121, 126, 271, 284 perfect hash table, 139, 168, 295 perfect hashing, 111, 118, 126, 152, 153, 169 perfect heuristic, 16, 17 perfect information game, 524 persistent set, 464 PERT, 611–612, 621, 696 Petri net, 701, 717–720 phase transition, 595, 620 pipelined instruction fetching, 369 pipelining, 344–345 place (in a Petri net), 717 plan constraint, 616, 617, 696–697 planar graph, 325 planning heuristic, 710–713, 720, 726 planning pattern, 680 planning pattern database, 680–685 planning process, 674, 698 ply, 524, 525, 538 833 policy, 36, 519 policy iteration, 65–67, 558 polynomial reduction, 6, 593, 599, 606 polynomial-time transformation, 591 POMDP, 35, 507 portal heuristic, 192 positioning, 737 possible planning state, 681 postorder, 287 potential violating node, 107 PRAM, 370–372, 374, 388 PRAM architecture, 370 precedence ordering, 695 predecessor link, 50 predecessor pruning, 433 predicate logic, 8, 9, 730 preference constraint, 617, 697 prefix sum, 373 prefix-optimal, 78 preimage, 283, 295 Presburger automaton, 312 priced zone, 722 primary search, 710 primary state, 710 principal-variation, 524 principal-variation search, 532 principle of optimality, 53, 62, 66, 78 principle variation tree, 529 priority queue, 53, 89 priority search tree, 385 probabilistic environment, 519, 520, 560 probabilistic LRTA∗ , 495–496 probabilistic search model, 36 probabilitstic approximate completeness, 669 probing, 728 problem domain description language, 30, 673 problem graph, 13 process, 369 processor, 369 processor core, 369 production system, 3, 32 program model checking, 713–717 progression search, 679 project evaluation and review technique, 611–612, 695 proof number search, 567, 568 proof set search, 567 property automaton, 703 propositional conflict, 694 propositional formula, 8, 620 834 Index propositional logic, propositional planning, 673 protein, 26 protocol validation, 702 pruning, 429 pruning pair, 432 pruning set, 449 pseudo code, pseudo random number, 117, 158 PSO, 669 PSPACE, PSPACE complete, 23, 30, 46 PSVN, 35 pure backtracking, 581, 586 push-button automation, 702 Q Q-learning, 540, 542, 543, 560 Q-value, 37 quantifier, quantitative dependency network, 728 queue, 51 quotient space, 112 quotient state space, 447 R Rabin and Karp hashing, 113–115 RAID, 321 RAM, 358 random access memory, 358 random communication, 387 random walk algorithm, 651 randomization, 633, 634, 647, 663 randomized hashing, 126 randomized local search, 639–641 randomized quicksort, 647 randomized search, 633, 634 randomized tabu search, 638–639, 663 rank hashing (of a permutation), 272 rank sequence, 107 rapid restart, 595 RBFS, 219–220 reopening (of nodes), 73 reweighted problem graph, 47 reweighting transformation, 69 reachability analysis, 545–546 reachability set, 717 reachable marking, 717 reachable planning state, 681 reachable state, 228, 568, 702 reached (node), 48 read-only media, 195 real-time A∗ , 491 real-time adaptive A∗ , 484 real-time dynamic programming, 569 real-time heuristic search, 465, 514 real-time model checking, 721, 723 real-time search, 465, 654 reasonable state space, 475, 483, 492, 493 recognized dead-end, 276, 334 recombination, 639 recovering solution quality, 255 recursive best-first search, 195, 219–220 recursively enumerable set, reduced and ordered BDD, 286 reducibility of a heuristic, 446 redundancy anomaly, 727 redundant array of independent disks, 321 redundant array of inexpensive disks, 321 refine queue, 395 refined threshold determination, 195 refuted node, 526 region automaton, 721 regression search, 679 regular rank sequence, 107 regular search space, 195 reinforcement learning, 483, 540 relational product, 288, 290 relaxation, 54 relaxation (of a planning problem), 30 relaxation (of an action), 30 relaxed planning heuristic, 30, 34, 685, 686, 690, 691, 698 relaxed problem, 31, 162 relay search, 348–349 relay solution, 348 relevance analysis, 461, 462 relevance cut, 452–453 relevant flag, 443 remaining area, 604 removable item heuristic, 725 reset search space, 492 residual, 67 resolution refutation procedure, 731 resource-optimal scheduling, 721 restart, 594, 633 restrict operator, 309–310 Rete algorithm, 142, 159 retrograde analysis, 167, 519, 543–544 reversible state space problem, 23 revise procedure, 576 revolving search method, 465 reward (for an action), 35 RIDA∗ , 219, 280 right-most tip node, 234 robotics, 9, 11 roll-out, 11 rote learning, 539 round-and-robin, 387 RTA∗ , 491 RTAA∗ , 484 rule, 695 run transformation, 108 run-length compression, 185 S safely explorable state space, 475, 477, 491–493, 495 safety property, 702 SAS+ planning problem, 681, 685, 686 SAT, 593 satisfiability, 593 satisfiability problem, 620 satisfiable formula, satisficing search strategy, 633 scanning (a file), 319 schema theorem, 644 scope, search, search algorithm, 3, 10, 11, 47, 197, 243, 256, 269, 274, 313, 385–388, 562, 582, 584, 587, 622, 664, 751 search constraint, 571 search discrepancy, 588 search frontier, 48 search heuristic, 16 search skeleton, 219 search tree, 48, 195 search tree problem space, 198 secondary state, 710 selection, 639, 640 selection function, 641 selective search, 633 semi-decidable set, semi-external search, 365 semi-virtual connection, 523 semiring, 579 sentence, sequential plan, 674 serialization (of a problem), 462 set (of individuals), 641 set-of-support approach, 732 shallow cut-off, 526, 548 Index shallow pruning, 547–549 shared variable, 705, 711, 714 shared variable heuristic, 716 shortcut (string), 432 shortest firing sequence, 718 sibling transformation, 108 sifting algorithm, 288 signaling pathway, 759, 760 signature (of permutation), 119 simple ant system, 634, 652–653 simple GA, 641–643 simple genetic algorithm, 641–643 simple temporal constraint network, 610 simple temporal network, 609–611 simplemaxcut, 606 simulated annealing, 634, 663, 664 single instruction multiply data, 401 single-agent puzzle, singleton, 108 singleton transformation, 108 singular extension, 537 Skolem constant, 732 Skolem function, 732 SLA∗ , 488 SLA∗ T, 488 SMGS, 259–261 soft constraint, 617 software checking, 713 software paging, 320, 752 software verification, solid state disk, 353 solution, 13 solution (of a CSP), 572 solution certificate, solution depth, 206 solution path, 14 solution preserving abstraction, 163 solution preserving pruning, 429 solution preserving restriction, 680 solution reconstruction, 227 solved node, 554 sorting (a file), 319 space explosion problem, 283 sparse graph, 14–15 sparse memory-graph search, 259–261 spatial logic, 724 specialized consistency, 571, 575, 579–580 speedup, 369, 372 splay operation (for treaps), 386 split value, 346 splittability of a heuristic, 446 splitter, 324 spurious solution path, 161 spurious state, 188 SRAM, 401 SSD, 353 stack, 50 stack splitting, 380–382 stage algorithm, 636 standard variable ordering, 288 state, 12 state (of a node), 108 state caching algorithm, 274 state explosion problem, 283, 663 state reconstruction, 253–254 state space, state space of solutions, 634 state space partitioning function, 375 state space problem, 12–14 state space problem graph, 13 state trajectory constraint, 696–697 state-action pair, 471 state-caching algorithm, 227 static evaluation function, 524 static load balancing, 375 static penalty approach, 669 static pruning, 429 step counter, 550 sterile node, 215 stochastic node caching, 231 stone, 22 strategy (in two-player games), 529 streaming data, 344 streaming multiprocessor, 401 streaming processor, 401 string length heuristic, 732 string matching, 115, 374 strong backdoor, 596 strong preimage, 546 strong solution, 568 structured duplicate detection, 343–344, 359 stubborn set, 464 stuck procedure, 441 substring query, 142 subgraph pattern database compression, 184 subject model, 728 subnet distance heuristic, 719 subset dictionary, 443 substitution matrix, 27 substring acceptor, 433 substring matching, 438 835 substring pruning, 430–433, 458 substring pruning automaton, 437 subtree rotation (for treaps), 386 succeed-first principle, 581 successor (of a node), 15 sufficient saddle point condition, 658 suffix link, 143 sum-of-pairs alignment cost function, 27 super-goal, 370 super-linear speedup, 372 super-string query, 142 supervised learning, 540 surjective transformation, 164 swapping, 320 symbolic A∗ , 302–305 symbolic Bellman-Ford algorithm, 47, 57, 60, 62, 311 symbolic breadth-first search, 284 symbolic breadth-first tree search, 291–292 symbolic model checking, 317, 702 symbolic pattern database, 294–296 symbolic planning pattern database, 683 symbolic reachability analysis, 545 symbolic retrograde analysis, 544–547 symbolic search, 283 symbolic shortest path algorithm, 311 symbolic shortest-path search, 298–299 symmetric action, 459 symmetry, 179–180, 447 symmetry pattern database lookup, 179, 180 symmetry reduction, 430, 447–449, 459 synchronous distribution, 379 synchronous parallel search, 420 synchronous pruning automaton, 433 synchronous search, 380 synchronous setting, 369, 379 system invariant violation, 705 systematic state space enumeration, 633 systematic tie breaking, 489 T taboo, 638 tabu list, 638 tabu neighbor, 638 tabu search, 638–639 tail (of a string), 143 Taylor series expansion, 659 temporal constraint, 572 temporal constraint network, 609–612, 621 836 Index temporal control knowledge, 696 temporal credit assignment problem, 540 temporal difference learning, 540, 541 temporal graph logic, 724 temporal logic, 571, 702–703 temporal plan, 674 temporal planning, 673–674, 691–695 temporally extended goal, 612, 622, 696 terminal node, 143, 524, 528, 554, 724 termination-checking step, 471, 489 test maze, 445 theorem proving, 9, 730–732 thickness of search frontier, 265 thread, 401 time consistency, 747, 748 time tabling, 571, 622 timed automaton, 722 timed initial fact, 674 timed initial literal, 696 tip edge, 234 tip node, 234 token (in a Petri net), 717 tool-specific heuristic, 716 top-down proof, 732 topological order, 63, 75, 255 total duplicate identification, 49 trail-directed heuristic, 709, 716 trail-directed search, 704, 716 trajectory, 721 transformed Lagrangian, 658 transition, 12 transition (in a Petri net), 717 transition guard, 721 transition relation, 285, 288–290, 310 transposed matrix, 209 transposition table, 228–231, 530 transposition-driven scheduling, 375, 376 transputer, 385 treap, 385–387 tree partial locking protocol, 387 tree width, 631 trial-based real-time dynamic programming, 512, 514 triangle inequality, 26, 746 triangle inequality (of Euclidean plane), 25, 746 trie, 139, 185, 435 trivial heuristic, 73, 235 true distance heuristic, 192 truth table, TSP, 25–26, 200, 201, 646, 652 Turing machine, 4–6, 32–33, 591, 593 Turing machine configuration, 33, 592 Turing test, 567 two-bit breadth-first search, 271–273 two-person game theory, 567 U UCT, 11, 538 unblocked state, 775 undecidability, 32 undecidability (of metric planning), 690 undecidable, 3, 30, 32, 690 underconstraint SAT problem, 595 underconsistent node, 245 unification, 443, 730, 731 uninformed search, 16, 47, 81, 165, 169, 284, 723 uninteruptable power supply, 321 union-find data structure, 154 unique table, 313 unit, 369 unit clause, 732 unit cost problem graph, 14, 306–308 unit propagation, 594, 596 unit resolution, 732 universal hashing, 111, 116 unrecognized dead-end, 276, 334 unsupervised learning, 540 until (operator), 613 unweighted problem graph, 14, 242, 338, 347, 450 UPS, 321 used operator, 262 user interaction, 737 user view serialization, 387 variable transposition, 448, 449 vector notation (of productions system), 35 vectorial pattern database, 191 verification of a solution, vertex ant walk, 654–657, 666 video RAM, 401–407 virtual connection, 523 virtual machine, 713 virtual memory, 319, 320, 752 virtual search tree, 274 VLOCK, 715 von Neumann architecture, 321 VRAM, 401–407 VUNLOCK, 715 W wait-free hash table, 425 wasted space, 602–604 wave-shaping, 409, 410 weak backdoor, 596 weak preimage, 546 weakest precondition, 690, 691 weight, 13–14 weight function, 53 weighted A∗ , 243–244 weighted problem graph, 14, 69, 73 weighted search space, 14, 432 weighted state space problem, 14, 16, 18 weighted transition relation, 286, 299 well-formed formula, win backup, 543, 544 work queue, 375, 390, 394 workspace, 773, 774 worst macro solution length, 450 worst-fit, 599 worst-fit decreasing, 599 V Z valid end state, 441 valleys in h-value surface, 482 value function, 36, 37, 67, 68, 349, 519 value iteration, 65–68, 349 value selection, 581 value-update step, 469–473 variable ordering (in a BDD), 287, 288 variable ordering (of a CSP), 581 variable permutation, 448 zero-initialized edge counting, 493 zero-initialized LRTA∗ , 477, 479, 492, 514 zero-initialized node counting, 492 zero-sum game, 524, 547, 560–561 Zobrist hashing, 564 zone, 721 zone union, 723 zugzwang, 537 This page intentionally left blank This page intentionally left blank This page intentionally left blank This page intentionally left blank ... parts: Heuristic Search Primer (I), Heuristic Search Under Memory Constraints (II), Heuristic Search Under Time Constraints (III), Heuristic Search Variants (IV), xxiii xxiv Preface and Heuristic Search. . .Heuristic Search This page intentionally left blank Heuristic Search Theory and Applications Stefan Edelkamp ă Stefan Schrodl AMSTERDAM... memory-limited, symbolic, and disk-based search, and Part III addresses parallel search, various pruning techniques, and move-committing search strategies Part IV attacks related search methods that