MODULE II
FUNDAMENTAL ALGORITHMIC
STRATEGIES
Contents:
Algorithm strategies
- Divide & Conquer
- Brute-Force
- Greedy
- Dynamic programming
- Backtracking
- Branch-and-Bound
Problem Solving
- Bin Picking
- Knapsack
- Travelling Salesperson Problem
Heuristics – characteristics & their application Domain.
Backtracking
Contents:
The General Method.
Control Method: Recursive & Iterative .
Sum of Subsets.
8- Queens Problem.
Graph Colouring.
0/1 Knapsack problem.
Hamiltonian Cycle.
Backtracking
Introduction :
Backtracking is a algorithm design strategy.
Uses Brute Force approach.
Brute-Force Approach : Brute force(Exhaustive search) is a straightforward approach to solving a
problem, usually directly based on the problem’s statement and definitions of the concepts involved.
Generally it involved iterating through all possible solutions until a valid one is found.
Ex : A small padlock with 4 digits(each from 0-9).
Backtracking is not for solving optimization problem.
Used when all possible solutions need to find out.
The desired solution is expressible as an n-tuple where the are
chosen from some finite set Si.
To build the solution vector, criterion function has been applied.
The solution can be represented in the form of a tree(solution tree/state space tree).
Backtracking
Introduction : State space
Problem : What are different ways three students(B1B2G1) can seat on three chairs?
n=3 chairs = 3 Therefore all possible arrangements = ?
Solution : (B1B2G1) (B1G1B2) (B2B1G1) (B2G1B1) (G1B1B2) (G1B2B1)
B1 B2 G1 B1 B2 G1
B2 G1 B1 G1 B1 B2 B2 G1 B1 G1 B1 B2
B B
G1 B2 G1 B1 B2 B1 G1 G1 B2 B1
Fig. 1. State Space Tree Fig. 2. Solution Space Tree
Backtracking
Control Abstraction : Recursive
Algo. 1: Recurssive Backtracking Algorithm
Backtracking
Control Abstraction : Iterative
Algo. 2: Iterative Backtracking Algorithm
Backtracking: Sum of Subsets
Sum of Subsets: Problem
Suppose we are given n distinct positive numbers(usually called weights) .
We desire to find all combinations of these no’s whose sums are m.
Finding all these combinations is called sum of subsets problem.
One could formulate this problem using either fixed- or variable-sized tuples.
The element xi of the solution vector is either one(1) or zero(0) depending on
whether the weight wi is included or not.
A simple choice for the bounding function is iff
The bounding functions we use are therefore
and
Backtracking: Sum of Subsets
Sum of Subsets: Problem : Let n=6, m=30 and w={5, 10, 12, 13, 15, 18}.
Find all possible subsets of w that sum to m.
Solution:
Fig 3: Portion of state space tree generated by SumOfSub
Backtracking: Sum of Subsets
Sum of Subsets: Problem : Let n=6, m=30 and w={5, 10, 12, 13, 15, 18}.
Fig 4: Portion of state space tree showing Ist subset some 1) x[1:6] = x(1, 1, 0, 0, 1, 0)
to 30 2) x[1:6] = x(1, 0, 1, 1, 0, 0)
3) x[1:6] = x(0, 0, 1, 0, 0, 1)
Backtracking: Sum of Subsets
Sum of Subsets: Algorithm
Algo. 3: Recursive backtracking algorithm for sum of subsets problem
Backtracking: Sum of Subsets
Variable size solution: w=(1, 12, 18, 30 ), m=30.
Fig. 5 Possible State Space tree organization for sum of subsets (Variable-size).
Solution: 1. (2, 3) 2. (4)
Backtracking: n-Queens Problem
8-Queens Problem :
A classic combinatorial problem is to place 8 queens on an 8x8 chessboard in
such a way that no two queens “attack” each other, ie no two of them are on the
same row, column, or diagonal.
Let us number the rows and columns of the chessboard 1 through 8.
The queens can also be numbered 1 through 8. Since each queen must be on a
different row, we assume queen i is to be placed on row i.
Therefore, all solutions to the 8-queens problem can be represented as 8-tuples
(x1, x2,………, x8) where xi is the column on which queen i is placed.
1 2 3 4 ←column
R 1 Q
o Q
2 Solution x[1:4]= x 2 4 1 3
w
↓ 3 Q
4 Q
Backtracking: n-Queens Problem
8-Queens Problem :
Fig 5. Tree organization of the 4-queens solution space.
Backtracking: n-Queens Problem
8-Queens Problem :
1 2 3 4
1
2
3
4
Fig 6. Portion of tree of fig 5 that is generated during backtracking
Backtracking: n-Queens Problem
8-Queens Problem :
Suppose two queens are placed at positions (i, j) and (k, l). Then two queens are
on the same diagonal only if
The first equation implies
The second equation implies
Therefore two queens lie on the same diagonal iff
Backtracking: n-Queens Problem
8-Queens Problem : Algorithm
Algo 4. All solutions to n-queens problem
Backtracking: n-Queens Problem
8-Queens Problem : Algorithm
Algo 5. Can a new queen is placed?
Backtracking: n-Queens Problem
8-Queens Problem : Analysis
Computing time of Place(k, i) is O(k-1)
nC = 64C8 = 4.4 (4426165368) billion tuples to examine
r
But by allowing only placements of queens on distinct rows & columns, we
require the examinations of at most 8 ! = 40, 320 tuples.
The total no of nodes in the 8-queens state space tree is
Backtracking: Graph Coloring
Graph Coloring : Problem
m-colorability decision problem
m-colorability optimization problem
Planar Graph
A map & its planar graph representation
Algorithms mcoloring(), NextValue(k)
Let G be a graph and m be a given positive number. We want to discover whether the
Nodes of G can be colored in such a way that no two adjacent nodes have the same
color yet only m colors are used. This is termed as m-colorability decision problem.
The m-colorability optimization problem asks for the smallest integer m for which
the graph G can be colored. This integer is referred to as the chromatic number of
the graph.
A graph is said to be planar iff it can be drawn in a plane in such a way that no two
edges cross each other.
Backtracking: Graph Coloring
Graph Coloring : Problem
Fig 7. Example graph & its coloring
Fig8. A map & its planar graph representation
Backtracking: Graph Coloring
Graph Coloring : Problem
Fig 9. State space tree for mColoring when n=3 & m=3
Backtracking: Graph Coloring
Graph Coloring : Problem
Find all m- coloring combinations for the following graph using Backtracking
approach(SST) that selects color R for vertex 1. Three colors available are {R, G, B}.
Fig 10. 4-node graph
1 2 3 4
1 0 1 0 1
2 1 0 1 0
3 0 1 0 1
4 1 0 1 0
Fig 12. All possible 3-colorings of graph in fig 8.
Fig 11. Adjacency matrix
Solutions: 1) R,G,R,G 2) R,G,R,B 3) R,G,B,G
of graph in fig 10.
4) R,B,R,G 5) R,B,R,B 6) R,B,G,B
Backtracking: Graph Coloring
Graph Coloring : Algorithm
Algorithm mColoring(k)
// This algorithm was formed using recursive backtracking schema. The graph is represented by its boolean
// adjacency matrix G[1:n, 1:n]. All assignments of 1, 2, 3, …, m to the vertices of a graph such that
// adjacent vertices are assigned distinct integers are printed. K is the index of the next vertex to color.
{
repeat
{ // Generate all legal assignments for x[k].
NextValue(k) ; // Assign to x[k] a legal color.
if (x[k] = 0) then return; // No new color possible
if (k = n) then // At most m colors have been used to color n vertices.
write(x[1:n]);
else mColoring(k+1);
} until (false);
}
Algo 6. Finding all m-colorings of a graph
Backtracking: Graph Coloring
Graph Coloring : Algorithm
Algorithm NextValue(k)
// x[1], …, x[k-1] have been assigned integer values in the range [1, m] such that adjacent vertices have
// distinct integers. A value fir x[k] is determined in the range [0, m]. X[k] is assigned the next highest
// numbered color while maintaining distinctness from the adjacent vertices of vertex k. If no such color
// exists, then x[k] = 0.
{
repeat
{
x[k] := (x[k+1]) mod (m+1) ; // Next highest color.
if (x[k] = 0) then return; // All colors have been used.
for j := 1 to n do // Check if this color is distinct from adj. colors.
{
if ((G[k, j] ≠ 0 and (x[k] = x[j])) then // If (k, j) is and edge and id adj. vertices have
break; // the same color.
}
if (j = n+1) then return; // New color found.
} until (false); // Otherwise try to fine another color
}
Algo 7. Generating a next color
Backtracking: Graph Coloring
Graph Coloring : Analysis
An upper bound on the computing of mColoring() can be found by
noticing the number of internal nodes in the state space tree is
At each internal node, O(mn) time is spent by NextValue() to determine the
children corresponding to legal colorings.
Hence. Total time is bounded by
Backtracking: 0/1 Knapsack
0/1 Knapsack : Problem
Given n positive weights wi, n positive profits pi, and a positive number
m that is the knapsack capacity, this problem calls for choosing a subset of the
weights such that
The xi’s constitute a zero-one-valued (0/1) solution vector.
The solution space is the same as that for the sum of subsets problem.
If the object weights and profits are w[i] and p[i] then it is assumed that
p[i]/w[i] ≥ p[i+1]/w[i+1], 1 ≤ I < n.
Backtracking: 0/1 Knapsack
0/1 Knapsack : Problem
Consider the instance of the 0/1 Knapsack problem : n= 8 p=(11, 21, 31, 33, 43, 53,
55, 65), w=(1, 11, 21, 23, 33, 43, 45, 55) , m= 110. Find all the solutions.
Solution:
Fig. Portion of the state space tree of the solution
Backtracking: 0/1 Knapsack
0/1 Knapsack : Problem
Consider the instance of the 0/1 Knapsack problem : n= 8 p=(11, 21, 31, 33, 43, 53,
55, 65), w=(1, 11, 21, 23, 33, 43, 45, 55) , m= 110. Find all the solutions.
Solution:
b+(1- ( c-m)/ w[i]) * p[i]
139 + (1- (134 - 110)/ 45) * 55 = 139 + ( 1- 24/45) * 55 = 164.88
1) x(1:8) = x(1, 1, 1, 1, 1, 0, 0, 0) P= 139 W = 89
2) x(1:8) = x(1, 1, 1, 1, 0, 1, 0, 0) P= 149 W = 99
3) x(1:8) = x(1, 1, 1, 1, 0, 0, 1, 0) P= 151 W = 101
4) x(1:8) = x(0, ….. )
:
:
Backtracking: 0/1 Knapsack
0/1 Knapsack : Algorithm
Algo. 8. Algorithm for a bounding function
Backtracking: 0/1 Knapsack
0/1 Knapsack : Algorithm
Algo. 9 : Backtracking solution to the 0/1 knapsack problem
Branch And Bound
Contents:
The Method.
- FIFO Branch-and Bound
- LIFO Branch-and Bound
- LC Branch-and-Bound
0/1 Knapsack Problem.
Job Sequencing with Deadlines
Travelling Salesperson Problem.
Branch And Bound
Branch & Bound is very much similar to Backtracking.
It uses state space tree to solve the problem.
That is solution is represented like a state space tree.
But unlike Backtracking, Branch & Bound design strategy is useful for solving
optimization (only minimization not maximization) problems.
But any way, we can covert maximization problems into minimization problem
and then we can solve it branch & bound.
Branch And Bound
Branch & Bound:The Method
Example : Let n=4, (p1 , p2 , p3 ) = (100, 10, 15, 27) and (d1 , d2 , d3 ) = (2, 1, 2, 1).
Find all feasible solutions and their values .
Solution : FIFO (First-in-First-Out) B & B Variable size
Fig. 1 FIFO B&B State space tree for variable size tuple Q 2 3 4 5 6 7 9
Branch And Bound
Branch & Bound:The Method
Example : Let n=4, (p1 , p2 , p3 ) = (100, 10, 15, 27) and (d1 , d2 , d3 ) = (2, 1, 2, 1).
Find all feasible solutions and their values .
Solution : LIFO (Last-in-First-Out) B & B Variable size
5 6
4
3
2
S
Fig. 2 LIFO B&B State space tree for variable size tuple
Branch And Bound
Branch & Bound:The Method
Example : Let n=4, (p1 , p2 , p3 ) = (100, 10, 15, 27) and (d1 , d2 , d3 ) = (2, 1, 2, 1).
Find all feasible solutions and their values .
Solution : LC (Least Cost) B & B Variable size
Fig. 3 Least Cost B&B State space tree for variable size tuple
Branch And Bound
Control Abstraction : LC Search
Algo. 1 Control Abstraction for Least Cost Search
B&B: JSWD
Job Sequencing With Deadlines :
Problem : n jobs, deadline di >= 0 and profit pi >0
For any job i profit pi is earned iff the job is completed by its deadline. To complete
a job, one has to process the job for one given unit of time ti > 0.Only one machine
is available for processing the jobs.
B&B: JSWD
Job Sequencing With Deadlines :
Problem : : Let n=4, (p1 , p2 , p3 , p4 ) = (5, 10, 6, 3), (d1 , d2 , d3 , d4 ) = (1, 3, 2, 1) and
(t1 , t2 , t3 , t4 ) = (1, 2, 1,1). Find optimal solution using variable tuple size FIFO B&B.
Solution:
Jobs -> 1 2 3 4
Profit Penalty 5 10 6 3
deadline 1 3 2 1
time 1 2 1 1
B&B: JSWD
Job Sequencing With Deadlines : 1 2 3 4
Jobs ->
Solution: Profit Penalty 5 10 6 3
deadline 1 3 2 1
time 1 2 1 1
Solution:
x[] = x[J2, J3]
Penalty = 10+ 6 = 16
x[] = x[J1, J4]
Penalty = 5 + 3 = 8
Fig. 3 FIFO B&B State space tree for variable size of problem solution
B&B: 0/1 Knapsack
0/1 Knapsack problem: LC B & B :
Need to find upper bound & cost of every node in the state space tree.
B & B solves only minimization problem. But 0/1 Knapsack is maximization
problem.
So we need to convert this problem into minimization problem. To convert let us
consider all profits of objects as negatives.
Similarly all upper bound & cost values are also negative.
B&B: 0/1 Knapsack
0/1 Knapsack problem: Solve the 0/1 Knapsack problem using LC B & B
approach for the instance : n =4, (w1 , w2 , w3 , w4) = (2, 4, 6, 9), (p1 , p2 , p3 , p4) =
(10, 10, 12, 18) , & m= 15.
Solution :
Upper = ∞, -32, -38
Solution:
x[1:4] = x[1, 1, 0, 1]
Profit = 10+ 10 + 0 + 18 = 38
Cost/Knp wt = 2+4+0+9 = 15
Fig. 3 LC branch-and bound state space tree for the problem (Fixed size tuple)
B&B: 0/1 Knapsack
0/1 Knapsack problem: Solve the 0/1 Knapsack problem using LC B & B
approach for the instance : n =4, (w1 , w2 , w3 , w4) = (2, 4, 6, 9), (p1 , p2 , p3 , p4) =
(10, 10, 12, 18) , & m= 15.
Solution :
Fig. 3 FIFO branch-and bound state space tree for the problem
B&B: 0/1 Knapsack
0/1 Knapsack problem: Algorithm
Algo. 2 Function UBound for Knapsack problem
B&B: Travelling Salesperson Problem
Travelling Salesperson problem: Algorithm
Let G = (V, E) be a directed weighted graph defining an instance of the travelling
salesperson problem.
Let ci j equal to the cost of an edge <i, j> and & let |V| = n.
Assume that every tour starts & ends at vertex 1. So, the solution space is given
by . Then
Fig. 8 SST for TSP with n= 4 & start vertex is 1
B&B: Travelling Salesperson Problem
Travelling Salesperson problem:
Let c(.) be a cost function and be a cost function with reduced matrix.
A row(column) of a matrix is said to be reduced iff it contains at least one zero
& all other entries are non-negative.
A matrix is said to be reduced iff every row & column is reduced.
1) Change all entries in row I & column j of A to ∞.
2) Set A(j, 1) to ∞ .
3) Reduce all rows & columns in the resulting matrix except for rows &
columns containing only ∞ .
Let the resulting matrix be B. If r is the total amount subtracted in step
3 then
For upper bound function u, we can use u(R) = ∞ for all nodes R.
That’s it.