search. jaruloj chongstitvatanasearch2 outline problem space/ state space exhaustive search...

30
Search

Upload: gwendoline-bailey

Post on 27-Dec-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Search

Page 2: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 2

Outline

• Problem space/ State space

• Exhaustive search• Depth-first search• Breadth-first search

• Backtracking

• Branch-and-bound

Page 3: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Problem Spaceor State Space

Page 4: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 4

Problem Space

• General problem statement• Given a problem instance P,

find answer A=(a1, a2, …, an) such that

the criteria C(A, P) is satisfied.

• Problem space of P is the set of all possible answers A.

Page 5: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 5

Example: Shortest path

• Given a graph G=(V,E), and nodes u and v, find the shortest path between u and v.

• General problem statement• Given a graph G and nodes u and v,

find the path (u, n1, n2, …, nk, v), and

(u, n1, n2,…, nk, v) is the shortest path between u and v.

• Problem space• Set of all possible path between u and v.

• {(u, n1, n2, …, nk, v)| ni is in V, for 1ik}.

Page 6: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 6

Example: 0/1 Knapsack

• Given a set S of n objects, where the object i has value vi and weight wi , and a knapsack with weight capacity C, find the maximum of value of objects in S which can be put in the knapsack.

• General problem statement• Given vi and wi , for 1 i n ,

find the set K such that for each i in K, 1 i n,

vi is maximum while wi C. iK iK

• Problem space• Any subset of S.

Page 7: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 7

Example: n Queens

• Given an nxn board, find the n squares in the board to put n queens so that no pair can attack.

• General problem statement• Find (p1, p2, …, pn) where pi = (xi, yi) is a

square on the board, where there is no pair (xi, yi) and (xj, yj) such that xi = xj or yi = yj.

• Problem space• A set of any n positions on the board.

Page 8: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Exhaustive Search

Page 9: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 9

Exhaustive Search

• Generate every possible answer• Test each answer with the constraint to find the

correct answer• Inefficient because the number of answers in

the problem space can be exponential.• Examples:

• Shortest path• n! paths to be considered, where n is the number of nodes.

• 0/1 Knapsack• 2n selections, where n is the number of objects.

• n Queens• n2!/n! (n2-n)!

Page 10: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 10

State-Space Tree• Let (a1, a2, …, an) be a possible answer.• Suppose ai is either 0 or 1, for 1 i nใ

(0, ?, …, ?) (1, ?, …, ?)

(?, …, ?)

(0, 0, ?, …, ?) (0, 1, ?, …, ?) (1, 0,?, …, ?) (1, 1, ?, …, ?)

(0,0,0, …, ?) (0,1,1, …, ?)(0,0,1, …, ?) (0,1,0, …, ?)

Page 11: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 11

State-Space Tree: Shortest Path

1

2

3

4

52

-1

1

8

-65 2

2

(1,2) (1,3)

(1)

(1,2,3) (1,2,4) (1,3,4) (1,3,5)

(1,2,3,4) (1,3,4,5)(1,2,3,5) (1,2,4,5)

(1,2,3,4,5)

Page 12: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 12

Generating Possible Paths

• Let {1,2,3, …, n} be a set of nodes and E[i][j] is the weight of the edge between node i and j.

path(p)last = last node in the path pfor next = 1 to n

do np = p if next is not in np and E[last][next] != 0

then np = np || nextpath(np)

else return

Page 13: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 13

State-Space Tree : 0/1 Knapsack

• Given a set of objects o1, …, o5.{ }

{1,2}

{5}{4}{3}{2}{1}

{1,5}{1,4}

{1,2,5}{1,2,3} {1,2,4}

{1,2,3,5}

{1,2,3,4,5}

{1,2,3,4}

{1,3}

{1,2,4,5}

{1,3,4} {1,3,5}

{1,3,4, 5}

{1,4,5}

Page 14: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 14

State-Space Tree : n Queen

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Q

Page 15: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 15

Depth-first Search

• Traverse the tree from root until a leaf is reached.

• Then, traverse back up to visited the next unvisited node.

depthFirst(v)visited[v] = 1for each node k adjacent to v

do if not visited[k] then depthFirst(k)

Page 16: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 16

0/1 Knapsack: Depth-first SearchGlobal: maxV=0 maxSack={}

DFknapsack(sack, unchosen)for each object p in unchosen do unchosen=unchosen-{p}

sack=sack U {p}val=evaluate(sack)if unchosen is empty► A leaf is reached.

then maxV=max(maxV, val)if maxV=val then maxSack=sackreturn

else DFknapsack(sack, unchosen) return

Page 17: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 17

Breadth-first Search• Traverse the tree from root until the nodes of

the same depth are all visited.• Then, visited the node in the next level.

breadthFirst(v)Q = empty queueenqueue(Q, v) visited[v] = 1while not empty (Q)

do u = dequeue(Q) for each node k adjacent to u

do if not visited[k] then visited[k] = true

enqueue(Q, k)

Page 18: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 18

0/1 Knapsack: Breadth-first Search

BFknapsack

Q = empty queue maxV=0

sack = { }

unchosen = set of all objects

enqueue(Q, <sack, unchosen>)

while not empty (Q)

do <sack, unchosen> = dequeue(Q)

if unchosen is not empty

then for each object p in unchosen

do enqueue(Q,<sackU{p}, unchosen-{p}>)

else maxV = max(maxV, evaluate(sack))

if maxV=evaluate(sack) then maxSack = sack

Page 19: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Backtracking

Page 20: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 20

Backtracking

• Reduce the search by cutting down some branches in the tree

Page 21: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 21

0/1 Knapsack: Backtracking

object weight value

1 2 5

2 1 4

3 3 8

4 2 7

Capacity = 5

{}0,0

{2}1,4

{4}2,7

{3}3,8

{1}2,5

{1,2}3,9

{1,3}5,13

{1,4}4,12

{1,2,4}5, 16

{1,2,3}6, 17

{2,4}3,11

{2,3}4,12

{2,3,4}6,19

{3,4}5,15

SackCurrent weight, current valueN

ode

Page 22: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 22

0/1 Knapsack: Backtracking

BTknapsack(sack, unchosen)for each object p in unchosen do unchosen=unchosen-{p}

if p can be put in sack then sack = sack U {p}► Backtracking occurs when p cannot be put in sack.

val=evaluate(sack)if unchosen is empty► A leaf is reached.

then maxV=max(maxV, val)maxSack=sackreturn

else BTknapsack(sack, unchosen) return

Page 23: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Branch-and-Bound

Page 24: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 24

Branch-and-bound

• Use for optimization problems

• An optimal solution is a feasible solution with the optimal value of the objective function.

• Search in state-space trees can be pruned by using bound.

Page 25: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 25

State-Space Tree with Bound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Statebound

Page 26: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 26

Branch and Bound

From a node N:

• If the bound of N is not better than the current overall bound, terminate the search from N.

• Otherwise, • If N is a leaf node

• If its bound is better than the current overall bound, update the overall bound and terminate the search from N.

• Otherwise, terminate the search from N.

• Otherwise, search each child of N.

Page 27: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 27

0/1 Knapsack: Branch-and-BoundGlobal: OvBound=0BBknapsack(sack, unchosen)

if bound(sack, unchosen)>OvBound► Estimated bound can be better than the overall bound. then for each object p in unchosen

do unchosen=unchosen-{p}if p can be put in sack then sack = sack U {p}► Backtracking occurs when p cannot be put in sack.val=evaluate(sack)

if unchosen is empty► A leaf is reached. then maxV = max(maxV, val)

maxSack = sackOvBound = max(evaluate(sack), OvBound)return

else ► A leaf is not reached.BBknapsack(sack, unchosen)

return

Page 28: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 28

0/1 Knapsack: Estimated bound

• Current value

• available space * best ratio value:space of unchosen objects

Page 29: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 29

0/1 Knapsack: Branch-and-bound

object weight value ratio

1 2 5 2.5

2 1 4 4

3 3 8 2.67

4 2 7 3.5

Capacity = 5

{} 200,0

{2}181,4

{4}192,7

{3}163,8

{1}172,5

{1,2}163,9

{1,3} 135,13

{1,2,4} 165, 16

{2,4}16.33,11

{2,3}15.54,12

Sack estimated boundCurrent weight, current valueN

ode

Overall bound 016

{3,4}155,15

Page 30: Search. Jaruloj ChongstitvatanaSearch2 Outline Problem space/ State space Exhaustive search Depth-first search Breadth-first search Backtracking Branch-and-bound

Jaruloj Chongstitvatana Search 30