SlideShare a Scribd company logo
Introduction to Algorithms
Chapter 16: Greedy Algorithms
Greedy Algorithms
 Similar to dynamic programming, but simpler approach
 Also used for optimization problems
 Idea: When we have a choice to make, make the one
that looks best right now
 Make a locally optimal choice in hope of getting a globally optimal
solution
 Greedy algorithms don’t always yield an optimal solution
 Makes the choice that looks best at the moment in order
to get optimal solution.
Fractional Knapsack Problem
 Knapsack capacity: W
 There are n items: the i-th item has value vi and weight
wi
 Goal:
 find xi such that for all 0  xi  1, i = 1, 2, .., n
 wixi  W and
 xivi is maximum
50
Fractional Knapsack - Example
 E.g.:
10
20
30
50
Item 1
Item 2
Item 3
$60 $100 $120
10
20
$60
$100
+
$240
$6/pound $5/pound $4/pound
20
---
30
$80
+
Fractional Knapsack Problem
 Greedy strategy 1:
 Pick the item with the maximum value
 E.g.:
 W = 1
 w1 = 100, v1 = 2
 w2 = 1, v2 = 1
 Taking from the item with the maximum value:
Total value taken = v1/w1 = 2/100
 Smaller than what the thief can take if choosing the
other item
Total value (choose item 2) = v2/w2 = 1
Fractional Knapsack Problem
Greedy strategy 2:
 Pick the item with the maximum value per pound vi/wi
 If the supply of that element is exhausted and the thief can
carry more: take as much as possible from the item with the
next greatest value per pound
 It is good to order items based on their value per pound
n
n
w
v
w
v
w
v


 ...
2
2
1
1
Fractional Knapsack Problem
Alg.: Fractional-Knapsack (W, v[n], w[n])
1. While w > 0 and as long as there are items remaining
2. pick item with maximum vi/wi
3. xi  min (1, w/wi)
4. remove item i from list
5. w  w – xiwi
 w – the amount of space remaining in the knapsack (w = W)
 Running time: (n) if items already ordered; else (nlgn)
Huffman Code Problem
 Huffman’s algorithm achieves data
compression by finding the best variable
length binary encoding scheme for the
symbols that occur in the file to be
compressed.
Huffman Code Problem
 The more frequent a symbol occurs, the
shorter should be the Huffman binary word
representing it.
 The Huffman code is a prefix-free code.
 No prefix of a code word is equal to another
codeword.
Overview
 Huffman codes: compressing data (savings of 20% to
90%)
 Huffman’s greedy algorithm uses a table of the
frequencies of occurrence of each character to build
up an optimal way of representing each character as
a binary string
C: Alphabet
Example
 Assume we are given a data file that contains only 6 symbols,
namely a, b, c, d, e, f With the following frequency table:
 Find a variable length prefix-free encoding scheme that
compresses this data file as much as possible?
Huffman Code Problem
 Left tree represents a fixed length encoding scheme
 Right tree represents a Huffman encoding scheme
Example
Constructing A Huffman Code
O(lg n)
O(lg n)
O(lg n)
Total computation time = O(n lg n)
// C is a set of n characters
// Q is implemented as a binary min-heap O(n)
Cost of a Tree T
 For each character c in the alphabet C
 let f(c) be the frequency of c in the file
 let dT(c) be the depth of c in the tree
 It is also the length of the codeword. Why?
 Let B(T) be the number of bits required to
encode the file (called the cost of T)
B(T )  f (c)dT (c)
cC

Huffman Code Problem
In the pseudocode that follows:
 we assume that C is a set of n characters and that
each character c €C is an object with a defined
frequency f [c].
 The algorithm builds the tree T corresponding to the
optimal code
 A min-priority queue Q, is used to identify the two
least-frequent objects to merge together.
 The result of the merger of two objects is a new
object whose frequency is the sum of the
frequencies of the two objects that were merged.
Running time of Huffman's algorithm
 The running time of Huffman's algorithm assumes
that Q is implemented as a binary min-heap.
 For a set C of n characters, the initialization of Q in
line 2 can be performed in O(n) time using the
BUILD-MINHEAP
 The for loop in lines 3-8 is executed exactly n - 1
times, and since each heap operation requires
time O(lg n), the loop contributes O(n lg n) to the
running time. Thus, the total running time of
HUFFMAN on a set of n characters is O(n lg n).
Prefix Code
 Prefix(-free) code: no codeword is also a prefix of some other
codewords (Un-ambiguous)
 An optimal data compression achievable by a character code can
always be achieved with a prefix code
 Simplify the encoding (compression) and decoding
 Encoding: abc  0 . 101. 100 = 0101100
 Decoding: 001011101 = 0. 0. 101. 1101  aabe
 Use binary tree to represent prefix codes for easy decoding
 An optimal code is always represented by a full binary tree, in which
every non-leaf node has two children
 |C| leaves and |C|-1 internal nodes Cost:


C
c
T c
d
c
f
T
B )
(
)
(
)
(
Frequency of c
Depth of c (length of the codeword)
Huffman Code
 Reduce size of data by 20%-90% in general
 If no characters occur more frequently than others,
then no advantage over ASCII
 Encoding:
 Given the characters and their frequencies, perform the
algorithm and generate a code. Write the characters
using the code
 Decoding:
 Given the Huffman tree, figure out what each character
is (possible because of prefix property)
Application on Huffman code
 Both the .mp3 and .jpg file formats use
Huffman coding at one stage of the
compression
Dynamic Programming vs. Greedy Algorithms
 Dynamic programming
 We make a choice at each step
 The choice depends on solutions to subproblems
 Bottom up solution, from smaller to larger subproblems
 Greedy algorithm
 Make the greedy choice and THEN
 Solve the subproblem arising after the choice is made
 The choice we make may depend on previous choices,
but not on solutions to subproblems
 Top down solution, problems decrease in size

More Related Content

Similar to 16_Greedy_Algorithms Greedy_AlgorithmsGreedy_Algorithms (20)

PDF
[Slides] A simple (leveled) fully homomorphic encryption scheme and thoughts ...
tranminhkhoait
 
PDF
Lec-03 Entropy Coding I: Hoffmann & Golomb Codes
United States Air Force Academy
 
PDF
Huffman Encoding Pr
anithabalaprabhu
 
PDF
INSTRUCTIONS For this assignment you will be generating all code on y.pdf
adayarboot
 
PPT
Automatically Tolerating And Correcting Memory Errors
Emery Berger
 
PPTX
Text compression
Sammer Qader
 
PPT
Hamming codes
GIGI JOSEPH
 
PPT
Huffman&Shannon-multimedia algorithms.ppt
PrincessSaro
 
PDF
12_HuffmanhsjsjsjjsiejjssjjejsjCoding_pdf.pdf
SHIVAM691605
 
PPT
Huffman code presentation and their operation
HODCSE170941
 
PPT
Lec5 Compression
anithabalaprabhu
 
DOC
Huffman coding01
Nv Thejaswini
 
PDF
Acm aleppo cpc training fifth session
Ahmad Bashar Eter
 
PPT
2.3 unit-ii-text-compression-a-outline-compression-techniques-run-length-codi...
Helan4
 
PPT
5 linear block codes
Jagruti_Ingale
 
PDF
AI&BigData Lab 2016. Анатолий Востряков: Перевод с "плохого" английского на "...
GeeksLab Odessa
 
DOC
HuffmanCoding01.doc
Qwertty3
 
PPTX
Design and Analysis of Algorithms Assignment Help
Programming Homework Help
 
PDF
WEEK 1 -- DAY 1_20240119_220354_0000.pdf
Rahulsahoo43
 
PPTX
Huffman codes
Nargis Ehsan
 
[Slides] A simple (leveled) fully homomorphic encryption scheme and thoughts ...
tranminhkhoait
 
Lec-03 Entropy Coding I: Hoffmann & Golomb Codes
United States Air Force Academy
 
Huffman Encoding Pr
anithabalaprabhu
 
INSTRUCTIONS For this assignment you will be generating all code on y.pdf
adayarboot
 
Automatically Tolerating And Correcting Memory Errors
Emery Berger
 
Text compression
Sammer Qader
 
Hamming codes
GIGI JOSEPH
 
Huffman&Shannon-multimedia algorithms.ppt
PrincessSaro
 
12_HuffmanhsjsjsjjsiejjssjjejsjCoding_pdf.pdf
SHIVAM691605
 
Huffman code presentation and their operation
HODCSE170941
 
Lec5 Compression
anithabalaprabhu
 
Huffman coding01
Nv Thejaswini
 
Acm aleppo cpc training fifth session
Ahmad Bashar Eter
 
2.3 unit-ii-text-compression-a-outline-compression-techniques-run-length-codi...
Helan4
 
5 linear block codes
Jagruti_Ingale
 
AI&BigData Lab 2016. Анатолий Востряков: Перевод с "плохого" английского на "...
GeeksLab Odessa
 
HuffmanCoding01.doc
Qwertty3
 
Design and Analysis of Algorithms Assignment Help
Programming Homework Help
 
WEEK 1 -- DAY 1_20240119_220354_0000.pdf
Rahulsahoo43
 
Huffman codes
Nargis Ehsan
 

More from Shanmuganathan C (15)

PPT
formseminar_module formseminar_moduleformseminar_moduleformseminar_moduleform...
Shanmuganathan C
 
PPT
datacollectionplan Data collectionData collectionData collectionData collecti...
Shanmuganathan C
 
PPTX
Types of attacks Types of attacks Types of attacks Types of attacks Types of ...
Shanmuganathan C
 
PPT
Risk management Risk managementRisk managementRisk managementRisk managementR...
Shanmuganathan C
 
PDF
Chapter-1-Introduction-to-Aglorithms.pdf
Shanmuganathan C
 
PPT
17-dynprog2 17-dynprog2 17-dynprog2 17-dynprog2
Shanmuganathan C
 
PPT
ClosestPairClosestPairClosestPairClosestPair
Shanmuganathan C
 
PPT
convexHullsconvexHullsconvexHullsconvexHullsconvexHullsconvexHullsconvexHulls
Shanmuganathan C
 
PPT
ch05-2018.03.02 ch05-2018.03.02ch05-2018.03.02
Shanmuganathan C
 
PPT
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
PPT
ch01_overview_nemo (1)ch01_overview_nemo (1)ch01_overview_nemo (1)ch01_overvi...
Shanmuganathan C
 
PDF
AlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorit...
Shanmuganathan C
 
PPTX
OODP UNIT 2 operator overloading
Shanmuganathan C
 
PPT
OODP UNIT 2 Function overloading
Shanmuganathan C
 
PPTX
OODP Unit 1 OOPs classes and objects
Shanmuganathan C
 
formseminar_module formseminar_moduleformseminar_moduleformseminar_moduleform...
Shanmuganathan C
 
datacollectionplan Data collectionData collectionData collectionData collecti...
Shanmuganathan C
 
Types of attacks Types of attacks Types of attacks Types of attacks Types of ...
Shanmuganathan C
 
Risk management Risk managementRisk managementRisk managementRisk managementR...
Shanmuganathan C
 
Chapter-1-Introduction-to-Aglorithms.pdf
Shanmuganathan C
 
17-dynprog2 17-dynprog2 17-dynprog2 17-dynprog2
Shanmuganathan C
 
ClosestPairClosestPairClosestPairClosestPair
Shanmuganathan C
 
convexHullsconvexHullsconvexHullsconvexHullsconvexHullsconvexHullsconvexHulls
Shanmuganathan C
 
ch05-2018.03.02 ch05-2018.03.02ch05-2018.03.02
Shanmuganathan C
 
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
ch01_overview_nemo (1)ch01_overview_nemo (1)ch01_overview_nemo (1)ch01_overvi...
Shanmuganathan C
 
AlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorithmsAlgorit...
Shanmuganathan C
 
OODP UNIT 2 operator overloading
Shanmuganathan C
 
OODP UNIT 2 Function overloading
Shanmuganathan C
 
OODP Unit 1 OOPs classes and objects
Shanmuganathan C
 
Ad

Recently uploaded (20)

PPTX
Hashing Introduction , hash functions and techniques
sailajam21
 
PPTX
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
PPTX
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
PPTX
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
PDF
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
PPTX
Introduction to Design of Machine Elements
PradeepKumarS27
 
PDF
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
PPTX
Element 7. CHEMICAL AND BIOLOGICAL AGENT.pptx
merrandomohandas
 
PDF
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
PPTX
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
PDF
smart lot access control system with eye
rasabzahra
 
PPTX
Server Side Web Development Unit 1 of Nodejs.pptx
sneha852132
 
PPTX
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PPTX
Green Building & Energy Conservation ppt
Sagar Sarangi
 
PDF
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
PPTX
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
PPTX
fatigue in aircraft structures-221113192308-0ad6dc8c.pptx
aviatecofficial
 
PPTX
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
PDF
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
Hashing Introduction , hash functions and techniques
sailajam21
 
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
Biomechanics of Gait: Engineering Solutions for Rehabilitation (www.kiu.ac.ug)
publication11
 
Introduction to Design of Machine Elements
PradeepKumarS27
 
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
Element 7. CHEMICAL AND BIOLOGICAL AGENT.pptx
merrandomohandas
 
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
smart lot access control system with eye
rasabzahra
 
Server Side Web Development Unit 1 of Nodejs.pptx
sneha852132
 
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Green Building & Energy Conservation ppt
Sagar Sarangi
 
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
fatigue in aircraft structures-221113192308-0ad6dc8c.pptx
aviatecofficial
 
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
Ad

16_Greedy_Algorithms Greedy_AlgorithmsGreedy_Algorithms

  • 1. Introduction to Algorithms Chapter 16: Greedy Algorithms
  • 2. Greedy Algorithms  Similar to dynamic programming, but simpler approach  Also used for optimization problems  Idea: When we have a choice to make, make the one that looks best right now  Make a locally optimal choice in hope of getting a globally optimal solution  Greedy algorithms don’t always yield an optimal solution  Makes the choice that looks best at the moment in order to get optimal solution.
  • 3. Fractional Knapsack Problem  Knapsack capacity: W  There are n items: the i-th item has value vi and weight wi  Goal:  find xi such that for all 0  xi  1, i = 1, 2, .., n  wixi  W and  xivi is maximum
  • 4. 50 Fractional Knapsack - Example  E.g.: 10 20 30 50 Item 1 Item 2 Item 3 $60 $100 $120 10 20 $60 $100 + $240 $6/pound $5/pound $4/pound 20 --- 30 $80 +
  • 5. Fractional Knapsack Problem  Greedy strategy 1:  Pick the item with the maximum value  E.g.:  W = 1  w1 = 100, v1 = 2  w2 = 1, v2 = 1  Taking from the item with the maximum value: Total value taken = v1/w1 = 2/100  Smaller than what the thief can take if choosing the other item Total value (choose item 2) = v2/w2 = 1
  • 6. Fractional Knapsack Problem Greedy strategy 2:  Pick the item with the maximum value per pound vi/wi  If the supply of that element is exhausted and the thief can carry more: take as much as possible from the item with the next greatest value per pound  It is good to order items based on their value per pound n n w v w v w v    ... 2 2 1 1
  • 7. Fractional Knapsack Problem Alg.: Fractional-Knapsack (W, v[n], w[n]) 1. While w > 0 and as long as there are items remaining 2. pick item with maximum vi/wi 3. xi  min (1, w/wi) 4. remove item i from list 5. w  w – xiwi  w – the amount of space remaining in the knapsack (w = W)  Running time: (n) if items already ordered; else (nlgn)
  • 8. Huffman Code Problem  Huffman’s algorithm achieves data compression by finding the best variable length binary encoding scheme for the symbols that occur in the file to be compressed.
  • 9. Huffman Code Problem  The more frequent a symbol occurs, the shorter should be the Huffman binary word representing it.  The Huffman code is a prefix-free code.  No prefix of a code word is equal to another codeword.
  • 10. Overview  Huffman codes: compressing data (savings of 20% to 90%)  Huffman’s greedy algorithm uses a table of the frequencies of occurrence of each character to build up an optimal way of representing each character as a binary string C: Alphabet
  • 11. Example  Assume we are given a data file that contains only 6 symbols, namely a, b, c, d, e, f With the following frequency table:  Find a variable length prefix-free encoding scheme that compresses this data file as much as possible?
  • 12. Huffman Code Problem  Left tree represents a fixed length encoding scheme  Right tree represents a Huffman encoding scheme
  • 14. Constructing A Huffman Code O(lg n) O(lg n) O(lg n) Total computation time = O(n lg n) // C is a set of n characters // Q is implemented as a binary min-heap O(n)
  • 15. Cost of a Tree T  For each character c in the alphabet C  let f(c) be the frequency of c in the file  let dT(c) be the depth of c in the tree  It is also the length of the codeword. Why?  Let B(T) be the number of bits required to encode the file (called the cost of T) B(T )  f (c)dT (c) cC 
  • 16. Huffman Code Problem In the pseudocode that follows:  we assume that C is a set of n characters and that each character c €C is an object with a defined frequency f [c].  The algorithm builds the tree T corresponding to the optimal code  A min-priority queue Q, is used to identify the two least-frequent objects to merge together.  The result of the merger of two objects is a new object whose frequency is the sum of the frequencies of the two objects that were merged.
  • 17. Running time of Huffman's algorithm  The running time of Huffman's algorithm assumes that Q is implemented as a binary min-heap.  For a set C of n characters, the initialization of Q in line 2 can be performed in O(n) time using the BUILD-MINHEAP  The for loop in lines 3-8 is executed exactly n - 1 times, and since each heap operation requires time O(lg n), the loop contributes O(n lg n) to the running time. Thus, the total running time of HUFFMAN on a set of n characters is O(n lg n).
  • 18. Prefix Code  Prefix(-free) code: no codeword is also a prefix of some other codewords (Un-ambiguous)  An optimal data compression achievable by a character code can always be achieved with a prefix code  Simplify the encoding (compression) and decoding  Encoding: abc  0 . 101. 100 = 0101100  Decoding: 001011101 = 0. 0. 101. 1101  aabe  Use binary tree to represent prefix codes for easy decoding  An optimal code is always represented by a full binary tree, in which every non-leaf node has two children  |C| leaves and |C|-1 internal nodes Cost:   C c T c d c f T B ) ( ) ( ) ( Frequency of c Depth of c (length of the codeword)
  • 19. Huffman Code  Reduce size of data by 20%-90% in general  If no characters occur more frequently than others, then no advantage over ASCII  Encoding:  Given the characters and their frequencies, perform the algorithm and generate a code. Write the characters using the code  Decoding:  Given the Huffman tree, figure out what each character is (possible because of prefix property)
  • 20. Application on Huffman code  Both the .mp3 and .jpg file formats use Huffman coding at one stage of the compression
  • 21. Dynamic Programming vs. Greedy Algorithms  Dynamic programming  We make a choice at each step  The choice depends on solutions to subproblems  Bottom up solution, from smaller to larger subproblems  Greedy algorithm  Make the greedy choice and THEN  Solve the subproblem arising after the choice is made  The choice we make may depend on previous choices, but not on solutions to subproblems  Top down solution, problems decrease in size