Lecture 04
Lecture 04
Leviten: Chapter 3
Today Covered
• Proving correctness
– Empirical analysis
• Optimality
1-3
Algorithm design strategies
• • Branch-and-bound
Transform and conquer
1-4
Analysis of Algorithms
• How good is the algorithm?
– Correctness
– Time efficiency
– Space efficiency
1-5
What is an algorithm?
• Recipe, process, method, technique, procedure,
routine,… with the following requirements:
1. Finiteness
terminates after a finite number of steps
2. Definiteness
rigorously and unambiguously specified
3. Clearly specified input
valid inputs are clearly specified
4. Clearly specified/expected output
can be proved to produce the correct output given
a valid input
5. Effectiveness
steps are sufficiently simple and basic
1-6
Why study algorithms?
• Theoretical importance
• Practical importance
1-7
Brute Force Approach,
3,0,6,1,5,2 0,1,2,3,5,6
Sorting Algorithm
Sorting Algorithm: Brute Force Approach
Sort the array [2, 4, 1, 3] in increasing order
s1 = [4,3,2,1], s2 = [4,3,1,2], s3 = [4,1,2,3]
s4 = [4,2,3,1], s5 = [4,1,3,2], s6 = [4,2,1,3]
s7 = [3,4,2,1],s8 = [3,4,1,2], s9 = [3,1,2,4]
s10 = [3,2,4,1], s11 = [3,1,4,2], s12 = [3,2,1,4]
s13 = [2,3,4,1], s14 = [2,3,1,4], s15 =
[2,1,4,3]
s16 = [2,4,3,1], s17 = [2,1,3,4], s18 =
[2,4,1,3]
s19 = [1,3,2,4], s20 = [1,3,1,4], s21 = [1,4,2,3]
s22 = [1,2,3,4], s23 = [1,4,3,2], s24 = [1,2,4,3]
There are 4! = 24 number of permutations.
For n number of elements there will be n! number of
permutations. Hence cost of order n! for sorting.
Generating Permutations
Permute (i) \\initial call Permute(1)
if i == N
output A[N]
else
for j = i to N do
swap(A[i], A[j])
permute(i+1)
swap(A[i], A[j])
• There are 4! = 24 number of permutations.
• For n number of elements there will be n! number of
permutations. Hence cost of order n! for sorting.
Example
Generating Permutations
Theorem
• Prove, by mathematical induction, that computational
cost of generating permutations is n!.
Proof
• If n = 1, then the statement is true, because 1! =1
• If there are k elements in set then no. of permutation = k!
• If we add one more element in any of the permutations,
there will be k+1 number of ways to add it, resulting k+1
no. of permutations.
• Now total no. of permutations = k!(k+1) = (k+1)!
• Hence true for all n.
Selection Sort
Selection Sort
Bubble Sort
Bubble Sort
Sequential Search
Brute-Force Strengths and
Weaknesses
• Strengths
– wide applicability
– simplicity
– yields reasonable algorithms for some important
problems
(e.g., matrix multiplication, sorting, searching, string
matching)
• Weaknesses
– rarely yields efficient algorithms
– some brute-force algorithms are unacceptably slow
– not as constructive as some other design techniques
Exhaustive Search
• Many important problems require finding an element with
a special property in a domain that grows exponentially
(or faster) with an instance size.
• Typically, such problems arise in situations that involve—
explicitly or implicitly—combinatorial objects such as
permutations, combinations, and subsets of a given set.
• Many such problems are optimization problems: they ask
to find an element that maximizes or minimizes some
desired characteristic such as a path length or an
assignment cost.
Exhaustive Search
• Exhaustive search is simply a brute-force approach to
combinatorial problems.
• It suggests generating each and every element of the
problem domain, selecting those of them that satisfy all
the constraints, and then finding a desired element
(e.g.,the one that optimizes some objective function).
• Note that although the idea of exhaustive search is quite
straightforward, its implementation typically requires an
algorithm for generating certain combinatorial objects
Exhaustive Search
A brute force solution to a problem involving search for an
element with a special property, usually among
combinatorial objects such as permutations, combinations,
or subsets of a set.
Method:
– generate a list of all potential solutions to the problem in
a systematic manner (see algorithms in Sec. 5.4)
c d
7
How do we represent a solution (Hamiltonian circuit)?
TSP by Exhaustive Search
Tour Cost
a→b→c→d→a 2+3+7+5 = 17
a→b→d→c→a 2+4+7+8 = 21
a→c→b→d→a 8+3+4+5 = 20
a→c→d→b→a 8+7+4+2 = 21
a→d→b→c→a 5+4+3+8 = 20
a→d→c→b→a 5+7+3+2 = 17
Θ((n-1)!)
Efficiency:
Chapter 5 discusses how to generate permutations fast.
0-1 Knapsack Problem
0-1 Knapsack Problem Statement
The knapsack problem arises whenever there is
resource allocation with no financial constraints
Problem Statement
• You are in Japan on an official visit and want to make
shopping from a store
• You have a list of required items
• You have also a bag (knapsack), of fixed capacity, and
only you can fill this bag with the selected items
• Every item has a value (cost) and weight,
• And your objective is to seek most valuable set of
items which you can buy not exceeding bag limit.
0-1 Knapsack Example
Input
• Given n items each
– weight wi
– value vi
• Knapsack of capacity W
Output: Find most valuable items that fit into the knapsack
Example:
item weight value knapsack capacity W = 16
1 2 20
2 5 30
3 10 50
4 5 10
0-1 Knapsack Problem Example
Subset Total weight Total value
1. 0 0 # W V
2. {1} 2 20 1 2 20
3. {2} 5 30 2 5 30
4. {3} 10 50 3 10 50
5. {4} 5 10 4 5 10
6. {1,2} 7 50
7. {1,3} 12 70
8. {1,4} 7 30
9. {2,3} 15 80
10. {2,4} 10 40
11. {3,4} 15 60
12. {1,2,3} 17 not feasible
13. {1,2,4} 12 60
14. {1,3,4} 17 not feasible
15. {2,3,4} 20 not feasible
16. {1,2,3,4} 22 not feasible
0-1 Knapsack Algorithm
Knapsack-BF (n, V, W, C)
Compute all subsets, s, of S = {1, 2, 3, 4}
forall s S
weight = Compute sum of weights of these items
if weight > C, not feasible
new solution = Compute sum of values of these
items
solution = solution {new solution}
Return maximum of solution
0-1 Knapsack Algorithm Analysis
Approach
• In brute force algorithm, we go through all
combinations and find the one with maximum
value and with total weight less or equal to W = 16
Complexity
• Cost of computing subsets O(2n) for n elements
• Cost of computing weight = O(2n)
• Cost of computing values = O(2n)
• Total cost in worst case: O(2n)
The Closest Pair Problem
Finding Closest Pair
Problem
The closest pair problem is defined as follows:
• Given a set of n points, determine the two points
that are closest to each other in terms of distance.
Furthermore, if there are more than one pair of
points with the closest distance, all such pairs
should be identified.
Input :
is a set of n points
Output
• is a pair of points closest to each other,
• there can be more then one such pairs
Definition: Closest Pair
Distance
• In mathematics, particular in geometry, distance
on a given set M is a function d: M × M → R,
where R denotes the set of real numbers, that
satisfies the following conditions:
1. d(x, y) ≥ 0,
2. d(x, y) = 0 if and only if x = y.
3. Symmetric i.e.
d(x, y) = d(y, x).
4. Triangle inequality:
d(x, z) ≤ d(x, y) + d(y, z).
Finding Closest Pair
Closest Pair Problem in 2-D
• A point in 2-D is an ordered pair of values (x, y).
• The Euclidean distance between two points
Pi = (xi, yi) and Pj = (xj, yj) is
d(pi, pj) = sqr((xi − xj)2 + (yi − yj)2)
• The closest-pair problem is finding the two closest
points in a set of n points.
• The brute force algorithm checks every pair of points.
• Assumption: We can avoid computing square roots by
using squared distance.
– This assumption will not loose correctness of the problem.
Brute Force Approach: Finding Closest Pair in 2-D
ClosestPairBF(P)
1. mind ∞ Time Complexity
2. for i 1 to n n n
3. do c
4. for j 1 to n i 1 j1
5. if i j n
6. do cn
7. d ((xi − xj)2 + (yi − yj)2) i 1
8. if d < mind then 2
9. mind d cn
10.mini I
2
11.minj j (n )
12.return mind, p(mini, minj)
Improved Version: Finding Closest Pair in 2-D
ClosestPairBF(P) Time Complexity
1. mind ∞ n 1 n
2. for i 1 to n − 1 c
i 1 ji 1
3. do
n 1
4. for j i + 1 to n c(n i )
5. do i 1
6. d ((xi − xj)2 + (yi − yj)2) n 1 n 1
1 2 3 4 5 6 7 8 9 10 11 12
Brute Force Algorithm in n-dimension
MAXIMAL-POINTS (int m, Point P[1. . . m])
0 A = ;
1 for i 1 to m \\ m used for number of points
2 do maximal true
3 for j 1 to m
4 do
5 if (i j) &
6 for k 1 to n \\ n stands for
dimension
7 do
8 P[i].x[k] P[j].x[k]
9 then maximal false;
break
10 if maximal
Problem Statement
Problem Statement:
Given a set of m points, P = {p1, p2, . . . , pm},
in n- dimension. Our objective is to compute
a set of maximal points i.e. set of points
which are not dominated by any one in the
given list.
Mathematical Description:
Maximal Points =
{ p P | q {p1, . . . , pm}, q p, i
{1,. . . , n} &
p.xi ≥ q.xj}
The Assignment Problem
There are n people who need to be assigned to n
jobs, one person per job. The cost of assigning
person i to job j is C[i,j]. Find an assignment that
minimizes the total cost.
Job 0 Job 1 Job 2 Job 3
Person 0 9 2 7 8
Person 1 6 4 3 7
Person 2 5 8 1 8
Person 3 7 6 9 4