Graph and game tree search algorithms -...

56
Graph and game tree search algorithms Przemyslaw Kesk [email protected] Department of Methods of Artificial Intelligence and Applied Mathematics Faculty of Computer Science and Information Technology, Szczecin, Poland

Transcript of Graph and game tree search algorithms -...

Page 1: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Graph and game tree search algorithms

Przemysław [email protected]

Department of Methods of Artificial Intelligence and Applied MathematicsFaculty of Computer Science and Information Technology, Szczecin, Poland

Page 2: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Problems and algorithms

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 3: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Table of contents

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 4: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Is there a path to goal?

v1

v2

v3

v4 v5

v6

v7

v8

Przemysław Klesk (FCSIT, Szczecin, Poland) 4 / 56

Page 5: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Properties of Breadth First Search algorithm

Performs non-directed (possibly exhaustive) search of the graphin a breadth-wise manner, until the goal node (state) is reached.

Can be treated as a general framework, for which there arespecific (refined) cases — algorithms: Best First Search, A∗,algorytm Dijkstry, and other.

Breadth First Search operates on two sets: Open (contains nodesstill to be considered / visited) and Closed (contains nodes alreadyvisited).

Every node is equipped with possibility to remember a referenceto its ancestor (parent), so that when the search solution is found,it is possible to backtrack the path.

Przemysław Klesk (FCSIT, Szczecin, Poland) 5 / 56

Page 6: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Breadth First Search

Algorithm

1 Set empty reference to parent for the initial node, and add thisnode to Open set.

2 While Open remains non-empty, repeat:

1 Take (and remove) one node from Open set. Let us denote itas v.

2 If v is the solution-node (it satisfies the stop condition) thenstop the algorithm and return v as the result.

3 Insert into Open set all descendants (children) of v , such thatdo not exist in Closed set. In all these descendants, memorizereference to v as their ancestor.

4 Insert v into Closed set.

Przemysław Klesk (FCSIT, Szczecin, Poland) 6 / 56

Page 7: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Breadth First Search

Path backtracking

1 Assign the solution node to a temporary node named v.

2 Initialize a sequence (representing the path) with v: Path = (v).

3 While v has a non-empty ancestor repeat:

1 Assign to v its ancestor (v← v.parent).2 Prepend the path Path with v.

Przemysław Klesk (FCSIT, Szczecin, Poland) 7 / 56

Page 8: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Exemplary execution (graph from page 3)

1 Open = {v1}, Closed = {}.

2 Open = {v1} , ∅ so the loop body is executed:2.1 v = v1 , Open = {}.2.2 v = v1 , v8 (stop condition not satisified).2.3 Open = {v2 , v3 , v6}.

2.4 Closed = {v1}.

2 Open = {v2, v3, v6} , ∅ so the loop body is

executed:2.1 v = v2 , Open = {v3 , v6}.2.2 v = v2 , v8 (stop condition not satisfied).2.3 Open = {v3 , v6} (attention: v3 as a child of v2 is not

added to Open for the second time).

2.4 Closed = {v1 , v2}.

2 Open = {v3, v6} , ∅ so the loop body is executed:2.1 v = v3 , Open = {v6}.2.2 v = v3 , v8 (stop condition not satisfied).2.3 Open = {v6 , v4} (attention: v1 as a child of v3 is not

added to Open, since it exists in Closed.)

2.4 Closed = {v1 , v2 , v3}.

2 . . .

v1

v2

v3

v4 v5

v6

v7

v8

Przemysław Klesk (FCSIT, Szczecin, Poland) 8 / 56

Page 9: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Breadth-First-Search algorithm

Remarks on Breadth First Search

Sets Open and Closed in the case of Breadth First Search aretypically implemented as regular FIFO queues. Only inspecialized versions of the algorithm i.e. in BestFirstSearch or A∗,these sets are implemented respectively as: a priority queue and ahash map.

If the search is related to a tree (graph with no cycles), then theClosed can be omitted.

Breadth First Search is not in anyways directed for a fast arrival tothe goal (it traverses the graph breadth-wise): it does notminimize the path, it does not use any heuristic.

Przemysław Klesk (FCSIT, Szczecin, Poland) 9 / 56

Page 10: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Table of contents

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 11: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Properties of Best First Search (Judea Pearl)

Every state (node) v is given a heuristic score f (v) , which estimates how far this state isfrom the goal state.

The algorithm searches through states in the increasing order of heuristic function.

The Open set is implemented as a priority queue which sorts the states according to theheuristic function. Insertion of a new element to the queue is of complexity: O(log n).Polling (taking with removal) the ‘minimal’ element from the queue is of complexity:O(log n).

The Closed set is implemented as a hash map. Checking if a stat has already been visited(exists in the Closed set) is of complexity: O(1).

Every state keeps a reference to its most favorable ancestor (known so far).

Przemysław Klesk (FCSIT, Szczecin, Poland) 11 / 56

Page 12: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Best First Search

Algorithm

1 Set empty reference to the parent for the initial state and add this stateto Open set.

2 While Open remains non-empty, repeat:

1 Take (and remove) on state v from Open (it is the best state in the sense of appliedheuristic function).

2 If v is the goal state (it satisfies the stop condition) then stop the algorithm andreturn v as the result.

3 Generate all descendant states (children) of v and for each of them perform:

1 If the child is in Closed then do not investigate it further (continue).2 Calculate the heuristic score for the child.3 If the child does not exist in Open then add it and set up v as its ancestor

(parent).4 If the child exists in Open and its newly calculated heuristic score is better

than the previous one, then: replace this score, replace the reference toparent, and reposition the child within Open set.

4 Insert v into Closed set.

Przemysław Klesk (FCSIT, Szczecin, Poland) 12 / 56

Page 13: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Sudoku

Sudoku 9 × 9

Given an initial state of a 9 × 9 board, divided additionally into 9 subsquaresof size 3 × 3 each, the goal is to fill the whole board in such a way that inevery row, every column and every subsquare all numbers from {1, 2, . . . , 9}are used.

General n2 sudoku

Given an initial state of a n2 × n2 board, divided additionally into n2

subsquares of size n × n each, the goal is to fill the whole board in such a waythat in every row, every column and every subsquare all numbers from{1, 2, . . . ,n2} are used.

Przemysław Klesk (FCSIT, Szczecin, Poland) 13 / 56

Page 14: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Sudoku — medium hard example

8 * * * 3 * * * *9 3 * * * 7 * * ** 7 1 5 2 * 9 * ** * 5 * 1 * 6 2 ** * * * 5 * * * ** 4 6 * 8 * 3 * ** * 9 * 7 6 8 5 ** 6 * 1 * * * 3 2* * * * 4 * * * 6

−→

8 5 4 9 3 1 2 6 79 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 8 4 2 7 9 6

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 2

5 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 7 0 6

depth = 48

g = 48.0, h = 2.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 0 5 3 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 3

3 0 5 4 1 0 6 2 00 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 0 5 4 1 9 6 2 00 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 0 1 06 7 1 5 2 4 9 8 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 14

g = 14.0, h = 36.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 0 1 06 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 15

g = 15.0, h = 35.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 9 6 2 40 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 40 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 0 0 7 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 0 7 6

depth = 48

g = 48.0, h = 2.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 14

g = 14.0, h = 36.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 15

g = 15.0, h = 35.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 1

5 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 0 1 9 8 0 3 20 0 0 2 4 0 0 0 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 0 0 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 2

g = 2.0, h = 48.0, f = 50.0

8 5 0 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 3

g = 3.0, h = 47.0, f = 50.0

8 2 0 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 3

g = 3.0, h = 47.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 40 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 0 0 6 5 9 0 0 00 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 0 0 6 5 9 0 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 2

5 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 0 1 9 8 4 3 20 0 0 2 4 0 0 7 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 20 0 0 2 4 0 0 7 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 0 0 7

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 7

g = 7.0, h = 43.0, f = 50.0

8 5 4 9 3 1 2 0 7

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 8

g = 8.0, h = 42.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 10

g = 10.0, h = 40.0, f = 50.0

8 5 2 9 3 0 0 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 11

g = 11.0, h = 39.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 7 8 0 3 0 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 06 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 13

g = 13.0, h = 37.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 9

g = 9.0, h = 41.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 10

g = 10.0, h = 40.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 0 0 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 0 0 0 3 20 0 0 0 4 0 0 0 6

depth = 1

g = 1.0, h = 49.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 7 54 0 9 3 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 7 54 0 9 3 7 6 8 5 10 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 9 5 4 1 3 6 2 80 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 3

7 9 5 4 1 3 6 2 80 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 8 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 9 5 4 1 0 6 2 80 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 0 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 2

7 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 40 0 3 6 5 0 0 0 00 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 40 0 3 6 5 0 0 0 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 0 1 9 5 0 3 2

5 0 0 0 4 0 0 0 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 0 1 9 5 0 3 25 2 0 0 4 0 0 0 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 0

2 0 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 2 9 3 1 7 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 15

g = 15.0, h = 35.0, f = 50.0

8 5 2 9 3 1 7 0 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 16

g = 16.0, h = 34.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 00 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 7 5

4 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 80 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 8 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 2

5 0 0 0 4 0 0 9 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 0 0 4 0 0 9 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 8 6 7 2 1 50 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 8

g = 8.0, h = 42.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 8 6 7 2 1 5

6 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 9

g = 9.0, h = 41.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 1

1 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 14 6 8 1 9 5 7 3 2

7 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 8 1 9 5 4 3 20 0 0 2 4 0 0 7 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 1

7 6 8 1 9 5 4 3 20 0 0 2 4 0 0 7 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 06 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 16

g = 16.0, h = 34.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 17

g = 17.0, h = 33.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 8 1 9 5 7 3 20 0 0 0 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 0

2 0 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 8

2 8 3 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 8 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 0 6 2 80 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 2

5 0 0 0 4 0 0 9 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 0 0 4 0 0 9 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 4

2 0 3 6 5 0 0 0 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 0 5 4 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 8 1 9 5 7 3 20 0 0 0 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 2 9 3 1 0 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 12

g = 12.0, h = 38.0, f = 50.0

8 5 2 9 3 1 0 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 13

g = 13.0, h = 37.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 41 4 6 2 8 9 3 7 54 0 9 3 7 6 8 5 10 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 0 9 3 7 6 8 5 10 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 4 1 0 6 2 80 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 5

3 1 9 2 7 6 8 5 04 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 2

3 0 0 2 4 0 0 7 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 0 5 4 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 0 5 4 1 9 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 0 6 7 0 1 0

6 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 11

g = 11.0, h = 39.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 0 1 06 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 12

g = 12.0, h = 38.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 0 1 06 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 12

g = 12.0, h = 38.0, f = 50.0

8 5 2 9 3 1 0 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 14

g = 14.0, h = 36.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 17

g = 17.0, h = 33.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 7 50 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 0 9 2 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 0 0 0 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 0 0 10 4 6 7 8 0 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 8 3 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 0 5 4 1 9 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 9

3 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 0 9 2 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 00 0 3 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 0

2 0 3 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 0 0 9 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 0 0 9 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 0 4 0 0 9 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 3

7 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 5

g = 5.0, h = 45.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 8 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 6

g = 6.0, h = 44.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 9

3 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 4 8 6 7 0 1 50 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 7

g = 7.0, h = 43.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 00 0 3 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 0

2 0 3 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 70 9 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 70 9 7 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 0 0 9 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 0 0 9 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 0 4 0 0 9 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 7 6 5 3 0 8 01 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 30

g = 30.0, h = 20.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 9

2 0 7 6 5 3 0 8 01 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 20 1 3 2 4 8 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 0 0 00 4 6 7 8 0 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 18

g = 18.0, h = 32.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 2 9 0 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 7 0 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 7 0 6

depth = 48

g = 48.0, h = 2.0, f = 50.0

8 5 4 9 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 5

g = 5.0, h = 45.0, f = 50.0

8 5 4 9 3 1 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 6

g = 6.0, h = 44.0, f = 50.0

8 5 2 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 4

g = 4.0, h = 46.0, f = 50.0

8 5 4 0 3 0 0 0 0

9 3 0 0 6 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 4

g = 4.0, h = 46.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 0 2 4 0 0 7 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 1

7 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 0 0 5 0 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 7 0 5 0 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 0 4 0 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 3 4 0 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 4 1 3 6 2 82 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 0 8 01 4 6 2 8 9 3 7 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 00 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 70 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 2

5 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 3

7 0 5 4 1 0 6 2 00 0 0 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 0 0 0 3 0 0 0 0

9 3 0 0 0 7 0 1 00 7 1 5 2 0 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 0 0 0 3 20 0 0 0 4 0 0 0 6

depth = 0

g = 0.0, h = 50.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 3 4 8 0 9 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 2

5 0 0 2 4 0 0 7 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 0 2 4 0 0 7 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 20 0 0 0 4 0 0 0 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 0 1 9 5 0 3 25 2 7 8 4 0 0 0 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 8 1 9 5 0 3 25 2 7 8 4 0 0 0 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 16

g = 16.0, h = 34.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 0 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 2

5 0 0 0 4 0 0 0 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 0 0 4 0 0 0 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 0 4 0 0 9 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 3 4 0 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 4 1 3 6 2 82 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 8 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 17

g = 17.0, h = 33.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 2 4 0 0 7 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 81 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 2 4 8 0 7 6

depth = 48

g = 48.0, h = 2.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 0 5 7 1 4 6 2 00 0 0 0 5 0 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 0 5 7 1 4 6 2 90 0 0 0 5 0 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 2

5 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 93 1 9 2 7 6 8 5 04 6 8 1 9 5 7 3 25 2 7 3 4 8 0 9 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 0 5 7 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 0 4 0 0 0 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 8 4 0 0 0 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 50 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 50 1 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 8 1 9 5 0 3 25 2 7 8 4 3 0 0 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 8 1 9 5 0 3 25 2 7 8 4 3 1 0 6

depth = 47

g = 47.0, h = 3.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 50 1 9 2 7 6 8 5 0

4 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 0 3 20 0 0 2 4 0 0 0 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 06 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 16

g = 16.0, h = 34.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 37

g = 37.0, h = 13.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 8 0 6 5 9 0 0 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 34

g = 34.0, h = 16.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 2

3 0 0 2 4 0 0 0 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 0 2 4 0 0 0 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 0 5 3 1 0 6 2 00 0 0 6 5 0 0 0 00 4 6 7 8 0 3 0 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 23

g = 23.0, h = 27.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 8 4 2 0 0 6

depth = 48

g = 48.0, h = 2.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 8 4 2 7 0 6

depth = 49

g = 49.0, h = 1.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 17 6 8 1 9 5 4 3 25 1 3 8 4 2 7 9 6

depth = 50

g = 50.0, h = 0.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 2

7 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 4 0 0

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 15

g = 15.0, h = 35.0, f = 50.0

8 5 2 9 3 1 4 0 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 16

g = 16.0, h = 34.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 0 4 0 0 0 6

depth = 22

g = 22.0, h = 28.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 17

g = 17.0, h = 33.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 0 1 3 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 4 1 3 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 2 9 3 7 6 8 5 44 6 8 1 9 5 7 3 2

7 1 3 2 4 8 0 9 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 0 0 0 6

depth = 44

g = 44.0, h = 6.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 0 0 6

depth = 45

g = 45.0, h = 5.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 23 1 8 2 4 5 7 0 6

depth = 46

g = 46.0, h = 4.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 1 0 00 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 17

g = 17.0, h = 33.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 18

g = 18.0, h = 32.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 0 1 3 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 4 1 3 6 2 02 0 3 0 5 9 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 33

g = 33.0, h = 17.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 18

g = 18.0, h = 32.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 3

3 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 4 71 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 1

5 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 42

g = 42.0, h = 8.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 7

2 9 7 6 5 0 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 00 0 9 2 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 36

g = 36.0, h = 14.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 7 3 20 0 0 0 4 0 0 0 6

depth = 18

g = 18.0, h = 32.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 0 41 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 7 41 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 39

g = 39.0, h = 11.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 00 0 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 0 0 01 4 6 7 8 2 3 9 54 2 9 3 7 6 8 5 15 6 7 1 9 8 4 3 20 0 0 2 4 0 0 0 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 7 0 5 3 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 18

g = 18.0, h = 32.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 2 9 0 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 19

g = 19.0, h = 31.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 24

g = 24.0, h = 26.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 82 8 3 6 5 9 1 0 41 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 38

g = 38.0, h = 12.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 7 6 5 3 0 0 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 28

g = 28.0, h = 22.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 00 0 7 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 32

g = 32.0, h = 18.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 6 5 0 0 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 25

g = 25.0, h = 25.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 0 5 7 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 2 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 21

g = 21.0, h = 29.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 0 5 7 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 20

g = 20.0, h = 30.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 0 1 06 7 1 5 2 4 9 0 00 0 5 0 1 0 6 2 00 0 0 0 5 0 0 0 00 4 6 0 8 0 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 0 0 3 20 0 0 0 4 0 0 0 6

depth = 13

g = 13.0, h = 37.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 72 9 7 6 5 3 1 4 01 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 7 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 5 1 46 7 1 5 2 4 9 8 37 9 5 4 1 3 6 2 80 0 0 6 5 0 0 0 00 4 6 7 8 2 3 9 04 2 9 3 7 6 8 5 10 6 0 1 9 0 0 3 20 0 0 2 4 0 0 0 6

depth = 31

g = 31.0, h = 19.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 90 0 7 6 5 3 0 8 00 4 6 2 8 9 3 0 00 0 9 0 7 6 8 5 00 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 29

g = 29.0, h = 21.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 2 9 3 1 7 6 4

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 30 0 5 4 1 0 6 2 00 0 0 0 5 0 1 0 00 4 6 7 8 0 3 0 04 2 9 3 7 6 8 5 10 6 0 1 9 0 4 3 20 0 0 2 4 0 0 0 6

depth = 26

g = 26.0, h = 24.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 2 4 0 0 9 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 2 4 0 0 9 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 30 0 5 0 1 0 6 2 00 0 0 0 5 0 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 27

g = 27.0, h = 23.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 3 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 2 4 0 0 9 6

depth = 41

g = 41.0, h = 9.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 37 8 5 3 1 9 6 2 42 9 3 6 5 4 7 8 11 4 6 7 8 2 3 9 53 1 9 2 7 6 8 5 04 6 0 1 9 5 0 3 25 2 0 8 4 0 0 0 6

depth = 43

g = 43.0, h = 7.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 8 6 7 4 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 6 5 3 1 4 81 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 3 2 4 0 0 9 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

8 5 2 9 3 1 4 6 7

9 3 4 8 6 7 2 1 56 7 1 5 2 4 9 8 33 8 5 4 1 9 6 2 02 9 7 0 5 3 1 0 01 4 6 7 8 2 3 0 90 0 9 0 7 6 8 5 04 6 8 1 9 5 7 3 20 0 0 0 4 0 0 9 6

depth = 35

g = 35.0, h = 15.0, f = 50.0

8 5 4 9 3 1 2 6 7

9 3 2 4 6 7 5 1 86 7 1 5 2 8 9 4 33 8 5 7 1 4 6 2 92 9 7 6 5 3 1 8 41 4 6 2 8 9 3 7 54 2 9 3 7 6 8 5 10 6 0 1 9 5 0 3 20 0 0 0 4 0 0 0 6

depth = 40

g = 40.0, h = 10.0, f = 50.0

Heuristics: number of empty cells.Descendants generated in the cell with minimum remaining possibilities.Time: 0.109 s (Intel Core i7), closed: 289, open: 1, tempo: 2.7 · 103 state/s.

Przemysław Klesk (FCSIT, Szczecin, Poland) 14 / 56

Page 15: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Sudoku — hard example “Qassim Hamza”

* * * 7 * * 8 * ** * * * 4 * * 3 ** * * * * 9 * * 16 * * 5 * * * * ** 1 * * 3 * * 4 ** * 5 * * 1 * * 75 * * 2 * * 6 * ** 3 * * 8 * * 9 ** * 7 * * * * * 2

−→

3 2 9 7 1 6 8 5 41 7 6 8 4 5 2 3 94 5 8 3 2 9 7 6 16 4 3 5 7 2 9 1 87 1 2 9 3 8 5 4 68 9 5 4 6 1 3 2 75 8 1 2 9 4 6 7 32 3 4 6 8 7 1 9 59 6 7 1 5 3 4 8 2

Time: 0.499 s, closed: 2 024, open: 4, tempo: 4.1 · 103 state/s.

Przemysław Klesk (FCSIT, Szczecin, Poland) 15 / 56

Page 16: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

All 4 × 4 sudokus

* * * ** * * ** * * ** * * *

−→4 2 3 11 3 4 22 4 1 33 1 2 4

,4 2 3 11 3 4 23 1 2 42 4 1 3

, · · · ,1 3 2 44 2 1 33 1 4 22 4 3 1

Solutions: 288.Time: 0.183, closed: 2 273, open: 0, tempo: 1.2 · 104 state/s.

For 9 × 9 sudoku, an analogical attempt exhausts 4 GB of RAM after about 23 000 first solutionsand 5 · 105 visited states.

True number of solutions ≈ 6.7 · 1021.

Przemysław Klesk (FCSIT, Szczecin, Poland) 16 / 56

Page 17: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Exemplary heuristics

Sudoku (naive heuristic)

We start from initial board (initial state) and successively put alladmissible numbers into empty squares (max. 9 children per treelevel). We say that a state is the closer to the solution the fewer emptysquares it contains.

f (v) =

∞, if state v is contradictory;

number of empty squares in v.

Przemysław Klesk (FCSIT, Szczecin, Poland) 17 / 56

Page 18: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Exemplary simple heuristics

Sudoku (heuristic according to the minimum of remaining possiblities)

Identify v with sudoku board. Let Rv(i, j) denote remaining possibilities for thesquare (i, j) of board v — i.e. possibilities remaining by eliminating numbersexisting in i-th, row and j-th column and in the subsquare to which (i, j)belongs.

We say that a state is the closer to the solution, the fewer remainingpossibilities it has for some subsquare. Children states ought to be ‘fastened’under this very subsquare.

f (v) = mini,j

#Rv(i, j).

Przemysław Klesk (FCSIT, Szczecin, Poland) 18 / 56

Page 19: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Exemplary simple heuristics

Sudoku (heuristic according to the sum of remaining possiblities)

We say that a state is the closer to the solution, the smaller is the sum of theremaining possibilities cardinalities taken over all empty subsquares.Children states ought to be ‘fastened’ under: arg mini,j #Rv(i, j).

f (v) =∑

i,j

#Rv(i, j).

Przemysław Klesk (FCSIT, Szczecin, Poland) 19 / 56

Page 20: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Exemplary simple heuristics

n-queens (naive heuristic)

We start from the empty chess chessboard and we add queens into successiverows.

We say that a state is the closer to the solution the fewer empty rows it has.

f (v) =

∞, if some queens attack each other;

number of empty rows in v.

Przemysław Klesk (FCSIT, Szczecin, Poland) 20 / 56

Page 21: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Exemplary simple heuristics

n-queens (heuristic according to the maximum of remaining possibilities)

Let Rv denote the number of remaining non-attacked squares in v. We saythat a state is the closer to the solution, the more non-attacked squares it has.

f (v) =

∞, if some queens attack each other;

Rv.

Przemysław Klesk (FCSIT, Szczecin, Poland) 21 / 56

Page 22: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Minimal sudoku

Problem (in generality for n2 sudoku)

The task is to find all initial sudoku states, such that there exist a uniquesolution for each of them and that the number of given initial numbers is thesmallest.

Proof that such states exist

Starting from any solved sudoku board (completely filled) removesuccessively numbers from it, and after each removal check if new sudokucan be solved uniquely. Stop when more than one solution exists. Knowingthat a completely empty sudoku board is non uniquely solvable, it is easy tosee that the above procedure must have some stopping moment at a partialfilling of the board. �

Przemysław Klesk (FCSIT, Szczecin, Poland) 22 / 56

Page 23: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Searching for minimal sudokus

Sketch of a greedy algorithm

Start from some solved (completely filled) sudoku board.

Let the descendants (children) of given state be all states created by theremoval of one number from it. Thus, n4 children are possible for thefilled board (then n4 − 1,n4 − 2, . . .).

For every child we check (via Best First Search algorithm for a regularsudoku problem), if there exist at least 2 solutions.

If a certain state has a unique solution, but all its children have morethan one solution, then this state should be memorized as a candidatefor being a minimal sudoku.

The algorithm must be carried out until the whole graph is searchedthrough. One must not stop after the first candidate is reached, since inother ‘graph regions’ there might exist other candidates with fewerinitial numbers.

Przemysław Klesk (FCSIT, Szczecin, Poland) 23 / 56

Page 24: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Searching for minimal sudokus

For n = 2 starting from the board beneath, 128 minimal sudokus have been found (with 4 initialnumbers).

12 3434 1223 4141 23

∗∗ ∗∗∗∗ 12∗∗ ∗∗4∗ ∗3

,

∗∗ ∗∗∗∗ 12∗∗ ∗∗41 ∗∗

,

∗∗ ∗∗∗∗ 12∗∗ ∗14∗ ∗∗

, . . .

Obviously, in order to know the true number of all ‘base’ (or ‘template’) solutions one wouldhave to: (1) identify all the symmetric distributions, (2) identify all states equivalent due topermutation of symbols, (3) trigger the search procedure only for non-equivalent initial states.

Przemysław Klesk (FCSIT, Szczecin, Poland) 24 / 56

Page 25: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Best-First-Search algorithm

Uwagi koncowe o Best First Search

Best First Search searches by usually moving depth-wise in thegraph (but not identically as Depth-First-Search), andsuccessively departing further away from the initial state.

When reaching an illegal state (in particular, when all itsdescendants are illegal), the algorithm retreats to states of worseheuristic value (but still best known value so far).

The number of such retreats depends on: the quality of usedheuristic and the manner in which descendants are generated(any problem-specific knowledge can be helpful here to improvethe search; at least not to allow directly illegal descendants).

Przemysław Klesk (FCSIT, Szczecin, Poland) 25 / 56

Page 26: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Table of contents

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 27: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Properties of A∗ algorithm

(Hart, Nilsson, Raphael, 1968)

The ordering function for the Open set is the following sum:

f (v) = g(v) + h(v),

where g(v) is the true cost (distance) paid for the path from the initialstate up to state v, whereas h(v) is a heuristic estimating the cost(distance) from v to the goal state.

Function h has to be the (so-called) admissible heuristic, i.e. it must notoverestimate the cost (distance) to the goal state (more about it later. . . ).

In applications like: path-finding or routing (where a physical orgeographical graph is considered) a frequent and correct choice for h isa common distance over a straight line from v to the goal (we do notoverestimate for certain).

Przemysław Klesk (FCSIT, Szczecin, Poland) 27 / 56

Page 28: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Properties of A∗ algorithm

(Hart, Nilsson, Raphael, 1968)

Contrarily to Best First Search, A∗ takes into account also g(v), notonly the goal-oriented heuristic. Therefore, in the path (beingbuilt) from one side one prefers states which are close to theinitial state and from the other side (simultaneously) one prefersstates close to the goal state (so that the sum is minimized).

Within the algorithm, each state v must be allowed to memorizeall is three costs: g(v), h(v), f (v).

By moving from ceratin v state to a w state, the value of g functionis calculated as: g(w) = g(v) + d(v,w), where d(v,w) denotes thetransition cost from v to w.

Przemysław Klesk (FCSIT, Szczecin, Poland) 28 / 56

Page 29: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

A∗

Algorithm

1 For the initial state, calculate its h, and set: g = 0, f = 0 + h. Then, set anempty reference to its ancestor (parent) and add the initial state to Openset.

2 While Open remains non-empty, repat:

1 Take (and remove) one state v from Open set (is is the best state with respect to f ).2 If v is the goal state (is satisfies the stop condition) then stop the algorithm and

return v as the result.

3 Generate all states w being children (descendants) of v and for each of them repeat:

1 If w exists in Closed set then do not investigate it further (continue).2 Calculate: g(w) = g(v) + d(v,w) and f (w) = g(w) + h(w).3 If w does not exist in Open then add it there, and set up v as its ancestor

(parent).4 If w exists in Open and newly calculated f for it is better, then update its g, f

(and reference to parent), and update its position within Open set.

4 Insert v into Closed set.

Przemysław Klesk (FCSIT, Szczecin, Poland) 29 / 56

Page 30: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Applications of A∗

In general: minimal path finding. . .

movement of computer/automatic players in computer games,

traversing mazes,

routing problems,

car / phone navigations,

riddles, jig-saw puzzles, etc., when the number of steps should beminimized (e.g. n2 − 1 puzzle, Rubik cube),

. . .

Przemysław Klesk (FCSIT, Szczecin, Poland) 30 / 56

Page 31: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Mazes — results A∗

Grid size: 30 × 30, closed: 258.

Przemysław Klesk (FCSIT, Szczecin, Poland) 31 / 56

Page 32: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Mazes — results A∗

Grid size: 30 × 30, closed: 331.

Przemysław Klesk (FCSIT, Szczecin, Poland) 32 / 56

Page 33: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Mazes — results A∗

Grid size: 50 × 50, closed: 1441.

Przemysław Klesk (FCSIT, Szczecin, Poland) 33 / 56

Page 34: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Good and bad (overestimating) heurisitc

h(v) =√

(vx − goalx)2 + (vy − goaly)2

lub h(v) = |vx − goalx| + |(vy − goaly)|

h(v) = 4√

(vx − goalx)2 + (vy − goaly)2

Przemysław Klesk (FCSIT, Szczecin, Poland) 34 / 56

Page 35: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Sliding puzzle (n2 − 1)

Dla n = 3

Starting from the initial state and successively sliding the squares intothe empty square (numbered as 0), the task is to reach the followingstate in as few steps as possible:

0 1 2

3 4 5

6 7 8

Przemysław Klesk (FCSIT, Szczecin, Poland) 35 / 56

Page 36: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Sliding puzzle (n2 − 1)

Exemplary heuristics

“Misplaced tiles” — number of tiles in wrong places (omitting ‘0’ in thecount).

“Manhattan” — sum of Manhattan distances between cells’ currentpositions and their target positions (omitting ‘0’ in the count).

h(v) =∑

i∈{1,2,...,n2−1}

∣∣∣xv(i) − ⌊i/n⌋

∣∣∣ +∣∣∣yv(i) − (i mod n)

∣∣∣,

where xv(i), yv(i) indicate current position — row and column (indexingfrom zero) — for the cell with number i in the state v underconsideration.

“Manhattan + Linear Conflicts” — as above + counting additional twomoves for each linear conflict, see “Generating Admissible Heuristics byCriticizing Solutions to Relaxed Models” (Hansson & Mayer & Yung, 1985).

Przemysław Klesk (FCSIT, Szczecin, Poland) 36 / 56

Page 37: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Sliding puzzle — example for n = 3

3 2

4 7 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 2 5

4 7

1 6 8

depth = 9

g = 9.0, h = 9.0, f = 18.0

3 2

4 7 8

1 5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

3 2 8

4 7

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3

7 5 2

1 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

3 7

1 4 2

5 6 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

3 7

4 5 2

1 6 8

depth = 6

g = 6.0, h = 10.0, f = 16.0

3 7

4 5 2

1 6 8

depth = 7

g = 7.0, h = 11.0, f = 18.0

3 7

4 8 2

1 5 6

depth = 4

g = 4.0, h = 14.0, f = 18.0

1 4 2

3 5

6 7 8

depth = 13

g = 13.0, h = 3.0, f = 16.0

1 4 2

3 5

6 7 8

depth = 14

g = 14.0, h = 2.0, f = 16.0

1 4 2

6 3 5

7 8

depth = 14

g = 14.0, h = 4.0, f = 18.0

1 4 2

3 5

6 7 8

depth = 15

g = 15.0, h = 3.0, f = 18.0

1 4 2

3 7 5

6 8

depth = 15

g = 15.0, h = 3.0, f = 18.0

1 2

3 4 5

6 7 8

depth = 15

g = 15.0, h = 1.0, f = 16.0

3 2

4 1 5

6 7 8

depth = 12

g = 12.0, h = 4.0, f = 16.0

3 2

4 1 5

6 7 8

depth = 13

g = 13.0, h = 3.0, f = 16.0

3 2

4 1 8

5 7 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

3 2

4 1 8

5 7 6

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 2

4 5 8

7 1 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

3 2

4 5 8

7 1 6

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 2

4 7 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 2

4 7 8

1 5 6

depth = 0

g = 0.0, h = 12.0, f = 12.0

4 3 2

7 8

1 5 6

depth = 1

g = 1.0, h = 13.0, f = 14.0

3 2

4 7 8

1 5 6

depth = 1

g = 1.0, h = 11.0, f = 12.0

4 2

1 3 5

6 7 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

4 2

1 3 5

6 7 8

depth = 12

g = 12.0, h = 4.0, f = 16.0

4 2

1 3 5

6 7 8

depth = 12

g = 12.0, h = 6.0, f = 18.0

4 2

1 3 8

5 7 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 2

1 3 8

5 7 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

4 2

1 3 8

5 7 6

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 2

7 3 5

1 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

4 2

7 3 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

4 2

7 3 5

1 6 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

4 2

7 3 8

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 2

7 3 8

1 5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 2

7 3 8

1 5 6

depth = 4

g = 4.0, h = 14.0, f = 18.0

1 2

3 4 5

6 7 8

depth = 16

g = 16.0, h = 0.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

4 3 2

6 1 5

7 8

depth = 12

g = 12.0, h = 6.0, f = 18.0

4 3 2

1 8

5 7 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3 2

5 1 8

7 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

4 3 2

5 8

7 1 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3 2

5 8

7 1 6

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

4 3 2

1 7 5

6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

4 3 2

1 7 8

5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

4 3 2

7 8

1 5 6

depth = 2

g = 2.0, h = 14.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 10

g = 10.0, h = 6.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 11

g = 11.0, h = 7.0, f = 18.0

4 3 2

1 7

5 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 3 2

1 8

5 7 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 3 2

1 8

5 7 6

depth = 5

g = 5.0, h = 13.0, f = 18.0

4 3 2

1 7

5 6 8

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3

1 7 2

5 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 3 2

1 7 5

6 8

depth = 9

g = 9.0, h = 7.0, f = 16.0

4 3 2

1 7 5

6 8

depth = 10

g = 10.0, h = 8.0, f = 18.0

4 3 2

1 7 8

5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3 2

1 7 8

5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 3 2

5 1 8

7 6

depth = 7

g = 7.0, h = 11.0, f = 18.0

3 7 2

1 5

6 4 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

3 7 2

6 1 5

4 8

depth = 12

g = 12.0, h = 6.0, f = 18.0

7 2

3 1 5

6 4 8

depth = 12

g = 12.0, h = 4.0, f = 16.0

3 7 2

4 5

1 6 8

depth = 7

g = 7.0, h = 7.0, f = 14.0

3 7 2

1 4 5

6 8

depth = 8

g = 8.0, h = 6.0, f = 14.0

7 2

3 4 5

1 6 8

depth = 8

g = 8.0, h = 6.0, f = 14.0

3 7 2

4 8

1 5 6

depth = 3

g = 3.0, h = 11.0, f = 14.0

3 7 2

1 4 8

5 6

depth = 4

g = 4.0, h = 10.0, f = 14.0

7 2

3 4 8

1 5 6

depth = 4

g = 4.0, h = 10.0, f = 14.0

3 7 2

5 8

4 1 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

3 7 2

5 8

4 1 6

depth = 6

g = 6.0, h = 12.0, f = 18.0

7 2

3 5 8

4 1 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

3 7 2

6 5

4 1 8

depth = 9

g = 9.0, h = 9.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 6

g = 6.0, h = 10.0, f = 16.0

4 3 2

7 6 5

1 8

depth = 7

g = 7.0, h = 11.0, f = 18.0

4 3 2

7 5 8

1 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3 2

7 8

1 5 6

depth = 3

g = 3.0, h = 15.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3 2

7 5 8

1 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 3 2

7 5 8

1 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

3 7 2

1 4

5 6 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

3 7 2

1 5

6 4 8

depth = 10

g = 10.0, h = 6.0, f = 16.0

3 7 2

1 5

6 4 8

depth = 11

g = 11.0, h = 7.0, f = 18.0

3 2

1 7 5

6 4 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

3 7 2

1 8

5 4 6

depth = 6

g = 6.0, h = 12.0, f = 18.0

3 7 2

1 4

5 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 7 2

1 4

6 8 5

depth = 11

g = 11.0, h = 7.0, f = 18.0

3 7 2

1 4 5

6 8

depth = 9

g = 9.0, h = 5.0, f = 14.0

3 7 2

1 4 5

6 8

depth = 10

g = 10.0, h = 6.0, f = 16.0

3 7 2

1 4 8

5 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

3 7 2

1 4 8

5 6

depth = 6

g = 6.0, h = 10.0, f = 16.0

1 2

3 4 5

6 7 8

depth = 16

g = 16.0, h = 2.0, f = 18.0

3 7 2

4 5

1 6 8

depth = 6

g = 6.0, h = 8.0, f = 14.0

3 7 2

4 6 5

1 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 2

4 7 5

1 6 8

depth = 7

g = 7.0, h = 7.0, f = 14.0

3 7 2

4 8

1 5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

3 7 2

4 5 8

1 6

depth = 3

g = 3.0, h = 11.0, f = 14.0

3 7 2

4 8

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

3 7 2

4 5

1 6 8

depth = 5

g = 5.0, h = 9.0, f = 14.0

3 7 2

4 5 8

1 6

depth = 4

g = 4.0, h = 10.0, f = 14.0

3 7 2

4 5 8

1 6

depth = 4

g = 4.0, h = 10.0, f = 14.0

3 7 2

4 6 5

1 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 7 2

4 6 5

1 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

3 7 2

4 8 6

1 5

depth = 4

g = 4.0, h = 14.0, f = 18.0

7 2

3 4 5

1 6 8

depth = 9

g = 9.0, h = 7.0, f = 16.0

7 2

3 4 8

1 5 6

depth = 5

g = 5.0, h = 11.0, f = 16.0

1000 shuffling moves, heuristics: “Manhattan”.Time: 0.018 s, closed: 62, open: 44, tempo: 5.9 · 104 state/s.Path length: 16 (optimality guaranteed).

Przemysław Klesk (FCSIT, Szczecin, Poland) 37 / 56

Page 38: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Sliding puzzle — example for n = 3

3 2

4 7 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 2 5

4 7

1 6 8

depth = 9

g = 9.0, h = 9.0, f = 18.0

3 2

4 7 8

1 5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

3 2 8

4 7

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3

7 5 2

1 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

3 7

4 5 2

1 6 8

depth = 6

g = 6.0, h = 10.0, f = 16.0

3 7

4 5 2

1 6 8

depth = 7

g = 7.0, h = 11.0, f = 18.0

3 7

4 8 2

1 5 6

depth = 4

g = 4.0, h = 14.0, f = 18.0

1 4 2

3 5

6 7 8

depth = 13

g = 13.0, h = 3.0, f = 16.0

1 4 2

3 5

6 7 8

depth = 14

g = 14.0, h = 2.0, f = 16.0

1 4 2

6 3 5

7 8

depth = 14

g = 14.0, h = 4.0, f = 18.0

1 4 2

3 5

6 7 8

depth = 15

g = 15.0, h = 3.0, f = 18.0

1 4 2

3 7 5

6 8

depth = 15

g = 15.0, h = 3.0, f = 18.0

1 2

3 4 5

6 7 8

depth = 15

g = 15.0, h = 1.0, f = 16.0

3 2

4 1 5

6 7 8

depth = 12

g = 12.0, h = 4.0, f = 16.0

3 2

4 1 5

6 7 8

depth = 13

g = 13.0, h = 3.0, f = 16.0

3 2

4 7 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 2

4 7 8

1 5 6

depth = 0

g = 0.0, h = 12.0, f = 12.0

4 3 2

7 8

1 5 6

depth = 1

g = 1.0, h = 13.0, f = 14.0

3 2

4 7 8

1 5 6

depth = 1

g = 1.0, h = 11.0, f = 12.0

4 2

1 3 5

6 7 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

4 2

1 3 5

6 7 8

depth = 12

g = 12.0, h = 4.0, f = 16.0

4 2

1 3 5

6 7 8

depth = 12

g = 12.0, h = 6.0, f = 18.0

4 2

7 3 5

1 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

4 2

7 3 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

4 2

7 3 5

1 6 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

4 2

7 3 8

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 2

7 3 8

1 5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 2

7 3 8

1 5 6

depth = 4

g = 4.0, h = 14.0, f = 18.0

1 2

3 4 5

6 7 8

depth = 16

g = 16.0, h = 0.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 11

g = 11.0, h = 5.0, f = 16.0

4 3 2

6 1 5

7 8

depth = 12

g = 12.0, h = 6.0, f = 18.0

4 3 2

5 8

7 1 6

depth = 5

g = 5.0, h = 13.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

4 3 2

1 7 5

6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

4 3 2

1 7 8

5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

4 3 2

7 8

1 5 6

depth = 2

g = 2.0, h = 14.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 10

g = 10.0, h = 6.0, f = 16.0

4 3 2

1 5

6 7 8

depth = 11

g = 11.0, h = 7.0, f = 18.0

4 3 2

1 7

5 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 3 2

1 8

5 7 6

depth = 4

g = 4.0, h = 14.0, f = 18.0

4 3 2

1 7

5 6 8

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3

1 7 2

5 6 8

depth = 6

g = 6.0, h = 12.0, f = 18.0

4 3 2

1 7 5

6 8

depth = 9

g = 9.0, h = 7.0, f = 16.0

4 3 2

1 7 5

6 8

depth = 10

g = 10.0, h = 8.0, f = 18.0

4 3 2

1 7 8

5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3 2

1 7 8

5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

3 7 2

4 5

1 6 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 7 2

1 4 5

6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

7 2

3 4 5

1 6 8

depth = 8

g = 8.0, h = 8.0, f = 16.0

3 7 2

4 8

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

3 7 2

1 4 8

5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

7 2

3 4 8

1 5 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

3 7 2

5 8

4 1 6

depth = 5

g = 5.0, h = 13.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 6

g = 6.0, h = 10.0, f = 16.0

4 3 2

7 6 5

1 8

depth = 7

g = 7.0, h = 11.0, f = 18.0

4 3 2

7 5 8

1 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

4 3 2

7 8

1 5 6

depth = 3

g = 3.0, h = 15.0, f = 18.0

4 3 2

7 5

1 6 8

depth = 5

g = 5.0, h = 11.0, f = 16.0

4 3 2

7 5 8

1 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

4 3 2

7 5 8

1 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

3 7 2

1 5

6 4 8

depth = 10

g = 10.0, h = 8.0, f = 18.0

3 7 2

1 4 5

6 8

depth = 9

g = 9.0, h = 7.0, f = 16.0

3 7 2

1 4 5

6 8

depth = 10

g = 10.0, h = 8.0, f = 18.0

3 7 2

1 4 8

5 6

depth = 5

g = 5.0, h = 13.0, f = 18.0

1 2

3 4 5

6 7 8

depth = 16

g = 16.0, h = 2.0, f = 18.0

3 7 2

4 5

1 6 8

depth = 6

g = 6.0, h = 8.0, f = 14.0

3 7 2

4 6 5

1 8

depth = 7

g = 7.0, h = 9.0, f = 16.0

3 2

4 7 5

1 6 8

depth = 7

g = 7.0, h = 7.0, f = 14.0

3 7 2

4 8

1 5 6

depth = 2

g = 2.0, h = 12.0, f = 14.0

3 7 2

4 5 8

1 6

depth = 3

g = 3.0, h = 11.0, f = 14.0

3 7 2

4 8

1 5 6

depth = 3

g = 3.0, h = 13.0, f = 16.0

3 7 2

4 5

1 6 8

depth = 5

g = 5.0, h = 9.0, f = 14.0

3 7 2

4 5 8

1 6

depth = 4

g = 4.0, h = 12.0, f = 16.0

3 7 2

4 5 8

1 6

depth = 4

g = 4.0, h = 10.0, f = 14.0

3 7 2

4 6 5

1 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

3 7 2

4 6 5

1 8

depth = 8

g = 8.0, h = 10.0, f = 18.0

3 7 2

4 8 6

1 5

depth = 4

g = 4.0, h = 14.0, f = 18.0

1000 shuffling moves, heuristics: “Manhattan + linear conflicts”.Time: 0.022 s, closed: 45, open: 33, tempo: 3.5 · 104 state/s.Path length: 16 (optimality guaranteed).

Przemysław Klesk (FCSIT, Szczecin, Poland) 38 / 56

Page 39: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Sliding puzzle — ‘easy’ example for n = 4

100 shuffling moves, heuristics: “Manhattan + linear conflicts”.Time: 0.078 s, closed: 667, open: 706, tempo: 1.7 · 105 state/s.

Przemysław Klesk (FCSIT, Szczecin, Poland) 39 / 56

Page 40: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

More difficult examples for n = 4

Selected examples from (Hansson & Mayer & Yung, 1985):“Generating Admissible Heuristics by Criticizing Solutions to Relaxed Models”.

IDA∗ (Iterative Deepening A∗) — memory saving version of A∗, but computationally expensive.

nr initialstate

path

lengthIDA∗closed

IDA∗time [s]

A∗closed

and open

states

A∗time [s]

85 4, 7, 13, 10, 1, 2, 9, 6, 12, 8, 14, 5, 3, 0, 11, 15 44 1.5 · 107 26.0 1.7 · 105 , 1.6 · 105 3.7

5 4, 7, 14, 13, 10, 3, 9, 12, 11, 5, 6, 15, 1, 2, 8, 0 56 2.6 · 107 47.8 1.6 · 106 , 1.4 · 106 25.7

2 13, 5, 4, 10, 9, 12, 8, 14, 2, 3, 7, 1, 0, 15, 11, 6 55 3.8 · 107 62.4 2.6 · 106 , 2.1 · 106 48.7

54 12, 11, 0, 8, 10, 2, 13, 15, 5, 4, 7, 3, 6, 9, 14, 1 56 1.9 · 108 312.9

out of RAM (2 GB) at:

3.1 · 106 , 2.5 · 106 —

1 14, 13, 15, 7, 11, 12, 9, 5, 6, 0, 2, 1, 4, 8, 10, 3 57 2.5 · 108 437.6

out of RAM (2 GB) ate:

3.4 · 106 , 2.8 · 106 —

Przemysław Klesk (FCSIT, Szczecin, Poland) 40 / 56

Page 41: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

Properties of A∗ and monotonicity

Heuristic function for certain is admissible, if its monotonous i.e.:

∀v,w h(v) 6 d(v,w) + h(w). (1)

In other words, adding some state to a path results in a path not-shorterthan a former one. The equality takes place only when we add a statelying on the straight line to the goal.

If heuristic h satisfies the condition above then A∗ algorithm guaranteesthat: (1) the found solution is optimal (shortest path), (2) the algorithmitself is optimal with respect to h, i.e. there exist no other algorithmusing h which statistically visits fewer states than A∗.

Let h∗ denote the perfect heuristic, such that does not overestimate andunderestimate costs to the goal. Then, an algorithm using h∗ is alsoperfect — it visits the fewest states. Hence, historically two names ofthe algorithm were distinguished: A and A∗.

Przemysław Klesk (FCSIT, Szczecin, Poland) 41 / 56

Page 42: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

A∗ algorithm

How is A∗ related to Dijkstra’s and Best First

Search?

By imposing ∀v h(v) = 0 the A∗ algorithm becomes thetraditional Dijkstra’s algorithm for the shortest path finding.

By imposing ∀v g(v) = 0 the A∗ becomes the Best First Searchalgorithm. The path length becomes irrelevant, the emphasis isput on fast discovering of solutions (fast in terms of the numberof visited states, e.g.: sodoku, n-queens).

Przemysław Klesk (FCSIT, Szczecin, Poland) 42 / 56

Page 43: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Table of contents

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 44: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

It applies to two-person games e.g. chess, checkers, GO, etc.

In non-modified version, the algorithm consists of two phases: (1)construction of the tree up to wanted number of levels (e.g. via BreadthFirst Search), (2) traversing the tree upwards and assigning scores to allstates, so that finally moves possible at the top-most level are alsoassigned with scores.

Traversing the tree starts with assigning the scores to the terminal states(leafs). Typically a heuristic function is needed for that purpose, e.g. (inchess) weighted difference between the number of remaining pieces forblack and white.

Next, the tree is traversed upwards (level after level). Each level isassociated with moves of one of the players. One player is called aminimizing player, the other — a maximizing player.

Przemysław Klesk (FCSIT, Szczecin, Poland) 44 / 56

Page 45: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

A win by the maximizing player is represented by∞ (in chess: whitecheckmates black), a win by a minimizing player is represented by −∞(black checkmates white).

Positions (states) other than winning ones must be assessedheuristically. E.g. one of the simplest chess heuristics measures thedifference between the “material” of black and white, counting pawnsfor 1 point, kinghts for 3 points, bishops for 3.5 points, rooks for 5points, queen for 9 points.

Only the lowest level (leaf-states) is assessed heuristically. Scores forhigher levels are implied by the min-max procedure of tree traversalupwards.

Remark: in literature a move by a single player is often called a ply, andeach tree level is counted as ± 1

2 of the depth. 2 consecutive plies (byboth players) are treated as the whole move.

Przemysław Klesk (FCSIT, Szczecin, Poland) 45 / 56

Page 46: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

Illustration of a chess tree fragment

Przemysław Klesk (FCSIT, Szczecin, Poland) 46 / 56

Page 47: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

MAX

MIN

MAX

5 4 1 4 3 2 ∞ 10

Przemysław Klesk (FCSIT, Szczecin, Poland) 47 / 56

Page 48: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

MAX

MIN

MAX

5 4 1 4 3 2 ∞ 10

5 4

4

3 ∞

3

4

Przemysław Klesk (FCSIT, Szczecin, Poland) 48 / 56

Page 49: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX as recursion

Procedure mmEvaluateMax(s, d,D)

1 If s is a terminal state, return h(s).

2 Assign v := −∞.

3 For all states t being descendants of s repeat:

1 v := max{v,mmEvaluateMin(t, d + 12 ,D)}.

4 Return v.

Procedure mmEvaluateMin(s, d,D)

1 If s is a terminal state, return h(s).

2 Assign v := ∞.

3 For all states t being descendants of s repeat:

1 v := min{v,mmEvaluateMax(t, d + 12 ,D)}.

4 Return v.

Przemysław Klesk (FCSIT, Szczecin, Poland) 49 / 56

Page 50: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

The major problem of the algorithm is its large computationalcomplexity (possibly also memory complexity for non-recursiveimplementation). Let (for simplification) b denote the mean or constantnumber of moves at disposal at each level for each player (in chessb ≈ 40). Then, visiting D levels of the tree requires O(b · b · · · b

︸ ︷︷ ︸

D

) = O(bD)

of computations.

The most common known modification of the algorithm, which reduces

the complexity is α-β pruning algorithm.

Przemysław Klesk (FCSIT, Szczecin, Poland) 50 / 56

Page 51: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

MIN-MAX algorithm

MIN-MAX (or MINIMAX) algorithm

Horizon effect

Due to limited depth of search, the algorithm may suffer from the socalled horizon effect — some next state behind the deepest visitedlevel of states might turn out catastrophic for a player, in spite of thefact that one level up scores for this player seem favorable (e.g. inchess, if a combination of kills/takes is not analyzed until the end dueto limited search horizon — until the silent position — it might bebadly assessed).

Przemysław Klesk (FCSIT, Szczecin, Poland) 51 / 56

Page 52: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

Table of contents

1 Breadth-First-Search algorithm

2 Best-First-Search algorithm

3 A∗ algorithm

4 MIN-MAX algorithm

5 α-β pruning algorithm

Page 53: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

α-β pruning algorithm

α-β pruning (or α-β cutoffs)

Several independent discoverers: Samuel (1952), McCarthy (1956), Newell and Simon(1958).

During the analysis downwards a game tree, the following two quantities are tracked:α— guaranteed (so far) pay off for the maximizing player,β— guaranteed (so far) pay off for the minimizing player.

The outer invocation for the root state is done with α = −∞, β = ∞.

Children states (and their subtrees) are analyzed as long as α < β.

Whenever α ≥ β we stop considering further children (and their subtrees) — they will notaffect the result for the whole tree, and can be regarded as non-optimal behavior ofplayers.

In optimistic case the gain in complexity with respect to MIN-MAX algorithm goes from

O(bD) to O(

bD/2)

= O(√

bD)

, where b — branching factor (constant of mean). E.g. for chess

b ≈ 40.

Owing to this gain, one may search deeper.

Przemysław Klesk (FCSIT, Szczecin, Poland) 53 / 56

Page 54: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

α-β pruning algorithm

α-β pruning as recursion

Procedure alphaBetaEvaluateMax(s, d,D, α, β)

1 If s is a terminal, return h(s).

2 For all states t being descendants of s repeat:

1 v := alphaBetaEvaluateMin(t, d + 12 ,D, α, β).

2 α := max{α, v}.3 If α ≥ β then return α. (a cutoff)

3 Return α.

Procedure alphaBetaEvaluateMin(s, d,D, α, β)

1 If s is a terminal, return h(s).

2 For all states t being descendants of s repeat:

1 v := alphaBetaEvaluateMax(t, d + 12 ,D, α, β).

2 β := min{β, v}.3 If α ≥ β then return β. (a cutoff)

3 Return β.

Przemysław Klesk (FCSIT, Szczecin, Poland) 54 / 56

Page 55: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

α-β pruning algorithm

Illustration of α-β pruning — example 1

MAX

MIN

MAX

α = −∞β = ∞, 5

α = −∞, 5β = ∞

α = −∞, 5β = ∞

5 4

α = −∞, 6β = 5

α = 5, 7, 10β = ∞

α = 5β = ∞, 10, 5

α = 5β = 10

6 ∗ 7 10 4 4

Przemysław Klesk (FCSIT, Szczecin, Poland) 55 / 56

Page 56: Graph and game tree search algorithms - wikizmsi.zut.edu.plwikizmsi.zut.edu.pl/uploads/e/ef/2_search_en.pdf · algorytm Dijkstry, and other. Breadth First Search operates on two sets:

α-β pruning algorithm

Illustration of α-β pruning — example 2

MAX

MIN

MAX

α = −∞β = ∞, 5

α = −∞, 5β = ∞

α = −∞, 5β = ∞

5 4

α = −∞, 6β = 5

α = 5β = ∞

α = 5β = ∞, 5

6 ∗ 3 2 * *

Przemysław Klesk (FCSIT, Szczecin, Poland) 56 / 56