You are on page 1of 9

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH


KHOA CÔNG NGHỆ ĐIỆN TỬ

BÁO CÁO TIỂU LUẬN


MÔN CƠ SỞ VIỄN THÔNG

MÃ HÓA NGUỒN

GV: Bùi Thư Cao


LỚP: DHDTVT17B

STT Thành viên nhóm MSSV


1 Nguyễn Minh Đạt 21095191
2 Nguyễn Ngọc Trung 21092001
3 Nguyễn Quốc Bảo 21087641
4 Bùi Trần Vĩnh Hiệp 21084651

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023

1
MỤC LỤC
Mục lục....................................................................................................................2
Giới thiệu.................................................................................................................3
PHẦN 1 Mã hóa thể hiện..........................................................................................3
PHẦN 2 Mã hóa nén dữ liệu....................................................................................3
2.1 Mã hóa Shanon-Fano....................................................................................4
2.2 Mã hóa Huffman...........................................................................................6
2.3 Mã hóa Run-Length......................................................................................7
2.4 Mã hóa Lempel-zip.......................................................................................8
PHẦN 3 Ứng dụng...................................................................................................9

2
GIỚI THIỆU
Khái niệm chung Mã hóa nguồn:
-Là phép biến đổi đầu tiên cho nguồn tin nguyên thủy
-Đầu vào của phép biến đổi này có thể là: nguồn tin rời rạc hoặc nguồn tin liên tục
-Trong cả hai trường hợp mục đích chính của phép mã hóa nguồn là biểu diễn thông tin
với tài nguyên tối thiểu

Về bản chất, mã hóa nguồn là quá trình rút ngắn các bit tín hiệu dư thừa để có thể sử
dụng tối đa dung lượng của kênh truyền. Nguồn thông tin có thể là dữ liệu thoại, số liệu
hay hình ảnh. Tín hiệu được mã hóa thành các bit thông tin theo những quy tắc khác
nhau, để nhằm đạt được tới giới hạn Entropi của nguồn (Entropi chỉ ra lượng thông tin có
trong mỗi ký tự, vì tần xuất xuất hiện của mỗi ký tự là khác nhau, nên mỗi ký tự mang
một lượng thông tin khác nhau). Một số phương pháp mã hóa nguồn nổi tiếng như
Huffman, Shannon Fano, Lempel-Ziv-Welch...

PHẦN 1 MÃ HÓA THỂ HIỆN


Định nghĩa : mã hóa thể hiện nhằm mục đích mô tả sự vật hiện tượng bằng các ngôn ngữ
của chủ thể.
Ví dụ 1: Mã hoá ASCII dùng để mô tả sự vật dưới dạng văn bản để con người có thể hiểu
được.
Ví dụ 2: Mã hoá nhị phân được sử dụng để mô tả sự vật bằng ngôn ngữ của của máy tính.
Trường hợp có 8 trạng thái được biểu diễn mã nhị phân đồng đều 3 bit, từ 000 đến 111
Ví dụ 3: khi bạn đăng nhập vào một trang web mật khẩu mà bạn nhập sẽ được chuyển
thành một chuỗi dài các kí tự bằng một thứ gọi là hash function.

PHẦN 2 MÃ HÓA NÉN DỮ LIỆU


Định nghĩa : Mã hóa nén dữ liệu sử dụng các thuật toán loại bỏ các thông tin mang tính
chất lặp lại trong dữ liệu nguồn.

3
2.1 Mã hoá Shanon-Fano
Giới thiệu chung:
-Thuật toán Shannon Fano là một kỹ thuật mã hóa entropy để nén dữ liệu khôngmất dữ
liệu của đa phương tiện. Được đặt theo tên của Claude Shannon và Robert Fano, nó chỉ
định một mã cho mỗi biểu tượng dựa trên xác suất xuất hiện của chúng. Đó là một lược
đồ mã hóa có độ dài thay đổi, nghĩa là, các mã được gán cho các ký hiệu sẽ có độ dài
khác nhau. Độc lập với nhau, Shannon và Fano cùng xây dựng phương pháp thống kê tối
ưu dựa trên cùng 1 cơ sở. Đây chính là bước khởi đầu cho sự phát triển của các kỹ thuật
mã hoá nén dữ liệu phát triển sau này.
Tính chất mã hóa Shanon-Fano: Độ dài từ mã tỉ lệ nghịch với xác suất xuất hiện .
Các bước lập mã:
1. Sắp xếp nguồn tin theo thứ tự giảm dần của xác suất xuất hiện
2. Chia nguồn tin thành 2 nhóm sao cho xác suất xuất hiện mỗi nhóm xấp xỉ bằng nhau.
3. Gán cho mỗi nhóm ký mã 0 hay 1
4. Coi mỗi nhóm như nguồn tin mới, quay trở lại làm bước 2, cho đến khi mỗi nhóm chỉ
còn chứa duy nhất 1 tin
5. Từ mã ứng với mỗi tin là tổ hợp các từ mã tương ứng (viết từ trái sang phải)
Ví dụ : Cho từ mã “ day gay nua di “

4
Nhận xét Mã hóa Shanon-Fano:
-xây dựng trên cùng một cơ sở độ dài từ mã tỉ lệ nghịch với xác suất xuất hiện, không cho
phép lập mã một cách duy nhất vì sự chia nhóm trên cơ sở đồng đều và tổng xác suất nên
có thể có nhiều cách chia.
- Sự lập mã theo cách chia nhóm trên cơ sở đồng xác suất tạo cho bộ mã có tính Prefix.
Ưu điểm:
- Đơn giản, dễ thực hiện.
Nhược điểm:
-Thuật toán Shanon có hệ số nén khá thấp và yêu cầu khá phức tạp nên hiểm khi được sử
dụng.
2.2 Mã hóa Huffman
Giới thiệu chung:
-Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện
tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các màng bé hơn 64KB.
Nhược điểm của nó là phải chứa cả bảng mã vào tập tin nén thì phía nhận mới có thể giải
mã được do đó hiệu suất nén chỉ cao khi ta thực hiện nén các tập tin lớn.

Nguyên lý:
-Nguyên lý của phương pháp Huffman là mã hóa các bytes trong tệp dữ liệu nguồn bằng
biển nhị phân. Nó tạo mã độ dài biển thiên là một tập hợp các bits. Đây là phương pháp
nên kiểu thống kê, những ký tự xuất hiện nhiều hơn sẽ có mã ngắn hơn (gần giống
Shannon-Fano).

Tính chất mã Huffman: Độ dài từ mã tỉ lệ nghịch với xác suất xuất hiện
Các bước lập mã:
Bước 1: Tính xác suất xuất hiện của kí tự và sắp xếp theo thứ tự giảm dần.
Bước 2: Hai xác suất thấp nhất được hợp lại thành một tin mới có xác suất bằng tổng của
2 xác suất thành phần.
Bước 3: Sắp xếp lại các xác suất theo thứ tự giảm dần.
Bước 4: Lặp lại các bước 2 và 3 cho đấn khi chỉ còn 1 tin với xác suất bằng 1.

5
Nhận xét Mã hóa Huffman:
Ưu điểm :
-Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện
tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các màng bé hơn 64KB.
Nhược điểm:
- Mã Huffman chỉ thực hiện được khi biết được tần suất xuất hiện của các ký tự.
- Mã Huffman chỉ giải quyết được độ dư thừa phân bố ký tự.
- Huffman tĩnh đòi hỏi phải xây dựng cây nhị phân sẵn chứa các khả năng. Điều này đòi
hỏi thời gian không ít do ta không biết trước kiểu dữ liệu sẽ được thực hiện nén.
- Quá trình giải nén phức tạp do chiều dài mã không biết trước cho đến khi ký tự đầu tiên
được tìm ra.

6
2.3 Mã hóa Run-Length
Giới thiệu chung Mã hóa Run-Length:
Loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự lặp lại,
điều này thường thấy trong các tập tin đồ họa bitmap, các vùng dữ liệu hằng của các tập
tin chương trình, một số tập tin văn bản...
Tính chất mã Run Length: Từ mã hóa được phát ra dựa vào chuỗi các ký tự/ bít giống
nhau.

Ví dụ, xét chuỗi sau:


AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD

Chuỗi này có thể được mã hoá một cách cô đọng hơn bằng cách thay thế chuỗi kí tự lập
lại bằng một thể hiện duy nhất của kí tự lặp lại cùng với một biển đếm số lần kí tự đó
được lặp lại. Ta muốn nói rằng chuỗi này gồm bốn chữ A theo sau bởi ba chữ B rồi lại
theo sau bởi hai chữ A, rồi lại theo sau bởi năm chữ B... Việc nén một chuỗi theo phương
pháp này được gọi là mã hoá độ dài loạt. Khi có những loạt dài, việc tiết kiệm có thể là
đáng kể. Có nhiều cách để thực hiện ý tưởng này, tuỳ thuộc vào các đặc trưng của ứng
dụng (các loạt chạy có khuynh hướng tương đối dài hay không ? Có bao nhiêu bít được
dùng để mã hoá các kí tự đang được mã ?).

Nếu ta biết rằng chuỗi của chúng ta chỉ chứa các chữ cái, thì ta có thể mã hoá biển
đếm một cách đơn giản bằng cách xen kẻ các con số với các chữ cái. Vì vậy chuỗi kí tự
trên được mã hoá lại như sau: 4A3BAA5B8CDABCB3A4B3CD

Ở đây "4A" có nghĩa là "bốn chữ A"... Chú ý là không đáng để mã hoá các loạt chạy có
độ dài 1 hoặc 2 vì cần đến hai kí tự để mã hoá .

Đối với các tập tin nhị phân một phiên bản được tinh chế của phương pháp này được
dùng để thu được sự tiết kiệm đáng kể. Ý tưởng ở đây là lưu lại các độ dài loạt, tận dụng
sự kiện các loạt chạy thay đổi giữa 0 và 1 để tránh phải lưu chính các số 0 và 1 đó. Điều
này giả định rằng có một vài loạt chạy ngắn (Ta tiết kiệm các bịt trên một loạt chạy chỉ
khi độ dài của đường chạy là lớn hơn số bịt cần để biểu diễn chính nó trong dạng nhị
phân), nhưng khó có phương pháp mã hoá độ dài loạt nào hoạt động thật tốt trừ phi hầu
hết các loạt chạy đều dài.

7
2.4 Mã hóa Lempel-zip
Giới thiệu chung Mã hóa Lempel-zip:
-LZW là một phương pháp nén được phát minh bởi Lempel - Zip và Welch. Nó hoạt
động đựa trên một ý tưởng rất đơn giản là người mã hoá và người giải mã cùng xây dựng
bảng mã. Bảng mã này không cần được lưu kèm với dữ liệu trong quá trình nén, mà khi
giải nén, người giải nén sẽ xây dựng lại nó.
Nguyên tắc hoạt động của nó như sau:
- Một xâu kí tự là một tập hợp từ hai kí tự trở lên.
- Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu hiệu (token) riêng.
- Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay thế bằng dấu hiệu của nó. Phần
quan trọng nhất của phương pháp nén này là phải tạo một mảng rất lớn dùng để lưu giữ
các xâu kí tự đã gặp (Mảng này được gọi là "Từ điển"). Khi các byte dữ liệu cần nén
được đem đến, chúng liền được giữ lại trong một bộ đệm chứa (Accumulator) và đem so
sánh với các chuỗi đã có trong "từ điển". Nếu chuỗi dữ liệu trong bộ đệm chứa không có
trong "từ điển" thì nó được bổ sung thêm vào "từ điển" và chỉ số của chuỗi ở trong "từ
điển" chính là dấu hiệu của chuỗi. Nếu chuỗi trong bộ đệm chứa đã có trong "từ điển" thì
dấu hiệu của chuỗi được đem ra thay cho chuỗi ở dòng dữ liệu ra.
Có bốn qui tắc để thực hiên việc nén dữ liệu theo thuật toán LZW là:
qui tắc 1: 256 dấu hiệu đầu tiên được dành cho các kí tự đơn (0 - 0ffh).
qui tắc 2: Cố gắng so sánh với "từ điển" khi trong bộ đệm chứa đã có nhiều hơn hai kí tự.
qui tắc 3: Các kí tự ở đầu vào (Nhận từ tập tin sẽ được nén) được bổ sung vào bộ đệm
chứa đến khi chuỗi kí tự trong bộ đệm chứa không có trong "từ điển".
qui tắc 4: Khi bộ đệm chứa có một chuỗi mà trong "từ điển" không có thì chuỗi trong bộ
đệm chứa được đem vào "từ điển". Kí tự cuối cùng của chuỗi kí tự trong bộ đệm chứa
phải ở lại trong bộ đệm chứa để tiếp tục tạo thành chuỗi mới.
Tính chất: Từ mã hiện tại được xác định dựa vào các từ mã trước đó
Các bước lập mã:
Bước 1: Xác định chuỗi ký hiệu cơ sở
Bước 2: Lập bảng mã cơ sở bằng cách
✓ Liệt kê các chuỗi ký hiệu cơ sở, đánh số thứ tự tương ứng từ 1 và tăng dần
✓ Viết mã nhị phân ứng với số thứ tự vị trí xuất hiện.
✓ Từ mã cơ sở được tạo ra bằng cách ghép từ mã nhị phân của chuỗi ký hiệu cơ sở trước
đó với bít còn lại.
Bước 3: Viết mã nguồn

Ví dụ : cho chuỗi nguồn “ 010110100101”


Bước 1 : Xác định các chuỗi kí hiệu cơ sở { 0,1,01,10,100,101 }
8
Bước 2 : Lập bảng mã cơ sở
Mã nhị phân Chuỗi cơ sở Từ mã
001 0 000 0
010 1 000 1
011 01 001 1
100 10 010 0
101 100 100 0
110 101 100 1

PHẦN 3 Ứng dụng :


-Lưu trữ.
-Truyền dữ liệu.
-Dùng trong các chương trình nén như: compress, pack trong Unit và winzip, -winrar
trong Windowns.

You might also like