1. LÝ THUYẾT THÔNG TIN
CHƯƠNG 3: NÉN DỮ LIỆU
NGUYỄN THỊ NGA
NGUYỄN THANH DŨNG
NGUYỄN THANH TÍNH
2. NỘI DUNG CHƯƠNG
I. Các định nghĩa về mã hóa
II. Bất đẳng thức Kraft cho mã tức thời
III. Các mã tối ưu
IV. Các giới hạn chiều dài của mã tối ưu
V. Bất đẳng thức Kraft cho mã tách được duy nhất
VI. Mã Huffman
VII. Định lý về sự tối ưu của mã hóa Huffman
3. I. CÁC ĐỊNH NGHĨA VỀ MÃ HÓA
1. Các định nghĩa về mã hóa dữ liệu :
- Tập hợp các phép ánh xạ để biến ngẫu nhiên X nhận giá trị
trong tập 𝒳 thành các chuỗi có chiều dài xác định của các ký tự
thuộc tập ký tự mã 𝒟.
- Ví dụ :
Biến ngẫu nhiên X thuộc tập 𝒳={A,H,N,T}
Tập kí tự mã 𝒟={0,1}
Bộ mã : phép ánh xạ
A 0
H 10
N 110
T 111
=> “NHAT” 110100111
4. - C(x) : từ mã (codeword) tương ứng với giá trị x của biến X.
- l(x) : chiều dài của C(x).
- Ví dụ:
Biến ngẫu nhiên X thuộc tập 𝒳={A,H,N,T}
Tập kí tự mã 𝒟={0,1}
Các từ mã : Chiều dài:
C A = 0, l A = 1;
C H = 10, l H = 2;
C N = 110, l N = 3;
C T = 111, l T = 3;
5. 2. Chiều dài trung bình của bộ mã :
-Chiều dài trung bình L(C) của bộ mã C cho biến ngẫu nhiên X
tuân theo phân phối p(x).
L C = x∈𝒳 p x l(x)
-Ví dụ:
Cho biến ngẫu nhiên X có:
Suy ra: L(C) = 1,75 bit
Nhận xét: L(C) = H(X) = 1,75 bit.
X A H N T
P(X=x) 1/2 1/4 1/8 1/8
C(x) 0 10 110 111
6. 3. Bộ mã tách được :
- Bộ mã được gọi là tách được nếu tất cả các giá trị của X đều
được mã hóa thành những chuỗi khác nhau trong bảng mã.
x ≠ x′ => C x ≠ C(x′)
- Ví dụ:
Cho biến ngẫu nhiên X có:
+ Với chuỗi mã hóa có dạng : 0101100110
+ Chuỗi sau mã hóa : ABABBAABBA hay cũng có thể là
CCDCD và nhiều kết quả khác nữa.
X A B C D
C(x) 0 1 01 10
7. 4. Bộ mã mở rộng :
- Bộ mã mở rộng C∗ của C là phép biến đổi chuỗi các giá trị của
biến X thành chuỗi từ mã.
C x1, x2, … xn = C x1 C x2 … C(xn)
- Ví dụ:
Cho C x1 = 0 và C x2 = 01
=> Bộ mã mở rộng C x1, x2 = 001
8. 5. Bộ mã tách được duy nhất:
- Một bộ mã được gọi là tách được duy nhất khi bộ mã mở rộng
từ nó tách được duy nhất.
- Ví dụ:
Giả sử dãy mã nhận được (cần giải mã) là: 0010000101001.
=> Chuỗi sau giải mã là: abaaabbab
X a b
C(x) 0 01
9. 6. Mã tức thời :
- Một bộ mã được gọi là tức thời nếu không tồn tại từ mã này
là tiền tố của từ mã khác.
- Ví dụ:
Cho biến ngẫu nhiên X có:
Chuỗi cần mã hóa là: 0111011000.
=> Chuỗi sau giải mã: ABDCA
X A B C D
C(x) 0 11 100 101
10. MỐI QUAN HỆ GIỮA CÁC BỘ MÃ
TẤT CẢ CÁC MÃ
MÃ TÁCH ĐƯỢC
MÃ TÁCH ĐƯỢC DUY
NHẤT
MÃ TỨC THỜI
11. II. ĐỊNH LÍ KRAFT
- Điều kiện cần :
Cho mã tức thời X ={ x1, x2, x3} có:
Bảng chữ cái 𝒟 kích thước D (thường lấy D=2).
Chiều dài các từ mã: l1, l2, … ln.
Chiều dài từ mã thỏa mãn (bất đẳng thức Kraft):
i=1
n
D−li ≤ 1
- Điều kiện đủ :
Nếu có tập hợp các từ mã thỏa mãn bất đẳng thức Kraft thì
sẽ tồn tại bộ mã tức thời bởi các bộ mã có chiều dài như trên.
12. a. Định nghĩa cây bậc D cỡ K:
- Cây bậc D cỡ k là cây có hệ thống nút, cạnh thỏa mãn:
+ Từ 1 nút có số cạnh đi ra không vượt quá D.
+ Nút lá cách nút gốc không quá k cạnh.
- Tính chất :
+ Các nút (trừ nút gốc) của cây
đều được mã hóa từ tập {0,1,2,…,D-1}
+ Mỗi nút (đã mã hóa) có mã của
nút kề trước là tiền tố.
+ Tổng số các nút lá bằng Dk
.
13. b. Chứng minh bất đẳng thức Kraft:
- Điều kiện cần:
Cho trước bộ mã tức thời X ={ 𝑥1, 𝑥2, 𝑥3} với 𝑙1 ≤ 𝑙2 ≤ ⋯ ≤ 𝑙𝑛.
Ta cần chứng minh:
i=1
n
D−li ≤ 1
- Xây dựng cây bậc D cỡ ln.
- Qui tắc : một nút nào đó được chọn để gán một từ mã thì tất cả
các nút kề sau nút gán từ mã phải được xóa.
14. - Cụ thể như sau:
Chọn một nút có mã với độ dài mã là l1 gán cho nó một từ
mã C(x1).
=>Tổng số nút lá được xóa tương ứng là Dln−l1
- Vậy số nút lá bị xóa hoặc được gán từ mã là:
=> Dln−l1 +Dln−l2 + ⋯ + Dln−ln = i=1
n
Dln−li ≤ Dln
= tổng số nút lá.
=> i=1
n
D−li ≤ 1
15. - Điều kiện đủ :
Giả sử :
i=1
n
D−li ≤ 1
- Xét l1, l2, … , ln và cơ số sinh mã là D:
+ Bước 1: Ta xếp theo thứ tự l1 ≤ l2 ≤ ⋯ ≤ ln, xây dựng cây
bậc D cỡ k.
+ Bước 2: Chọn nút bất kỳ trên cây có độ dài l1 gán cho từ
mã C(x1) và xóa tất cả các nút kề sau nó.
+ Bước 3: Lặp lại bước 2 đối với các từ mã còn lại C(xi) ứng
với li.
=> Bảng mã X={ x1, x2, x3} là bảng mã tức thời.
16. - Ví dụ:
Xét bảng mã thỏa mãn n=3; l1=1; l2=2; l3=3; D=2
i=1
3
D−li =
1
21 +
1
22 +
1
23 =
7
8
< 1
=> X ={ x1, x2, x3} là bảng mã thức thời
Chọn x1 = 0 cắt bỏ các nút con của x1.
Chọn x2 = 10 cắt bỏ các nút con của x2.
Chọn x3 =111.
17. III. MÃ TỐI ƯU:
1. Định nghĩa:
- Mã tối ưu là mã có chiều dài trung bình ngắn nhất so với các
mã tách được duy nhất khác.
- Tồn tại nhiều mã tối ưu cho mỗi nguồn , các mã tối ưu này có
cùng chiều dài.
- Trong các mã tối ưu đó sẽ có 1 mã là mã tức thời.
2. Tính chất:
- Bộ mã tức thời sẽ thỏa mãn bất đẳng thức Kraft.
𝑖=1
𝑚
𝐷−𝑙𝑖 ≤ 1
- Với D là kích thước tập kí tự mã, m là số từ mã và l là chiều dài
từ mã .
-Ngược lại, nếu chiều dài của các từ mã thỏa mãn bất đẳng thức
Kraft thì tồn tại bộ mã tức thời.
19. IV. CÁC GIỚI HẠN CHIỀU DÀI CỦA MÃ TỐI ƯU:
1. Định lý chiều dài trung bình mã:
a. Định lý:
- Chiều dài trung bình mã L của bộ mã tức thời bất ký từ bảng kí
tự gồm D ký tự của biến ngẫu nhiên X lớn hơn hoặc bằng entropy
cơ số D của X:
L ≥ 𝐻𝐷 ( 𝑋 )
- Dấu “ = “ xảy ra khi và chỉ khi 𝐷−𝑙𝑖 = 𝑝𝑖
b. Chứng minh:
- Cho 2 phân phối ngẫu nhiên pi và qi , ta có:
𝑖
𝑝𝑖 log𝐷
1
𝑝𝑖
≤
𝑖
𝑝𝑖 log𝐷
1
𝑞𝑖
22. 2. Định lý giới hạn chiều dài mã tối ưu:
a. Định lý :
- Cho nguồn theo phân phối p, Bảng kí tự D, với 𝑙1* , 𝑙2* ,.. là
chiều dài tối ưu của các từ mã . T có định lý giới hạn chiều dài
như sau :
𝐻𝐷 𝑋 ≤ L* ≤ 𝐻𝐷 (𝑋) + 1
- Chiều dài trung bình của bộ mã tối ưu của biến X: L = 𝐻𝐷(𝑋)
𝐷−𝑙𝑖 = 𝑝𝑖 𝑙𝑖 = 𝑙𝑜𝑔𝐷
1
𝑝𝑖
- Chiều dài 𝑙𝑖 có thể không phải là số nguyên, do đó ta làm tròn
chiều dài thành số tự nhiên gần nhất
𝑙𝑖 = 𝑙𝑜𝑔𝐷
1
𝑝𝑖
23. -Ví dụ: Cho biến ngẫu nhiên X nhận giá trị X ={1,2,3} và tập ký
tự D = {0,1}.
- 𝑙1 = 𝑙𝑜𝑔2
1
0.6
= 0.74 ≈ 1
- 𝑙2 = 𝑙𝑜𝑔2
1
0.3
= 1.74 ≈ 2
- 𝑙3 = 𝑙𝑜𝑔2
1
0.1
= 3.32 ≈ 4
X 1 2 3
P(X=i) 0.6 0.3 0.1
24. b. Chứng minh :
- Ta có: li = log𝐷
1
pi
=> li
* = 𝑙𝑜𝑔𝐷
1
𝑝𝑖
( 𝑥 𝑙à 𝑠ố 𝑛𝑔𝑢𝑦ê𝑛 𝑛ℎỏ 𝑛ℎấ𝑡 ≥ 𝑥 )
𝐿∗ = 𝑝𝑖. 𝑙𝑖
Nên : log𝐷
1
pi
≤ li
* < log𝐷
1
pi
+ 1 (1)
𝐷−𝑙𝑖∗
≤ 𝐷
− 𝑙𝑜𝑔𝐷
1
𝑝𝑖 = 𝑝𝑖 = 1
(2)
=> 𝑝𝑖. log𝐷
1
pi
≤ 𝑝𝑖.li
* < 𝑝𝑖. log𝐷
1
pi
+ 𝑝𝑖
=> 𝑝𝑖. log𝐷
1
pi
≤ 𝑝𝑖.li
* < 𝑝𝑖. log𝐷
1
pi
+ 𝑝𝑖
=> HD(X) ≤ L* < HD(X) + 1
25. V.BẤT ĐẲNG THỨC KRAFT CHO
MÃ TÁCH ĐƯỢC DUY NHẤT.
1 . Bất đẳng thức McMillan - Kraft :
- Xét một tập nguồn X = {x1, x2 ,……, xn } được mã hóa
thành một mã tách được duy nhất từ tập D-ký tự .
- Chiều dài trung bình của các từ mã của mã tách được
từ nguồn trên phải thỏa mãn bất đẳng thức sau :
𝑖=1
𝑛
𝐷−𝑙𝑖 ≤ 1
- Với li là chiều dài từ mã tương ứng lần lượt với tập
nguồn X.
26. 2. Chứng minh bất đẳng thức :
- Xét các độ dài từ mã của kí tự từ tập nguồn X . Với bộ mã mở
rộng ta có :
l(x1, x2 ,……, xn ) = 𝑖=1
𝑛
li
- Mũ k vế trái của bất đẳng thức ta được :
( 𝑖=1
𝑛
𝐷−𝑙𝑖)
𝑘
= 𝑖1=1
𝑛
𝑖2=1
𝑛
… 𝑖𝑘=1
𝑛
𝐷−(𝑙1+𝑙2…+𝑙𝑘)
( 𝑖=1
𝑛
𝐷−𝑙𝑖)
𝑘
= 𝑙=1
𝑘.𝑙𝑚𝑎𝑥
𝑎𝑙.𝐷−𝑙
.
- Trong đó 𝑙𝑚𝑎𝑥 là chiều dài lớn nhất của từ mã và 𝑎𝑙 là số
lượng chuỗi nguồn 𝑋𝑘 ánh xạ vào một từ mã có chiều dài là l.
27. -Vì đây là mã tách được duy nhất nên 𝑎𝑙 < = 𝐷𝑙.
=>( 𝑖=1
𝑛
𝐷−𝑙𝑖 )𝑘 ≤ 𝑙=1
𝑘.𝑙𝑚𝑎𝑥
𝐷𝑙 .𝐷−𝑙
= 𝑘. 𝑙𝑚𝑎𝑥
=> 𝑖=1
𝑛
𝐷−𝑙𝑖 ≤ (𝑘. 𝑙𝑚𝑎𝑥)
1
𝑘
-Vì bất đẳng thức trên đúng với mọi k ∈ N, nên đúng với k->∞
=> 𝑖=1
𝑛
𝐷−𝑙𝑖 ≤ 1
28. VI. MÃ HÓA HUFFMAN.
1. Giới thiệu :
- Mã hóa HUFFMAN là một thuật toán mã hóa dùng để nén dữ
liệu.
- Nó dựa trên bảng tần suất xuất hiện các kí tự cần mã hóa để xây
dựng một bộ mã nhị phân cho các kí tự đó sao cho dung lượng
sau khi mã hóa là nhỏ nhất.
2. Ứng dụng :
- Máy tính IBM , MODEM, máy Fax, định dạng ZIP,…..
29. 3. Thuật toán :
- Bước 1: Sắp xếp các kí tự nguồn theo thứ tự xác suất giảm dần
- Bước 2: Ta kết hợp 2 giá trị có xác suất thấp nhất thành một từ
gốc mới với xác suất là bằng tổng của 2 xác suất thấp nhất .
- Bước 3: Tiếp tục kết hợp hai giá trị có xác suất thấp trong tập
giá trị gốc mới cho đến khi ta chỉ còn một giá trị gốc với xác suất
bằng 1.
- Bước 4: Sau khi có được cây mã HUFFMAN hoàn chỉnh , ta
tiến hành gán các kí tự 0, 1 lên các nhánh của cây.
- Bước 5: Sắp xếp các kí tự mã hóa từ gốc đến nhánh , ta có được
từ mã ứng với giá trị gốc ban đầu .
30. 4. Ví dụ:
- Xét tập nguồn X như sau :
C 0.4
B 0.25
D 0.2
A 0.15
C 0.4
AD 0.35
B 0.25
X A B C D
P(x) 0.15 0.25 0.4 0.2
ABD 0.6
C 0.4
ABCD 1
31. - Từ sơ đồ trên ta có cây HUFFMAN :
ABCD
C ABD
B AD
D
A
0 1
0 1
0 1
A 110
B 10
C 0
D 111
32. VII.Định lý về sự tối ưu của mã hóa HUFFMAN
- Định lý : Mã hóa Huffman là mã tối ưu : Nếu C* là Huffman
và C là mã tách được duy nhất bất ký, L(C*) ≤ L(C).
-Bổ đề : Với bất kỳ phân phối ngẫu nhiên nào cũng tồn tại mã tức
thời tối ưu thỏa mãn các điều sau :
- Chiều dài từ mã tăng khi xác suất giảm .
- Hai từ mã dài nhất có chiều dài bằng nhau .
- Hai từ mã dài nhất chỉ khác nhau ở ký tự cuối và tương
ứng với hai giá trị có xác suất thấp nhất.