1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

69 43 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 1,15 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Chính vì vậy, để đạt được hiệu suất nén ca

Trang 1

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

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

Trang 2

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

Trang 3

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 quá 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 quý 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

Trang 4

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 Quá trình mã hóa 25

1.2.1.2 Quá 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 Quá trình mã hóa 27

1.2.2.3 Quá 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

Trang 5

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 Quá trình mã hóa 44

2.2.2 Quá 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 Quá 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

Trang 6

DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT

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

11 InvMTF Invert Move-To-Front

12 RLE Run Length Encoding

Trang 7

DANH MỤC CÁC HÌNH VẼ & BẢNG BIỂU

Hình 1.1: Mô hình quá trình xử lý thông tin 1

Hình 1.2: Dữ liệu trong quá 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: Quá 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 quá 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ả quá 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ả quá 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: Quá 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: Quá 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

Trang 8

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

Trang 9

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 toá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 toá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 toá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

Trang 10

toá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 Wheeler, 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 Burrows-Wheeler 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

Burrows-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 toá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

Trang 11

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

Quá trình xử lý thông tin tổng quát

Hình 1.1: Mô hình quá trình xử lý thông tin

Một cách tổng quát, việc xử lý thông tin bao gồm năm quá trình sau:

 Quá 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ừ, …)

 Quá 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

 Quá 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

Trang 12

 Quá 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

toá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 hoàn) Một ví dụ phổ biến là các file âm thanh theo định dạng wav

Trang 13

Dữ liệu nguồn

File nhị phân nguồn

Mã hóa

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

.txt, tex, doc, bmp, jpg, gif, png, … wav, mp3, …

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, quá 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

Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toá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 toà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 toàn và tính thuân tiện trong quản lí khóa cao

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

Trang 14

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 toà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ể đoán trước được

Dữ liệu đã được giải mã File nhị phân đã được khôi phục

Giải mã File nhị phân đã được nén

.txt, tex, doc, bmp, jpg, gif, png, … wav, mp3, …

Trang 15

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:

Trang 16

- 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ự đoán

Trang 17

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à quá 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 toán nén chung

Không có thuật toán nào hoà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 toá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 …

Trang 18

Nén dữ liệu có liên quan đến các ngành khoa học nhƣ:

 Lý thuyết thông tin

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

File input Compression Algorithm Compressed File output

Compressed File input Decompression Algorithm Decompressed File output

Multimedia file

Compression Algorithm

Decompression Algorithm Display File Net

Trang 19

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

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 quá trình nén và giải nén) và cả độ phức tạp tính toá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 đó

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

Kích thước nénKích thước không nén

Trang 20

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)

Trang 21

 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 hoá 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:

Trang 22

Bảng 1.1: Quá 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

Trang 23

Và quá trình giải mã được thực hiện qua bảng sau:

Bảng 1.2: Quá 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 b c d e Tần suất 0.4 0.25 0.2 0.1 0.05

Trang 24

Để 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:

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

Ví dụ: để mã 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 |

0.05 0.1

0.2 0.25

a b c d e 0.4

0.15 0.35 0.6

1.0

Trang 25

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 {x 1 , x 2 , x 3 , …}

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ˆnn 8, n=1,2,…

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

Trang 26

Vì vậy, cấu trúc trong dữ liệu có thể được mô tả bằng một công thức Để sử dụng cấu trúc này, hãy kiểm tra sự khác nhau giữa dữ liệu và mô hình Sự khác nhau (phần dư) được cho bằng dãy:

Dãy phần dư chứa ba số {-1, 0, 1 Nếu gán mã 00 với -1, mã 01 với 0 và mã

10 với 1, thì chỉ cần 2 bit để biểu diễn mỗi phần tử của dãy phần dư Vì vậy, quá trình nén có thể thu được bằng cách truyền và lưu trữ các tham số của mô hình và dãy phần dư Mã hóa có thể chính xác nếu nén được yêu cầu là không hao hụt hoặc

có thể xấp xỉ nếu nén là có hao hụt

Kiểu cấu trúc hoặc sự dư thừa đã tồn tại trong dữ liệu đó là một quy luật đơn

giản Mỗi lần nhận dạng quy luật này, phải sử dụng cấu trúc dự đoán giá trị của mỗi

phần tử trong dãy và sau đó mã hóa phần dư Cấu trúc theo kiểu này là một trong nhiều kiểu cấu trúc Xem xét ví dụ sau:

V d : Xét dãy các số như sau:

27 28 29 28 26 27 29 28 30 32 34 36 38 Dãy được biểu diễn trong Hình 1.10

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

Dãy dường như không theo quy luật đơn giản như trong trường hợp trên Tuy nhiên, mỗi giá trị gần với giá trị trước Giả sử giá trị đầu tiên được giữ lại, sau

đó thay thế các giá trị tiếp theo đã được giữ lại mà khác nhau giữa nó và giá trị trước Dãy của các giá trị được truyền sẽ là:

Trang 27

27 1 1 -1 -2 1 2 -1 2 2 2 2 2 Như ví dụ trước, số lượng các giá trị khác biệt đã được giảm Biểu diễn mỗi

số và quá trình nén đã đạt được yêu cầu là cần ít bit hơn Bộ giải mã thêm mỗi giá trị đã nhận được với giá trị đã được giải mã trước đó để thu được sự khôi phục tương ứng với giá trị đã nhận được Các kỹ thuật sử dụng những giá trị đã xảy ra

trước của một dãy để dự đoán giá trị hiện hành và sau đó mã hóa sai số trong dự đoán hoặc phần dư được gọi là lược đồ mã hóa dự đoán

Giả sử cả bộ mã hóa và giải mã biết mô hình đang được sử dụng, vì vậy phải giữ lại giá trị của phần tử đầu tiên của dãy

Một kiểu sự dư thừa khác là thống kê trong tự nhiên Đó là dữ liệu nguồn sinh ra một số biểu tượng thường xuyên hơn các biểu tượng khác Trong trường hợp này, sẽ thuận lợi để gán các mã nhị phân gồm các chiều dài khác nhau cho các biểu tượng khác nhau

V d Giả sử xét dãy như sau:

aarayaranbarraybranbfarbfaarbfaaarbaway

đó là đặc trưng của tất cả các dãy được sinh ra bằng một dữ liệu nguồn Chú ý rằng dãy được tạo ra gồm 8 biểu tượng khác nhau Để biểu diễn 8 biểu tượng, phải sử dụng 3 bit trên biểu tượng Giả sử để thay thế, các mã đã được sử dụng như trong Bảng 1.4 Chú ý rằng phải gán một từ mã với một bit đơn cho biểu tượng xuất hiện thường xuyên nhất và tương ứng các từ mã dài cho các biểu tượng ít thường xuyên nhất Nếu thay thế các mã với mỗi biểu tượng thì sẽ sử dụng 106 bit để mã hóa toàn

bộ dãy Vì có 41 biểu tượng trong dãy, nên số lượng bit trung bình trên biểu tượng

Trang 28

Khi xử lý văn bản, cùng với sự dư thừa thống kê, có thể nhận thấy sự dư thừa

đó là các từ thường được lặp lại Có thể tận dụng ưu điểm của dạng dư thừa này bằng cách xây dựng một danh sách của các từ đó và sau đó biểu diễn các từ bằng vị

trí của chúng trong danh sách Kiểu lược đồ nén này được gọi là lược đồ nén từ điển

Một yếu tố quan trọng khi thiết kế thuật toán nén là mô hình của dữ liệu và

mô hình có thể giúp để có được biểu diễn dữ liệu theo dạng thu gọn nhiều hơn Có nhiều cách khác nhau có thể xem dữ liệu để có mô hình và phát triển các lược đồ nén để tận dụng ưu điểm của các cấu trúc trong dữ liệu

1.1.4 Các kết quả cơ bản về nén dữ liệu

1.1.4.1 Đĩa nén

Ngoài việc nén file, người ta cũng dùng phương pháp nén ổ đĩa Khác với việc dùng các phần mềm sao lưu dạng nén để nén nguyên một ổ đĩa, ổ đĩa bị nén theo phương pháp này tạo cho ta có cảm giác như v n làm việc với ổ đĩa không nén, nghĩa là bạn có thể làm mọi thao tác với file và thư mục Đĩa nén sẽ giảm được không gian cho tất cả các file và thư mục lưu trên đó Chương trình DoubleSpace của DOS 6.0 trước kia và Windows 2000/XP hỗ trợ kiểu nén này Hệ điều hành sẽ

có các giải pháp tạo cho người dùng cảm giác như v n đang làm việc với ổ đĩa không nén Với phương pháp nén này, ngoài việc dùng các giải thuật nén dữ liệu thông thường, giải thuật cơ bản được dùng ở đây là bó lại (consolidate) tất cả các file thành một file duy nhất để loại bỏ được khoảng trống giữa byte chót của file và byte tận cùng của liên cung cuối được cấp phát cho file Để hiểu rõ hơn, bạn nhắp chuột phải vào một file chọn Properties, hiệu số giữa Size on disk và Size chính là kích thước khoảng trống này

1.1.4.2 Nén khi dịch sang mã máy

Khi một file được biên dịch sang mã máy dưới dạng một file thi hành (.exe) thì nó xem như đã được nén vì khi ở dạng mã máy có rất ít thông tin bị trùng lắp Khi nén thêm nó một lần nữa thì kích thước thu nhỏ lại được nhiều hay ít tùy thuộc

Trang 29

vào giải thuật nén của các trình sao lưu và cách hoạt động của trình biên dịch, đóng gói ứng dụng để tạo nên file exe này Với file BHome.exe kích thước 24.0 MB khi dùng WinRAR để nén sẽ còn lại 22.3 MB, chỉ được 7.08 , nhưng với UnikeyNT.exe 256KB, sẽ chỉ còn 95KB – 62.89%

1.1.4.3 Tăng mật độ thông tin

Kiểu nén này gần với cách chúng ta hình dung nhất Công nghệ chế tạo công

cụ lưu trữ dữ liệu ngày càng cao cho phép thông tin lưu trữ ngày càng lớn với cùng một đơn vị diện tích như trước Đĩa CD là một điển hình của kiểu nén tăng mật độ thông tin Cái tên CD, Compact Disk - đĩa nén, đã tự nó nói lên điều này Ban đầu người ta dùng đĩa mềm 5,25 inch để trữ dữ liệu với sức chứa 360 KB Sau đó, đĩa 5,25 inch bị kiểu đĩa 3,5 inch 1,44 MB thay thế hoàn toàn, bởi dù nhỏ hơn nhưng dung lượng lại gấp tư Với đĩa CD chu n, người ta có thể lèn vào đấy đến 700 MB

dữ liệu Sau này đĩa DVD còn “siêu” hơn với sức chứa 4,7 GB (đĩa DVD chu n)

1.1.4.4 Nén kiểu Access

Trong khi thiết kế ứng dụng với Access, bạn thường xuyên xóa các dữ liệu thừa, xóa các đối tượng trong cơ sở dữ liệu (như query, table), xóa các đối tượng của ứng dụng (form, report), hoặc bỏ đi một hình nền trên form Khi ấy, ứng dụng Access của bạn trở nên bị phân mảnh, việc sử dụng không gian đĩa trở nên kém hiệu quả Các đường d n, các thông tin để Access tìm đến dữ liệu, đến đối tượng của CSDL hoặc ứng dụng v n còn đó mặc dù các thành phần này đã bị xóa đi Để khắc phục tình trạng này Access trang bị cho bạn công cụ Compact (nén) Thực hiện lệnh này, Access tiến hành loại bỏ các phân mảnh, xóa các đường d n, thông tin lạc địa chỉ, giúp cho kích thước ứng dụng của bạn giảm đi đáng kể Kể từ phiên bản 2000 trở đi, Access còn hỗ trợ tính năng tự động nén mỗi khi bạn đóng ứng dụng Tuy chức năng Compact cũng làm nhiệm vụ đúng với nghĩa của nó là thu nhỏ kích thước ứng dụng nhưng thực chất của vấn đề không hoàn toàn như vậy

Trang 30

1.1.4.5 Nén dữ liệu qua giao thức truyền thông

Nén dữ liệu cho phép thông tin truyền đi nhanh hơn tốc độ kết nối thực sự của modem Mức độ nén cao thấp biến đổi tùy vào kiểu dữ liệu Text hoặc đồ họa

có thể nén được nhiều hơn Những giao thức chung để nén dữ liệu gồm MNP3, MNP4, MNP5 và V.42bis

V.42bis điều khiển nén dữ liệu tốt hơn các giao thức khác Đối với bất k sự hiệu chỉnh hoặc giao thức nén dữ liệu nào làm việc, các modem ở cả hai đầu của kết nối phải hỗ trợ giao thức với nhau Một khi hai modem được kết nối, chúng tự động

“thương nghị” để xác định giao thức liên lạc với nhau tốt nhất Chẳng hạn, nếu phương thức V42.bis thất bại thì dự phòng sẽ là MNP5 -> MNP4

Để đạt được tỷ lệ nén cao nhất khi truyền dữ liệu, phần cứng cung cấp các điều khiển cần thiết, và tốc độ tối đa của cổng phải được đặt ở mức từ hai đến bốn lần tốc độ của modem Điều này luôn được cấu hình chính xác khi cài đặt modem Nếu bạn biết kiểu nén được modem hỗ trợ, bạn có thể tính toán giá trị này bằng cách nhân tốc độ của modem với tỷ lệ nói trên Ví dụ, cho một modem 56 Kbps với phương thức nén v.42bis, bạn chạy được tốc độ theo tính toán sau:

56 Kbps x 4 = 224 Kbps

Giá trị này là tỷ lệ tối đa của dữ liệu truyền qua modem Số liệu thực sự còn tùy thuộc vào kiểu dữ liệu

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

1.1.5.1 Phần mềm nén sao lưu dữ liệu

Có rất nhiều phần mềm nén sao lưu dữ liệu Bạn có thể vào Google rồi gõ vào “compress software” hoặc “compact software” sẽ thấy có rất nhiều trang Web chứa phần mềm sao lưu dạng nén Trong số này, bạn sẽ thấy có nhiều phần mềm rất giá trị, có nhiều tính năng độc đáo, đồng thời cũng có những phần mềm chỉ đơn thuần nén, bung không hỗ trợ các tính năng tăng cường Với hệ điều hành Window thì WinRAR được đánh giá là nén tốt nhất dựa trên khả năng hỗ trợ nhiều dạng file nén, tốc độ cao, hiệu quả nén tốt, giá cả hợp lý, giao diện thân thiện và các tính

Trang 31

năng quản lý bản sao Nhưng yếu điểm duy nhất là nó chỉ có khả năng tạo ra 2 định dạng file nén là rar và zip mà thôi Với dòng máy MAC có DropStuff 1.0 có thể tạo file bằng dạng thức nén StuffIt (.SIT) để tương thích với môi trường liên nền DropStuff cũng có thể nén file bằng ZIP Ngoài ra RAR for Window 2.5 là phần mềm nén này lại có mặt trong rất nhiều hệ điều hành khác nhau: DOS, OS/2, Windows và nhiều biến thể của Unix (như Linux, BSD, SCO, Solaris)

1.1.5.2 Phần mềm truyền thông nén dữ liệu

Phần mềm truyền thông như Network Connections có thể hỗ trợ nén dữ liệu

Ví dụ, dùng một modem 56Kbs V.90, bạn có thể cho phép nén dữ liệu bằng phần mềm và kinh nghiệm cho thấy, số liệu bình quân là 44Kbps Kết quả khảo sát cho thấy rằng phần mềm nén dữ liệu có thể cho tốc độ truyền dữ liệu cao hơn phần cứng nén dữ liệu

Nếu bạn dùng phần mềm nén dữ liệu, bạn cần kiểm tra các thiết đặt Để có kết quả tốt nhất đối với phần mềm nén dữ liệu, bạn có thể kiểm tra các thuộc tính của modem như sau:

- Làm khả dụng chức năng sửa lỗi của modem bằng thiết đặt Data Protocol ở Standard EC hoặc Forced EC

- Vô hiệu hóa phần cứng nén dữ liệu bằng thiết đặt Compression ở trạng thái Disabled

- Làm khả dụng phần mềm nén dữ liệu được cung cấp bởi phần mềm truyền thông của bạn

1.2 Mã hóa Entropy

Mục đích của mã entropy là nén dữ liệu không làm mất thông tin, mã nén này cũng được dùng rất nhiều trong việc truyền thông tin Mã Huffman và mã số học là hai phương pháp mã entropy được sử dụng rộng rãi nhất hiện nay

1.2.1 Mã hóa Huffman

Mã hóa Huffman được coi là phương pháp nén tốt, sử dụng các ký hiệu trong văn bản gốc để nén dữ liệu Trong bất cứ văn bản nào đều có các ký tự có số lần

Trang 32

xuất hiện nhiều hơn so với các ký tự khác Ví dụ như trong tiếng Anh, các chữ cái

E, A, O, T thường xuyên xuất hiện nhiều hơn các chữ cái J, Q, X

Xét các chữ cái có độ dài từ mã là 8-bit theo bảng mã ASCII Ý tưởng của thuật toán Huffman là xét các chữ cái có tần số xuất hiện nhiều hơn sẽ có độ dài từ

mã ngắn hơn, các chữ cái xuất hiện ít hơn sẽ có độ dài từ mã dài hơn Do đó tổng số bit của dữ liệu nén được sẽ giảm đáng kể so với dữ liệu nguồn

Để rõ hơn ta xét chuỗi ký tự “BWTMTFHUFFMAN” Ta có bảng tần số xuất hiện của các ký tự:

Dữ liệu vào của thuật toán Huffman là chuỗi ký tự Dữ liệu ra là chuỗi các bit nhị phân tương ứng với chuỗi ký tự vào Để giải quyết vấn đề này ta xét ba vấn

đề nhỏ sau:

1 Đọc dữ liệu vào

2 Mã hóa mỗi ký tự vào

3 Kết xuất từ mã cho mỗi ký tự vào (nén)

Để giải quyết vấn đề 1 ta cần tổ chức dữ liệu vào sao cho có thể đọc được từng ký tự ở chuỗi dữ liệu vào (định dạng tệp tin dưới dạng byte) mỗi m u tin đọc vào là một byte có mã tương ứng trong bảng mã ASCII

Đối với vấn đề 2 ta cần xây dựng cây nhị phân theo quy tắc sau:

- Sắp xếp danh sách L các ký hiệu tăng dần theo tần số xuất hiện

- Coi mỗi ký hiệu là một nút lá của cây nhị phân, mỗi nút lá là một cây con

Trang 33

- Kết hợp hai cây con có gốc là giá trị tần số xuất hiện của hai cây con này, sau đó bổ sung gốc vào danh sách L theo thứ tự tăng dần của tần số xuất hiện Thực hiện bước này cho đến khi chỉ còn một gốc

Để giải quyết vấn đề 3 ta cần tìm từ mã tương ứng với mỗi ký tự và kết xuất

từ mã Để tìm một từ mã tương ứng với ký hiệu ta duyệt cây nhị phân từ nút gốc tới nút lá Trong quá trình duyệt nếu đi sang cây con trái ta có bit 0, nếu đi sang cây con phải ta có bit 1, đường đi từ nút gốc tới nút lá là độ dài từ mã

Ta có thể minh họa theo các bước sau:

B W H U A N T M F

1 1 1 1 1 1 2 2 3 1)

Trang 34

Hình 1.11: Minh họa n n theo phương pháp Huffman

Ngày đăng: 24/02/2021, 21:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w