2021-03-19
slides.com/jod/pt_12c
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
Input: tekst
Output: Huffmanboom met korte paden voor karakters die veel voorkomen in tekst
Stap 0: bereken de frequentie van elk karakter in de tekst
Niet moeilijk voor ASCII-tekst:
er zijn maar 128 mogelijke karakters
karakter | frequentie |
---|---|
m | 1 |
e | 4 |
t | 3 |
n | 2 |
"meettenten"
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Input: tekst, frequentie-tabel
Output: Huffmanboom met korte paden voor karakters die veel voorkomen in tekst
karakter | frequentie |
---|---|
m | 1 |
e | 4 |
t | 3 |
n | 2 |
"meettenten"
Sla in elke node een frequentie op
We bouwen de boom bottom-up, vanuit de nodes met de laagste frequenties, om zo de hogere frequenties dichter bij de root toe te voegen.
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie |
---|---|
m | 1 |
e | 4 |
t | 3 |
n | 2 |
"meettenten"
m
4
3
2
1
n
t
e
3
6
10
0
1
1
1
0
0
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
m | 1 | 111 |
e | 4 | 0 |
t | 3 | 10 |
n | 2 | 110 |
"meettenten"
.
.
.
e
t
n
m
0
1
1
1
0
0
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
s | 1 | |
o | 1 | |
e | 1 | |
p | 1 |
"soep"
Wat met het woord "soep"?
De frequentie van alle letters is hetzelfde...
s
1
1
1
1
o
e
p
2
4
0
1
1
1
0
0
2
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
s | 1 | 111 |
o | 1 | 110 |
e | 1 | 101 |
p | 1 | 100 |
j | 1 | 01 |
a | 1 | 00 |
"soepja"
2
4
1
0
1
1
1
1
0
0
0
0
2
1
1
1
1
s
o
e
p
1
1
j
a
2
4
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
s | 1 | 11 |
o | 1 | 10 |
e | 1 | 01 |
p | 1 | 00 |
"soep"
Wat met het woord "soep"?
De frequentie van alle letters is hetzelfde...
s
1
1
1
1
o
e
p
2
4
0
1
1
1
0
0
2
Resultaat:
twee bits per karakter
Zonder extra frequentie-informatie zitten zitten we terug in het algemene geval :)
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
f | 1 | ? |
e | 4 | ? |
s | 1 | ? |
t | 3 | ? |
n | 2 | ? |
"feesttenten"
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
karakter | frequentie | bitcode |
---|---|---|
f | 1 | 1111 |
e | 4 | 0 |
s | 1 | 1110 |
t | 3 | 10 |
n | 2 | 110 |
"feesttenten"
2
4
3
1
4
1
f
e
s
t
2
n
7
11
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
Constructie van Huffmanboom: