Về các mục đích của mã hóa, ta có thể tóm tắt như sau: - Định dạng, để chuyển tin từ dạng gốc tự nhiên sang dạng chuẩn ví dụ sang dạng số - Mật mã hóa encryption, để mã hóa bản tin bằ
Trang 1Chương 4
Mã hóa nguồn
Hệ thống thông tin được sử dụng để truyền tin tức từ nguồn tin đến nhận tin Nguồn tin sinh
ra tin dưới nhiều dạng khác nhau, ví dụ âm thanh trong hệ thống radio, tín hiệu video trong hệ thống vô tuyến truyền hình
Tin này có thể được đưa trực tiếp vào kênh để truyền đi, nhưng trong thực tế, tin này thường được biến đổi rồi đưa vào kênh truyền Ví dụ như tin là văn bản tiếng Anh, nguồn tin có khoảng 40 ký tự (symbol) khác nhau, gồm các mẫu tự alphabet, con số, dấu chấm câu Về nguyên tắc ta có thể dùng 40 dạng sóng điện áp khác nhau để biểu thị 40 ký tự này Tuy nhiên thực tế thì phương pháp này không phù hợp, quá khó thực hiện hay thậm chí không thể được, vì:
- Kênh truyền không phù hợp về mặt vật lý để có thể mang nhiều ký tự khác nhau như vậy
- Dải tần đòi hỏi sẽ rất rộng
- Việc lưu trữ hay xử lý tín hiệu trước khi truyền rất khó, trong khi nếu chuyển sang nhị phân thì mọi việc sẽ dễ dàng hơn nhiều
Vậy ta thấy cần phải thay đổi dạng của tin khác đi so với dạng ban đầu do nguồn cung cấp Công việc thay đổi dạng này được gọi là mã hóa (encoding)
Cơ sở lý thuyết của mã hóa là lý thuyết tin (information theory) Lý thuyết tin liên quan đến việc biểu diễn tin bằng các ký tự, đưa ra giới hạn lý thuyết cho việc thực hiện hệ thống thông tin, cho phép đánh giá hiệu suất của hệ thống thực tế Nền tảng của lý thuyết tin do Hartley và Nyquist đưa ra từ những năm 1920 và được Shannon hoàn chỉnh và tổng kết vào năm
1948 Đây là một lý thuyết phức tạp, phần đầu của chương này dành để trình bày những vấn đề cơ bản nhất của lý thuyết tin
Về các mục đích của mã hóa, ta có thể tóm tắt như sau:
- Định dạng, để chuyển tin từ dạng gốc tự nhiên sang dạng chuẩn ví dụ sang dạng số
- Mật mã hóa (encryption), để mã hóa bản tin bằng một khóa mật mã nhằm tránh sự thâm
nhập trái phép, đảm bảo độ an toàn cho thông tin
- Mã hóa kênh truyền (channel encoding), cho phép bên thu có thể phát hiện, kể cả sửa
Trang 2- Chương IV -
được các lỗi trong bản tin thu để tăng độ tin cậy của thông tin
Phần định dạng và mã hóa đường đã được xét đến trong chương III Do những đặc điểm riêng, phần mật mã hóa không được đề cập trong giáo trình này Phần mã hoá kênh truyền sẽ được trình bày trong chương sau Chương này trình bày về mã hóa nguồn, trong đó tập trung vào loại mã thống kê tối ưu Loại mã này tạo ra từ mã có độ dài thay đổi, trong đó phổ biến là mã Huffman, bao gồm mã Huffman cơ sở (basic Huffman) và mã Huffman động (dynamic Huffman) Phần cuối chương sẽ giới thiệu sơ lược về mã hóa fax (facsimile)
4.1 Lý thuyết tin
4.1.1 Đo tin tức
Để đánh giá định lượng cho tin tức, người ta đưa ra khái niệm lượng tin (information content)
Lượng tin liên quan đến giá trị của tin, hay nói cách khác là khả năng dự đoán được (predictability) của tin: một tin có khả năng đoán trước càng nhiều thì càng chứa ít tin Ví dụ,
bản tin về tỷ số trận bóng Manchester United - Bradford Academicals là 7 - 0 chứa rất ít tin nhưng kết quả ngược lại thì gây chấn động, và do đó chứa rất nhiều tin Vậy xác suất càng cao thì bản tin càng chứa ít tin và ngược lại Ta có thể viết:
p (bản tin) = 1 không mang tin
p (bản tin) = 0 mang một lượng tin vô hạn
Từ nhận xét trên, ta thấy tin càng có ý nghĩa khi nó càng hiếm gặp, nên độ lớn của nó phải tỷ lệ nghịch với xác suất xuất hiện của tin
Xét nguồn tin X rời rạc sinh ra các tin i với xác suất là p(i), lượng tin của tin i phải là một hàm có các đặc điểm sau:
- Tỷ lệ nghịch với xác suất xuất hiện p(i), hay đó là hàm f(1/p(i))
- Hàm này phải là 0 khi p(i) = 1
- Nếu hai tin độc lập thống kê là i và j đồng thời xuất hiện, ta có tin là (i,j), lượng tin chung của chúng phải bằng tổng lượng tin của từng tin, nghĩa là:
f(1/p(i,j)) = f(1/p(i)) + f(1/p(j)) Theo luật nhân xác suất ta có:
i ( p
1 log ) i
Trang 3Đơn vị đo của lượng tin tuỳ thuộc vào cơ số của loga Đơn vị của lượng tin là bit, là nat hay là hartley khi cơ số của loga lần lượt là 2, là e hay là 10 Trong đó cơ số 2 thường được chọn hơn cả Khi chọn cơ số 2 thì lượng tin của tin i là:
) i ( p log )
i ( p
1 log ) i (
4.1.2 Entropy của nguồn tin
Entropy H được định nghĩa là giá trị trung bình thống kê của lượng tin Đó là lượng tin trung
bình chứa trong một ký tự bất kỳ của nguồn tin
Xét một nguồn tin sinh ra M ký tự độc lập thống kê Nguồn tin này được gọi là nguồn rời rạc
không nhớ (discrete memoryless source) Entropy của nguồn này làì:
trong đó p (m) là xác suất chọn ký tự thứ m
Lý thuyết tin đã chứng minh giá trị lớn nhất của entropy là H log M
2 max = , đạt được khi các ký tự độc lập và đồng xác suất (equiprobable), nghĩa là:
M , 1 m , M / 1 ) m (
Đối với nguồn tin ASCII có M = 128 thì entropy cực đại là:
Hmax = - log2(1/128) = 7 (bit/ký tự)
Thực tế thì điều này khó xảy ra nên entropy của nguồn ASCII là:
7 ) m ( p
1 log ) m ( p H
1 log ) p 1 ( p
1 log p ) m ( p
1 log ) m ( p H
2 2
4.1.3 Entropy có điều kiện và độ dư
Đối với các nguồn tin trong đó việc sinh ra ký tự sau không độc lập thống kê với các ký tự trước đó ( gọi là nguồn có nhớ - memory source) thì công thức entropy trên không đủ tổng
quát để tính được entropy chính xác
Trong trường hợp này phải xét đến xác suất có điều kiện (conditional probability) Ví dụ với nguồn có nhớ một ký tự, nghĩa là ký tự sau được chọn phụ thuộc vào một ký tự trước đó, entropy được tính như sau:
Trang 4ở đây p ( j , i ) là xác suất nguồn chọn i và j, p ( i ) là xác suất nguồn chọn j nếu trước đó đã chọn i Theo định lý Bayes, ta có:
) i ( p ) i ( p ) i , j (
Sự khác nhau giữa entropy thực sự của nguồn và entropy cực đại gọi là độ dư (redundancy)
của nguồn, ký hiệu là r:
1 log ) i ( p ) i ( p M
log H H
Độ dư tương đối của nguồn được định nghĩa như sau:
max max
max
H
H 1 H
H H
4.1.4 Sự mất mát tin do nhiễu
Gọi ký tự nguồn thứ i được truyền đi là , xác suất xuất hiện là , lượng tin của
TX
TX
) i ( p
1 log ) i ( I
TX 2 TX
Đối với kênh không nhiễu (noiseless channel), giả sử điện áp tương ứng với ký tự phát là , khi bên nhận tin tách được thì có thể biết chắc chắn ký tự phát ở nguồn là Lượng tin trong trường hợp này được bảo toàn khi truyền qua kênh:
1 log ) i ( I ) i v ( I
TX 2 TX
TX TX
RX
Tuy nhiên, đối với kênh có nhiễu (noise channel), khi bên nhận tin tách được điện áp thì không thể kết luận chắc chắn về ký tự thực phát ở nguồn Sự không chắc chắn này liên quan đến xác suất
RX
v
) v i ( p
RX
TX , đây là xác suất phát ký tự thứ i và tách được điện áp ở bên nhận (Đối với kênh không nhiễu, xác suất này là 1) Đối với kênh có nhiễu, tin nhận được ít hơn tin truyền đi một lượng liên quan đến độ không chắc chắn của quyết định Thực tế, lượng tin nhận được là:
RX
v
Trang 5) i ( p
) v i ( p log ) i v ( I
TX
RX TX 2 TX
) i i ( p log ) i ( I
TX
RX TX 2 RX
Độ nghi ngờ được định nghĩa là:
) j i ( p
1 log
) j i ( p ) j ( p )
j i ( p
1 log
) j , i ( p E
RX TX
2
i TX RX
RX TX 2 RX TX
TX liên quan đến xác suất lỗi ký tự
4.1.5 Tốc độ lập tin của nguồn tin
Ngoài thông số cơ bản của nguồn là entropy tuỳ thuộc vào cấu trúc thống kê của nguồn, còn có một thông số khác tuỳ thuộc vào tính chất vật lý của nguồn Đó là tốc độ thiết lập tin (information rate) của nguồn, ký hiệu là R Thông số này chỉ ra sự hình thành tin nhanh hay
chậm để đưa vào kênh Ví dụ con người, do kết cấu của cơ quan phát âm nên mỗi giây chỉ phát âm được từ 5 đến 7 tiếng, trong khi một thiết bị đầu cuối số liệu có thể đạt đến hàng ngàn ký hiệu trong một giây
Tốc độ thiết lập tin của nguồn có đơn vị là lượng tin trên đơn vị thời gian (trường hợp dùng loga cơ số 2 thì đơn vị là bit/s) và được tính là tích của entropy với số ký hiệu lập được trong một đơn vị thời gian:
Trang 6- Chương IV -
H n R
0
= (bit/s) trong đó n0 là số ký hiệu lập được trong một đơn vị thời gian, tuỳ thuộc vào tính chất vật lý của nguồn
Ta thấy để nâng cao tốc độ thiết lập tin của nguồn cần thiết phải nâng cao entropy Tốc độ lập tin của nguồn sẽ cực đại khi entropy của nguồn cực đại
4.1.6 Thông lượng kênh
Định nghĩa thông lượng của kênh (channel capacity) là lượng tin tối đa kênh cho đi qua trong một đơn vị thời gian mà không gây lỗi Ký hiệu thông lượng kênh là C và đơn vị đo giống như đơn vị của tốc độ lập tin (bit/s)
Thông thường tốc độ lập tin bé hơn nhiều so với thông lượng kênh:
C
R <<
a) Trường hợp truyền tin trong kênh không nhiễu:
Khi kênh không nhiễu, toàn bộ tin tức đều được truyền qua kênh mà không bị lỗi Lượng tin tối đa mà kênh cho qua cũng bằng với lượng tin tối đa mà nguồn có thể thiết lập Vậy thông lượng kênh là:
max 0 max n H R
Theo Shannon, nếu R < C thì có thể mã hóa để làm cho tốc độ lập tin của nguồn tiếp cận với thông lượng kênh:
ε ε
<
C là vô cùng bé Phương pháp mã hóa này được gọi là mã hoá thống kê tối ưu
b) Trường hợp truyền tin trong kênh có nhiễu:
Trong kênh có nhiễu, lượng tin truyền đi bị hao hụt một phần do nhiễu nên thông lượng kênh
bị giảm đi Lượng giảm đi đó chính là lượng tin bị nhiễu phá hủy trong một đơn vị thời gian,
được tính bằng n 0 E Vậy thông lượng kênh có nhiễu là:
) E H
( n E n H
n R
max 0 0
Để so sánh các loại hệ thống thông tin khác nhau, ta có thể xét kênh truyền cho thuận tiện Xét kênh có nhiễu gausse trắng, tỷ số tín hiệu trên nhiễu trung bình là S/N, băng thông của kênh là B Theo định lý Hartley - Shannon, thông lượng của kênh này là:
) N / S 1 ( log B C
2 +
Trang 7Có thể áp dụng rộng rãi kết quả này cho nhiều hệ thống khác nhau bởi vì có thể mô hình hóa nhiều kênh thành kênh gausse trắng (white gaussian channel) Kết quả này cũng được chấp nhận cho cả kênh liên tục và rời rạc
4.2 Cơ bản về mã hóa
4.2.1 Định nghĩa mã hóa
Cho nguồn tin rời rạc X sinh ra N tin hay ký tự độc lập ( ) Xét một tập M có M phần tử hữu hạn ( )
N i
2
1, x , , x , , x x
q 2
1, m , , m m
Mã hóa (encoding) nguồn tin X bằng tập M có nghĩa là biến đổi mỗi tin của nguồn tin X thành một tập các phần tử thuộc M nhằm thỏa mãn một yêu cầu nào đó của hệ thống thông tin:
i
x
il 2 i 1 i
i m m m
Phép biến đổi ngược lại:
i il 2 i 1
i m m x
được gọi là giải mã (decoding)
Thông thường, số tin của nguồn tin rất lớn nên số ký hiệu mã không thể bằng hoặc nhiều hơn số tin
4.2.2 Các tham số cơ bản của mã hóa
Tập M được gọi là mã hiệu (code), các phần tử gọi là ký hiệu mã (symbol), số ký hiệu mã khác nhau trong mã gọi là cơ số của mã Mã nhị phân là mã cơ số 2, trong đó mã chỉ có 2 ký hiệu mã là 0 và 1
i m m m
Số ký hiệu mã có trong một từ mã được gọi là độ dài của từ mã (codeword length), ký hiệu là
l Ví dụ từ mã 00100 có độ dài là 5
Tham số tiếp theo là trọng lượng từ mã (codeword weigh), đó là tổng số các ký hiệu khác 0 có mặt trong từ mãî, ký hiệu là w Ví dụ từ mã 110001 có trọng lượng là 3
Một tham số nữa là khoảng cách mã (distance), ký hiệu là d Đó là số ký hiệu cùng vị trí
khác nhau giữa hai từ mã dài bằng nhau Ví dụ khoảng cách giữa hai từ mã 110001 và
101000 là 3
Gọi C1 và C2 là hai từ mã dài bằng nhau Có thể dễ dàng nhận thấy khoảng cách mã giữa hai từ mã này là:
) C C ( w ) C , C ( d
2 1 2
Trang 8- Chương IV -
4.2.3 Phân loại mã
Ta có thể phân loại mã theo nhiều cách khác nhau Dưới đây là một số cách hay gặp:
- Dựa vào độ dài của từ mã, ta phân ra mã có độ dài không đổi gọi là mã đều và mã có
độ dài thay đổi gọi là mã không đều Đối với mã không đều, độ dài trung bình là một thông số cơ bản của mã và được tính theobiểu thức:
trong đó l m là độ dài từ mã tương ứng với ký tự m
- Dựa vào trọng lượng của từ mã, ta phân ra mã có trọng lượng không đổi và mã có
trọng lượng thay đổi
- Dựa vào khoảng cách mã giữa hai từ mã kề nhau, ta phân ra mã có khoảng cách
không đổi và mã có khoảng cách thay đổi
- Dựa vào cơ số của mã, ta phân ra mã nhị phân (mã cơ số 2), mã bát phân (mã cơ số
8), mã hexa (mã cơ số 16) Trong đó mã nhị phân là mã thông dụng nhất Chương này ta chỉ xét mã nhị phân
- Dựa vào độ tin cậy, ta phân ra mã có khả năng phát hiện và sửa lỗi và mã không có
khả năng phát hiện và sửa lỗi
- Dựa vào hiệu suất thông tin, ta phân ra mã tối ưu và mã chưa tối ưu
4.2.4 Các phương pháp biểu diễn mã
a) Phương pháp liệt kê
Đây là phương pháp biểu diễn mã đơn giản nhất: chỉ cần liệt kê các tin của nguồn và các từ mã tương ứng trong một bảng
Ví dụ: nguồn tin có 8 tin (ký tự), các tin được mã hóa như bảng 4.1
Phương pháp biểu diễn này có ưu điểm là cụ thể, rõ ràng nhưng đối với các bộ mã lớn thì quá cồng kềnh
Trang 9Ví dụ ma trận sinh tương ứng với bảng mã trên là:
0 1 0
1 0 0
Khi thành lập ma trận sinh, quy ước loại bỏ các từ mã gồm toàn ký hiệu 0
Hình 4.1 là ví dụ về một cây mã cho bộ mã nhị phân gồm các từ mã là 00, 01, 10, 1101,
1 0
Mức
Mức 5 Mức 4 Mức 3 Mức 2 Mức 1
Hình 4.1 Ví dụ về cây mã
Nhìn vào cây mã ta có thể biết được đây là mã đều hay không đều Mã là đều khi tất cả các nút lá có cùng mức Mã biểu diễn bằng cây mã ở hình 4.1 thuộc loại mã không đều
d) Phương pháp đa thức
Phương pháp này dùng làm mô hình toán để biểu diễn mã vòng Ưu điểm của phương pháp này là có thể thực hiện mã hóa và giải mã mã vòng dễ dàng bằng cách sử dụng các phép toán đối với đa thức như phép cộng, nhân và chia
Từ mã k bit ( theo thứ tự từ trái qua phải là msb đến lsb) có thể được biểu diễn bằng đa thức sau:
0 1 2 2 k 1
k m m m m
Trang 10- Chương IV -
0 1
2 2
2 k 2 k
1 k 1
m ) x (
Ví dụ từ mã nhị phân 1101001 có thể biểu diễn bằng đa thức: f ( x ) = x6 + x5 + x3 + 1
4.3 Mã hóa nguồn
Hệ thống thông tin được sử dụng để truyền tin tức từ nguồn tin đến nhận tin Nguồn tin có rất nhiều dạng khác nhau, nhưng có thể phân thành hai loại chính là nguồn liên tục (continuous
source) như nguồn âm thanh, nguồn video và nguồn rời rạc (discrete source) như nguồn dữ
liệu từ máy tính
Trong hệ thống thông tin số, đầu ra của nguồn phải được chuyển thành dạng thích hợp để có thể truyền đi bằng kỹ thuật số Theo sự phân loại nguồn, ta có hai kỹ thuật mã hóa nguồn chính là mã hóa nguồn liên tục và mã hóa nguồn rời rạc Nội dung mã hóa nguồn liên tục cũng trùng với nội dung số hoá tín hiệu liên tục đã xét trong chương trước
Trong phần này, ta xét quá trình mã hóa nguồn rời rạc (discrete source encoding) Nguồn rời rạc là nguồn sinh ra các ký tự với một quy luật phân bố xác suất nào đó Để cho đơn giản, ta xét trường hợp nguồn không nhớ, các ký tự được sinh ra độc lập với nhau Thông thường, quy luật phân bố xác suất sinh ra các ký tự là không đều nên độ dư của nguồn lớn, entropy của nguồn bé, tốc độ lập tin của nguồn còn xa mới đạt đến thông lượng kênh Lúc đó nhiệm vụ của mã hóa nguồn rời rạc là làm cho cấu trúc thống kê của nguồn trở nên hợp lý bằng cách tăng entropy của các ký tự dùng để mã hóa nguồn
Nguyên tắc của mã hóa nguồn rời rạc là mã hóa các ký tự có xác suất sinh ra lớn bằng các từ mã ngắn và mã hóa các ký tự có xác suất sinh ra bé bằng các từ mã dài Loại mã này gọi là
mã hóa thống kê (statistical encoding) Một ví dụ của mã hóa thống kê là mã Morse dùng để
mã hóa bản tin tiếng Anh Trong mã Morse, ký tự xuất hiện nhiều nhất là 'e' được mã hoá bằng từ mã ngắn nhất '.' (1 bit) Dựa theo nguyên tắc này ta thấy mã hóa thống kê giúp tránh hiện tượng kênh truyền bị quá tải khi bản tin chứa quá nhiều ký tự có xác suất xuất hiện lớn Việc truyền tin sẽ trở nên kinh tế hơn nếu mã thống kê có độ dài trung bình của từ mã là nhỏ nhất Loại mã như vậy gọi là mã thống kê tối ưu (optimum statistical code) Đây chính là mã hóa nén (copression)
Phần sau đây sẽ xét cụ thể các tiêu chuẩn của mã thống kê tối ưu cơ số 2
4.3.1 Giới hạn của độ dài từ mã trung bình
Giả sử nguồn tin X sinh ra các ký tự xi độc lập Mã hóa nguồn tin X bằng bộ mã nhị phân M, các ký hiệu mã 0 và 1 có xác suất bằng nhau p(0) = p(1) = 0.5
Lượng tin riêng của một ký hiệu 0 hay 1 bằng với lượng tin trung bình và đạt giá trị cực đại:
1 2 log ) 1 ( ) 0 (
2 =
=
Mã hóa ký tự xi bằng một từ mã nhị phân dài li Như vậy lượng tin chứa trong từ mã này sẽ là
li (bit) Lượng tin trung bình chứa trong một từ mã sẽ là độ dài trung bình của từ mã, là L (bit)
Trang 11Để cho phép mã hóa đạt hiệu quả cao, toàn bộ lượng tin riêng trong mỗi ký tự nguồn phải được chuyển hết sang cho từ mã tương ứng, hay lượng tin trung bình của từ mã phải lớn hơn hoặc bằng lượng tin trung bình của một ký tự nguồn Lượng tin trung bình của một ký tự nguồn chính là entropy của nguồn H Vậy:
i
i = −
Vì li là số nguyên nên - logp(x i ) phải là số nguyên Khi đó độ dài trung bình của từ mã sẽ đạt tối thiểu L = L min Ta có bộ mã thống kê tối ưu Thường thì - logp(xi ) không phải là số
nguyên nên L ≥ H chỉ là một điều kiện giới hạn
Ta có thể thấy: để độ dài từ mã trung bình nhỏ nhất khi - logp(x i ) không phải là số nguyên
thì L phải thoả mãn bất đẳng thức sau:
1 H L
H ≤ < +
Vậy giới hạn trên của độ dài từ mã trung bình là H+1 Một bộ mã có độ dài từ mã trung bình
thoả điều kiện này được gọi là mã thống kê tối ưu
4.3.2 Hiệu suất mã
Định nghĩa hiệu suất mã (code efficiency) là tỷ số giữa entropy của nguồn tin có các ký tự độc lập và entropy cực đại của nguồn đó:
% 100 x M
log
) m ( p
1 log ) m ( p
% 100 x H
Nếu các ký tự nguồn được mã hóa thành một tập các ký tự mới như hình 4.2 thì H và H max là entropy và entropy cực đại của tập ký tự mới này
Bản tin (Tập ký tự 2)
Bản tin (Tập ký tự 1) Mã hóa
Hình 4.2 Chuyển đổi bản tin giữa hai tập ký tự khác nhau
Nếu các ký tự nguồn được mã hóa thành từ mã nhị phân thì có một cách khác để tính hiệu suất mã:
Trang 12- Chương IV -
% 100 x l ) m ( p
H
% 100 x L
ở đây lmlà độ dài của mỗi từ mã nhị phân và L là độ dài từ mã trung bình
So sánh hai công thức tính hiệu suất mã ở trên, ta rút ra được:
H max (bit/ký tự) = L (bit/từ mã)
4.3.3 Giải mã trong trường hợp từ mã có độ dài thay đổi
Nói chung là chúng ta đi tìm một cách mã hóa hữu hiệu có thể biểu diễn các tin giống nhau mà trung bình dùng ít số nhị phân hơn Kết quả là độ dài của các từ mã biểu diễn các ký tự khác nhau sẽ khác nhau Vấn đề đặt ra là làm thế nào để bên giải mã nhận ra được điểm bắt đầu và kết thúc của các từ mã dài khác nhau như vậy Sau đây là các đặc điểm cần phải có để giải mã với các từ mã dài khác nhau:
a) Giải mã duy nhất (unique decoding)
Điều này là cần thiết để cho các bản tin thu chỉ có một nghĩa duy nhất Xét một nguồn tin gồm 4 ký tự alphabet, các ký tự được mã hóa bằng các từ mã nhị phân như sau:
A = 0, B = 01, C = 11, D = 00 Nếu bên thu nhận được dãy từ mã 0011thì không biết là bên phát truyền đi DC hay là AAC Vậy ví dụ trên không thỏa tính giải mã duy nhất
b) Giải mã tức thời (instaneous decoding)
Bây giờ xét một nguồn tin khác gồm 4 ký tự alphabet, các ký tự được mã hóa bằng các từ mã nhị phân như sau:
A = 0, B = 10, C = 110, D = 111 Mã này có thể giải mã tức thời dùng cây mã như trong hình 4.3 a, vì không có từ mã hoàn thành nào là phần đầu (prefix) của từ mã khác dài hơn nó Mã thỏa điều kiện này gọi là mã có
tính prefix Ví dụ này ngược với ví dụ trước có A là phần đầu của cả B và D
Đôi khi mã không có tính prefix nhưng vẫn đảm bảo giải mã duy nhất, tuy nhiên lúc này không thể giải mã tức thời được mà phải mất thêm thời gian để xem xét các số tiếp theo trước khi kết luận chính xác được điểm kết thúc của từ mã Ví dụ như nguồn tin sau:
A = 0, B = 01, C = 011, D = 111
Ta thấy nếu bên thu nhận được số 0 thì phải chờ nhận thêm số tiếp theo Nếu số tiếp theo là 0 thì quyết định số 0 trước là A, nếu số tiếp theo là 1 thì chờ nhận thêm một số nữa, rồi cứ tiếp tục như vậy
Thuật toán giải mã (hình 4.3 c) giả sử bên thu đã có sẵn bảng từ mã và bảng mã ASCII tương
ứng Dòng bit thu được xử lý trong biến DÒNG BIT.ì Biến TỪ MÃ được dùng để lưu các bit vào mỗi từ mã trong khi các từ mã này được hình thành dần Như ta thấy từ lưu đồ, mỗi khi từ