Lecture 19
Lecture 19
Repeat
find the longest match w in the dictionary
output the index of w
put wa in the dictionary where a was the
unmatched symbol
0 a
1 b
2 ab
ababababa
0
ababababa
0 a
1 b
0
1
2
3
a
b
ab
ba
ababababa
01
a
b
ab
ba
aba
ababababa
01 2
0
1
2
3
4
5
0
1
2
3
4
5
a
b
ab
ba
aba
abab
initialize dictionary;
decode first index to w;
put w? in dictionary;
repeat
decode the first symbol s of the index;
complete the previous dictionary entry with s;
finish decoding the remainder of the index;
put w? in the dictionary where w was just decoded;
ababababa
01 2
4 3
Dictionary
ababababa
01 2
4
a
b
ab
ba
aba
abab
10
012436
a
0 a
1 b
2 ab
11
012436
a b
12
a
b
ab
b?
012436
a b
0
1
2
3
13
a
b
ab
ba
ab?
0
1
2
3
4
5
a
b
ab
ba
aba
aba?
0
1
2
3
4
a
b
ab
ba
aba
15
14
012436
a b ab a
16
012436
a b ab aba
Dictionary
012436
a ba
012436
a b ab
a
b
ab
ba
0
1
2
3
4
5
17
a
b
ab
ba
aba
abab
012436
a b ab aba b
18
012436
a b ab aba ba
a
b
ab
ba
aba
abab
ba?
0
1
2
3
4
5
6
19
Base Dictionary
0
1
2
3
4
0 1 4 0 2 0 3 5 7
a
b
c
d
r
21
9 ca
10 ad
11 da
12 abr
13 raa
14 abra
0 1 2 3 4
a b c d r
0 1 2 3 4
a b c d r
b 5
22
Fredkin (1960)
0
1
2
3
4
5
6
7
8
20
Decoding Exercise
012436
a b ab aba ba bab
a
b
ab
ba
aba
abab
bab
bab?
012436
a b ab aba ba b
a
b
ab
ba
aba
abab
bab
c 8
d 10
r 6
r 12
a 9
b 5
a 11
a 7
r 12
a 13
a 14
a 14
c 8
d 10
r 6
a 9
a 11
a 7
a 13
abracadabraabracadabra
0 1 4 0 2 0 3 5 7 12
23
24
0 1 2 3 4
a b c d r
b 5
c 8
d 10
r 12
a 15
r 6
a 9
a 11
0
1
2
3
4
5
6
7
8
a 7
a 13
a 14
abracadabraabracadabra
0 1 4 0 2 0 3 5 7 12 8
9 ca
10 ad
11 da
12 abr
13 raa
14 abr?
25
a
b
c
d
r
ab
br
ra
ac
0 1 4 0 2 0 3 5 7 12 8 ...
a b r a c a d ab ra abr
Least Recent
2n
b 5
27
b 5
c 8
d 10
0 1 2 3 4
a b c d r
a 9
a 11
r 12 a 6
a 7
a 13
d 10
r 6
a 9
a 11
r 12
a 7
a 13
a 14
Most Recent
abracadabraabracadabra
0 1 4 0 2 0 3 5 7 12
28
a 14
Most Recent
c 8
0 1 2 3 4
a b c d r
Notes on LZW
26
abracadabraabracadabra
0 1 4 0 2 0 3 5 7 12 8
29
30
LZ77
Solution A
31
Solution A Problem
32
Solution B
33
Solution B Example
34
Surprise Code!
a bababababababababababab.....
a bababababababababababab$
<0,0,a>
<0,0,a>
a b ababababababababababab.....
a b ababababababababababab$
<0,0,b>
<0,0,b>
a b aba bababababababababab.....
a b ababababababababababab$
<1,2,a>
<1,22,$>
35
36
Surprise Decoding
Surprise Decoding
<0,0,a><0,0,b><1,22,$>
<0,0,a><0,0,b><1,22,$>
<0,0,a>
<0,0,b>
<1,22,$>
<2,21,$>
<3,20,$>
<4,19,$>
...
<22,1,$>
<23,0,$>
<0,0,a>
<0,0,b>
<1,22,$>
<2,21,$>
<3,20,$>
<4,19,$>
...
<22,1,$>
<23,0,$>
a
b
a
b
a
b
b
$
37
Solution C
39
aaaabababaaab$
search buffer
coded
tuple
<2,5,a>
look-ahead buffer
uncoded
38
40
match pointer
b
$
In Class Exercise
Sliding window
a
b
a
b
a
b
41
aaaabababaaab$
offset
1
length
0
aaaabababaaab$
aaaabababaaab$
aaaabababaaab$
aaaabababaaab$
aaaabababaaab$
tuple
<2,5,a>
42
Coding Example
s = 4, t = 4, a = 3
tuple
<0,0,a>
<1,3,b>
<2,5,a>
<4,2,$>
aaaabababaaab$
aaaabababaaab$
aaaabababaaab$
aaaabababaaab$
tuple
fixed code
<2,5,a> 010 0101 00
s = 4, t = 4, a = 3
43
44
Example
12
Search Window
aaaabababaaabaaaababababaaabba$
aba
11
Offset =12 8 = 4
Length = 5
Tuple = <4,5,a>
45
Example
46
Notes on LZ77
18
aaaabababaaabaaaababababaaabba$
bab
13
17
12
16
11
15
14
10
No match
Tuple = <0,0,b>
47
48