Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of...

42
Backtracking Sum of Subsets and Knapsack

Transcript of Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of...

Page 1: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking

Sum of Subsets

and

Knapsack

Page 2: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking

• Two versions of backtracking algorithmsTwo versions of backtracking algorithmsTwo versions of backtracking algorithmsTwo versions of backtracking algorithms

– Solution only needs to be Solution only needs to be Solution only needs to be Solution only needs to be feasiblefeasiblefeasiblefeasible (satisfy (satisfy (satisfy (satisfy problemproblemproblemproblem’s constraints) s constraints) s constraints) s constraints)

• sum of subsetssum of subsetssum of subsetssum of subsets

– Solution needs also to be Solution needs also to be Solution needs also to be Solution needs also to be optimaloptimaloptimaloptimal

• knapsackknapsackknapsackknapsack

Page 3: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

The backtracking method

• A given A given A given A given problemproblemproblemproblem has a set of constraints and has a set of constraints and has a set of constraints and has a set of constraints and possibly an objective functionpossibly an objective functionpossibly an objective functionpossibly an objective function

• The The The The solution must be feasible and it may must be feasible and it may must be feasible and it may must be feasible and it may optimize an objective functionoptimize an objective functionoptimize an objective functionoptimize an objective function

• We can represent the We can represent the We can represent the We can represent the solution spacesolution spacesolution spacesolution space for the for the for the for the problem using a problem using a problem using a problem using a state space treestate space treestate space treestate space tree

– The The The The rootrootrootroot of the tree represents of the tree represents of the tree represents of the tree represents 0 choice0 choice0 choice0 choice, , , ,

– Nodes at depth 1 represent Nodes at depth 1 represent Nodes at depth 1 represent Nodes at depth 1 represent first choicefirst choicefirst choicefirst choice

– Nodes at depth 2 represent the Nodes at depth 2 represent the Nodes at depth 2 represent the Nodes at depth 2 represent the second choicesecond choicesecond choicesecond choice, etc. , etc. , etc. , etc.

– In this tree In this tree In this tree In this tree a a a a pathpathpathpath from a root to a leaffrom a root to a leaffrom a root to a leaffrom a root to a leaf represents a represents a represents a represents a candidate solutioncandidate solutioncandidate solutioncandidate solution

Page 4: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Sum of subsets

• Problem: Given : Given : Given : Given nnnn positive integers positive integers positive integers positive integers

wwww1, ... wwwwnand a positive integer S. and a positive integer S. and a positive integer S. and a positive integer S.

Find all subsets of Find all subsets of Find all subsets of Find all subsets of wwww1, ... wwwwnthat sum that sum that sum that sum

to S. to S. to S. to S.

• Example: : : :

n=3, S=6, and wn=3, S=6, and wn=3, S=6, and wn=3, S=6, and w1111=2, w=2, w=2, w=2, w2222

=4, w=4, w=4, w=4, w3333=6=6=6=6

• Solutions::::

{2,4} and {6}{2,4} and {6}{2,4} and {6}{2,4} and {6}

Page 5: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Sum of subsets

• We will assume a We will assume a We will assume a We will assume a binary state space treebinary state space treebinary state space treebinary state space tree. . . .

• The nodes at depth 1 are for including (The nodes at depth 1 are for including (The nodes at depth 1 are for including (The nodes at depth 1 are for including (yes, yes, yes, yes, nononono) item 1, the nodes at depth 2 are for ) item 1, the nodes at depth 2 are for ) item 1, the nodes at depth 2 are for ) item 1, the nodes at depth 2 are for item 2, etc. item 2, etc. item 2, etc. item 2, etc.

• The The The The left branchleft branchleft branchleft branch includesincludesincludesincludes wwwwiiii, and the , and the , and the , and the right right right right branch excludesbranch excludesbranch excludesbranch excludes wwwwiiii....

• The nodes contain the The nodes contain the The nodes contain the The nodes contain the sum of the weightssum of the weightssum of the weightssum of the weightsincluded so farincluded so farincluded so farincluded so far

Page 6: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Sum of subset Problem:

State SpaceTree for 3 items: w1 = 2, w2 = 4, w3 = 6 and

S = 6

i1

i2

i3

yes no

0

0

0

0

2

2

2

6

612 8

4

410 6

yes

yes

no

no

no

nonono

The sum of the included integers is stored at the node.

yes

yes yesyes

Page 7: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

A Depth First Search solution

• Problems can be solved using depth first Problems can be solved using depth first Problems can be solved using depth first Problems can be solved using depth first search of the (implicit) state space tree. search of the (implicit) state space tree. search of the (implicit) state space tree. search of the (implicit) state space tree.

• Each node will save its depth and its (possibly Each node will save its depth and its (possibly Each node will save its depth and its (possibly Each node will save its depth and its (possibly partial) current solutionpartial) current solutionpartial) current solutionpartial) current solution

• DFS can check whether node v is a leaf. DFS can check whether node v is a leaf. DFS can check whether node v is a leaf. DFS can check whether node v is a leaf. – If it is a leaf then check if the current solution If it is a leaf then check if the current solution If it is a leaf then check if the current solution If it is a leaf then check if the current solution

satisfies the constraintssatisfies the constraintssatisfies the constraintssatisfies the constraints

– Code can be added to find the optimal solutionCode can be added to find the optimal solutionCode can be added to find the optimal solutionCode can be added to find the optimal solution

Page 8: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

A DFS solution

• Such a DFS algorithm will be very slow. Such a DFS algorithm will be very slow. Such a DFS algorithm will be very slow. Such a DFS algorithm will be very slow.

• It does not check for every It does not check for every It does not check for every It does not check for every solution statesolution statesolution statesolution state((((nodenodenodenode) whether a solution has been ) whether a solution has been ) whether a solution has been ) whether a solution has been reached, or whether a reached, or whether a reached, or whether a reached, or whether a partialpartialpartialpartial solution solution solution solution can lead to a can lead to a can lead to a can lead to a feasiblefeasiblefeasiblefeasible solution solution solution solution

• Is there a more efficient solution?Is there a more efficient solution?Is there a more efficient solution?Is there a more efficient solution?

Page 9: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking

• DefinitionDefinitionDefinitionDefinition: We call a node : We call a node : We call a node : We call a node nonpromisingnonpromisingnonpromisingnonpromising

if it cannot lead to a feasible (or optimal) if it cannot lead to a feasible (or optimal) if it cannot lead to a feasible (or optimal) if it cannot lead to a feasible (or optimal) solution, otherwise it is solution, otherwise it is solution, otherwise it is solution, otherwise it is promisingpromisingpromisingpromising

• Main idea: Backtracking consists of doing : Backtracking consists of doing : Backtracking consists of doing : Backtracking consists of doing

a DFS of the state space tree, checking a DFS of the state space tree, checking a DFS of the state space tree, checking a DFS of the state space tree, checking whether each node is promising and if the whether each node is promising and if the whether each node is promising and if the whether each node is promising and if the node is node is node is node is nonpromisingnonpromisingnonpromisingnonpromising backtracking to the backtracking to the backtracking to the backtracking to the nodenodenodenode’s parents parents parents parent

Page 10: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking

• The state space tree consists of expanded The state space tree consists of expanded The state space tree consists of expanded The state space tree consists of expanded nodes only (called the nodes only (called the nodes only (called the nodes only (called the pruned state space pruned state space pruned state space pruned state space treetreetreetree))))

• The following slide shows the pruned state The following slide shows the pruned state The following slide shows the pruned state The following slide shows the pruned state space tree for the sum of subsets examplespace tree for the sum of subsets examplespace tree for the sum of subsets examplespace tree for the sum of subsets example

• There are only 15 nodes in the pruned state There are only 15 nodes in the pruned state There are only 15 nodes in the pruned state There are only 15 nodes in the pruned state space tree space tree space tree space tree

• The full state space tree has 31 nodesThe full state space tree has 31 nodesThe full state space tree has 31 nodesThe full state space tree has 31 nodes

Page 11: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

A Pruned State Space Tree (find all solutions)w1 = 3, w2 = 4, w3 = 5, w4 = 6; S = 13

0

0

0

3

3

3

7

712 8

4

49

5

3

4 40

0

0

5 50 0 0

06

13 7

Sum of subsets problem

Page 12: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking algorithm

void checknode (node v) {node u

if (promising ( v ))if (aSolutionAt( v ))

write the solutionelse //expand the node

for ( each child u of v )checknode ( u )

}

Page 13: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Checknode

• Checknode uses the functions:

– promising(v) which checks that the partial solution represented by v can lead to the required solution

– aSolutionAt(v) which checks whether the partial solution represented by node vsolves the problem.

Page 14: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Sum of subsets – when is a node “promising”?

• Consider a node at depth i

• weightSoFar = weight of a node, i.e., sum of numbers included in partial solution that the node represents

• totalPossibleLeft = weight of the remaining items i+1 to n (for a node at depth i)

• A node at depth i is non-promisingif (weightSoFar + totalPossibleLeft < S )

or (weightSoFar + w[i+1] > S )

• To be able to use this “promising function” the wi

must be sorted in non-decreasing order

Page 15: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

A Pruned State Space Treew1 = 3, w2 = 4, w3 = 5, w4 = 6; S =

13

0

0

0

3

3

3

7

712 8

4

49

5

3

4 40

0

0

5 50 0 0

06

13 7 - backtrack

1

2

3

4 5

6 7

8

109

11

1215

14

13

Nodes numbered in “call” order

Page 16: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

sumOfSubsets ( i, weightSoFar, totalPossibleLeft )

1) ifififif (promising ( i )) //may lead to solution

2) then ifthen ifthen ifthen if ( weightSoFar == S )3) thenthenthenthen print include[ 1 ] to include[ i ] //found solution

return4) elseelseelseelse //expand the node when weightSoFar < S5) include [ i + 1 ] = "yes” //try including

6) sumOfSubsets ( i + 1, weightSoFar + w[i + 1],totalPossibleLeft - w[i + 1] )

7) include [ i + 1 ] = "no” //try excluding

8) sumOfSubsets ( i + 1, weightSoFar ,totalPossibleLeft - w[i + 1] )

boolean promising (i )1) return ( weightSoFar + totalPossibleLeft ≥ S) andandandand

( weightSoFar == S orororor weightSoFar + w[i + 1] ≤ S )

Prints all solutions!

Initial call sumOfSubsets(0, 0, )∑∑∑∑====

n

i

iw1

Page 17: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Backtracking for optimization problems

• To deal with optimization we compute:To deal with optimization we compute:To deal with optimization we compute:To deal with optimization we compute:bestbestbestbest ---- value of best solution achieved so farvalue of best solution achieved so farvalue of best solution achieved so farvalue of best solution achieved so farvaluevaluevaluevalue((((vvvv)))) ---- the value of the solution at node the value of the solution at node the value of the solution at node the value of the solution at node vvvv

– Modify Modify Modify Modify promisingpromisingpromisingpromising((((vvvv))))

• BestBestBestBest is initialized to a value that is equal to a is initialized to a value that is equal to a is initialized to a value that is equal to a is initialized to a value that is equal to a candidate solution or worse than any possible candidate solution or worse than any possible candidate solution or worse than any possible candidate solution or worse than any possible solution.solution.solution.solution.

• BestBestBestBest is updated to is updated to is updated to is updated to valuevaluevaluevalue((((vvvv) if the solution at ) if the solution at ) if the solution at ) if the solution at vvvv is is is is “betterbetterbetterbetter”

• By By By By “betterbetterbetterbetter” we mean:we mean:we mean:we mean:– larger in the case of maximization andlarger in the case of maximization andlarger in the case of maximization andlarger in the case of maximization and– smaller in the case of minimizationsmaller in the case of minimizationsmaller in the case of minimizationsmaller in the case of minimization

Page 18: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Modifying promising

• A node is A node is A node is A node is promisingpromisingpromisingpromising when when when when

– it is it is it is it is feasiblefeasiblefeasiblefeasible and and and and can lead to a feasible solution can lead to a feasible solution can lead to a feasible solution can lead to a feasible solution andandandand

– “there is a chance that athere is a chance that athere is a chance that athere is a chance that a better solution than the better solution than the better solution than the better solution than the (current)(current)(current)(current) bestbestbestbest can be achieved by expanding itcan be achieved by expanding itcan be achieved by expanding itcan be achieved by expanding it”

• Otherwise it is Otherwise it is Otherwise it is Otherwise it is nonpromisingnonpromisingnonpromisingnonpromising

• A A A A boundboundboundbound on the best solution that can be on the best solution that can be on the best solution that can be on the best solution that can be achieved by expanding the node is computed and achieved by expanding the node is computed and achieved by expanding the node is computed and achieved by expanding the node is computed and compared to compared to compared to compared to bestbestbestbest

• If the If the If the If the boundboundboundbound > > > > bestbestbestbest for maximization, (< for maximization, (< for maximization, (< for maximization, (< bestbestbestbest for for for for minimization) the node is promisingminimization) the node is promisingminimization) the node is promisingminimization) the node is promising

Page 19: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Modifying promising for Maximization Problems

• For a For a For a For a maximizationmaximizationmaximizationmaximization problem the bound is an problem the bound is an problem the bound is an problem the bound is an upperupperupperupper boundboundboundbound, , , ,

– The largest possible solution that can be The largest possible solution that can be The largest possible solution that can be The largest possible solution that can be achieved by expanding the node is smaller than achieved by expanding the node is smaller than achieved by expanding the node is smaller than achieved by expanding the node is smaller than or equal to the or equal to the or equal to the or equal to the upper boundupper boundupper boundupper bound

• If If If If upper bound > bestupper bound > bestupper bound > bestupper bound > best so far, a better so far, a better so far, a better so far, a better solution may be found by expanding the solution may be found by expanding the solution may be found by expanding the solution may be found by expanding the node and the feasible node is node and the feasible node is node and the feasible node is node and the feasible node is promisingpromisingpromisingpromising

Page 20: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Modifying promising for Minimization Problems

• For For For For minimization,minimization,minimization,minimization, the bound is a the bound is a the bound is a the bound is a lower boundlower boundlower boundlower bound, , , ,

– The smallest possible solution that can be achieved The smallest possible solution that can be achieved The smallest possible solution that can be achieved The smallest possible solution that can be achieved by expanding the node is larger than or equal to the by expanding the node is larger than or equal to the by expanding the node is larger than or equal to the by expanding the node is larger than or equal to the lower boundlower boundlower boundlower bound

• If If If If lower bound < best,lower bound < best,lower bound < best,lower bound < best, a better solution may a better solution may a better solution may a better solution may be found and the feasible node is be found and the feasible node is be found and the feasible node is be found and the feasible node is promisingpromisingpromisingpromising

Page 21: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Template for backtracking in the case of optimization problems.

Procedure checknode (node v )

{

node u ;

if ( value(v) is better than best )

best = value(v);if (promising (v) )

for (each child u of v)checknode (u );

}

• best is the best value so far and is initialized to a value that is equal to or worse than any possible solution.

• value(v) is the value of the solution at the node.

Page 22: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Knapsack problem

• 0-1 knapsack problem using greedy algorithm

• Fractional knapsack problem

Page 23: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Notation for knapsack

• We use maxprofit to denote best

• profit(v) to denote value(v)

Page 24: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

The state space tree for knapsack

• Each node v will include 3 values:

– profit (v) = sum of profits of all items included in the knapsack (on a path from root to v)

– weight (v)= the sum of the weights of all items included in the knapsack (on a path from root to v)

– upperBound(v). upperBound(v) is greater or equal to the maximum benefit that can be found by expanding the whole subtree of the state space tree with root v.

• The nodes are numbered in the order of expansion

Page 25: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Promising nodes for 0/1 knapsack

• Node v is promising if weight(v) < C, and upperBound(v) >maxprofit

• Otherwise it is not promising

• Note that when weight(v) = C, or maxprofit = upperbound(v) the node is non-promising

Page 26: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Main idea for upper bound

• Main ideaMain ideaMain ideaMain idea: KWF (knapsack with fraction) can be used for

computing the upper bounds

• TheoremTheoremTheoremTheorem: The optimal profit for 0/1 knapsack ≤ optimal

profit for KWF

• Discussion:

Clearly the optimal solution to 0/1 knapsack is a

possible solution to KWF. So the optimal profit of KWF is

greater or equal to that of 0/1 knapsack

Page 27: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Computing the upper bound for 0/1 knapsack

• Given node v at depth i.

• UpperBound(v) =

KWF2(i+1, weight(v), profit(v), w, p,

C, n)

• KWF2 requires that the items be ordered by non-increasing pi / wi. If we arrange the items in this order before applying the backtracking algorithm, KWF2 will pick the remaining items in the required order.

Page 28: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

KWF2(i, weight, profit, w, p, C, n)

1. bound = profit

2. for j=i to n

3. x[j]=0 //initialize variables to 0

4. while (weight<C && i<=n) //not “full”and more items

5. if weight+w[i]<=C //room for next item

6. x[i]=1 //item i is added to knapsack

7. weight=weight+w[i]; bound = bound +p[i];

8. else

9. x[i]=(C-weight)/w[i] //fraction of i added to knapsack

10. weight=C; bound = bound + p[i]*x[i]

11. i=i+1 // next item

12. return bound

• KWF2 is in O(n) (assuming items sorted before applying backtracking)

Page 29: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Pseudo code

• The arrays The arrays The arrays The arrays wwww, , , , pppp, , , , includeincludeincludeinclude and and and and bestsetbestsetbestsetbestset

have size n+1. have size n+1. have size n+1. have size n+1.

• Location 0 is not usedLocation 0 is not usedLocation 0 is not usedLocation 0 is not used

• includeincludeincludeinclude contains the current solutioncontains the current solutioncontains the current solutioncontains the current solution

• bestsetbestsetbestsetbestset the best solution so farthe best solution so farthe best solution so farthe best solution so far

Page 30: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Knapsack

numbest=0; //number of items considered numbest=0; //number of items considered numbest=0; //number of items considered numbest=0; //number of items considered

maxprofitmaxprofitmaxprofitmaxprofit=0;=0;=0;=0;

knapsack(0,0,0);knapsack(0,0,0);knapsack(0,0,0);knapsack(0,0,0);

coutcoutcoutcout << << << << maxprofitmaxprofitmaxprofitmaxprofit;;;;

for (i=1; i<= numbest; i++)(i=1; i<= numbest; i++)(i=1; i<= numbest; i++)(i=1; i<= numbest; i++)

coutcoutcoutcout << << << << bestset[ibestset[ibestset[ibestset[i]; //the best solution]; //the best solution]; //the best solution]; //the best solution

• maxprofit is initialized to $0, which is the worst profit that can be achieved with positive pi.

• In Knapsack - before determining if node v is promising, maxprofit and bestset are updated

Page 31: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

knapsack(i, profit, weight)

if ( weight <= C && profit > maxprofit)

// save better solution

maxprofit=profit //save new profit

numbest= i; bestset = include; //save solution

if promising(i)

include [i + 1] = “ yes”

knapsack(i+1, profit + p[i+1], weight + w[i+1])

include[i+1] = “no”

knapsack(i+1,profit,weight)

Page 32: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Promising(i)

promising(i)

{

//Cannot get a solution by expanding node

ifififif weight >= C returnreturnreturnreturn false

//Compute upper bound

bound = KWF2(i+1, weight, profit, w, p, C, n)

return return return return (bound>maxprofit)

}

Page 33: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Example

• Suppose n = 4, C = 16, and we have the following:

i pi wi pi / wi

1 $40 2 $20

2 $30 5 $6

3 $50 10 $5

4 $10 5 $2

• Note the the items are in the correct order needed by KWF

Page 34: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

1

13

$00$115

$402$115

$00$82

Item 1 [$40, 2]

B82<90Item 2 [$30, 5]

$707$115

$12017

2

3

4

F17>16

Item 3 [$50, 10]

Item 4 [$10, 5]

$402$98

8

$707$80

5$9012$98

9$402$50

12

B50<90

$8012$80

6$707$70

7

N N

$10017

10 $9012$90

11

maxprofit = 90

profitweightbound

Example

F - not feasibleN - not optimalB- cannot lead to best solution

Optimal

maxprofit =0

maxprofit =40

maxprofit =70

maxprofit =80F17>16

Page 35: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

maxprofit = $0 (n = 4, C = 16 )

Node 1a) profit = $ 0

weight = 0

b) bound = profit + p1 + p2 + (CCCC - 7 ) * p3 / w3

= $0 + $40 + $30 + (16 -7) X $50/10 =$115

c) 1 is promising because its weight =0 < CCCC = 16and its bound $115 > 0 the value of maxprofit.

The calculation for node 1

Page 36: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Item 1 with profit $40 and weight 2 is included

maxprofit = $40

a) profit = $40weight = 2

b) bound = profit + p2 + (CCCC - 7) X p3 / w3

= $40 + $30 + (16 -7) X $50/10 =$115

c) 2 is promising because its weight =2 < CCCC = 16and its bound $115 > $40 the value of

maxprofit.

The calculation for node 2

Page 37: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Item 1 with profit $40 and weight 2 is not included

At this point maxprofit=$90 and is not changed

a) profit = $0weight = 0

b) bound = profit + p2 + p3+ (CCCC - 15) X p4 / w4

= $0 + $30 +$50+ (16 -15) X $10/5 =$82

c) 13 is nonpromising because its bound $82 < $90 the value of maxprofit.

The calculation for node 13

Page 38: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Worst-case time complexity

Check number of nodes:

Time complexity:

When will it happen?

For a given n, W=n

Pi = 1, wi=1 (for 1 ≤ i ≤ n-1)

Pn=n wn=n

122...2221 132−=+++++

+nn

)2( n

θ

Page 39: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Branch-and-Bound

Knapsack

Page 40: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

Characteristics:

– Similar to backtracking approach

– Do not restrict any particular way of traversing the tree

– Use strategy similar to breadth-first-search with some modification (e.g., best-first search with branch-and-bound pruning)

– Visiting all the children of a given node, we can look at all the promising, unexpanded nodes and expand beyond the one with the best bound (e.g., greatest bound).

– For optimization problem

– Exponential-time in the worst case (same as backtracking algorithm), but could be very efficient for many large instances.

Page 41: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

(0,0)

(1,2)

$00$115

$402$115

$00$82

Item 1 [$40, 2]

B82<90Item 2 [$30, 5]

$707$115

$12017

(1,1)

(2,1)

(3,1)

F17>16

Item 3 [$50, 10]

Item 4 [$10, 5]

$402$98

(2,2)

$707$80

(3,2) $9012$98

(3,3) $402$50

(3,4)

B50<90

$10017

(4,1)$9012$90 (4,2)

maxprofit = 90

profitweightbound

Example

F - not feasibleN - not optimalB- cannot lead to best solution

maxprofit =0

maxprofit =40

maxprofit =70

F17>16Best-first search

(e.g., the order of node selection is based on the

values of bound)

Page 42: Sum of Subsets and Knapsack - Binghamtonkang/teaching/cs333.2009s/lec26-backtra… · Sum of subsets • We will assume a binary state space tree .. . • The nodes at depth 1 are

(0,0)

(1,2)

$00$115

$402$115

$00$82

$707$115

$12017

(2,1)

(3,1)

$402$98

$707$80

$9012$98

$402$50

(3,4)

$8012$80

(4,1)

$707$70

$10017

$9012$90

maxprofit = 90

$305$82

$00$60

$8015$82

(3,5)

$305$40

(3,6)

(1,1)

(2,2)(2,3)

(2,4)

(3,2) (3,3)

(4,2) (4,3) (4,4)

Breath-first search with branch-and-bounding prunning

For Comparison: