Skip to main content
1
2
3
INTRODUCTION
GroupGroup 22
Name Roll No
Rubina Mustafa 3
Hafiz Jawad Mansoor 25
Sajad Ul Haq 5
Umair 16
Rao Waqar Akram 17
4
Greedy AlgorithmGreedy Algorithm
5
A SHORT LIST OF CATEGORIES
 Algorithm types we will consider include:
 Simple recursive algorithms
 Backtracking algorithms
 Divide and conquer algorithms
 Dynamic programming algorithms
 Greedy algorithms
 Branch and bound algorithms
 Brute force algorithms
 Randomized algorithms
6
OPTIMIZATION PROBLEMS
 An optimization problem is one in which you want
to find, not just a solution, but the best solution
 A “greedy algorithm” sometimes works well for
optimization problems
 A greedy algorithm works in phases. At each phase:
 You take the best you can get right now, without regard
for future consequences
 You hope that by choosing a local optimum at each step,
you will end up at a global optimum
7
7
8
EXAMPLE: COUNTING MONEY
 Suppose you want to count out a certain amount of
money, using the fewest possible bills and coins
 A greedy algorithm would do this would be:
At each step, take the largest possible bill or coin
that does not overshoot
 Example: To make $6.39, you can choose:
 a $5 bill
 a $1 bill, to make $6
 a 25¢ coin, to make $6.25
 A 10¢ coin, to make $6.35
 four 1¢ coins, to make $6.39
 For US money, the greedy algorithm always gives
the optimum solution
9
10
EXAMPLE
11
A SCHEDULING PROBLEM
 You have to run nine jobs, with running times of 3, 5, 6, 10, 11,
14, 15, 18, and 20 minutes
 You have three processors on which you can run these jobs
 You decide to do the longest-running jobs first, on whatever
processor is available
 Time to completion: 18 + 11 + 6 = 35 minutes
 This solution isn’t bad, but we might be able to do
better
20
18
15 14
11
10
6
5
3P1
P2
P3
12
ANOTHER APPROACH
 What would be the result if you ran the shortest job first?
 Again, the running times are 3, 5, 6, 10, 11, 14, 15, 18, and 20
minutes
 That wasn’t such a good idea; time to completion is now
6 + 14 + 20 = 40 minutes
 Note, however, that the greedy algorithm itself is fast
 All we had to do at each stage was pick the minimum or
maximum
20
18
15
14
11
10
6
5
3P1
P2
P3
13
AN OPTIMUM SOLUTION
 Better solutions do exist:
 This solution is clearly optimal (why?)
 Clearly, there are other optimal solutions (why?)
 How do we find such a solution?
 One way: Try all possible assignments of jobs to processors
 Unfortunately, this approach can take exponential time
20
18
15
14
11
10 6
5
3
P1
P2
P3
14
HUFFMAN ENCODING
 The Huffman encoding algorithm is a greedy algorithm
 You always pick the two smallest numbers to combine
 Average bits/char:
0.22*2 + 0.12*3 +
0.24*2 + 0.06*4 +
0.27*2 + 0.09*4
= 2.42
 The Huffman
algorithm finds an
optimal solution
22 12 24 6 27 9
A B C D E F
15
27
46
54
100
A=00
B=100
C=01
D=1010
E=11
F=1011
15
MINIMUM SPANNING TREE
 A minimum spanning tree is a least-cost subset of the
edges of a graph that connects all the nodes
 Start by picking any node and adding it to the tree
 Repeatedly: Pick any least-cost edge from a node in the tree to a
node not in the tree, and add the edge and new node to the tree
 Stop when all nodes have been added to the tree
 The result is a least-cost
(3+3+2+2+2=12) spanning tree
 If you think some other edge
should be in the spanning tree:
 Try adding that edge
 Note that the edge is part of a cycle
 To break the cycle, you must remove
the edge with the greatest cost
 This will be the edge you just added
1
2
3
4
5
6
3 3
3
3
2
2
2
4
4
4
16
TRAVELING SALESMAN
 A salesman must visit every city (starting from city A),
and wants to cover the least possible distance
 He can revisit a city (and reuse a road) if necessary
 He does this by using a greedy algorithm: He goes to the
next nearest city from wherever he is
 From A he goes to B
 From B he goes to D
 This is not going to result in a
shortest path!
 The best result he can get
now will be ABDBCE, at a
cost of 16
 An actual least-cost path from
A is ADBCE, at a cost of 14
E
A B C
D
2
3 3
4
4 4
17
OTHER GREEDY ALGORITHMS
 Dijkstra’s algorithm for finding the shortest path
in a graph
 Always takes the shortest edge connecting a known
node to an unknown node
 Kruskal’s algorithm for finding a minimum-cost
spanning tree
 Always tries the lowest-cost remaining edge
 Prim’s algorithm for finding a minimum-cost
spanning tree
 Always takes the lowest-cost edge between nodes in
the spanning tree and nodes not yet in the spanning
tree
18
PSEOUDOCODE
 Begin
 Greedy(input I)
 while (solution is not complete) do
 Select the best element x in the
 remaining input I;
 Put x next in the output;
 Remove x from the remaining input;
 Endwhile
 End
19
ALGORITHM
 MAKE-CHANGE (n)
        C ← {100, 25, 10, 5, 1}     // constant.
        Sol ← {};                         // set that will hold the solution set.
        Sum ← 0 sum of item in solution set
        WHILE sum != n
            x = largest item in set C such that sum + x ≤ n
            IF no such item THEN
                RETURN    "No Solution"
            S ← S {value of x}
            sum ← sum + x
        RETURN S
19
20
CONNECTING WIRES
 There are n white dots and n black dots, equally spaced,
in a line
 You want to connect each white dot with some one black
dot, with a minimum total length of “wire”
 Example:
 Total wire length above is 1 + 1 + 1 + 5 = 8
 Do you see a greedy algorithm for doing this?
 Does the algorithm guarantee an optimal solution?
 Can you prove it?
 Can you find a counterexample?
21
COLLECTING COINS
 A checkerboard has a certain number of coins on it
 A robot starts in the upper-left corner, and walks to
the bottom left-hand corner
 The robot can only move in two directions: right and down
 The robot collects coins as it goes
 You want to collect all the coins using the minimum
number of robots
 Example:  Do you see a greedy algorithm for
doing this?
 Does the algorithm guarantee an
optimal solution?
 Can you prove it?
 Can you find a counterexample?
22