CS 310 – Advanced Data Structures and Algorithms
Greedy July 16, 2018
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 1 / 34
CS 310 Advanced Data Structures and Algorithms Greedy July 16, - - PowerPoint PPT Presentation
CS 310 Advanced Data Structures and Algorithms Greedy July 16, 2018 Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 1 / 34 Greedy Algorithm Like dynamic programming, used to solve optimization problems. Problems
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 1 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 2 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 3 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 4 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 5 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 6 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 6 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 7 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 8 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 9 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 10 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 11 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 12 / 34
1
2
3
4
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 13 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 14 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 15 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 16 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 17 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 18 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 19 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 20 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 21 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 22 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 23 / 34
2 3 4 5 6 7 8 9 space newline 1
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 24 / 34
1 Sort the character by frequencies. 2 At each stage take the two least frequent characters and merge them
3 Replace the original two characters with the merged super-character.
4 Repeat until all the characters are merged into one big
5 Build the coding tree such that for every merging operation involving
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 25 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 26 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 27 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 28 / 34
2 (6) 3 (5) 4 (4) 5 (3) 6 (3) 7 (3) 8 (2) 9 (2) nl (20) sp (30) 0 (10) 1 (7)
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 29 / 34
1 There are no parent nodes with a single child. Every node is either a
2 The two least frequent characters will always be on a longest path
∗ This last property is what makes the greedy choice safe in this case
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 30 / 34
1 The characters get processed by frequency, so given two characters x
2 The property above guarantees that the tree is optimal and no strictly
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 31 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 32 / 34
Mohammad Hadian Advanced Data Structures and Algorithms July 16, 2018 33 / 34