12b. Huffmanboom
2021-03-19
slides.com/jod/pt_12b
Docent: Jo Devriendt
Assistent: Ann Philips
Coördinator: Joost Vennekens
voornaam.achternaam@kuleuven.be
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centraal idee
- Bouw binaire boom met karakters als leafs
- Labels "1" op linker- en "0" op rechtertakken
-
Paden vanuit root naar leaf geven bitcode
- pad = opeenvolging van takken zonder splitsing
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | |
e | |
t | |
n |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centraal idee
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | |
t | |
n |
- Bouw binaire boom met karakters als leafs
- Labels "1" op linker- en "0" op rechtertakken
-
Paden vanuit root naar leaf geven bitcode
- pad = opeenvolging van takken zonder splitsing
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centraal idee
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | |
n |
- Bouw binaire boom met karakters als leafs
- Labels "1" op linker- en "0" op rechtertakken
-
Paden vanuit root naar leaf geven bitcode
- pad = opeenvolging van takken zonder splitsing
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centraal idee
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n |
- Bouw binaire boom met karakters als leafs
- Labels "1" op linker- en "0" op rechtertakken
-
Paden vanuit root naar leaf geven bitcode
- pad = opeenvolging van takken zonder splitsing
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centraal idee
- Bouw binaire boom met karakters als leafs
- Labels "1" op linker- en "0" op rechtertakken
-
Paden vanuit root naar leaf geven bitcode
- pad = opeenvolging van takken zonder splitsing
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Prefix-eigenschap
- Als A en B twee verschillende paden zijn, dan is A een prefix van B enkel als A eindigt bij een interne node
- Door de karakters in de leafs te steken garanderen we dat geen enkele bitcode een prefix is van een andere
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Frequentie-eigenschap
- Zorg dat frequente karakters korte paden hebben
- "bovenaan" in de Huffmanboom
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
.
.
.
e
t
n
m
0
1
1
1
0
0
1110010100110100110
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
m 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
m 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
me 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
me 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
mee 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
mee 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
mee 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
mee t 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Decodering
.
.
.
e
t
n
m
0
1
1
1
0
0
mee t te n te n 1110010100110100110
Bit "1" betekent links, bit "0" rechts
- Loop over de geëncodeerde bitstring vanaf de root
- Tot in een leaf die een karakter voorstelt
- Ga terug naar de root en herhaal
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Hoe Huffmanboom construeren?
Zie presentatie 12c :)
.
.
.
e
t
n
m
0
1
1
1
0
0
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Samenvatting
- Huffmanboom is een binaire boom met karakters in leafs
- Paden naar karakters stellen bitcodes voor
- Twee paden naar leafs zijn geen prefixes van elkaar
- Hoogfrequente karakters moeten in bladeren dicht bij de root zitten, om korte paden te hebben
- Kan gebruikt te worden om zowel te coderen als decoderen
12b. Huffmanboom
By Jo Devriendt
12b. Huffmanboom
- 679