You are on page 1of 69

CHƯƠNG IV

1
MÃ HÓA NGUỒN

03/29/2023
NỘI DUNG
I. ĐỊNH NGHĨA
II. MỤC ĐÍCH CỦA MÃ HÓA
III. ĐIỀU KIỆN LẬP MÃ
IV. CÁC THÔNG SỐ CƠ BẢN CỦA MỘT BỘ MÃ
V. CÁC CÁCH BIỂU DIỄN MÃ NHỊ PHÂN
VI. SINH MÃ TÁCH ĐƯỢC
VII. MÃ TỐI ƯU
VIII. MÃ SỐ HỌC
IX. MÃ HÓA THEO LOẠT DÀI (RUN LENGTH CODING)
X. MÃ LEMPEL ZIV
XI. MÃ NGUỒN LIÊN TỤC
2

03/29/2023
I. ĐỊNH NGHĨA
Nguồn tin SN = {s1; s2; ….; sN} có xác suất xuất hiện tương ứng
{p(s1); p(s2); …; p(sN)} với N là cỡ của nguồn tin.
Một bộ chữ mã Mq = {m1; m2;…mq} với q chữ mã (q gọi là cơ
số mã).
Định nghĩa: Mã hóa nguồn tin SN bởi 1 bộ chữ mã Mq là làm
tương ứng mọi lớp tin sk của nguồn tin SN với 1 tổ hợp có thứ tự
các ký hiệu mã mi của bộ chữ mã sk = mk1mk2…mkl
l là chiều dài của từ mã.

03/29/2023
I. ĐỊNH NGHĨA
Một số loại mã:
•Mã đều: mã có tất cả các từ mã có độ dài l
•Mã đầy: là mã có tất cả các tổ hợp là mã của các lớp tin tương
ứng
•Mã vơi: là bộ mã tồn tại ít nhất 1 tổ hợp mã không là mã của 1
lớp tin nào.

03/29/2023
II. MỤC ĐÍCH CỦA MÃ HÓA

Nguồn tin Mã hóa Giải mã Nhận tin

- Mã hóa cho phép ký hiệu hóa thông tin hay sử dụng các ký
hiệu quy ước để biểu diễn bản tin ở dạng phù hợp với nơi sử
dụng.
- Nâng cao hiệu suất thông tin
- Nâng cao độ tin cậy của truyền tin
- Bảo mật thông tin

03/29/2023
III. ĐIỀU KIỆN LẬP MÃ
Mã hóa phải thỏa mãn điểu kiện giải mã
- 1 tổ hợp chỉ có thể là từ mã của tối đa 1 lớp tin
- 1 lớp tin chỉ có duy nhất 1 từ mã
Ví dụ: với mã đều l; cơ số mã q điều kiện để có thể giải mã là gì?

03/29/2023
IV. CÁC THÔNG SỐ CƠ BẢN CỦA 1 BỘ MÃ
(1) Độ dài trung bình của từ mã
(2) Cơ số q là số các chữ mã có trong bộ mã
(3) Trọng số của từ mã
là giá trị của ký hiệu thứ i trong từ mã kể từ trái sang phải
i là STT của ký hiệu trong từ mã

03/29/2023
V. CÁC CÁCH BIỂU DIỄN MÃ NHỊ PHÂN
(1) Liệt kê: sử dụng bảng để kê tất cả các lớp tin và từ mã tương
ứng Lớp tin S1 S2 S3 S4
(2) Sử dụng mặt tọa độ Từ mã 00 01 11 1011

Định lý: Không thể tồn tại 2 hay nhiều từ mã khác nhau lại giống
nhau cả 2 thông số (l,b)
là giá trị của ký hiệu thứ i trong từ mã kể từ trái sang phải; i là
STT của ký hiệu trong từ mã
b2 =0+1*2=2
b3 =1+1*2=3
b4 =1+0*2+1*22 + 1*23 =13
Lớp tin S1 S2 S3 S4
Từ mã 00 01 11 1011
l 2 2 2 4 8

b 0 2 3 13
03/29/2023
V. CÁC CÁCH BIỂU DIỄN MÃ NHỊ PHÂN
(3) Biểu diễn cây

(4) Biểu diễn đa thức

Lớp tin s1 s2 s3 s4 s5 s6 s7 s8
Từ mã 000 001 010 011 100 101 110 111
Đa thức 0 1 X X+1 X2 X2 + 1 X2 + X X2 + X + 1

03/29/2023
VI. SINH MÃ TÁCH ĐƯỢC

6.1. Khái niệm mã tách được


6.2. Quan hệ giữa mã tách được và độ dài mã
6.3. Tính tối ưu của độ dài mã

10

03/29/2023
6.1. Khái niệm mã tách được
a. Bộ mã không tách được:
Là bộ mã mà khi mã hóa thông báo Msg ta sẽ nhận được 1 dãy
các từ mã ws, và khi giải mã dãy các từ mã ws thì ta có thể nhận
được nhiều thông báo Msg khác nhau.
Lớp tin s1 s2 s3 s4
Từ mã 0 1 01 10

s1 s2 s3 s3 s4 s4 s2 s1
→010101101010
→ s1 s2 s3 s3 s4 s4 s2 s1
→ s3 s3 s3 s4 s4 s4
NX: Bộ mã không tách được là bộ mã trong đó tồn tại ít nhất11
một từ mã này là mã khóa của 1 hay nhiều từ mã khác trong bộ
03/29/2023

6.1. Khái niệm mã tách được
b. Bộ mã tách được:
Là bộ mã mà khi mã hóa thông báo Msg ta sẽ nhận được 1 dãy
các từ mã ws, và khi giải mã dãy các từ mã ws thì ta chỉ nhận
được một thông báo duy nhất là Msg ban đầu.
Lớp tin s1 s2
Từ mã 0 01

s1 s2 s2 s1
→001010
→ s1 s2 s2 s1
NX: Bộ mã tách được là bộ mã trong đó không tồn tại từ mã này
12
là mã khóa của từ mã khác trong bộ mã, tuy nhiên vẫn có thể tồn
tại từ mã này là tiền tố của từ mã khác 03/29/2023
6.1. Khái niệm mã tách được
c. Bộ mã tức thời:
Là bộ mã tách được và không tồn tại từ mã này là tiền tố của từ
mã khác
Lớp tin s1 s2 s3
Từ mã 10 101 100

s1 s2 s3 s3 s2 s1 → 1010110010010110 →

Lớp tin s1 s2 s3 s4
Từ mã 0 100 101 11

s1 s2 s3 s4 s2 s1 → 0100101 110100 → s1 s2 s3 s4 s1 s2
13

03/29/2023
6.1. Khái niệm mã tách được
d. Giải thuật kiểm tra tính tách được của bộ mã:
Sardinas (1960), Patterson (1963) và Abramson (1963)
Giải thuật:
Khởi tạo gán tập hợp S0 = W
Bước 1: Xác định tập hợp S1 từ S0
- Khởi tạo S1 = {}
- Với wi; wj S0 xét wi = wjA (wj là tiền tố của wi)
Hoặc wj = wiA (wi là tiền tố của wj)
Thì thêm A vào S1
14

03/29/2023
6.1. Khái niệm mã tách được
d. Giải thuật kiểm tra tính tách được của bộ mã:
Bước k: xác định tập hợp Sk (k>=2) từ tập hợp S0 và Sk-1
- Khởi tạo Sk = {}
- Với wiS0 và vj Sk-1 xét wi = vjA (vj là tiền tố của wi)
Hoặc vj = wiA (wi là tiền tố của vj)
Thì thêm A vào Sk
Điều kiện dừng vòng lặp:
- Nếu Sk = {} thì dừng và kết luận bộ mã tách được (k>=1)
- Nếu Sk = St<k thì dừng và kết luận bộ mã tách được
- Nếu tồn tại từ mã wi trong Sk thì dừng và kết luận bộ mã không
15

tách được 03/29/2023


6.1. Khái niệm mã tách được
d. Giải thuật kiểm tra tính tách được của bộ mã:
Ví dụ 1: Kiểm tra tính tách được của bộ mã W = {0,01,11}
Ví dụ 2: Kiểm tra tính tách được của bộ mã W = {10,101,100}
Ví dụ 3: Kiểm tra tính tách được của bộ mã
W = {010; 0001; 0110; 1100; 00011; 00110; 11110; 101011}

16

03/29/2023
6.1. Khái niệm mã tách được
Ví dụ 1: Kiểm tra tính tách được của bộ mã
W = {0,01,11} = {w1, w2, w3}
S0 = W = {0,01,11}
Bước 1: S1 = {}
w2 = w11 → v11 = 1
S1 = {1}
Bước 2: S2 = {}
w3 = v111 → v21 = 1
S2 = {1} = S1 17

→ bộ mã tách được 03/29/2023


6.2. Quan hệ giữa mã tách được và độ dài mã
a. Định lý Kraftn:
Cho nguồn tin rời rạc XN và độ dài chữ mã Mq. Các từ mã tương
ứng với lớp tin xi có độ dài li. Điều kiện cần và đủ để tồn tại 1 bộ
mã tức thời cho việc mã hóa là:

Ví dụ 1: Có tồn tại bộ mã tức thời mà W = {w1; w2; w3} với N=3,


l1 =1; l2 =2; l3=3; q=2
Ví dụ 2: Có tồn tại bộ mã tức thời mà W = {w1; w2; w3} với N=3,
l1 = l2 =1; l3=2; q=2

18

03/29/2023
6.2. Quan hệ giữa mã tách được và độ dài mã
b. Định nghĩa cây bậc q cỡ k:
• ĐN: cây bậc q cỡ k là cây có hệ thống nút, cạnh thỏa mãn
điều kiện:
- Từ 1 nút có số cạnh đi ra không vượt quá q hay 1 nút có
không quá q nút con
- Nút cuối cùng (nút lá) cách nút gốc không vượt quá k
cạnh
• Sinh mã cho các cây bậc q cỡ k (trừ nút gốc)
Mỗi nút (trừ nút gốc) được ký hiệu bởi dãy các ký hiệu của nút
cha làm tiền tố và 1 ký tự bổ sung lấy từ một tập hợp M q
={m1m2…mq} 19

Ví dụ: xây dựng cây bậc q =2 cỡ k=3 03/29/2023


6.2. Quan hệ giữa mã tách được và độ dài mã
c. Thủ tục tạo mã tức thời:
Xét bộ chữ mã Mq ={m1m2…mq} với q là cơ số mã
Thủ tục tạo bộ mã tức thời W= {w1;w2;…;wN} có chiều dài của
từ mã l = {l1; l2; … lN}
B1: Xếp l1 l2 lN xây dựng cây bậc q cỡ k = lN và sinh mã cho các
nút.
B2: Chọn nút bất kỳ trên cây có độ dài l1 gán cho từ mã w1 và
xóa tất cả các nút kề sau nó
B3: Lặp lại B2 đối với việc chọn các từ mã w2; w3; …;wN tương
ứng với l2; l3;…; lN
20

Bộ mã W= {w1;w2;…;wN} là bộ mã tức thời


03/29/2023
6.3. Tính tối ưu của độ dài mã
a. Định lý Shannon:
Độ dài trung bình của từ mã

Dấu bằng xảy ra khi hoặc


b. Bộ mã tối ưu tuyệt đối
Định lý: Bộ mã được gọi là tối ưu tuyệt đối khi hay
Ví dụ:

Lớp tin s1 s2 s3 s4
P(xi) 1/2 1/4 1/8 1/8
21
Từ mã 0 10 110 111
03/29/2023
6.3. Tính tối ưu của độ dài mã
c. Bộ mã tối ưu tương đối
Định lý: Bộ mã được gọi là tối ưu tương đối khi
< +1
d. Điều kiện để nhận biết 1 bộ mã tối ưu
Định lý (với q =2):
• Xác suất p(xi) càng lớn thì độ dài li của từ mã wi càng nhỏ
• Giả sử p(s1) ≥ p(s2) ≥ … ≥ p(sN) thì l1 ≤ l2 ≤ … ≤ lN thì 2 từ
mã tương ứng với 2 giá trị có xác suất nhỏ nhất có độ dài
mã bằng nhau lN = lN-1
• Trong các từ mã có độ dài bằng nhau và cùng bằng lN thì tồn
tại ít nhất 2 từ mã wN-1 và wN có N-1 ký tự đầu giống nhau
và ký tự thứ N khác nhau 22
Ví dụ: W = {0; 100; 101; 1101; 1110}
03/29/2023
VII. MÃ TỐI ƯU

Là mã hóa sao cho độ dài trung bình nhỏ nhất


7.1. Mã tối ưu Shannon – Fano
7.2. Mã tối ưu Huffman
7.3. Nhược điểm của mã hóa Shannon – Fano và Huffman
7.4. Mã hóa Huffman động

23

03/29/2023
7.1. Mã tối ưu Shannon - Fano
Các bước lập mã:
- B1: Sắp xếp nguồn tin theo thứ tự giảm (tăng) dần của xác
suất xuất hiện
- B2: Chia nguồn tin thành 2 nhóm sao cho xác suất của mỗi
nhóm xấp xỉ bằng nhau. Gán cho mỗi nhóm 1 ký hiệu mã
0 hoặc 1
- B3: Coi mỗi nhóm như 1 nguồn tin mới và quay lại bước 2
cho đến khi các nhóm chỉ còn chứa duy nhất 1 tin
- B4: Từ mã ứng với mỗi lớp tin là tổ hợp tất cả các ký hiệu
mã của các nhóm mà lớp tin đó phụ thuộc vào lấy tương ứng
từ nhóm lớn -> nhóm nhỏ (từ trái ->phải)
24

03/29/2023
7.1. Mã tối ưu Shannon - Fano
Ví dụ 1:
Cho nguồn tin X rời rạc
Lớp tin X1 X2 X3 X4 X5 X6 X7 X8
P(xi) ¼ 1/8 1/16 1/16 1/16 ¼ 1/8 1/16
Lập mã tối ưu theo Shannon Fano
Ví dụ 2:
Cho nguồn tin X rời rạc
Lớp tin X1 X2 X3 X4 X5 X6
P(xi) 0.3 0.25 0.2 0.1 0.1 0.05

Lập mã tối ưu theo Shannon Fano

25

03/29/2023
7.1. Mã tối ưu Shannon - Fano

X P(xi) Chia nhóm Từ Li



X1 ¼ 0 00 2
0
X6 ¼ 1 01 2
X2 1/8 0 100 3
0
X7 1/8 1 101 3
X3 1/16 0 1100 4
1 0
X4 1/16 1 1 1101 4
X5 1/16 0 1110 4
1
X8 1/16 1 1111 4

26

03/29/2023
7.1. Mã tối ưu Shannon - Fano

Ví dụ 3: Một chuỗi thông điệp được truyền giữa 2 máy tín qua
PSTN như sau AAAABBCD. Dùng mã hóa Shannon Fano để suy
ra tập từ mã
Ví dụ 4: Một chuỗi thông điệp được truyền giữa 2 MT qua mạng
PSTN. Các thông điệp bao gồm chỉ các ký tự từ A->H. Phân tích
cho thấy tần số xuất hiện như sau:
A, B = 0.25; C,D = 0.14; E,F,G,H = 0.055
Dùng mã hóa Shannon Fano để suy ra tập từ mã

27

03/29/2023
7.2. Mã tối ưu Huffman
Các bước lập mã:
 B1: Sắp xếp nguồn tin theo thứ tự giảm (tăng) dần của xác
suất xuất hiện
 B2:Chọn 2 lớp tin có xác suất nhỏ nhất gán cho mỗi lớp tin
là nhánh của 1 nút cây
 B3: Thay thế 2 lớp tin bằng 1 lớp tin mới có xác suất bằng
tổng 2 xác suất
 B4: Lặp lại bước 1 cho đến khi tổng hai xác suất bằng 1 thì
dừng lại
 B5: Từ mã ứng với mỗi lớp tin là tổ hợp các ký hiệu 0 hoặc
1 của các nhánh cây mà lớp tin đó phụ thuộc vào lấy từ nút
28
gốc ->nút lá (từ phải ->trái)
03/29/2023
7.2. Mã tối ưu Huffman
Ví dụ 1:
Cho nguồn tin X rời rạc
Lớp tin X1 X2 X3 X4 X5 X6 X7 X8
P(xi) ¼ 1/8 1/16 1/16 1/16 ¼ 1/8 1/16

Lập mã tối ưu theo Huffman


Ví dụ 2:
Cho nguồn tin X rời rạc
Lớp tin X1 X2 X3 X4 X5 X6
P(xi) 0.3 0.25 0.2 0.1 0.1 0.05

Lập mã tối ưu theo Huffman

29

03/29/2023
7.2. Mã tối ưu Huffman
Ví dụ 3: Một chuỗi thông điệp được truyền giữa 2 máy tín qua
PSTN như sau AAAABBCD. Dùng mã hóa Huffman để suy ra tập
từ mã
Ví dụ 4: Một chuỗi thông điệp được truyền giữa 2 MT qua mạng
PSTN. Các thông điệp bao gồm chỉ các ký tự từ A->H. Phân tích
cho thấy tần số xuất hiện như sau:
A, B = 0.25; C,D = 0.14; E,F,G,H = 0.055
Dùng mã hóa Huffman để suy ra tập từ mã

30

03/29/2023
7.2. Mã tối ưu Huffman
Thủ tục lùi:
Giả sử S có phân phối xác xuất giảm dần
Khởi tạo: Đặt N0 = N
B1: Đặt có xác suất p() = p() + p(
Sắp xếp lại theo thứ tự giảm dần của xác suất xuất hiện
B2: Lặp lại bước 1 với sự lưu vết

Giảm N0 = N0 -1
Vòng lặp kết thúc N0 = 2
Thủ tục tiến:
Ngược với thủ tục lùi đồng thời xác định từ mã ở mỗi bước từ
31
sự lưu vết ở thủ tục lùi
03/29/2023
7.3 Nhược điểm của Shannon Fano và Huffman tĩnh:
- Việc mã hóa và giải mã yêu cầu cả máy thu và máy phát
phải biết được bảng mã liên hệ với dữ liệu đang được
truyền vì vậy số liệu thống kê phải được truyền từ phía
phát đến thu gây nên tăng số lượng số liệu phải truyền
- Đối với mã Huffman tĩnh phía phát và thu có thể sử dụng
cấu trúc cây mã quy ước nhưng không tối ưu cho mọi
nguồn số liệu

32

03/29/2023
7.4. Mã hóa Huffman động
- Cho phép máy thu và máy phát xây dựng cây mã Huffman
một cách tự động khi các ký tự được nhận và truyền.
- Cấu trúc của cây mã luôn thay đổi trong suốt quá trình
phát và nhận tin.
- Việc xây dựng cây mã không cần phân tích và thống kê
nguồn tin ngay từ đầu

33

03/29/2023
7.4. Mã hóa Huffman động
Nguyên tắc:
- Ký tự nào xuất hiện lần đầu tiên sẽ được cập nhật vào lá rỗng.
- Bộ mã hóa gửi từ mã bao gồm vị trí của lá rỗng trong cây và mã ASCII của ký tự đó.
- Nút lá rỗng đang tồn tại trong cây sẽ được thay thế bằng một nút nhánh mới (node lá
rỗng là nhánh 0, ký tự được gán là nhánh 1)
- Ký tự đã có sẵn trong cây thì bộ mã hóa sẽ gửi vị trí của nó ở trong cây và nút
lá sẽ tăng 1 đơn vị.
- Để đảm bảo cả bộ mã hóa và giải mã đều thực hiện xây dựng một cây mã
không đổi:
- Thực hiện liệt kê trọng số của các nút lá và nút nhánh trong cây được cập nhật theo
hướng từ trái sang phải, từ dưới lên trên bắt đầu từ lá rỗng.
- Các trọng số này phải đảm bảo theo thứ tự tăng dần.
34
- Nếu chưa theo trật tự tăng dần phải thực hiện đổi chỗ.
03/29/2023
35

03/29/2023
36

03/29/2023
37

03/29/2023
7.4. Mã hóa Huffman động
Sử dụng Huffman động để mã hóa chuỗi dữ liệu là MSSV của
sinh viên

38

03/29/2023
VIII. MÃ SỐ HỌC
8.1. Thuật toán mã hóa
8.2. Thuật toán giải mã

39

03/29/2023
8.1. Thuật toán mã hóa mã số học
• Bản tin rỗng sẽ được coi như tương ứng với một điểm bất kỳ
trong đoạn [0,1). Điểm đầu I(0) = 0, điểm cuối U(0) = 1.
• Với bản tin dài n, thuật toán mã hóa bản tin sẽ lần lượt tìm
điểm đầu, điểm cuối cho bản tin dài n = 1, 2,.. Là I(n), U(n).
Công thức tính lần lượt các điểm này như sau:
- I(n) = I(n-1) + {U(n-1) – I(n-1)}F(sn-1)
- U(n) = I(n-1) + {U(n-1) – I(n-1)}F(sn)
- Với ánh xạ S ={si: i=1,2…,q}. Tin sn là tin nằm ở cuối
bản tin. F(sn-1) là hàm phân bố xác suất của tin ở trước
tin sn trong tập tin của nguồn.
- Chứng minh được I(n)>=I(n-1) và U(n) <U(n-1). Đoạn
của bản tin dài hơn nằm trong đoạn của bản tin ngắn
hơn. 40

03/29/2023
8.1. Thuật toán mã hóa mã số học
- Sau khi xác định điểm đầu, điểm cuối của đoạn chứa bản
tin, điểm biểu diễn bản tin được chọn là điểm có giá trị là
phân số nhị phân bé nhất trong đoạn đó. Phần phân số nhị
phân của điểm này sẽ được lấy làm mã mã hóa bản tin
- Với mã số học r trị thì chọn điểm biểu diễn từ mã là điểm có
giá trị bằng phân số r phần ngắn nhất trong đoạn và phần
phân số này là mã của bản tin
- Mã số học cho độ dài trung bình từ mã H(S) <= <=H(S) +
2/n với n là độ dài bản tin.

41

03/29/2023
8.1. Thuật toán mã hóa mã số học

Ví dụ: Nguồn S = {a,b,c} có xác suất p(S) = {0.7; 0.1; 0.2} và


bản tin m = acb
Hàm phân bố xác suất F(si):
si = a → x=1
si = b → x=2
si = c → x=3

42

03/29/2023
8.1. Thuật toán mã hóa mã số học
• Khi chưa mã hóa (bản tin rỗng) bản tin sẽ là điểm bất kỳ trong
đoạn [0,1) hay I(0) = 0 và U(0) = 1
• Với ký hiệu đầu, bản tin là a:
- I(1) = I(0) + [U(0) – I(0)]F(si=rỗng) = 0 + (1-0)0 = 0
- U(1) = I(0) + [U(0) – I(0)]F(si=a) = 0 + (1-0)0.7 = 0.7
• Với ký hiệu thứ hai, bản tin là ac:
- I(2) = I(1) + [U(1) – I(1)]F(si=b) = 0 + (0.7-0)0.8 = 0.56
- U(2) = I(1) + [U(1) – I(1)]F(si=c) = 0 + (0.7-0)1 = 0.7

43

03/29/2023
8.1. Thuật toán mã hóa mã số học
• Với ký hiệu ba, bản tin là acb:
- I(3) = I(2) + [U(2) – I(2)]F(si=a) = 0.56 + (0.7-0.56)0.7 =
0.658
- U(3) = I(2) + [U(2) – I(2)]F(si=b) = 0.56 + (0.7-0.56)0.8 =
0.672
• Chọn điểm biểu diễn bản tin là 0.6640625 có giá trị nhị phân
0.1010101 có số chữ số nhị phân ngắn nhất trong đoạn
[0.658,0.672]. Mã của bản tin sẽ là 1010101

44

03/29/2023
8.2. Thuật toán giải mã mã số học
• Mã của bản tin là chuỗi nhị phân nằm trong đoạn biểu diễn bản
tin con dài 1, 2,..n tin của bản tin (tính từ đầu bản tin).
• Bắt đầu từ đầu chuỗi mã nhận được chúng ta sẽ xác định đoạn
chứa điểm có giá trị bằng phân số ứng với chuỗi mã nhị phân dài
1,2,..chữ số nhị phân. Khi đoạn chứa chuỗi mã nhị phân nằm
trong đoạn chứa bản tin con dài n = 1,2,…ta tách ra được bản tin
dài con n của bản tin.
• Liên tiếp tìm các tin cho đến khi hết tin của bản tin
• Mã số học không cần truyền bảng mã đến nơi nhận

45

03/29/2023
8.2. Thuật toán giải mã mã số học
Ví dụ: Với nguồn S = (a,b,c) với P(S) = (0.7; 0.1; 0.2) và bản tin
m = acb được mã hóa 1010101
• Với cách mã hóa số học bản tin a nằm trong đoạn [0; 0.7]; ac
nằm trong đoạn [0.56; 0.7], acb nằm trong đoạn [0.658; 0.672]
• Chuỗi mã nhận được là 1010101
• Ký hiệu mã 1 đầu ứng với giá trị 0.1 nhị phân nằm trong đoạn
[0.100..; 0.111…] nhị phân hay [0.5; 1] chưa cho phép xác
định tin đầu tiên vì đây là khoảng chứa ký hiệu đầu có thể là a
hoặc b hoặc c.

46

03/29/2023
8.2. Thuật toán giải mã mã số học
• Thêm ký hiệu 10 ứng với giá trị 0.10 nhị phân nằm trong đoạn
[0.1000…; 0.10111…] nhị phân hay [0.5; 0.75] ký hiệu đầu có
thể là a hoặc b.
• Thêm ký hiệu 101 ứng với giá trị 0.101 nhị phân nằm trong đoạn
[0.10100…; 0.10111…] nhị phân hay [0.625; 0.75] ký hiệu đầu
có thể là a hoặc b
• Thêm ký hiệu 1010 ứng với giá trị 0.1010 nhị phân nằm trong
đoạn [0.10100…; 0.101011…] nhị phân hay [0.625; 0.6875].
Đoạn này nằm trong đoạn của bản tin đầu a [0; 0.7] và trong
đoạn thứ 2 của c [0.56; 0.7]. Vậy tin đầu của bản tin là a và tin
thứ 2 là c. 47

03/29/2023
8.2. Thuật toán giải mã mã số học
• Tiếp tục 10101 ứng với giá trị ứng với đoạn [0.65625; 0.6875].
101010 ứng với giá trị ứng với đoạn [0.65625; 0.67185] không
nằm trong đoạn [0.658; 0.672] nên không giải mã được.
• 1010101 ứng với giá trị ứng với đoạn [0.6640625; 0.671875]
nằm trong đoạn [0.658; 0.672] ứng với bản tin acb. Vậy bản
tin là acb.
• So với mã Huffman, bản tin acb có 6 ký tự. Tuy nhiên nếu
nguồn mở rộng thì mã số học hiệu quả tốt hơn so với mã
Huffman.

48

03/29/2023
IX. MÃ HÓA THEO LOẠT DÀI (RUN LENGTH
CODING)
• Mã hóa theo loạt dài RLC là các đơn giản và hiệu quả để nén dữ
liệu khi một tin xuất hiện liên tiếp nhau trong bản tin
• Mã này là thích hợp cho một số loại dữ liệu ảnh nhưng không
thích hợp cho văn bản vì rất hiếm khi một ký tự văn bản xuất
hiện 2 lần liên tiếp nhau.
• Để nén một chuỗi tin giống nhau, mã hóa theo loạt dài đơn giản
thay chuỗi này bằng 1 tin của chuỗi và tiếp theo là số lần lặp tin
này của chuỗi.
• Bên giải mã, cần phân biệt mã của số lần lặp và tiến hành phục
hồi lại chuỗi tin.
49

03/29/2023
X. MÃ LEMPEL ZIV

10.1. Mã hóa theo từ điển


10.2. Mã Lempel Ziv – LZ77
10.3. Mã Lempel Ziv – LZ78

50

03/29/2023
10.1. Mã hóa theo từ điển
- Tạo một danh sách các từ và số thứ tự xuất hiện của từ này
trong dạng văn bản của bản tin. Danh sách này được gọi là từ
điển.
- Chuyển văn bản của bản tin thành chuỗi các chỉ thị chỉ ra
điểm vào của từ trong từ điển. Bản tin chuyển thành chuỗi
các chỉ số.
- Khi giải mã từ chuỗi chỉ số là các điểm vào của từ trong từ
điển phục hồi lại các từ của bản tin.
- Mã này phù hợp cho bản tin chuyển về được dạng văn bản.
- Mã Lempel-Ziv là mã theo từ điển và có nhiều biến dạng. Có
2 loại biến dạng được sử dụng chủ yếu hiện nay LZ77 và
51
LZ78.
03/29/2023
10.2. Mã Lempel Ziv – LZ77
• Xây dựng từ theo luật:
- Mỗi “từ mới” là một “từ cũ” thêm một ký tự kế tiếp theo
trong văn bản
- Mỗi từ được biểu diễn bởi một bộ ba (m,n,c).
- n (n>1) là số ký hiệu của chuỗi tìm được trùng với một
chuỗi đã xuât hiện trước nó (“từ cũ”)
- c là ký hiệu tiếp theo chuỗi tìm được
- m là số vị trí cần phải quay ngược lại để tìm thấy điểm
đầu của chuỗi đã tìm được
- Bô ba đầu tiên (0,0,c) với c là ký tự nguồn đầu tiên. Từ
đầu tiên là từ rỗng nằm ở vị trí 0 trong văn bản. 52

03/29/2023
10.2. Mã Lempel Ziv – LZ77
• Văn bản được chuyển thành chuỗi các bộ ba ứng với các từ tìm
được.
• Quá trình giải mã: bắt đầu từ bộ ba đầu tiên, dần dần phục hồi lại
các từ theo chuỗi các bộ ba nhận được.
• Ví dụ: the_fat_cat_sat_on_the_mat.

53

03/29/2023
10.2. Mã Lempel Ziv – LZ77
• Văn bản : the_fat_cat_sat_on_the_mat.
• Chuỗi các bộ ba:
- Bắt đầu từ đầu bản tin: (0,0,t); (0,0,h); (0,0,e); (0,0,_); (0,0,f);
(0,0,a); (0,0,t); (0,0,_); (0,0,c); (4,3,s); (4,3,o); (0,0,n); (0,0,_);
(19,4,m); (11,2,.)
• Giải mã:
⁻ (0,0,t)→t
⁻ (0,0,h)→h (th)
⁻ …
⁻ (0,0,c)→c (the_fat_c)
⁻ (4,3,s)→ (the_fat_cat_s) 54

⁻ … 03/29/2023
10.3. Mã Lempel Ziv – LZ78
• Từ rỗng coi như nằm ở vị trí 0 trong từ điển
• Từ có vị trí 1 tìm được là từ có 1 ký hiệu là ký hiệu đầu của văn
bản. Từ này là từ cũ (rỗng lấy thêm một ký tự đầu của văn bản).
Từ này được tách ra khỏi văn bản.
• Tiếp tục tìm các từ có thứ tự tìm được tiếp theo dựa vào nguyên
tắc “từ mới” là chuỗi ký hiệu của “từ cũ” và lấy thêm 1 ký hiệu
tiếp theo trong văn bản. Từ này được tách khỏi văn bản. Tiếp tục
cho đến khi hết văn bản.
• Mỗi từ được biểu diễn bằng một cặp (i,c)
- i là số thứ tự tìm thấy từ
- c là ký tự lấy thêm
55
• Văn bản là chuỗi các cặp (i,c)
03/29/2023
10.3. Mã Lempel Ziv – LZ78
Văn bản: the_fat_cat_sat_on_the_mat.
Item Code Intem number Current sequence
sequence
t (0,t) 1 t
h (0,h) 2 th
e (0,e) 3 the
_ (0,_) 4 the_
f (0,f) 5 the_f
a (0,a) 6 the_fa
t_ (1,_) 7 the_fat_
c (0,c) 8 the_fat_c
at (6,t) 9 the_fat_cat
_s (4,s) 10 the_fat_cat_s
at_ (9,_) 11 the_fat_cat_sat_
56
o (0,o) 12 the_fat_cat_sat_o
03/29/2023
10.3. Mã Lempel Ziv – LZ78
Văn bản: the_fat_cat_sat_on_the_mat.
Item Code Intem number Current sequence
sequence
n (0,n) 13 the_fat_cat_sat_on
_t (4,t) 14 the_fat_cat_sat_on_t
he (2,e) 15 the_fat_cat_sat_on_the
_m (4,m) 16 the_fat_cat_sat_on_the_m
at. (9,.) 17 the_fat_cat_sat_on_the_mat.

57

03/29/2023
XI. MÃ NGUỒN LIÊN TỤC
 Mã hóa nguồn cho nguồn liên tục là mã hóa bản tin được nguồn
tạo ra với số ký hiệu mã phải sử dụng là tối thiểu
 Mã nguồn tối ưu có độ dài trung bình từ mã = H(S) cho số ký
hiệu mã phải sử dụng để mã hóa bản tin là tối thiểu.
 Nguồn liên tục được coi là số tin tạo ra trong một đơn vị thời
gian bằng số mẫu trong nguồn rời rạc tương đương
(Ts=1/(2Fmax))
 Lượng tin trung bình của mỗi mẫu sẽ là H(S) nên số ký hiệu mã
để mã hóa mỗi mẫu sẽ là L>=H(S).

58

03/29/2023
XI. MÃ NGUỒN LIÊN TỤC
• Mã hóa cho nguồn liên tục có thể sử dụng các phương pháp:
- Mã hóa theo thời gian là mã hóa bản tin được biểu diễn
theo thời gian
- Mã hóa theo tần số là mã hóa bản tin được biểu diễn theo
tần số
- Mã hóa mô hình nguồn là tìm mô hình toán học cho nguồn
và mã hóa các tham số của mô hình.

59

03/29/2023
11.1 Mã hóa nguồn liên tục theo thời gian
• Mã hóa cần thực hiện hai nhiệm vụ:
- Thực hiện chuyển đổi bản tin từ tương tự sang số (ADC)
- Giảm số ký hiệu mã đến tối thiểu (hay nén dữ liệu)
• ADC gồm 3 thao tác kế tiếp
- Lấy mẫu
- Lượng tử hóa
- Mã hóa (thường sử dụng mã nhị phân)

60

03/29/2023
11.2 Mã hóa theo tần số
• Thực hiện mã hóa phổ bản tin được tạo ra
• Thông thường mã hóa tham số sau đó ước lượng tham số của
phổ rồi mã hóa nó
• Hai kỹ thuật thường được sử dụng là mã hóa theo dải băng tần
con và mã hóa theo các thành phần cơ bản (formant)

61

03/29/2023
CHƯƠNG V
62
GIẢI MÃ

03/29/2023
NỘI DUNG
I. GIẢI MÃ
II. LƯỢC ĐỒ GIẢI MÃ TỐI ƯU
III. CÁC DẠNG SAI SỐ CƠ BẢN
IV. PHƯƠNG PHÁP XÂY DỰNG LƯỢC ĐỒ GIẢI MÃ
TỐI ƯU

63

03/29/2023
I. GIẢI MÃ
Chia tập Y thành các tập con Bi sao cho

Khi nhận yj Bi thì giải mã về xi = g(yj)


Ví dụ: cho tập mã truyền X = {0000, 0101, 1110, 1011}
Mã nhận Y = {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111}
Chia tập Y thành 4 tập con
B1 = {0000, 0001, 0010, 1000}
B2 = {0101, 0100, 1101, 0111}
B3 ={1110, 0110, 1111, 1100}
B4 ={1011, 0011, 1010, 1001}
Khi nhận được yj = 0011 -> giải mã về ??? 64

03/29/2023
II. LƯỢC ĐỒ GIẢI MÃ TỐI ƯU
Là lược đồ giải mã sao cho tổng xác suất truyền sai là nhỏ nhất
hay là tổng xác suất truyền đúng là lớn nhất
Nghĩa là khi nhận yj sẽ giải mã về xi* sao cho
p(xi*/yj) = max{p(xk/yj)} xk W

65

03/29/2023
II. LƯỢC ĐỒ GIẢI MÃ TỐI ƯU
Ví dụ: Giả sử kênh truyền từng bít với thông lượng C=1bps
Nguồn phát với tốc độ R = 2/5 bps. Để thuận lợi cho việc mã hóa
và giảm nhiễu ta xét từng khoảng tzan t0 = 5s
Trong khoảng thời gian 5s ta có tín hiệu khác nhau m1; m2; m3; m4
được phát ra và ta có Rt0 = 2 bít được phát ra.
Khi mã hóa các tín hiệu mi thì mỗi tín hiệu cần được mã hóa tối đa
là t0.C = 5 bít (vì đây là số bít tối đa có thể truyền nên ta chỉ có thể
mã hóa tín hiệu với độ dài tối đa là 5 bít)
Nếu thực hiện mã hóa m1 = 00; m2 = 01; m3 = 10; m4 = 11 thì chỉ
cần 1 bít bị truyền sai sẽ chuyển sang tín hiệu khác nên không thể
phát hiện có nhiễu hay không? Vì vậy phải thực hiện thêm các 66 bít
kiểm tra vào tín hiệu cần truyền. 03/29/2023
III. PHƯƠNG PHÁP XÂY DỰNG LƯỢC ĐỒ GIẢI MÃ
TỐI ƯU

Các bước để xây dựng lược đồ giải mã tối ưu


• B0: Khởi tạo các Bi =
• Bước lặp: Xét
- Tính ; …;
- So sánh các giá trị trên và chọn xi* sao cho lớn nhất
- Bi = Bi + {yj} và yj sẽ được giải mã về xi*

67

03/29/2023
IV. CÁC DẠNG SAI SỐ CƠ BẢN

- Xác suất truyền sai từ mã xi

- Xác suất truyền sai trung bình

- Xác suất truyền sai lớn nhất

68

03/29/2023
Ví dụ:
Cho ma trận truyền tin

Với p(x1) =1/2; p(x2) = p(x3) = ¼.


Tính H(X), H(Y), H(X,Y), H(X/Y), H(Y/X)
Hãy xây dựng lược đồ giải mã tối ưu.
Tính xác suất truyền sai trung binh; xác suất truyền sai lớn
nhất
Tính dung lượng kênh truyền

69

03/29/2023

You might also like