Tải bản đầy đủ (.pdf) (69 trang)

Nén dữ liệu kết hợp với các phương pháp biến đổi sơ bộ dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.15 MB, 69 trang )

..

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CNTT & TRUYỀN THÔNG

Nguyễn Thành Trung

NÉN DỮ LIỆU KẾT HỢP VỚI CÁC PHƢƠNG PHÁP
BIẾN ĐỔI SƠ BỘ DỮ LIỆU
Chuyên ngành : KHOA HỌC MÁY TÍNH
Mã số

: 60 48 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƢỜI HƢỚNG DẪN KHOA HỌC

TS Bùi Văn Thanh

Thái Nguyên, năm 2013

Số hóa bởi trung tâm học liệu

/>

ii

LỜI CAM ĐOAN
Tôi xin cam đoan Luận văn này đƣợc thực hiện bằng cơng sức của mình theo
sự hƣớng d n của TS Bùi Văn Thanh, không sao chép từ cơng trình khác. Mọi


thơng tin tham khảo đều đƣợc trích d n đầy đủ. Nếu có gì gian dối tơi xin chịu hoàn
toàn trách nhiệm.
Thái Nguyên, tháng 9 năm 2013
Học viên

Nguyễn Thành Trung

Số hóa bởi trung tâm học liệu

/>

iii

LỜI CẢM ƠN
Tơi xin chân thành nói lời cảm ơn Thầy giáo TS Bùi Văn Thanh, ngƣời đã
tận tình giúp đỡ hƣớng d n tơi trong suốt q trình thực hiện luận văn cùng với
những kinh nghiệm quý báu trong nghiên cứu khoa học cũng nhƣ cuộc sống từ
Thầy.
Tôi chân thành cảm ơn Trƣờng Đại học Công nghệ Thông tin và Truyền
thông - Đại học Thái Nguyên, Khoa Công nghệ Thông tin đã tạo điều kiện tốt nhất
cho tôi đƣợc học tập và nghiên cứu. Xin cảm ơn quý Thầy giáo, cơ giáo đã tận tình
giảng dạy, giúp đỡ và hƣớng d n tơi trong suốt khóa học.
Cảm ơn các bạn đồng nghiệp đã động viên đóng góp ý kiến cho luận văn của
tôi.
Mặc dù đã cố gắng hết sức cùng với sự tận tâm của thầy giáo hƣớng d n,
song do trình độ cịn hạn chế nên Luận văn khó tránh khỏi những thiếu sót. Tơi rất
mong nhận đƣợc sự thơng cảm và góp ý của q thầy cơ và các bạn.
Thái Nguyên, tháng 9 năm 2013
Học viên


Nguyễn Thành Trung

Số hóa bởi trung tâm học liệu

/>

iv

MỤC LỤC
Trang
LỜI CAM ĐOAN ..................................................................................................................ii
LỜI CẢM ƠN .......................................................................................................................iii
MỤC LỤC ............................................................................................................................ iv
DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT .................................................. vi
DANH MỤC CÁC HÌNH VẼ & BẢNG BIỂU ..................................................................vii
CHƢƠNG I: TỔNG QUAN VỀ NÉN DỮ LIỆU ................................................................. 1
1.1 Tổng quan về nén dữ liệu ............................................................................................ 1
1.1.1 Các khái niệm cơ bản ............................................................................................ 1
1.1.1.1 Dữ liệu, thông tin và mã hóa.......................................................................... 1
1.1.1.2 Cơ bản về lý thuyết thơng tin ......................................................................... 4
1.1.1.3 Sự dƣ thừa dữ liệu .......................................................................................... 5
1.1.1.4 Nén dữ liệu ..................................................................................................... 7
1.1.1.5 Quá trình nén và giải nén ............................................................................... 8
1.1.1.6 Tỷ lệ nén ........................................................................................................ 9
1.1.2 Phân loại các phƣơng pháp nén dữ liệu ................................................................ 9
1.1.2.1 Nén có hao hụt ............................................................................................... 9
1.1.2.2 Nén khơng hao hụt ....................................................................................... 10
1.1.3 Mơ hình và mã hóa ............................................................................................. 15
1.1.4 Các kết quả cơ bản về nén dữ liệu ...................................................................... 18
1.1.5 Tổng quan về các trình nén đang đƣợc sử dụng rộng rãi hiện nay ..................... 20

1.2 Mã hóa Entropy ......................................................................................................... 21
1.2.1 Mã hóa Huffman ................................................................................................. 21
1.2.1.1 Q trình mã hóa.......................................................................................... 25
1.2.1.2 Q trình giải mã ......................................................................................... 26
1.2.2 Mã hóa số học ..................................................................................................... 27
1.2.2.1 Mơ hình mã hóa số học ................................................................................ 27
1.2.2.2 Q trình mã hóa.......................................................................................... 27
1.2.2.3 Q trình giải mã ......................................................................................... 29
CHƢƠNG II: NÉN KẾT HỢP VỚI KỸ THUẬT BIẾN ĐỔI DỮ LIỆU ........................... 32
2.1 Các kỹ thuật biến đổi dữ liệu cơ bản ......................................................................... 32

Số hóa bởi trung tâm học liệu

/>

v

2.1.1 Kỹ thuật biến đổi Burrow-Wheeler .................................................................... 32
2.1.1.1 Biến đổi BWT thuận .................................................................................... 32
2.1.1.2 Biến đổi BWT nghịch .................................................................................. 35
2.1.2 Kỹ thuật biến đổi Move-To-Front (MTF)........................................................... 38
2.1.2.1 Biến đổi MTF thuận ..................................................................................... 38
2.1.2.2 Biến đổi MTF nghịch ................................................................................... 41
2.2 Một số cải tiến đối với thuật toán MTF ..................................................................... 43
2.2.1 Q trình mã hóa................................................................................................. 44
2.2.2 Q trình giải mã ................................................................................................ 45
2.3 Mơ hình nén kết hợp với BWT&MTF....................................................................... 46
2.3.1 Q trình nén ...................................................................................................... 46
2.3.2 Quá trình giải nén ............................................................................................... 48
CHƢƠNG III: KẾT QUẢ CÀI ĐẶT THỬ NGHIỆM ........................................................ 50

3.1 Dữ liệu m u ............................................................................................................... 51
3.2 Kết quả thực nghiệm .................................................................................................. 53
3.2.1 Tỷ lệ nén ............................................................................................................. 53
3.2.2 Thời gian nén và giải nén.................................................................................... 55
3.3 So sánh và đánh giá kết quả thử nghiệm ................................................................... 57
3.4 Kết luận và hƣớng phát triển tiếp............................................................................... 57
3.4.1 Kết luận: .............................................................................................................. 57
3.4.2 Hƣớng phát triển của đề tài ................................................................................. 58
TÀI LIỆU THAM KHẢO ................................................................................................... 59

Số hóa bởi trung tâm học liệu

/>

vi

DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
Từ viết tắt

TT

Viết đầy đủ

1

ARC

ARithmetic Coding

2


De_ARC

Decoder ARithmetic Coding

3

ASCII

American Standard Code for Information Interchange

4

BIT

BInary digiT

5

BPS

Bits Per Second

6

BWT

Burrow-Wheeler Transform

7


InvBWT

Invert Burrow-Wheeler Transform

8

EC

Entropy Coding

9

LZW

Lempel-Ziv-Welch

10

MTF

Move-To-Front

11

InvMTF

Invert Move-To-Front

12


RLE

Run Length Encoding

Số hóa bởi trung tâm học liệu

/>

vii

DANH MỤC CÁC HÌNH VẼ & BẢNG BIỂU
Hình 1.1: Mơ hình q trình xử lý thơng tin .......................................................................... 1
Hình 1.2: Dữ liệu trong q trình mã hóa .............................................................................. 3
Hình 1.3: Dữ liệu trong quá trình giải mã .............................................................................. 4
Hình 1.4: Quá trình nén và giải nén ....................................................................................... 8
Hình 1.5: Quá trình truyền file multimedia trên mạng .......................................................... 8
Hình 1.6: Nén có hao hụt (lossy compression) ...................................................................... 9
Hình 1.7: Nén khơng hao hụt (lossless compression) .......................................................... 10
Bảng 1.1: Quá trình mã hóa từ điển ..................................................................................... 12
Bảng 1.2: Q trình giải mã từ điển ..................................................................................... 13
Bảng 1.3: Dữ liệu m u cho mã hóa Huffman ...................................................................... 13
Hình 1.8: Cây nhị phân trong mã Huffman ở bảng 1.3 ....................................................... 14
Hình 1.9: Một dãy các giá trị dữ liệu ................................................................................... 15
Hình 1.10: Một dãy các giá trị dữ liệu ................................................................................. 16
Bảng 1.4: Mã với các từ mã chiều dài thay đổi ................................................................... 17
Hình 1.11: Minh họa nén theo phƣơng pháp Huffman ........................................................ 24
Hình 1.12: Cây Huffman ..................................................................................................... 25
Hình 1.13: Mơ hình nén theo mã số học .............................................................................. 27
Hình 1.14: Mơ hình q trình nén........................................................................................ 28

Bảng 1.5: Quá trình xác định [bk, lk) trong mã hóa số học .................................................. 28
Hình 1.15: Mơ tả q trình nén theo bảng 1.5 ..................................................................... 29
Hình 2.1: Quá trình quay chuỗi “LAHABANA” ................................................................ 32
Hình 2.2: Kết quả sắp xếp theo thứ tự từ điển ..................................................................... 33
Hình 2.3: Mơ tả q trình biến đổi BWT nghịch ................................................................. 36
Bảng 2.1: Quá trình mã hóa MTF ........................................................................................ 39
Hình 2.4: Q trình biến đổi MTF thuận chuỗi “HLNBAAAA” ........................................ 39
Bảng 2.2: Quá trình giải mã MTF....................................................................................... 41
Hình 2.5: Quá trình biến đổi MTF nghịch ........................................................................... 42
Hình 2.6: Q trình mã hóa MTF (cải tiến) ......................................................................... 44
Hình 2.7: Quá trình giải mã MTF (cải tiến) ......................................................................... 45
Hình 2.8: Lƣợc đồ nén dữ liệu BWT_MTF_EC .................................................................. 46
Hình 2.9: Kết quả thực nghiệm với BWT (quá trình thuận) ................................................ 47

Số hóa bởi trung tâm học liệu

/>

viii

Hình 2.10: Kết quả thực nghiệm với MTF (quá trình thuận) .............................................. 47
Hình 2.11: Lƣợc đồ giải nén dữ liệu BWT_MTF_EC ......................................................... 48
Hình 2.12: Kết quả thực nghiệm MTF (quá trình nghịch) ................................................... 48
Hình 2.13: Kết quả thực nghiệm BWT (quá trình nghịch) .................................................. 49
Hình 3.1: Chƣơng trình cài đặt thử nghiệm ......................................................................... 50
Bảng 3.1: Mô tả các tệp tin m u để thực nghiệm với The Canterbury Corpus ................... 51
Bảng 3.2: Mô tả các tệp tin m u để thực nghiệm với The Large Corpus ............................ 52
Bảng 3.3: Mô tả các tệp tin m u để thực nghiệm ................................................................ 52
Bảng 3.4: Tỷ lệ nén theo


với Canterbury Corpus ............................................................ 53

Bảng 3.5: Tỷ lệ nén theo

với Canterbury Corpus lớn...................................................... 54

Bảng 3.6: Tỷ lệ nén theo

.................................................................................................. 54

Bảng 3.7: Thời gian nén và giải nén theo giây với Canterbury Corpus .............................. 55
Bảng 3.8: Thời gian nén và giải nén theo giây với Canterbury Corpus lớn ........................ 56
Bảng 3.9: Thời gian nén và giải nén theo giây .................................................................... 56

Số hóa bởi trung tâm học lieäu

/>

ix

MỞ ĐẦU
1. Lý do chọn đề tài
Trong thời đại CNTT, nhu cầu trao đổi dữ liệu ngày một tăng, dữ liệu cần
chia sẻ, trao đổi có dung lƣợng ngày một lớn hơn, phức tạp hơn và đa dạng hơn.
Việc nén dữ liệu nhằm mục đích làm giảm kích thƣớc của dữ liệu gốc giúp cho việc
xử lý dữ liệu nhanh hơn (sao chép, di chuyển, tải lên, tải xuống,…).
Việc nén dữ liệu là tất yếu cần thiết do hai lý do chính sau đây. Thứ nhất là
do lƣu trữ: dữ liệu sau khi nén có dung lƣợng nhỏ hơn, do vậy cần ít khơng gian lƣu
trữ hơn. Thứ hai là giảm thiểu thời gian truyền: dữ liệu sau khi nén có dung lƣợng
nhỏ hơn nên đƣợc truyền nhanh hơn.

Do vậy, cần có các thuật tốn nén dữ liệu hiệu quả hơn và nhanh hơn v n
luôn luôn tăng, nhất là với các ứng dụng trực tuyến (hình ảnh, âm thanh). Thực tế là
các thuật toán nén dữ liệu đã đƣợc liên tục phát triển kể từ khi giới hạn lý thuyết về
hiệu suất nén dữ liệu (đƣợc định nghĩa nhƣ là tỷ lệ các ký tự mã trên một ký tự
nguồn) đã đƣợc chứng minh một cách chặt chẽ dựa trên lý thuyết thông tin.
Nhiều kỹ thuật nén (không mất thơng tin) đã đƣợc phát triển nhƣ nhóm các
phƣơng pháp với tên gọi mã hóa entropy bao gồm mã số học và mã Huffman. Sau
đó, hàng loạt các kỹ thuật mới ra đời để cải tiến các kỹ thuật trên nhƣ: mã hóa RLE
(Run Length Encoding), LZW (Lempel-Ziv-Welch),...
Nhƣng nhìn chung khơng có kỹ thuật nén nào có thể áp dụng một cách hiệu
quả với tất cả các loại dữ liệu. Có những thuật tốn cho hiệu suất nén cao, nhƣng cài
đặt phức tạp và mất nhiều thời gian nén cũng nhƣ giải nén. Chính vì vậy, để đạt
đƣợc hiệu suất nén cao với thuật toán tƣơng đối đơn giản và thời gian nén/giải nén
chấp nhận đƣợc cần phối hợp các thuật toán biến đổi sơ bộ dữ liệu vào để chuyển
dữ liệu cần nén sang dạng dữ liệu thích hợp, sau đó áp dụng một thuật tốn nén phù
hợp để tăng hiệu suất nén.
Với ý tƣởng trên, chúng ta có thể sử dụng kỹ thuật biến đổi Burrow-Wheeler
(BWT) kết hợp với kỹ thuật Move-To-Front (MTF) để xử lý sơ bộ dữ liệu cần nén
với mục đích thay đổi tính chất thống kê của dữ liệu sao cho việc áp dụng các thuật

Số hóa bởi trung tâm học liệu

/>

x

tốn nén trở lên dễ dàng hơn, sau đó áp dụng phƣơng pháp nén số học hoặc nén
Huffman để đƣợc kết quả mong muốn.
2. Nhiệm vụ nghiên cứu
- Tìm hiểu tổng quan về nén dữ liệu, kỹ thuật biến đổi dữ liệu BurrowsWheeler, kỹ thuật biến đổi dữ liệu Move-To-Front, thuật toán nén số học và thuật

toán nén Huffman.
- Xây dựng ứng dụng thử nghiệm phối hợp kỹ thuật biến đổi BurrowsWheeler và kỹ thuật biến đổi Move-To-Front để sơ chế dữ liệu trƣớc khi sử dụng
phƣơng pháp nén số học hoặc nén Huffman và áp dụng trên tất cả các dữ liệu.
3. Đối tƣợng và phạm vi nghiên cứu
- Tổng quan về nén dữ liệu.
- Tìm hiểu kỹ thuật biến đổi dữ liệu Burrows-Wheeler.
- Tìm hiểu kỹ thuật biến đổi dữ liệu Move-To-Front.
- Tìm hiểu thuật tốn nén số học và nén Huffman.
- Cài đặt thử nghiệm chƣơng trình ứng dụng nén số học hoặc nén Huffman
kết hợp với Burrows-Wheeler và Move-To-Front.
4. Phƣơng pháp nghiên cứu
Sử dụng các phƣơng pháp nghiên cứu chính sau:
-

Phƣơng pháp nghiên cứu lý thuyết.

-

Phƣơng pháp thực nghiệm.

-

Phƣơng pháp trao đổi khoa học, lấy ý kiến chuyên gia.

5. Ý nghĩa khoa học của đề tài
- Giúp tìm hiểu, đánh giá khái quát về nén dữ liệu. Nén = mơ hình + mã hóa.
- Xây dựng đƣợc chƣơng trình nén phục vụ cho cơng tác lƣu trữ tại đơn vị
đang cơng tác.

Số hóa bởi trung tâm học liệu


/>

1

CHƢƠNG I: TỔNG QUAN VỀ NÉN DỮ LIỆU
1.1 Tổng quan về nén dữ liệu
1.1.1 Các khái niệm cơ bản
1.1.1.1 Dữ liệu, thơng tin và mã hóa
Dữ liệu có thể xem là những ký hiệu hoặc tín hiệu mang tính rời rạc và
khơng có cấu trúc, ý nghĩa rõ ràng. Khi dữ liệu đƣợc tổ chức lại có cấu trúc hơn,
đƣợc xử lý và mang đến cho con ngƣời những ý nghĩa, hiểu biết nào đó thì khi đó
nó trở thành thơng tin. Nói khác đi, từ dữ liệu và xử lý dữ liệu con ngƣời có đƣợc
thơng tin.
Thơng tin là những gì con ngƣời thu nhận đƣợc từ dữ liệu và xử lý dữ liệu
nhằm tạo ra sự hiểu biết, tạo ra các tri thức và những nhận thức tốt hơn về tự nhiên
và xã hội. Nói cách khác, thơng tin là dữ liệu đã qua xử lý, đối chiếu và trở nên có ý
nghĩa đối với ngƣời dùng.
Q trình xử lý thơng tin tổng qt

Hình 1.1: Mơ hình q trình xử lý thơng tin

Một cách tổng qt, việc xử lý thơng tin bao gồm năm q trình sau:
 Q trình thu nhận thơng tin: Nạp, ghi nhớ thơng tin vào vùng nhớ trong
não hoặc các vật lƣu trữ trung gian (giấy, đĩa từ, …).
 Q trình tìm kiếm thơng tin: Nhớ lại thông tin trong vùng nhớ não, hoặc
thu thập, truy tìm thơng tin trong các vật lƣu trữ thơng tin.
 Q trình biến đổi thơng tin: Các hoạt động xử lý, biến đổi thông tin d n
đến việc thay đổi thơng tin, tạo ra thơng tin mới.


Số hóa bởi trung tâm học liệu

/>

2

 Q trình truyền thơng tin: Truyền hoặc d n thông tin từ nơi này sang nơi
khác, từ đối tƣợng này sang đối tƣợng khác.
 Quá trình lý giải, suy luận thơng tin: Các hoạt động mang tính trí tuệ và
sáng tạo nhƣ phân tích, so sánh, lý giải, suy luận, đối chiếu, đánh giá vai
trị, ý nghĩa của thơng tin.
Thông tin không hiện hữu nhƣ các thiết bị vật lý, nó tồn tại nhƣ một dữ liệu
logic đƣợc chứa trong các phƣơng tiện vật lý nhƣ đĩa CD hay các kênh truyền thơng
tin. Vì thế dữ liệu đƣợc xem nhƣ dạng cơ bản của một số thông tin thực. Điều này
tạo nên sự khác biệt giữa các thông tin với nhau nhƣ văn bản, đồ họa, âm thanh,
hình ảnh… Một lƣợng lớn thông tin cần phải đƣợc tổ chức, lƣu trữ dƣới dạng các
tệp tin hoặc các thông điệp.
Thuật ngữ dữ liệu trong nén dữ liệu là một dạng số hóa của thơng tin thực
đƣợc xử lý bởi một chƣơng trình máy tính nào đó. Dữ liệu trƣớc khi đƣợc nén gọi là
dữ liệu nguồn.
Dữ liệu có thể phân loại thành các lớp: văn bản, âm thanh, hình ảnh,
video,…
 Dữ liệu văn bản thƣờng đƣợc biểu diễn bằng 8 bit mã ASCII mở rộng.
Chúng xuất hiện trong các file với phần mở rộng „.txt‟, „.tex‟, „.doc‟.
 Dữ liệu nhị phân gồm các file cơ sở dữ liệu, dữ liệu bảng tính, các file thực
thi và các mã chƣơng trình. Các file đó thƣờng có phần mở rộng là .bin.
 Dữ liệu hình ảnh thƣờng đƣợc biểu diễn bằng mảng hai chiều các điểm ảnh
mà mỗi điểm ảnh đƣợc kết hợp với mã màu của nó. Phần mở rộng .bmp biểu
diễn một kiểu file ảnh bitmap trong Windows và .psd với định dạng file riêng
của Adobe Photoshop.

 Dữ liệu đồ họa đƣợc biểu diễn theo dạng các vectơ hay các phƣơng trình
tốn học. Một ví dụ của định dạng dữ liệu là .png, đây là chu n với Portable
Network Graphics.
 Dữ liệu âm thanh đƣợc biểu diễn bởi một hàm sóng (tuần hồn). Một ví dụ
phổ biến là các file âm thanh theo định dạng .wav.

Số hóa bởi trung tâm học liệu

/>

3

Mã hóa là phƣơng pháp để biến thơng tin (phim ảnh, văn bản, hình ảnh...) từ
định dạng bình thƣờng sang dạng thơng tin khơng thể hiểu đƣợc nếu khơng có
phƣơng tiện giải mã.
Giải mã là phƣơng pháp để đƣa từ dạng thơng tin đã đƣợc mã hóa về dạng
thơng tin ban đầu, q trình ngƣợc của mã hóa.
Một hệ thống mã hóa bao gồm các thành phần:
Thơng tin trƣớc khi mã hóa, kí hiệu là P
Thơng tin sau khi mã hóa, kí hiệu là C
Chìa khóa, kí hiệu là K
Phƣơng pháp mã hóa/giải mã, kí hiệu là E/D.
Q trình mã hóa đƣợc tiến hành bằng cách áp dụng hàm tốn học E lên
thông tin P, vốn đƣợc biểu diễn dƣới dạng số, để trở thành thơng tin đã mã hóa C.
Quá trình giải mã đƣợc tiến hành ngƣợc lại: áp dụng hàm D lên thông
tin C để đƣợc thông tin đã giải mã P.
Các hệ thống mã hóa: mã hóa đối xứng và mã hóa bất đối xứng.
Mã hóa đối xứng sử dụng cùng một khóa để mã hóa/giải mã. Mã hóa đối
xứng xử lí nhanh nhƣng độ an tồn khơng cao.
Mã hóa bất đối xứng sử dụng hai khóa khác nhau để mã hóa và giải mã

thơng tin. Mã hóa bất đối xứng xử lí chậm hơn, nhƣng độ an tồn và tính thn tiện
trong quản lí khóa cao.

Dữ liệu nguồn

Văn bản

Hình ảnh

Đồ họa

Âm thanh

.txt, .tex, .doc,...

.bmp, .jpg, .gif,...

.png, …

.wav, .mp3, …

File nhị phân nguồn

Mã hóa

File nhị phân đã đƣợc nén

Hình 1.2: Dữ liệu trong q trình mã hóa

Số hóa bởi trung tâm học liệu


/>

4

File nhị phân đã đƣợc nén

Giải mã

File nhị phân đã đƣợc khôi phục

Dữ liệu đã đƣợc giải mã

Văn bản
.txt, .tex, .doc,...

Hình ảnh

Đồ họa

Âm thanh

.bmp, .jpg, .gif,...

.png, …

.wav, .mp3, …

Hình 1.3: Dữ liệu trong quá trình giải mã


1.1.1.2 Cơ bản về lý thuyết thông tin
Lý thuyết thông tin là một ngành khoa học nghiên cứu về thông tin nhằm tạo ra cơ
sở hạ tầng tốt cho việc truyền thơng chính xác, nhanh chóng và an tồn; lƣu trữ có hiệu
quả. Các lĩnh vực nghiên cứu của lý thuyết thông tin là truyền thông, nén dữ liệu và bảo
mật thông tin. Điểm quan trọng trong lĩnh vực lý thuyết thông tin là entropy đƣợc
C.E.Shannon giới thiệu vào năm 1948.

 Entropy
Trong lý thuyết thông tin, Entropy mô tả mức độ hỗn loạn trong một tín hiệu
lấy từ một sự kiện ng u nhiên. Nói cách khác, entropy cũng chỉ ra có bao nhiêu
thơng tin trong tín hiệu, với thơng tin là các phần khơng hỗn loạn ng u nhiên của tín
hiệu.
Ví dụ, nhìn vào một dịng chữ tiếng Việt, đƣợc mã hóa bởi các chữ cái,
khoảng cách và dấu câu, tổng quát là các ký tự. Dịng chữ có ý nghĩa sẽ khơng hiện
ra một cách hoàn toàn hỗn loạn ng u nhiên; ví dụ nhƣ tần số xuất hiện của chữ cái x
sẽ không giống với tần số xuất hiện của chữ cái phổ biến hơn là t. Đồng thời, nếu
dòng chữ v n đang đƣợc viết hay đang đƣợc truyền tải, khó có thể đốn trƣớc đƣợc

Số hóa bởi trung tâm học liệu

/>

5

ký tự tiếp theo sẽ là gì, do đó nó có mức độ ng u nhiên nhất định. Entropy thơng tin
là một thang đo mức độ ng u nhiên này.
Claude E. Shannon đã xây dựng định nghĩa về entropy để thoả mãn các giả
định sau:
• Entropy phải tỷ lệ thuận liên tục với các xác suất xuất hiện của các phần tử
ng u nhiên trong tín hiệu. Thay đổi nhỏ trong xác suất phải d n đến thay đổi nhỏ

trong entropy.
• Nếu các phần tử ng u nhiên đều có xác suất xuất hiện bằng nhau, việc tăng
số lƣợng phần tử ng u nhiên phải làm tăng entropy.
• Có thể tạo các chuỗi tín hiệu theo nhiều bƣớc, và entropy tổng cộng phải
bằng tổng có trọng số của entropy của từng bƣớc.
Shannon cũng chỉ ra rằng bất cứ định nghĩa nào của entropy, cho một tín
hiệu có thể nhận các giá trị rời rạc, thoả mãn các giả định của ơng thì đều có dạng:

Trong đó:
• K là một hằng số, chỉ phụ thuộc vào đơn vị đo.
• n là tổng số các giá trị có thể nhận của tín hiệu.
• i là giá trị rời rạc thứ i.
• p(i) là xác suất xuất hiện của giá trị i.
1.1.1.3 Sự dƣ thừa dữ liệu
Mã hóa nhằm mục đích giảm kích thƣớc dữ liệu bằng cách loại bỏ dƣ thừa
dữ liệu. Việc xác định bản chất các kiểu dƣ thừa dữ liệu rất có ích cho việc xây
dựng các phƣơng pháp mã hóa dữ liệu khác nhau. Nói một cách khác, các phƣơng
pháp mã hóa dữ liệu khác nhau là do sử dụng các kiểu dƣ thừa khác nhau. Ngƣời ta
coi có 4 kiểu dƣ thừa chính:

Số hóa bởi trung tâm học liệu

/>

6

- Sự phân bố ký tự:
Trong một dãy ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn so với
các dãy khác. Do vậy, ta có thể mã hóa dữ liệu một cách cơ đọng hơn. Các dãy ký
tự có tần suất cao đƣợc thay bởi một từ mã nhị phân với số bit nhỏ; ngƣợc lại các

dãy có tần suất xuất hiện thấp sẽ đƣợc mã hóa bởi từ mã có nhiều bit hơn. Đây
chính là bản chất của phƣơng pháp mã hóa Huffman.
- Sự lặp lại của các ký tự:
Kỹ thuật nén dùng trong trƣờng hợp này là thay dãy lặp đó bởi dãy mới gồm
hai thành phần: số lần lặp và ký hiệu dùng để mã. Phƣơng pháp mã hóa kiểu này có
tên là mã hóa loạt dài RLC (Run Length Coding)
Ví dụ:

- Những m u sử dụng tần suất:
Có thể có dãy ký hiệu nào đó xuất hiện với tần suất tƣơng đối cao. Do vậy,
có thể mã hóa bởi ít bit hơn. Đây là cơ sở của phƣơng pháp mã hóa từ điển do
Lempel-Ziv đƣa ra và có cải tiến vào năm 1977, 1978 và do đó có tên gọi là phƣơng
pháp nén LZ77, LZ78. Năm 1984, Tery Welch đã cải tiến hiệu quả hơn và đặt tên là
LZW (Lempel-Ziv-Welch).
- Độ dƣ thừa vị trí:
Do sự phụ thuộc l n nhau của dữ liệu, đôi khi biết đƣợc ký hiệu (giá trị) xuất
hiện tại một vị trí, đồng thời có thể đoán trƣớc sự xuất hiện của các giá trị ở các vị
trí khác nhau một cách phù hợp. Chẳng hạn, ảnh biểu diễn trong một lƣới hai chiều,
một số điểm ở hàng dọc trong một khối dữ liệu lại xuất hiện trong cùng vị trí ở các
hàng khác nhau. Do vậy, thay vì lƣu trữ dữ liệu, ta chỉ cần lƣu trữ vị trí hàng và cột.
Phƣơng pháp nén dựa trên sự dƣ thừa này gọi là phƣơng pháp mã hóa dự đốn.

Số hóa bởi trung tâm học liệu

/>

7

1.1.1.4 Nén dữ liệu
Nhu cầu trao đổi dữ liệu giữa mọi ngƣời ngày một tăng, dữ liệu chúng ta

muốn chia sẻ, trao đổi ngày một lớn hơn, phức tạp hơn và đa dạng hơn. Thông
thƣờng, hầu hết dữ liệu trong máy tính có rất nhiều thơng tin dƣ thừa. Để giải quyết
vấn đề này, các phƣơng pháp và kỹ thuật nén dữ liệu liên tục đƣợc đề xuất và phát
triển. Mục đích chung của các kỹ thuật nén dữ liệu là giảm kích thƣớc của dữ liệu
gốc nhằm giúp cho việc xử lý dữ liệu nhanh hơn (nhƣ sao chép, di chuyển, tải lên,
tải xuống, …).
Trong khoa học máy tính và lý thuyết thông tin n n dữ liệu là q trình mã
hóa thơng tin bằng cách sử dụng ít bit hơn biểu diễn đã đƣợc mã hóa qua việc sử
dụng các lƣợc đồ nén riêng biệt.
Vấn đề là cần bao nhiêu bit? Điều này phụ thuộc vào thuật toán và sự dƣ
thừa dữ liệu. Các dữ liệu khác nhau đòi hỏi các kỹ thuật khác nhau để xác định sự
dƣ thừa và loại bỏ dƣ thừa dữ liệu. Rõ ràng điều này làm cho việc nén dữ liệu trở
nên khó khăn hơn khi tìm ra một thuật tốn nén chung.
Khơng có thuật tốn nào hồn hảo để giải quyết các vấn đề về nén dữ liệu.
Trong các nghiên cứu về nén dữ liệu, về bản chất chúng ta cần phân tích các đặc
tính của dữ liệu cần nén và tìm ra đƣợc các m u đại diện phù hợp nhất thay thế cho
các dữ liệu này. Điều này làm phong phú thêm cho các mơ hình và kỹ thuật nén dữ
liệu đã đƣợc đƣa ra.
Nén dữ liệu có nhiều ứng dụng trong các lĩnh vực:
 Các hệ thống truyền thông cá nhân: Fax, thƣ thoại (voice mail) và điện thoại.
 Các hệ thống máy tính: Cấu trúc bộ nhớ, đĩa và băng.
 Tính tốn di động
 Các hệ thống máy tính phân tán
 Mạng máy tính, đặc biệt là Internet
 Sự phát triển đa phương tiện, hình ảnh, xử lý tín hiệu
 Lưu trữ hình ảnh và hội nghị truyền hình
 Tivi kỹ thuật số và truyền hình vệ tinh …

Số hóa bởi trung tâm học liệu


/>

8

Nén dữ liệu có liên quan đến các ngành khoa học nhƣ:
 Lý thuyết thơng tin
 Lý thuyết mã hóa
 Mạng máy tính và viễn thơng
 Xử lý tín hiệu kỹ thuật số
 Xử lý ảnh
 Đa phương tiện
 Bảo mật máy tính

Nén dữ liệu liên quan đến hai cơng việc: Cơng việc đầu tiên đƣợc gọi là mã
hóa, đó là quá trình ánh xạ dữ liệu gốc thành dãy nhị phân (dữ liệu đã đƣợc mã
hóa). Cơng việc thứ hai là giải mã, đó là q trình xử lý ngƣợc để khôi phục dữ liệu
gốc từ dãy nhị phân.
1.1.1.5 Quá trình nén và giải nén
Quá trình nén và giải nén dữ liệu đƣợc thể hiện qua mơ hình:
Compression
Algorithm

File input

Compressed File output

Decompression
Algorithm

Compressed File input


Decompressed File output

Hình 1.4: Quá trình n n và giải n n

Tuy nhiên đối với các trình duyệt cho việc trình diễn các file multimedia
trong mơi trƣờng mạng, ngƣời ta thƣờng kết hợp các thuật toán nén ở server và giải
nén ở client theo mơ hình sau:

Multimedia file

Compression
Algorithm

Net

Decompression
Algorithm

Hình 1.5: Q trình truyền file multimedia trên mạng

Số hóa bởi trung tâm học liệu

/>
Display File


9

1.1.1.6 Tỷ lệ nén

Tỷ lệ nén là một trong những thông số quan trọng nhất của mọi phƣơng pháp
nén. Tỷ lệ nén dữ liệu đƣợc định nghĩa là tỷ lệ giữa kích thƣớc nén và kích thƣớc
khơng nén.
Tỷ lệ nén =

Kích thƣớc nén

 100%

Kích thƣớc khơng nén

Hiệu suất của nén = (1- tỷ lệ nén)  100%
Tuy nhiên, tỷ lệ nén cao chƣa phải là tất cả để đánh giá hiệu quả của một
phƣơng pháp nén. Bởi vì cịn có các yếu tố khác nhƣ: chi phí về thời gian, khơng
gian (bộ nhớ tạm trong q trình nén và giải nén) và cả độ phức tạp tính tốn.

1.1.2 Phân loại các phƣơng pháp nén dữ liệu
Dựa vào tính chất dữ liệu đƣợc lƣu trữ, ta có thể sử dụng phƣơng pháp nén
phù hợp để có kết quả nén tƣơng đối tốt.
Có hai phƣơng pháp nén dữ liệu là nén dữ liệu có hao hụt (lossy
compression) và nén khơng hao hụt (lossless compression). Thực tế thì cả hai
phƣơng pháp nén đều cho ra kết quả tƣơng tự nhau. Bởi khi nén có hao hụt ta
thƣờng tìm những dữ liệu ít cần thiết để loại bỏ nên bằng mắt thƣờng hầu nhƣ ta
khơng nhận ra việc hao hụt đó.
1.1.2.1 Nén c hao hụt
Nén có hao hụt là phƣơng pháp nén mà khơng lấy lại đƣợc dữ liệu nguyên
bản khi giải nén. Nguyên tắc của phƣơng pháp nén này là khi nén chúng ta cần tìm
ra những đoạn dữ liệu dƣ thừa hoặc có ít tác dụng nhất để loại bỏ đi. Điển hình của
ứng dụng phƣơng pháp này trong thực tế là nén các dữ liệu multimedia nhƣ ảnh,
phim, âm thanh,…


Hình 1.6: N n có hao hụt (lossy compression)

Số hóa bởi trung tâm học liệu

/>

10

Có nhiều giải thuật đƣợc đặt ra để đáp ứng yêu cầu giảm thiểu kích thƣớc
của file sao cho v n duy trì đƣợc chất lƣợng ở mức độ chấp nhận đƣợc. Những giải
thuật này đều dựa trên nền tảng là loại bớt những thông tin mà thị giác và thính giác
của con ngƣời khơng hoặc khó cảm nhận đƣợc, chỉ giữ lại những thơng tin thực sự
ảnh hƣởng tích cực lên khả năng cảm nhận của con ngƣời. Chính vì vậy, các phần
dữ liệu dƣ thừa hoặc các phần dữ liệu khơng làm cho thị giác và thính giác nhận ra
đƣợc sẽ bị loại bỏ. Tỷ lệ nén tỷ lệ nghịch với chất lƣợng nén. Tỷ lệ nén càng cao thì
chất lƣợng nén càng thấp và ngƣợc lại.
1.1.2.2 Nén không hao hụt
Phƣơng pháp nén không hao hụt yêu cầu dung lƣợng của dữ liệu kết quả phải
nhỏ hơn dữ liệu gốc với tỉ lệ chấp nhận đƣợc và không đƣợc hao hụt dữ liệu. Việc
nén dữ liệu đƣợc thực hiện bằng cách tìm những đoạn dữ liệu giống nhau và quy
định chúng thành các ký hiệu, đƣa chúng vào một “từ điển” và sử dụng chúng để
giảm độ lớn của dữ liệu.

Hình 1.7: N n khơng hao hụt (lossless compression)

Nén không hao hụt đạt hiệu quả nén nhỏ, chỉ phù hợp cho các file nhỏ cũng
nhƣ những file có nội dung quan trọng. Quá trình nén và giải nén là quá trình thuận
nghịch, thƣờng đƣợc áp dụng cho text, file thực thi…
Phƣơng pháp nén này thƣờng đƣợc dùng để nén dữ liệu với mục đích lƣu trữ

hoặc truyền tải chúng qua lại nhanh hơn (kích thƣớc dữ liệu nhỏ hơn), tiện lợi hơn
(chỉ việc truyền tải một tệp tin).
Đối với loại nén khơng tổn hao có 3 phƣơng pháp nén, đó là: Run-Length, từ
điển và thống kê (entropy)

Số hóa bởi trung tâm học liệu

/>

11

 Mã hóa Run-lenght (RLE)
Đối với một số loại tập tin, dữ liệu giống nhau lặp đi lặp lại nhiều lần và có
thể lƣu trữ liên tục nhau. Dựa vào đặc điểm này, ta có thể định nghĩa lại dữ liệu lƣu
trữ bằng cách thay các lần xuất hiện liên tục giống nhau bằng 1 con số thể hiện số
lần xuất hiện đi với dữ liệu gốc, dĩ nhiên là chỉ áp dụng với các dữ liệu có số lần
xuất hiện liên tục >2.
Ví dụ: xét chuỗi
AAABBBAABBBBBAADCDCCCCCCCDAAABBBBCCC
Ta có thể thay: 3A3BAA5BAADCD7CD3A4B3C
Các file ảnh bitmap, ảnh đen trắng phù hợp cho kiểu nén này. Các file chứa
dữ liệu số không phù hợp cho phƣơng pháp nén RLE.
 Mã hóa Từ điển (mã hóa LZW)
Phƣơng pháp nén LZW đƣợc phát minh bởi Lempel - Zip và Welch. Nó hoạt
động dự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ản mã. Đó là gom lại các phần giống nhau của dữ liệu đƣa vào từ điển rồi tối
giản hố nó. Dùng 1 mảng làm từ điển với nguyên tắc: từ điển đầu tiên là gồm tất cả
các ký tự đơn, sau đó 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 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 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ó thể hiểu đƣợc quá trình nén và giải nén qua vì
dụ sau:
Nén chuỗi “TOBEORNOTTOBEORTOBEORNOT#”
Đầu tiên tạo tự điển có 27 ký tự gồm 26 chữ cái HOA và „#” đánh số
từ 0 đến 26. Bắt đầu từ ký tự „T‟ đầu tiên của dãy, ta có bảng sau:

Số hóa bởi trung tâm học liệu

/>

12

Bảng 1.1: Q trình mã hóa từ điển

Và số byte cần thiết để nén dòng trên là : 5*5 + 11*6 = 96 bit
Tỷ số nén: 96/(25*5)= 96/125

Số hóa bởi trung tâm học liệu

/>

13

Và quá trình giải mã đƣợc thực hiện qua bảng sau:
Bảng 1.2: Q trình giải mã từ điển

 Mã hóa Entropy
Một phƣơng pháp nén khác đó là dựa trên tần suất xuất hiện của từng mã

trong file cần nén. Với mã có tần suất xuất hiện lớn thì ta mã hóa nó bằng mã có độ
dài bé nhất, mã Huffman & mã Fano là dựa trên ý tƣởng này. Có thể minh họa bằng
mã Huffman qua ví dụ nhƣ sau:
Giả sử các ký tự trong văn bản xuất hiện với tần suất theo bảng sau:
Bảng 1.3: Dữ liệu mẫu cho mã hóa Huffman
Ký tự

a

Tần suất

0.4 0.25 0.2

Số hóa bởi trung tâm học liệu

b

c

d

e

0.1

0.05

/>

14


Để tìm bảng mã nén, ngƣời ta xây dựng dƣới dạng cây nhị phân theo nguyên
tắc sau:
 Tất cả các ký tự là lá của cây nhị phân
 Chọn các node có trọng số nhỏ nhất gộp lại thành cây với giá trị của node
cha là tổng của 2 node gộp lại. Quá trình kết thúc khi tất cả chỉ còn 1 cây
với tổng trọng số ở gốc là 1. Hình 1.8 minh họa cây Huffman nhƣ sau:
1.0

0.6

0.35

0.15

0.4
a

0.25
b

0.2
c

0.1
d

0.05
e


Hình 1.8: Cây nhị phân trong mã Huffman ở bảng 1.3

Với cây nhị phân này, có thể quy ƣớc nhánh trái là bit 0, nhánh phải là bit 1.
Vậy ta có bảng mã cho các ký tự trên là: a: 0, b: 10, c : 110, d: 1110 và e:1111. Mã
này có đặc điểm là: mã ngắn không phải là tiền tố của mã dài, điều này có nghĩa
khơng cần ký tự đặc biệt ngăn cách giữa các mã khi lƣu trữ file mã hóa.


dụ:

để



hóa

dãy “aabaaababcdebbaab”

thì

ta

đƣợc

dãy

bit:

0010000100101101110111110100010. Và khi giải mã ta chỉ cần tách từng đoạn
dựa theo bảng mã các ký tự là ta đƣợc dãy ban đầu. cụ thể

0|0|10|0|0|0|10|0|10|110|1110|1111|10|10|0|0|10|
a|a| b |a|a|a| b |a| b | c | d | e | b | b |a|a| b |

Số hóa bởi trung tâm học lieäu

/>

15

1.1.3 M h nh và mã hóa
Khi sự khơi phục yêu cầu quyết định một lƣợc đồ nén có hao hụt hoặc nén
không hao hụt, lƣợc đồ nén yêu cầu đƣợc sử dụng sẽ phụ thuộc vào số lƣợng các
yếu tố khác nhau. Một số yếu tố quan trọng nhất là đặc tính của dữ liệu cần phải
đƣợc nén. Một kỹ thuật nén sẽ làm việc tốt với nén văn bản, nhƣng có thể khơng
làm việc tốt với nén ảnh,... Mỗi ứng dụng biểu diễn một tập các cách khác nhau.
Sự phát triển của các thuật toán nén với sự đa dạng của dữ liệu có thể đƣợc
phân chia thành hai giai đoạn. Giai đoạn đầu tiên đƣợc gọi là mơ hình. Giai đoạn
này loại bỏ bất k thơng tin dƣ thừa nào tồn tại trong dữ liệu và mô tả sự dƣ thừa
theo dạng mơ hình. Giai đoạn thứ hai đƣợc gọi là mã hóa. Một sự mơ tả của mơ
hình và “sự mơ tả” về dữ liệu khác với mơ hình đã đƣợc nén nhƣ thế nào, thơng
thƣờng sử dụng một bảng chữ cái nhị phân. Sự khác biệt giữa dữ liệu và mơ hình
đƣợc gọi là ph n dư. Sau đây là ba ví dụ theo ba cách khác nhau mà dữ liệu có thể
đƣợc mơ hình. Sau đó sử dụng mơ hình để có đƣợc nén.
V d

: Xét dãy số sau {x1, x2, x3, …}
9 11 11 11 14 13 15 17 16 17 20 21
Nếu truyền hoặc lƣu trữ các biểu diễn nhị phân của các số đó, sẽ phải sử

dụng 5 bit trên mỗi m u. Tuy nhiên, bằng cách khai thác cấu trúc trong dữ liệu, có

thể biểu diễn dãy mà sử dụng ít bit hơn. Nếu vẽ dữ liệu đó nhƣ trong Hình 1.9, dữ
liệu dƣờng nhƣ nằm trên một đƣờng thẳng. Một mơ hình với dữ liệu là một đƣờng
thẳng đƣợc cho bằng công thức: xˆn  n  8 , n=1,2,…

Hình 1.9: Một dãy các giá trị dữ liệu

Số hóa bởi trung tâm học liệu

/>

×