15 PUZZLE PROBLEM
USING BRANCH AND BOUND
CREATED BY:-
ABHISHEK KUMAR SINGH
• Branch and Bound
• The search for an answer node can often be speeded by
using an “intelligent” ranking function, also called an
approximate cost function to avoid searching in sub-trees
that do not contain an answer node. It is similar to
backtracking technique but uses BFS-like search.
• There are basically three types of nodes involved in Branch
and Bound
• 1. Live node is a node that has been generated but whose
children have not yet been generated.
• 2. E-node is a live node whose children are currently being
explored. In other words, an E-node is a node currently
being expanded.
• 3. Dead node is a generated node that is not to be
expanded or explored any further. All children of a dead
node have already been expanded.
• Cost function:
• Each node X in the search tree is associated with a cost. The
cost function is useful for determining the next E-node. The
next E-node is the one with least cost. The cost function is
defined as,
• C(X) = g(X) + h(X) where g(X) = cost of reaching the current
node from the root h(X) = cost of reaching an answer node
from X
• Ideal Cost function for 15-puzzle Algorithm :
• We assume that moving one tile in any direction will have 1
unit cost. Keeping that in mind, we define cost function for 15-
puzzle algorithm as below :
• c(x) = f(x) + h(x) where f(x) is the length of the path from root
to x (the number of moves so far) and h(x) is the number of
non-blank tiles not in their goal position (the number of mis- -
placed tiles). There are at least h(x) moves to transform state x
to a goal state
1111 2@ 3 4
5 6 8
9 10 7 11
13 14 15 12
1111 2@ 33 4
5 6 7 8
9 10 11 12
13 14 15
Initial arrangement
Goalarrangement
1 2 3 4
5 6 8
9 10 7 11
13 14 15 12
up
right
left
down
1 2 4
5 6 3 8
9 10 7 11
13 14 15 12
1 2 3 4
5 6 8
9 10 7 11
13 14 15 12
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
1 2 3 4
5 6 8
9 10 7 11
13 14 15 12
C=1+4
C=1+4 C=1+2 C=1+4
1 2 4
5 6 3 8
9 10 7 11
13 14 15 12
1 2 3 4
5 6 8
9 10 7 11
13 14 15 12
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
1 2 3 4
5 6 8
9 10 7 11
13 14 15 12
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
1 2 3 4
5 6 7 8
9 10 15 11
13 14 12
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
C=2+1 C=2+3
C=3+0C=3+2
C=2+3
• ALGORITHM 15-PUZZLE PROBLEM
• struct list_node
• {
• list_node *next;
• list_node *parent;
• float cost;
• };
• algorithm LCSearch(list_node *t)
• {
• if (*t is an answer node)
• {
• print(*t);
• return;
• }
• E =t;
• Initialize the list of live nodes to be empty;
• while (true) {
• for each child x of E
• {
• if x is an answer node {
• print the path from x to t;
• return; }
• Add (x);
• x->parent = E; }
• if there are no more live nodes
• {
• print ("No answer node");
• return;
• }
• E = Least();
• }
• }
•

15 puzzle problem using branch and bound

  • 1.
    15 PUZZLE PROBLEM USINGBRANCH AND BOUND CREATED BY:- ABHISHEK KUMAR SINGH
  • 2.
    • Branch andBound • The search for an answer node can often be speeded by using an “intelligent” ranking function, also called an approximate cost function to avoid searching in sub-trees that do not contain an answer node. It is similar to backtracking technique but uses BFS-like search. • There are basically three types of nodes involved in Branch and Bound • 1. Live node is a node that has been generated but whose children have not yet been generated. • 2. E-node is a live node whose children are currently being explored. In other words, an E-node is a node currently being expanded. • 3. Dead node is a generated node that is not to be expanded or explored any further. All children of a dead node have already been expanded.
  • 3.
    • Cost function: •Each node X in the search tree is associated with a cost. The cost function is useful for determining the next E-node. The next E-node is the one with least cost. The cost function is defined as, • C(X) = g(X) + h(X) where g(X) = cost of reaching the current node from the root h(X) = cost of reaching an answer node from X • Ideal Cost function for 15-puzzle Algorithm : • We assume that moving one tile in any direction will have 1 unit cost. Keeping that in mind, we define cost function for 15- puzzle algorithm as below : • c(x) = f(x) + h(x) where f(x) is the length of the path from root to x (the number of moves so far) and h(x) is the number of non-blank tiles not in their goal position (the number of mis- - placed tiles). There are at least h(x) moves to transform state x to a goal state
  • 4.
    1111 2@ 34 5 6 8 9 10 7 11 13 14 15 12 1111 2@ 33 4 5 6 7 8 9 10 11 12 13 14 15 Initial arrangement Goalarrangement
  • 5.
    1 2 34 5 6 8 9 10 7 11 13 14 15 12 up right left down 1 2 4 5 6 3 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 1 2 3 4 5 6 8 9 10 7 11 13 14 15 12 C=1+4 C=1+4 C=1+2 C=1+4
  • 6.
    1 2 4 56 3 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 1 2 3 4 5 6 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 15 11 13 14 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 C=2+1 C=2+3 C=3+0C=3+2 C=2+3
  • 7.
    • ALGORITHM 15-PUZZLEPROBLEM • struct list_node • { • list_node *next; • list_node *parent; • float cost; • }; • algorithm LCSearch(list_node *t) • { • if (*t is an answer node) • { • print(*t); • return; • } • E =t; • Initialize the list of live nodes to be empty;
  • 8.
    • while (true){ • for each child x of E • { • if x is an answer node { • print the path from x to t; • return; } • Add (x); • x->parent = E; } • if there are no more live nodes • { • print ("No answer node"); • return; • } • E = Least(); • } • } •