EDELKAMP 03-loa-xvii-xxii-9780123725127 2011/5/28 13:34 Page xix #3
List of Algorithms xix
6.17 Algorithm k-best-first search . .. . . . .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . 250
6.18 Algorithm k-beam search . . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . 252
6.19 A* search with (single) bit-state hashing . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . . 253
6.20 Partial IDA* search with (single) bit-state hashing.. . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . 254
6.21 Dynamic programming search algorithm . . . . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . 256
6.22 Edge relaxation step in dynamic programming . . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... 256
6.23 Solution reconstruction in sparse-memory graph search . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . 260
6.24 Improve procedure for SMGS . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . 261
6.25 Pruning the list of expanded nodes in SMGS . . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . 261
6.26 Breadth-first heuristic search .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . . 263
6.27 Update of a problem graph edge in Algorithm 6.26 .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . . 264
6.28 The beam-stack search algorithm . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . 269
6.29 Algorithm PEA* . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . .. 271
6.30 Update procedure in PEA* for newly generated nodes .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... 272
6.31 Breadth-first search with two bits ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . 272
6.32 Extended IDA* . . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . . 276
6.33 Traversing the search space with one bit per state . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . 279
7.1 BDD arithmetics via fixpoint computation . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . 290
7.2 Symbolic breadth-first tree search implemented with BDDs . .. . . . .. . . . .. . . . .. . . . ... . . ... . . . 292
7.3 Symbolic BFS . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . 293
7.4 Symbolic pattern database construction. . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . . 295
7.5 Cost-optimal symbolic BFS algorithm .. .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . 297
7.6 Dijkstra’s algorithm implemented with BDDs. . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . 299
7.7 A* implemented with BDDs . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . 303
7.8 Symbolic A* in a bucket implementation. . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . 306
7.9 Greedy best-first search implemented with BDDs.. . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . 307
7.10 Symbolic breadth-first branch-and-bound with buckets. . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . 308
7.11 Relational product algorithm to compute the image of a state set . .. . . . .. . . . .. . . . ... . . ... . . . 314
7.12 Dijkstra’s algorithm on buckets . . . . .. . . . .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . 316
7.13 Shortest path A* algorithm on buckets.. . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 316
8.1 External BFS by Munagala and Ranade ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... 327
8.2 Delayed duplicate detection algorithm for BFS ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . 329
8.3 File subtraction for external duplicate elimination .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... 330
8.4 External breadth-first branch-and-bound. . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . 331
8.5 Main routine for external enforced hill-climbing . . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . 333
8.6 External BFS searching for a better state v . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . 333
8.7 External A* for consistent and integral heuristics . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... 338
8.8 External value iteration algorithm . . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . .. . . . . 350
8.9 External value iteration—backward update. . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... 352
9.1 Algorithm to compute a
1
+ · · · + a
n
in parallel .. .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . 372
9.2 Algorithm to compute all prefix sums in parallel . . . . .. . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... . . . 373
9.3 Transposition-driven scheduling . .. . . . .. . . . .. . . . ... . . ... . . ... . . ... . . . .. . . . .. . . . .. . . . .. . . . .. . . . 376
9.4 The depth-slicing parallelization method .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ... . . ... . . ... 377
9.5 Searching and inserting an element in a lock-free hash table .. . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . 379
9.6 Parallel branch-and-bound with global synchronization . . . . .. . . . ... . . ... . . ... . . ... . . ... . . ... 380