Dynanic Markov Coding... 1 Để cho đơn giản ta gọi tắt nửa đoạn dạng [x,y là khoảng.. 2 Nh- vậy điều quan trọng là làm thế nào để luôn có thể xác định đ-ợc xác suất xuất hiện của chữ tiếp
Trang 2tin
c
Trang 3-
-
, c
Trang 42/1
3/1
a
b
5/3
7/1
7/6
5/2
a
b
5/2
5/2
3/2
5/3
c
5/1
5/2
3/1
Trang 5t
Trang 7A
) ( ) (
( ) - x
ha
Trang 9
n
m 1
1 log
1
1 log p k
Trang 1019 101
26 log 101
26 101
26 log 101
26 101
30 log 101
30
Markov A Markov (1856-1922) đưa ra
Trang 11ij 1
m
1 j ij p
Trang 12) p
(
} i
| j { P
p(ijk) k 0
k.
j ) k ( i )
l k (
n n
Markov ergodic
1.1.
Trang 13i 1
5 4 3 2 1
5 4 3 2 1
0 0 75 0 0
25
.
0
25 0 0 0 75
.
0
0
0 25 0 0 0
75
.
0
75 0 0 25 0 0
0
0 75 0 0 25
4 1
1/4
1/4
1/4 3/4
H×nh 1.1
Trang 141 log w E
m 1 i
i E =
ij 2 m
1 i m
1 j ij i
w
1 log w
A
ij 2 m
1 i m
1 j ij i
w
1 log w
c
2 i
c
3 i
c
4 i
c
H×nh 1.2
Trang 15146)
n
) ( p log
19 101
26 log 101
26 101
26 log 101
26 101
30 log 101
30
, b, c, d” Tuy nhiên
Trang 16
12 7 30
; p12 =
75
26 26 ) 12 7 30 (
21 11
p p
p p
=
49
75 126
75 0
2
1 2
1
0 75
26
1 75
H×nh 1.3
Nguån 2 Entropy=1.55
Trang 171
E1 =
30
26 12 7 30 log 26 12 7 30
19
7
7 19 log 7 19
Trang 18n
var a, b, Ea, Eb, Pa, Pb: extended;
Trang 20H×nh 1.4a
Trang 21(Dynanic Markov Coding.)
Trang 231.5
1 = 2/3, p2 = 1/3
= 2/3 log2(3/2)+ 1/3 log2(3) 0.918 11%
da:=da+1;
end else
begin write(f,b);
db:=db+1;
Trang 24end end;
close(f);
clrscr;
E:=(da/640000*ln(640000/da)+ db/640000*ln(640000/db))/ln(2); writeln(' ty le nen con = ',round(E/8*100), '%');
2/13/1
b
a b
a
p
pp
p2/13/2
2/13/1
n pa pb 1
7/3
3/2
2/1
2/1
3/1
H×nh 1.7
Trang 25var f:file of byte;
'a':begin if random<1/3 then
begin write(f,a);M:='a'; end
else
begin write(f,b);M:='b'; end;
end;
'b':begin if random<1/2 then
begin write(f,a);M:='a'; end
else
begin write(f,b);M:='b'; end;
end;
end;
Trang 26a
b
5/3
7/1
7/6
5/2
H×nh 1.8
Trang 27a b
a
p
pp
p7/15/3
7/65/2
pa pb 1
51/30
'a':begin if random<2/5 then
begin write(f,a);M:='a';Na:=Na+1; end
Trang 28else
begin write(f,b);M:='b';Nb:=Nb+1; end;
end;
'b':begin if random<6/7 then
begin write(f,a);M:='a';Na:=Na+1; end
Trang 293/15/25/2
3/25/15/3
c b a
c b a
ppp
ppp
05/20
3/15/25/2
3/25/15/3
n pa pb pc 1
77/35
pa , pb 30/77, pc 12/77var
5/2
3/2
5/3
c
5/1
5/2
3/1
H×nh 1.9
Trang 30else if R<3/5 then begin write(f,b);M:='b';Nb:=Nb+1;end
else begin write(f,c);M:='c';Nc:=Nc+1;end
Trang 31i i
1
) (
) (
Trang 32
) ( L ) ( p n
1
) (
Trang 343 2 2 1
k k
i
0, i 2 3 k
1 2
1 2
3 4 2
Trang 35S:=S*2;
if S>1 then begin S:=S-1;
code[i]:=code[i]+'1' end
else code[i]:=code[i]+'0' end;
end;
Trang 37i i
i
i 2 i
i
2
p
1 log 1 r p
1 log
m
1 i
i
i r p r
m
1
2 i m
1 log
Trang 39tư (e,0 3) (a,0.2) (o,0.2) (i
{a,o}
Trang 40end;
} y:=a[m-1].prob;inc(a[m-1].prob,a[m].prob);
} k:=m-1;
Trang 41while (k>1)and (a[k].prob>a[k-1].prob) do begin
x:=a[k-1]; a[k-1]:=a[k]; a[k]:=x; k:=k-1;
Trang 421 log
m
i i i
p
1 log
Trang 45End
sau
Trang 47
2.3
Trang 50
:
: Sx:=a[k];
Trang 52for i:=1 to n do a[i].code:='';
if a[i].prob>a[i-1].prob then begin x:=a[i];a[i]:=a[i-1];a[i-1]:=x;end;
Trang 53end;
end
aaaaaabcdefghaahhaaaaagabghabaecdcaaadaecccccccccghaacbgbchaecbdhabdehahcghghaebcd
101110011000111001000110100011000100011010
c
Trang 54Trang 55
1 Để cho đơn giản ta gọi tắt nửa đoạn dạng [x,y) là khoảng
2 Nh- vậy điều quan trọng là làm thế nào để luôn có thể xác định đ-ợc xác suất xuất hiện của chữ tiếp theo?
Trang 56Trang 57
1 i i
p ) a b (
j
) , [ j 1 j
Trang 58
m 2
1 0
[0, 1)
Trang 59-
Trang 60a
0.100 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.110
c
0.1020 0.1021 0.1022 0.1023 0.1024 0.1025 0.1026 0.1027 0.1028 0.1029 0.1030
g
H×nh 3.3
Trang 61- : 0.10, 0.11, 0.12, , 0.19, 0.20 0.10
a
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
a
0.100 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.110
c
0.1020 0.1021 0.1022 0.1023 0.1024 0.1025 0.1026 0.1027 0.1028 0.1029 0.1030
g
H×nh 3.4
Trang 62[ i, i+1
ơhơn
0.10260 0.10261 0.10262 0.10263 0.10264 0.10265 0.10266 0.10267 0.10268 0.10269 0.10270
b
0.160 0.168 0.176 0.184 0.192 0.200 0.208 0.216 0.224 0.232 0.240
a
0.1600 0.1021 0.1022 0.1023 0.1024 0.1025 0.1026 0.1027 0.1028 0.1029 0.1920
c
H×nh 3.5
Trang 64end
Trang 66L:=0;rank:=1;state:=1;T1:='';
} S:=random;
Trang 67if S<4/26 then
begin T1:=T1+'d';State:=4;Rank:=Rank*4/26;
end else begin T1:=T1+'a';
Trang 68begin T1:=T1+'d';
State:=4;L:=L+4/20*Rank;Rank:=Rank*1/20;
end else if S<12/20 then
begin T1:=T1+'b'; State:=2;L:=L+5/20*Rank;Rank:=Rank*7/20; end
else
begin T1:=T1+'a';State:=3;L:=L+12/20*Rank;Rank:=Rank*8/20; end;
Str(L:22:19,V1);Str(L+Rank:22:19,V2);V:='['+V1+V2+')';
Str(L+Rank/2:22:19,VL);Val(VL,L,m);
} State:=1;S:=0;Rank:=1;T2:='';
Trang 69if State=4 then
if (L-S)/Rank<4/20 then
begin T2:=T2+'c';State:=1;Rank:=Rank*4/20;
end else
if (L-S)/Rank<5/20 then
Trang 70begin T2:=T2+'d';State:=4;S:=S+4/20*Rank;Rank:=Rank*1/20; end
else
if (L-S)/Rank<12/20 then begin
T2:=T2+'b';State:=2;S:=S+5/20*Rank;Rank:=Rank*7/20; end
else begin T2:=T2+'a';
[0.058907264212235128, 0.058907264212235135)
bacdcbacbacbacddbdcdcbacbacdbdcdcbacbacdcbacbacbacbacbacdcbac
[0.553712632942476848, 0.553712632942476853)
dcbacbacbacdcbacbacbacbacbacbacbacdcdcddbdcdcbacbacbacbacbacbacdcbac [0.048585947986781746, 0.048585947986781755)
Trang 71bacbacbacdcbacbacbacbacbacbacdcbacbacdcbacbacbacbacbacbacbacbacbacbacbacbacbacbacbacdbdcdcbacbacbac
[0.902281543958376885, 0.902281543958376893)
Trang 72LZW )
:
Nh©n v©t cña c©u truyÖn
Néi dung c©u chuyÖn
tõ ch÷ c¸i
Trang 74
z z
z1 k k 1
n 3 2
1 s s s s
z z
z1 k k 1
n 1
L m 2 m 1 m L n 2 n 1
n z z s s s z
L n 1 n
n z z
Thay n n+L
Trang 75
n 3 2
1 s s s
s (m1, L1) (m2, L2)(m3, L3) (mr, Lr
z z
n z z z z z
L n 1 n n
1 z z
z (m1,L1) (m2,L2)(m3,L3) (mr,Lr
(Huffman, Fano, )
Khôn k
ro
Trang 78Output 0+a 1+a 0+b 3+a 4+a 5+a 4+b
4.1 (0,a)(1,a)(0,b)(3,a)(4,a)(5,a)(4,b)
Trang 79
(empty)
T
Trang 82
aabababaaababb aabababaaababb aabababaaababb aabababaaababb aabababaaababb aabababaaababb
0+a 0+b 1+a 3+a 5+a 2+b 4+b 1+b
Trang 86Var
Trang 87S :array[255 15000] of word;C :array[255 15000] of byte;
for m:=256 to H do write(g,S[m]);x:=a;write(g,x); close(g);
assign(g,'C.nen'); reset(g); assign(f,'D.txt'); rewrite(f);
read(g,S[256]); write(f,byte(S[256]));
m:=256;
Trang 88while not eof(g) do
Trang 901
3 Donald Samuel Ornstein and Benjamin Weiss (1993), Entropy and Data
Compression Schemes, IEEE Transactions on Information
Theory, Vol.39, No.1, January , pages 78-83
4 Gyula O H Katona, Tibor O H Nemetz (1976), Huffman Codes and
Self-Information, IEEE Transactions on Information Theory,
Vol.22, No.3, May , pages 337-339
5 Ian H Witten, Radford M Neal (1987), and John G Cleary, Arithmetic
coding for data compression, Communicatio ns of the ACM,
June , Volume 30, Number 6, pages 520-540
6 I E Witten, R M Neal, J G Cleary (1990), Text Compression,
Prentice Hall
7 Nelson Mark (1991), The Data Compression Book, M&T Books,
8 Obert J McEliece (1993), The Theory of Information and Coding,
Cambridge University Press