1. Trang chủ
  2. » Công Nghệ Thông Tin

Nén dữ liệu theo kỹ thuật move to front

77 304 0

Đ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 77
Dung lượng 1,14 MB

Nội dung

Kỹ thuật nén tập tin thường được áp dụng cho các tập tin văn bản Trong đó có một số kí tự nào đó có xác suất xuất hiện nhiều hơn các kí tự khác, các tập tin ảnh bitmap Mà có thể có những

Trang 1

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LÊ VĂN NINH

NÉN DỮ LIỆU THEO KỸ THUẬT MOVE – TO - FRONT

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

Thái Nguyên - 2011

Trang 2

Lêi c¶m ¬n!

Viện khoa học và công nghệ Việt Nam; các thầy giáo, cô giáo trường Đại học CNTT & TT - Đại học Thái Nguyên đã tạo điều kiện, giúp đỡ em hoàn thành luận văn này

Đặc biệt, em xin chân thành cảm ơn PGS.TSKH Nguyễn Xuân Huy, thầy giáo đã giảng dạy và trực tiếp hướng dẫn trong suốt quá trình nghiên cứu

và hoàn thành luận văn

Dù đã có nhiều cố gắng, nhưng chắc chắn luận văn sẽ không tránh khỏi những thiếu sót và hạn chế Vì vậy, rất mong được sự góp ý, chỉ dẫn của các thầy, cô giáo, bạn bè và đồng nghiệp

Trang 3

DANH MỤC TỪ VIẾT TẮT

Trang 4

DANH MỤC HÌNH VẼ PAGE

Hình 1.1: Máy nén và máy giải nén

Hình 1.2: Bộ mã hóa và bộ giải mã

Hình 1.3: Những thuật toán nén không hao tổn

Hình 1.4: Các thuật toán nén tổn hao

Hình 1.10: Đặc tính tiền tố và các cây nhị phân

Hình 1.11: Không phải mã tiền tố nhưng có thể giải mã duy nhất

Hình 1.12: Các điểm ảnh với các màu giống nhau

Hình 1.13: Một biểu đồ trong những khoảng xác định

Hình 1.14: Một số dữ liệu ma trận được tập hợp dọc theo một dòng

Hình 1.15: Một dãy các frame hoạt hình

Hình 2.1(a) Mảng A chứa tất cả các phép quay của đầu vào mississippi

Hình 2.1(b) A s thu được bằng cách sắp xếp A Cột cuối của A s (ký hiệu L) là

đầu ra của BWT

Hình 2.2 Mảng R được sử dụng để sắp xếp file mẫu mississippi

Hình 2.3 Mảng A s với mississippi F và L là các cột đầu và cuối tương ứng

Hình 2.4 Sử dụng thứ tự ký tự để thực hiện chuyển đổi ngược

Hình 2.5 Mảng (A s ) mặc nhiên được khôi phục để giải mã xâu pssmipissii

Hình 2.6 Các mảng phụ trợ V và W có thể được sử dụng để giải mã xâu mẫu

Hình 2.7 Một số văn bản được chuyển đổi sinh ra từ “Hamlet” của

Shakespeare

Hình 2.8: Mã hóa Huffman

Hình 2.9: Mã hóa Huffman ngược

Hình 2.10: Xác suất và khoảng con khởi tạo của biểu tượng

Trang 6

2.1.1 Cách làm việc của chuyển đổi Burrows-Wheeler 33

Chương III GIẢI THUẬT MOVE – TO – FRONT VÀ DEMO 60

3.1 Thuật toán nén dữ liệu Move – To - Front 60

Trang 7

MỞ ĐẦU

1 Lý do chọn đề tài

Trong các lĩnh vực của công nghệ thông tin và viễn thông hiện nay, việc truyền tải tin tức là công việc xảy ra thường xuyên Tuy nhiên, thông tin được truyền tải đi thường rất lớn, điều này gây khó khăn cho công việc truyền tải như: gây tốn kém tài nguyên mạng, tiêu phí khả năng của hệ thống, Để giải quyết vấn đề đó, các thuật toán nén dữ liệu đã được ra đời

Các kỹ thuật nén được nhúng ngày càng nhiều trong phần mềm và đã trở thành yêu cầu chung cho hầu hết phần mềm ứng dụng như một lĩnh vực nghiên cứu quan trọng và tích cực trong khoa học máy tính

Trong kỹ thuật truyền tin nối tiếp, do các bit dữ liệu được truyền đi nối tiếp, lại bị giới hạn về dải thông của kênh truyền và giới hạn về các chuẩn ghép nối nên tốc độ truyền tin tương đối chậm Nén dữ liệu trước khi truyền

đi là một trong các phương pháp nhằm tăng tốc độ truyền dữ liệu Nguyên tắc của nén dữ liệu là quá trình mã hóa thông tin dùng ít bit hơn so với thông tin chưa được mã hóa bằng cách dùng một hoặc kết hợp các phương pháp nào đó Dựa theo nguyên tắc này giúp tránh các hiện tượng kênh truyền bị quá tải và việc truyền tin trở nên kinh tế hơn

Mặc dù các chương trình nén dữ liệu thường sử dụng kết hợp nhiều thuật toán có độ phức tạp khác nhau nhằm đạt được hiệu quả cao nhất cho dữ liệu được nén để đáp ứng yêu cầu đặt ra Nhưng nhìn chung không thể có phương pháp nén tổng quát nào cho kết quả tốt đối với tất cả các loại tập tin

Kỹ thuật nén tập tin thường được áp dụng cho các tập tin văn bản (Trong đó

có một số kí tự nào đó có xác suất xuất hiện nhiều hơn các kí tự khác), các tập tin ảnh bitmap (Mà có thể có những mảng đồng nhất), các tập tin dùng để biểu diễn âm thanh dưới dạng số hoá và các tín hiệu tương tự khác (các tín hiệu này có thể có các mẫu được lặp lại nhiều lần) Ðối với các tập tin nhị phân như tập tin chương trình thì sau khi nén cũng không tiết kiệm được

Trang 8

nhiều Ngoài ra, trong một số trường hợp để nâng cao hệ số nén người ta có thể bỏ bớt một số thông tin của tập tin (Ví dụ như kỹ thật nén ảnh JPEG)

Nén dữ liệu theo kỹ thuật Move-To-Front (MTF) là một trong những

kỹ thuật nén dữ liệu được thiết kế để cải tiến hiệu quả của kỹ thuật nén mã

hóa entropy Nó được sử dụng sau kỹ thuật chuyển đổi Burrows -Wheeler để

xếp hạng các biểu tượng theo tần số tương quan của chúng Mục đích là để đạt được một hiệu suất nén tốt hơn cho mã hóa entropy

Xuất phát từ ý tưởng đó, tôi đã lựa chọn đề tài ―Nén dữ liệu theo kỹ thuật Move – To – Front‖

2 Đối tượng nghiên cứu:

- Kỹ thuật nén dữ liệu Move-To-Front

3 Phạm vi nghiên cứu:

- Tìm hiểu tổng quan về nén dữ liệu

- Nén dữ liệu Burrows-Wheeler

- Nén dữ liệu theo kỹ thuật Move – to – front

4 Mục tiêu nghiên cứu

Luận văn tập trung nghiên cứu, đánh giá về nén dữ liệu theo kỹ thuật Move-To-Front Vận dụng nén dữ liệu trong một số lĩnh vực đặc thù

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 theo kỹ thuật MTF

- Vận dụng được phương pháp nén dữ liệu theo kỹ thuật MTF trong một số lĩnh vực đặc thù

6 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 thống kê

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

Trang 9

Chương I TỔNG QUAN VỀ NÉN DỮ LIỆU

1.1 Giới tiệu

Nén dữ liệu trong ngữ cảnh khoa học máy tính là khoa học để biểu

diễn thông tin dưới dạng thu gọn Nói cách khác nén dữ liệu là việc thực hiện thu gọn kích thước các tập tin hoặc làm cho thông tin lưu trữ chiếm không gian lưu trữ ít nhất Có nhiều cách để thực hiện điều này tùy vào từng đối tượng cụ thể.

Nén dữ liệu đã trở thành yêu cầu chung cho hầu hết phần mềm ứng dụng như một lĩnh vực nghiên cứu quan trọng và tích cực trong khoa học máy tính Nếu không có các kỹ thuật nén , Internet sẽ không bao giờ phát triển, TV

kỹ thuật số , các kỹ thuật tru yền thông di động hoặc truyền thông video đã được phát triển trên thực tế

Các lĩnh vực ứng dụng có liên quan và được thúc đẩy bởi nén dữ liệu gồm có:

và điện thoại

 Ti vi kỹ thuật số và truyền hình vệ tinh

Nhiều vấn đề trên thực tế đã thúc đẩy nhiều nghiên cứu khác nhau về

Trang 10

kích thích bởi các lĩnh vực mới khác Một phần do phạm vi ứng dụng rộng rãi của nó, nén dữ liệu bao trùm nhiều ngành khoa học và có thể được tìm thấy trong nhiều lĩnh vực khác nhau 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

Trong nén dữ liệu, từ dữ liệu có nghĩa là thông tin ở dạng kỹ thuật số

mà những chương trình máy tính hoạt động và nén, có nghĩa là quá trình loại

bỏ dư thừa trong dữ liệu Cụm từ ―nén dữ liệu‖, có nghĩa là đưa ra các kỹ

thuật hay cụ thể hơn là thiết kế những thuật toán hiệu quả nhằm để:

 Biểu diễn dữ liệu theo dạng mà chứa ít dư thừa

1.1.1 Một số vấn đề về Nén dữ liệu

Một vấn đề nén liên quan đến việc tìm một thuật toán hiệu quả để loại

bỏ dư thừa khác nhau từ một kiểu dữ liệu nhất định Ví dụ cho một xâu s, câu hỏi là dãy các biểu tượng có thể thay thế mà chiếm ít không gian lưu trữ là dãy nào? Giải pháp cho vấn đề nén là thuật toán nén nhằm đưa ra dãy các

biểu tượng chứa ít số lượng bit hơn , cộng với các thuật toán giải nén để phục hồi xâu gốc

Vậy số lượng bit ít hơn là bao nhiêu ? Điều đó phụ thuộc vào những thuật toán nhưng nó cũng phụ thuộc vào sự dư thừa có thể chiết ra từ dữ liệu gốc là bao nhiêu Dữ liệu khác nhau có thể yêu cầu những kỹ thuật khác nhau

để xác định dư thừa và loại bỏ dư thừa trong dữ liệu

Không có giải pháp nào phù hợp cho tất cả vấn đề nén dữ liệu Theo các nghiên cứu về nén dữ liệu , ta chủ yếu phải phân tích những đặc tính của

dữ liệu đã được nén và hy vọng đưa ra một số mô hình để đạt được sự biểu

Trang 11

diễn ngắn gọn Điều này làm gia tăng sự đa dạng của mô hình dữ liệu và những kỹ thuật biểu diễn, đó là điểm quan trọng của kỹ thuật nén

1.1.1.1 Vấn đề về nén

Nén dữ liệu có thể được xem như một phương tiện truyền thông biểu diễn hiệu quả nguồn dữ liệu kỹ thuật số như văn bản , hình ảnh, âm thanh hay bất kỳ sự kết hợp của các kiểu dữ liệu đó như video Mục đích của nén dữ liệu

là biểu diễn dữ liệu nguồn theo dạng kỹ thuật số với càng ít bit càng tốt đáp ứng yêu cầu tối thiểu hóa khi khôi phục lại dữ liệu gốc

Khi làm việc về những vấn đề nén , ta phải xem xét khía cạnh hiệu quả của các thuật toán cũng như hiệu quả nén Bằng trực quan, tính chất của thuật toán nén sẽ phụ thuộc vào dữ liệu và cấu trúc bên trong của nó Việc dư thừa càng nhiều của dữ liệu nguồn, càng làm cho một thuật toán nén có thể hiệu quả hơn

1.1.1.2 Vấn đề về giải nén

Bất kỳ thuật toán nén sẽ không làm việc trừ khi một phương tiện giải

nén được cung cấp do bản chất của dữ liệu nén Từ nén ngụ ý là ngữ cảnh của

cả nén và giải nén

Trong luận văn này, đôi khi không đề cập những thuật toán giải nén khi quá trình giải nén là hiển nhiên hay có thể dễ dàng được suy ra từ quá trình nén

Trong nhiều trường hợp thực tiễn, hiệu quả của thuật toán giải nén được quan tâm hơn thuật toán nén Ví dụ như dữ liệu phim ảnh , hình ảnh, và

âm thanh thường được nén một lần bởi người lập trình và sau đó cùng phiên bản với những file đã nén được giải nén nhiều lần bởi hàng triệu người xem hoặc nghe

Ngoài ra, đôi khi hiệu quả của các thuật toán nén quan trọng hơn Ví

Trang 12

thể được ghi trực tiếp vào bộ lưu trữ máy tính có giới hạn , hay được truyền đến đích từ xa thông qua kênh tín hiệu thu hẹp

Phụ thuộc vào những vấn đề cụ thể , đôi khi ta xem xét vấn đề nén và giải nén như hai quá trình đồng bộ và không đồng bộ riêng biệt

Hình 1.1 Cho thấy một mô hình dựa trên mối quan hệ giữa các thuật toán nén và giải nén

Hình 1.1: Máy nén và máy giải nén

Một thuật toán nén thường được gọi là máy nén và thuật toán giải nén được gọi là máy giải nén

Máy nén và máy giải nén có thể được đặt tại nguồn và đích của một kênh truyền thông Trong trường hợp này, máy nén tại nguồn thường được gọi là bộ mã hóa và máy giải nén tại đích của thông điệp được gọi là bộ giải

mã Hình 1.2 cho thấy một mô hình dựa trên quan hệ giữa bộ mã hóa và bộ giải mã được kết nối bởi một kênh truyền dẫn

Hình 1.2: Bộ mã hóa và bộ giải mã

Trang 13

1.1.2 Nén không tổn hao và nén tổn hao

Có hai hệ thống kỹ thuật nén chủ yếu khi xem xét khả năng khôi phục

chính xác dữ liệu nguồn ban đầu Chúng được gọi là nén không tổn hao và nén tổn hao

1.1.2.1 Nén không tổn hao

Một phương pháp nén là không tổn hao nếu và chỉ nếu nó có thể khôi phục chính xác dữ liệu gốc từ phiên bản đã được nén Đó là không mất bất kỳ thông tin nào trong suốt quá trình nén

Ví dụ, trong Hình 1.3, xâu đầu vào AABBBA được khôi phục lại sau

khi thực hiện thuật toán nén và được theo sau bởi thuật toán giải nén

Nén không tổn hao được gọi là nén thuận nghịch vì dữ liệu gốc có thể

được phục hồi hoàn toàn bởi quá trình giải nén

Hình 1.3: Những thuật toán nén không hao tổn

Những kỹ thuật nén không tổn hao được sử dụng khi dữ liệu gốc của nguồn là rất quan trọng mà ta không thể để mất bất kỳ chi tiết nào Các ví dụ

về dữ liệu nguồn như các hình ảnh y tế , văn bản và các hình ảnh được bảo vệ

vì lý do pháp lý, một số file khả thi của máy tính, …

1.1.2.2 Nén tổn hao

Một phương pháp nén tổn hao nếu nó không thể khôi phục bản gốc

Trang 14

có thể bị mất trong quá trình nén Từ không quan trọng ở đây hàm ý là những yêu cầu nhất định về đặc tính của dữ liệu được khôi phục

Hình 1.4 cho thấy một ví dụ số thập phân dài trở thành phép xấp xỉ ngắn hơn sau quá trình nén – giải nén

Hình 1.4: Các thuật toán nén tổn hao

Nén tổn hao được gọi là nén không thuận nghịch vì nó không thể khôi

phục dữ liệu gốc chính xác bởi quá trình giải nén

Khôi phục xấp xỉ có thể là một sự mong muốn vì nó có thể đưa đến hiệu quả nén nhiều hơn Tuy nhiên, nó thường yêu cầu sự cân bằng tốt giữa khả năng trực quan và độ phức tạp trong tính toán

Dữ liệu như hình ảnh, video và âm thanh đa phương tiện được nén dễ dàng hơn bởi kỹ thuật nén tổn hao vì cách thức mà các hệ thống thị giác và thính giác của con người làm việc

Khi xem xét ảnh hưởng của nén tổn hao , có hai dạng bài toán nén cổ điển:

Bài toán tỷ lệ biến dạng : Cho một ràng buộc về tỷ lệ dữ l iệu được

truyền hoặc dung lượng lưu trữ, bài toán là nén file nguồn bằng hoặc thấp hơn tỷ lệ này nhưng sự chính xác cao nhất có thể

Nén trong các lĩnh vực thư thoại , radio di động chia ô kỹ thuật số và

Trang 15

Bài toán biến dạng tỷ lệ : Cho yêu cầu để đạt được sự chính xác được

xác định trước nào đó , bài toán là đáp ứng yêu cầu với ít bit trên giây có thể Nén trong các lĩnh vực âm thanh chất lượng CD và video chất lượng hình ảnh chuyển động là các ví dụ cho các bài toán biến dạng tỷ lệ

1.1.3 Đơn vị đo đặc tính nén

Việc thực hiện một thuật toán nén có thể được đo bằng các tiêu chuẩn khác nhau phụ thuộc vào tính chất của ứng dụng Khi hiệu quả về thời gian không phải là một vấn đề (mặc dù nó quan trọng như nhau), mối quan tâm chính của ta sẽ là hiệu quả về không gian, tức là hiệu quả một thuật toán nén

dữ liệu có thể tiết kiệm được không gian lưu trữ là bao nhiêu? Ví dụ, đo tỷ lệ phần trăm của hiệu giữa kích thước của file đầu vào trước khi nén và kích thước của file đầu ra sau khi nén sẽ cung cấp một dấu hiệu tốt về hiệu quả nén

Nhìn chung rất khó để đo hiệu suất của một thuật toán nén vì tính chất nén của nó phụ thuộc rất nhiều vào dữ liệu chứa dư thừa mà thuật toán tìm kiếm Tính chất nén cũng phụ thuộc vào việc ta cho phép dữ liệu được khôi phục giống với dữ liệu nguồn Do đó ta sẽ thảo luận đơn vị đo theo hai trường hợp cụ thể là nén không tổn hao và nén tổn hao

Nén không tổn hao:

Đối với các thuật toán nén không tổn hao , ta đo hiệu quả nén bằng số lượng hao hụt của file nguồn so với kích thước của phiên bản đã được nén

Tỉ lệ nén: Đơn giản là tỉ lệ đầu ra với kích thước file đầu vào của một

thuật toán nén, tức là kích thước file được nén sau khi nén với kích thước file nguồn trước khi nén

 Hệ số nén: Ngược với tỉ lệ nén

Trang 16

Tỷ lệ phần trăm tiết kiệm được: Điều này cho thấy hao hụt bằng tỷ lệ

phần trăm

Ngoài ra, hiệu quả của một thuật toán chỉ là một khía cạnh về đơn vi

đo của thuật toán Trong thực tế, tiêu chuẩn sau đây thường là mối quan tâm với các lập trình viên:

Độ phức tạp trong tính toán: Điều này có thể được thông qua từ các

kỹ thuật phân tích thuật toán đã có từ lâu Ví dụ, sử dụng ký hiệu O[CLRS01] với yêu cầu hiệu quả thời gian và lưu trữ Tuy nhiên, hoạt động của các thuật toán nén có thể không nhất quán Vì thế nó có thể sử dụng các kết quả thực nghiệm trước đây

Thời gian nén: Ta thường xem xét thời gian mã hóa và giải mã tách

biệt nhau Trong một số ứng dụng, thời gian giải mã quan trọng hơn thời gian

mã hóa Trong các ứng dụng khác, chúng quan trọng như nhau

Entropy: Nếu thuật toán nén dựa trên các kết quả thống kê, thì entropy

có thể được sử dụng như một ràng buộc lý thuyết với dữ liệu ngu ồn để giúp thực hiện sự phán đoán đại lượng hữu ích Vì vậy nó cung cấp sự hướng dẫn

lý thuyết để xem nén có thể đạt được bao nhiêu

Sự dư thừa: Trong các lĩnh vực nén nhất định, sự khác biệt giữa chiều

dài mã trung bình và entropy của dữ liệu nguồn có thể được xem như là sự dư thừa Trong một vài lĩnh vực khác, sự khác nhau giữa phân phối xác suất chuẩn và phân phối xác suất đều được xác định bằng sự dư thừa

Độ phức tạp: Đơn vị đo lường này làm việc tốt để ch ứng minh lý thuyết hơn với các cài đặt thực tế Độ phức tạp của dữ liệu nguồn trong một file có thể được đo bằng chiều dài chương trình ngắn nhất để tạo ra dữ liệu

Trang 17

Kiểm tra cài đặt: Kiểm tra hiệu suất của thuật toán nén bằng cách cài

đặt thuật toán và chạy các chương trình với nhiều định dạng dữ liệu kiểm tra

Canterbury Corpus cung cấp thử nghiệm tốt để kiểm tra các chương trình

nén Xem http://corpus.canterbury.ac.nz để biết thêm chi tiết

Chi phí phụ: Đơn vị đo này thường được sử dụng bởi ngành công

nghiệp công nghệ thông tin Chi phí phụ là số lượng dữ liệu bổ sung được thêm vào phiên bản đã được nén của dữ liệu để giải nén sau này Chi phí phụ đôi khi có thể lớn hơn mặc dù nó nhỏ hơn nhiều không gian được lưu trữ bằng cách nén

Nén tổn hao:

Đối với nén tổn hao, ta phải đo đặc tính của dữ liệu đã được giải nén

cũng như hiệu quả nén Từ độ tin cậy thường được sử dụng để mô tả độ chính

xác giữa file dữ liệu nguồn và file được giải nén Sự khác biệt giữa dữ liệu

nguồn trước khi nén và file sau khi giải nén, được gọi là độ biến dạng Thường độ biến dạng xấp xỉ được sử dụng trong thực tế

Tóm lại: Nén dữ liệu là một lĩnh vực nghiên cứu tích cực và đang

được quan tâm Có nhiều lý do thú vị để nghiên cứu những thuật toán nén Những thuật toán nén có thể được phân loại theo hai lớp đại cương như sau : Nén tổn hao và không tổn hao Đặc tính nén có thể được đo bằng nhiều cách khác nhau

1.2 Mã hóa dữ liệu ký hiệu

Nén dữ liệu là khoa học về biểu diễ n thông tin theo một hình thức thu

gọn Tuy nhiên , thông tin là gì ? Thông tin được biểu diễn theo một dạng

―chuẩn‖ như thế nào, tức là dạng bất kỳ trước khi nén ? Ta muốn nói gì về dữ

nguồn?

Trang 18

Để trả lời các câu hỏi đó, trước hết ta cần làm rõ ý nghĩa của các thuật

ngữ như: thông tin, dữ liệu, các mã và mã hóa

1.2.1 Thông tin, dữ liệu và các mã

Thông tin là cái gì đó mà làm tăng thêm kiến thức của con người Đó

là những gì góp phần giảm bớt sự không chắc chắn trong tâm trí con người hay trạng thái của một hệ thống Mọi người cảm nhận được sự tồn tại của thông tin, xem xét phương tiện truyền th ông mang thông tin và tác động trở lại theo thông tin chắc chắn

Thông tin không hiện hữu nếu không tồn tại một số phương tiện

truyền thông sóng mang Dữ liệu là phương tiện truyền thông logic thường được mang bởi một số phương tiện truyền thông vật lý như CD hay kênh

truyền thông Vì vậy dữ liệu có thể được xem như dạng cơ bản của một số

thông tin xác thực Điều này được phân biệt từ các dạng tương phản của

thông tin như : văn bản, đồ họa, âm thanh và hình ảnh Một số lượng lớn dữ liệu có thể sau đó được tổ chức và được lưu trữ trong những thông điệp ngắn hay những file dài

Từ dữ liệu trong ngữ cảnh của nén dữ liệu bao gồm bất kỳ dạng kỹ

thuật số nào của thông tin xác thực được xử lý bởi chương trình máy tính Dữ

liệu trước bất kỳ quá trình nén nào được gọi là dữ liệu nguồn, hay nói ngắn gọn là nguồn

Các ví dụ về thông tin xác thực có thể được phân loại rộng rãi như:

văn bản, âm thanh, hình ảnh và video Nhiều chương trình ứng dụng chấp nhận kiểu thông tin như kiểu file dữ liệu của chúng cho thuận tiện Do đó dữ liệu có thể được phân loại như: văn bản, âm thanh, hình ảnh và video trong khi định dạng dữ liệu kỹ thuật số thực chứa các số 0 và 1 theo định dạng nhị phân

Trang 19

Dữ liệu văn bản thường được biểu diễn bởi 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 hay tex (hay các file hệ thống mã hóa có thể đọc được khác như doc) sử dụng một trình soạn thảo

Các ví dụ của các file văn bản điển hình là các bản thảo, các chương trình trong các ngôn ngữ bậc cao khác nhau (được gọi là các mã nguồn) hay các email văn bản

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ủa

những đ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

Ba kiểu cơ bản của dữ liệu nguồn trong máy tính là văn bản, hình ảnh (kỹ thuật số) và âm thanh Trong các lĩnh vực ứng dụng, dữ liệu nguồn được nén gọi là đa phương tiện và có thể là hỗn hợp của định dạng phương tiện truyền thông tĩnh như: văn bản, hình ảnh và đồ họa, và phương tiện truyền thông động như âm thanh và video Hình 1.5 giải thích các giai đoạn liên

quan đến dữ liệu nguồn trong file được mã hóa thành file nhị phân nguồn trước khi nén Hình 1.6 cho thấy quá trình ngược lại , trong đó dữ liệu nhị phân được khôi phục sau khi giải nén phải được giải mã thành dữ liệu của một loại nào đó trước khi được nhận ra trong bất kỳ ứng dụng nào

Trang 20

Hình 1.5: Dữ liệu về nén

Trang 21

Hình 1.6: Dữ liệu về giải nén 1.2.2 Dữ liệu ký hiệu

Trong luận văn này, ta thường sử dụng thuật ngữ ký hiệu (symbol) hay ký tự (character) có nghĩa là biểu diễn ký hiệu của dữ liệu đầu vào cho thuật

toán nén Theo ký hiệu này, một biểu tượng có thể là một mẫu âm thanh, hay một giá trị điểm ảnh cũng như một chữ cái, ký tự riêng biệt hay một nhóm các chữ cái trong văn bản Một file văn bản, hình ảnh, âm thanh hay video có thể được xem như một dãy các biểu tượng một chiều hay nhiều chiều Hình 1.7 cho thấy cách sử dụng dữ liệu ký hiệu như thế nào

Trang 22

Hình 1.7: Dữ liệu ký hiệu về nén

Giả sử bảng chữ cái của dữ liệu nguồn là S=(s 1 , s 2 , …, s n ) Biểu diễn

kỹ thuật số của tập hợp biểu tượng được gọi là mã C=(c 1 , c 2 , …, c n ) và c j biểu

diễn mỗi biểu tượng được gọi là từ mã cho biểu tượng s j, trong đó j  1 ,n Quá trình gán các từ mã cho mỗi biểu tượng trong dữ liệu nguồn được gọi là

mã hóa Quá trình đảo ngược, tức là khôi phục dãy các biểu tượng trong dữ liệu nguồn, được gọi là giải mã Rõ ràng, quá trình nén có thể được xem như

mã hóa và giải nén được xem như giải mã theo nghĩa này

Biểu diễn cơ bản của dữ liệu là mã ASCII gồm một tập các từ mã (8

bit) chiều dài cố định Có thể biểu diễn một bảng chữ cái bằng một tập các từ

mã chiều dài thay đổi và mã được gọi là mã chiều dài thay đổi

Ví dụ 1.1: Hai mã nhị phân khác nhau, C 1 =(000, 001, 010, 011, 100)

và C 2 =(0, 100, 101, 110, 111), có thể được sử dụng để biểu diễn bảng chữ cái (A, B, C, D, E)

Ở đây C 1 là mã chiều dài cố định và C 2 là mã chiều dài thay đổi

Trang 23

Điều quan trọng là phân biệt khái niệm dữ liệu ký hiệu, bảng chữ cái

và mã theo ngữ cảnh của chúng Bởi dữ liệu ký kiệu có nghĩa là một file

nguồn chứa những biểu tượng từ một bản g chữ cái Một mã chứa một tập các

từ mã thường là biểu diễn của tập hợp bảng chữ cái

Ví dụ: BAAAAAAAC là một dữ liệu ký hiệu từ một bảng chữ cái (A, B,

C, D, E) Giả sử ta định nghĩa một mã nhị phân chiều dài cố định (000, 001,

010, 011, 100) Các từ mã 000, 001, 010, 011, 100 là biểu diễn nhị phân của

A, B, C, D, E tương ứng Biểu diễn nhị phân của dữ liệu ký hiệu là 001 000

000 000 000 000 000 000 010 (không có các dấu cách) Đây là dữ liệu nguồn theo biểu diễn nhị phân , là đầu vào của thuật toán nén Hy vọng kích thước của file dữ liệu nguồn nhị phân này được giảm bởi thuật toán nén

Điều này có thể được thấy từ Hình 1.8

Hình 1.8: Mã và dữ liệu nguồn

1.2.3 Mã chiều dài thay đổi

Các mã chiều dài thay đổi rất được mong đợi cho nén d ữ liệu bởi vì toàn bộ quá trình tiết kiệm có thể đạt được bằng cách gán các từ mã ngắn cho những biểu tượng xảy ra thường xuyên và các từ mã dài cho những biểu

tượng hiếm khi xảy ra

Trang 24

Ví dụ: Xem xét một mã chiều dà i thay đổi (0, 100, 101, 110, 111) với chiều dài của các từ mã (1, 3, 3, 3, 3) với bảng chữ cái (A, B, C, D, E), và xâu

nguồn BAAAAAAAC với tần số cho mỗi biểu tượng là (7, 1, 1, 0, 0) Số trung

bình các bit được yêu cầu:

4 1 9

1 3 1 3 7

Dữ liệu nguồn có thể được mô hình bởi bảng chữ cái S=(s 1 , s 2 , , s n )

và phân phối xác suất P=(p 1 , p 2 , , p n ) của các biểu tượng

Giả sử ta đưa ra mã C=(c 1 , c 2 , …, c n ) với chiều dài củ a mỗi từ mã L=(l 1 , l 2 , …, l n )

Mục đích của ta là tối thiểu hóa chiều dài trung bình của mã:

n

i i

l p L

P l

1

) , (

1.2.3.2 Có thể giải mã duy nhất

Các mã chiều dài thay đổi hữu ích với nén dữ liệu Tuy nhiên, một mã chiều dài thay đổi sẽ không hữu ích nếu các từ mã không thể xác định theo một cách duy nhất từ thông điệp được mã hóa

Ví dụ 1.2: Xem xét mã chiều dài thay đổi (0, 10, 010, 101) với bảng chữ cái (A, B, C, D) Một đoạn thông điệp được mã hóa như „0100101010‟ có thể được giải mã nhiều hơn một cách Ví dụ: „0100101010‟ có thể được thể hiện ít nhất theo hai cách : „0 10 010 101 0 ‟ bằng ABCDA hoặc „ 010 0 101 010‟ bằng CADC

Trang 25

Một mã có thể giải mã duy nhất nếu có thể chỉ có một cách để giải mã

thông điệp được mã hóa Mã (0, 10, 010, 101) trong ví dụ 1.2 không thể giải

mã duy nhất và vì vậy không được sử dụng cho nén dữ liệu

Tất nhiên , ta có thể đưa vào thêm ký hiệu dấu tách trong suốt giai đoạn mã hóa Ví dụ: Nếu ta sử dụng ký hiệu ‗/‘, thì ta có thể mã hóa dãy biểu

‗0/10/010/101/0‘ có thể dễ dàng được giải mã duy nhất Đáng tiếc, phương pháp này quá tốn kém vì ký hiệu thêm ‗/‘ phải được chèn với mọi từ mã

Mã lý tưởng trong trường hợp này không chỉ là một mã chiều dài thay

đổi mà với một số đặc tính tự động tách (self-punctuating) Ví dụ, mã chiều

dài thay đổi (0, 10, 110, 111) có đặc tính tự động tách mặc dù những chiều dài với những từ mã còn lại cùng bằng những từ mã trong (0, 10, 010, 111)

Đặc tính tự động tách có thể được thấy rõ ràng hơn nếu ta kết hợp các từ mã với các nút của một cây nhị phân trong Hình 1.9 Mỗi nhánh trái được đánh dấu bằng 0 và nhánh phải được đánh dấu bằng 1 trong cây nhị phân Trong suốt quá trình giải mã, mỗi từ mã có thể đạt được bằ ng cách sưu tập tất

cả các 0 và 1 từ gốc đến mỗi lá Mỗi khi một lá đạt được, ta biết rằng kết thúc một từ mã

Hình 1.9: Mã tiền tố

Trang 26

1.2.3.3 Các mã tiền tố và các cây nhị phân

Ngoài đặc tính tự động tách, còn có một kiểu khác để kiểm tra một mã

có thể giải mã duy nhất được gọi là mã tiền tố Mã tiền tố có thể được xác định bằng cách kiểm tra nên nó cũng được gọi là đặc tính tiền tố

Một tiền tố là một số bit liên tục đầu tiên của một từ mã Khi hai từ mã

có chiều dài khác nhau , đó là từ mã ngắn hơn giống với một số bit đầu tiên của từ mã dài hơn Trong trường hợp này, từ mã ngắn hơn được gọi là tiền tố của từ mã dài hơn

Ví dụ 1.3: Xem xét hai từ mã nhị phân có chiều dài khác nhau :

c 1 =0100 và c 2 =010011

Từ mã ngắn c 1 là tiền tố của từ mã c 2 =010011 Từ mã c 2 có thể thu

được bằng cách nối thêm hai bit 11 với c 1

Đặc tính tiền tố của mã nhị phân l à cơ sở lập luận để kiểm tra một từ

mã không phải là tiền tố của một từ mã khác

Ví dụ 1.4: Xem xét các từ mã trong hai mã (0, 10, 010, 101) và (0, 10,

110, 111)

Không có một từ mã là tiền tố của một từ mã khác trong mã có thể giải mã duy nhất (0, 10, 110, 111) Ngược lại , trong mã (0, 10, 010, 101) không có thể giải mã duy nhất , từ mã 0 là tiền tố của từ mã 010 Cũng vậy từ

mã 10 là tiền tố của từ mã 101

Đặc tính tiền tố trở thàn h đặc điểm ưa thích khi tìm kiếm mã có thể

giải mã duy nhất Mã với đặc tính tiền tố được gọi là mã tiền tố Nói cách

khác, mã tiền tố là mã mà không có từ mã là tiền tố của từ mã khác , hoặc một từ mã không thể được suy ra từ một từ mã khác bằng cách nối thêm các bit với từ mã ngắn hơn

Trang 27

Các bước để vẽ cây nhị phân:

Xây dựng cây nhị phân

Đầu tiên, tạo một nút là gốc của cây nhị phân Tiếp theo, ta xem từng bit của từ mã Với mỗi từ mã, ta đọc một bit một lần từ đầu đến cuối Bắt đầu từ gốc, ta vẽ nhánh mới hoặc di chuyển xuống mỗi cạnh dọc theo nhánh theo giá trị của bit

Khi bit 0 được đọc, nếu chưa có nhánh ta vẽ nhánh trái và nút mới tại cuối của nhánh Ta di chuyển xuống một cạnh theo nhánh trái ngược lại và đến nút cuối của cạnh Tương tự, khi bit 1 được đọc, nếu chưa có nhánh, ta vẽ nhánh phải, hoặc di chuyển xuống một cạnh theo nhánh phải ngược lại

Lặp lại quá trình từ nút đến nút trong khi đọc từng bit cho đến khi kết thúc từ mã Ta đánh dấu từ mã sau khi kết thúc toàn bộ từ mã

Kiểm tra vị trí từ mã

Nếu tất cả các nhãn từ mã được kết hợp với các lá, thì từ mã là mã tiền tố Ngược lại, không phải mã tiền tố

Ví dụ 1.6: Xét xem các mã (1, 01, 001, 0000) và (0, 10, 110, 1011) với

bảng chữ cái (A, B, C, D) mã nào là mã tiền tố

1 Vẽ cây nhị phân như trong Hình 1.10 (a) và (b) với mỗi mã ở trên

Trang 28

Hình 1.10: Đặc tính tiền tố và các cây nhị phân

2 Với một mã tiền tố, các từ mã được kết hợp với các lá Vì tất cả các

mã tron g (1, 01, 001, 0000) là các lá (Hình 1.10 (a)), ta có thể dễ dàng kết luận rằng (1, 01, 001, 0000) là mã tiền tố

Vì từ mã 10 (B) được kết hợp với nút bên trong của cây nhị phân (Hình 1.10 (b)), ta kết luận rằng (0, 10, 110, 1011) không phải mã tiền tố

Tuy nhiên, với các từ mã ngắn hơn , ta có thể dễ dàng suy ra kết luận theo định nghĩa của mã tiền tố Ví dụ, chú ý từ mã thứ hai 10 là tiền tố của từ

mã cuối cùng 1011 trong (0, 10, 110, 1011), ta có thể dễ dàng kết luận rằng không có mã tiền tố mà không cần vẽ cây nhị phân

1.2.3.4 Các mã tiền tố và có thể giải mã duy nhất

Điều này có ng hĩa là tất cả các mã tiền tố có thể giải mã duy nhất Nếu một

mã là mã tiền tố, thì mã đó có thể giải mã duy nhất

Tuy nhiên , nếu mã không phải là mã tiền tố , ta không thể kết luận rằng mã đó không thể giải mã duy nhất

Trang 29

Ví dụ 1.7: Xem xét mã (0, 01, 011, 0111) với (A, B, C, D) Đây không phải là một mã tiền tố vì từ mã đầu tiên 0 là tiền tố của các từ mã khác : 01,

011, và 0111

Tuy nhiên , cho một thông điệp đã mã hóa 01011010111 chỉ có một cách để giải mã nó : 01 011 01 0111 là BCBD Mỗi 0 đưa ra có nghĩa là tự động cách trong ví dụ này Ta chỉ cần chú ý 0, bắt đầu của mỗi từ mã và bit 1 trước bất kỳ 0 nào, bit cuối của từ mã

Một số từ mã có thể giải mã duy nhất nhưng yêu cầu tìm kiếm trước trong suốt quá trình giải mã Điều này làm cho chúng không hiệu quả bằng

vì chỉ có một bit 1 bên trái trong thông điệp không phải là một từ mã Quay lại lựa chọn cuối, xem xét lại quá trình 01 và giải mã chúng bằng B Chỉ bằng cách này, quá trình giải mã đã hoàn tất

Như có thể thấy , quá trình giải mã không đơn giản Nó bao gồm quá trình học ―thử và sai‖ và đòi hỏi ―sự lần tìm ngược‖ Hai lần chọn sai của một từ mã không thể xác định được cho đến giai đoạn sau cùng và thông điệp

được giải mã phải được xem xét lại nhiều lần

Trang 30

Hình 1.11: Không phải mã tiền tố nhưng có thể giải mã duy nhất

1.2.4 Cơ bản về lý thuyết thông tin

Một trong số các đặc tính quan trọng trong lĩnh vực lý thuyết thông tin

là entropy được giới thiệu bởi C E Shannon vào năm 1948 trong bài báo ― A Mathematical Theory of Communication‖ Theo lý thuyết của Shannon , entropy là độ đo lượng thông tin không chắc chắn Giả sử một tập tin có chứa

các biểu tượng s 0 , s 1 , …, s k và mỗi biểu tượng có một xác suất xuất hiện là

p(s 0 ), p(s 1 ), …, p(s k ) Lượng thông tin với mỗi biểu tượng được xác định bằng –log 2 p(s k ) và thường được biểu diễn theo bit Áp dụng định nghĩa trên ,

entropy được định nghĩa như sau Entropy H(S) là lượng thông tin trung bình,

nói cách khác , entropy là số bit trung bình cần thiết để mã hóa một biểu tượng:

) ( )

(

L k

k

s p S

Trang 31

1.2.5 Sự dư thừa

Công việc đầu tiên trong nén dữ liệu là xác định bất kỳ sự dư thừa nào

được biểu diễn trong dữ liệu nguồn Vì vậy thuật ngữ sự dư thừa có một ý nghĩa chung chung Nó có thể là một số thông tin được che dấu , một số cơ sở

dữ liệu chung, một số các ký tự giống nhau hay một số cấu trúc tương đương trong tự nhiên, nhưng tất cả có chung quan điểm là tiết kiệm bộ lưu trữ

Ta sẽ xem xét những dư thừa khác nhau từ các ví dụ đơn giản sau đây:

Ví dụ 1.9: Xâu BAAAAAAAC gồm các ký tự lặp lại liên tục

Sự thừa ở đây là 7 biểu tượng A lặp lại mà có thể được thay thế bởi một xâu ngắn hơn như r7A

Ví dụ 1.10: Xâu ABACAA gồm các ký tự lặp lại không liên tục

Sự dư thừa trong ví dụ này đến từ sự xuất hiện của biểu tượng A theo bảng chữ cái mã hóa chiều dài cố định Biểu tượng A xuất hiện nhiều hơn các biểu tượng khác Nếu sử dụng một từ mã ngắn hơn để biểu diễn các biểu tượng thường xuyên hơn và một từ mã dài hơn cho các biểu tượng ít thường xuyên hơn, ta có thể biểu diễn xâu theo dạng ngắn hơn

Ví dụ 1.11: Xem xét một văn bản với các từ được lặp lại như sau:

the red, the green and the blue colour, and

the paint in red, green or blue

Ở đây sự dư thừa là các từ được lặp lại, đó là các xâu như red, green,

và blue

Ví dụ 1.12: Xem xét một vectơ gồm các số nguyên: (6, 428, 32, 67,

125)

Sự dư thừa trong ví dụ này dữ liệu thuộc đoạn lớn [6, 428] Do đó ,

mỗi dữ kiện d trong vectơ yêu cầu 9 bit để biểu diễn vì 0 < d < 512 và

Trang 32

gồm đoạn nhỏ hơn nhiều [0, 13] Bây giờ chỉ cần 4 bit để biểu diễn mỗi dữ

kiện d‟ được chia tỷ lệ vì 0 d'  16 và 24=16

Ví dụ 1.13: Xem xét một ma trận dữ liệu nhị phân

010 011 001 010 000 nếu ta đọc dữ liệu một hàng sau đó đến hàng khác

Tuy nhiên, sự dư thừa bị ẩn trở nên rõ ràng hơn nếu ta chia ma trận thành ba ma trận đầu vào 1-bit như sau:

1 Loại bỏ hai bit cuối của mỗi đầu vào:

Trang 33

Ví dụ 1.14: Sự dư thừa không gian

Một hình ảnh thường chứa hàng triệu các điểm ảnh Mỗi điểm ảnh xu

Chẳng hạn mối quan h ệ tương quan giữa các láng giềng được gọi là sự dư thừa không gian Hình 1.12 cho thấy một cách đơn giản để giảm sự dư thừa

Các điểm ảnh bên trái có thể được xấp xỉ với một điểm ảnh bên phải miễn là

nó có thể chấp nhận được bởi hệ thống thị giác con người

Hình 1.12: Các điểm ảnh với các màu giống nhau

Ví dụ 1.15: Sự lượng tử hóa

Hình 1.13: Một biểu đồ trong những khoảng xác định

Trong hình 1.13(a), miền bóng biểu diễn sự dư thừa Giả sử x =x‘ và y=1000y‘+2500 và ta có sự biểu diễn đơn giản hơn nhiều như trong (b)

Ví dụ 1.16: Phép biến đổi

Nếu ta chuyển hệ tọa độ của các điểm bằng cách quay theo chiều kim đồng hồ

32 độ thì dữ liệu dễ xử lý hơn nhiều

Trang 34

Hình 1.14: Một số dữ liệu ma trận được tập hợp dọc theo một dòng

Mỗi ví dụ ở trên cho thấy một kiểu dư thừa khác nhau Một dư thừa có thể được xem xét trong nhiều cách khác nhau và điều này có thể dẫn đến các phương pháp nén khác nhau

Trang 35

Chương II KỸ THUẬT CHUYỂN ĐỔI BURROWS WHEELER

2.1 Chuyển đổi Burrows-Wheeler (BWT)

BWT là một trong những phương pháp nén văn bản hiệu quả nhất ra đời vào thế kỷ 20 BWT có một lịch sử thú vị và có những ứng dụng vượt ngoài mục đích ban đầu của nó như một phương pháp nén

Giả sử ta có hai cụm từ mà các ký tự đã được sắp xếp lại : atd nrsoocimpsea Hãy tạo ra hai từ chứa tất cả các ký tự đó (bao gồm cả dấu cách)? Chúng có thể là comedian pastors, darpa economists, massacred potion, maniac doorsteps, scooped martians,

Đây là một ví dụ về BWT sử dụng ý tưởng hấp dẫn về hoán vị của các chữ cái trong một tài liệu làm cho nó dễ hơn để nhận thấy một sự biểu diễn ngắn gọn và thực hiện các kiểu xử lý khác Điều hết sức ngạc nhiên về BWT

là mặc dù có 2,615,348,735,999 hoán vị nhưng BWT tạo ra nó dễ để tìm thấy hoán vị nhanh và chính xác

Mục đích chính của hoán vị một văn bản bằng cách sử dụng BWT không phải làm cho nó khó đọc mà làm cho nó dễ để nén Ví dụ, với lời độc thoại nổi tiếng của Hamlet như sau:

―To be or not to be: that is the question, whether tis nobler in the mind

to suffer the slings and arrows of outrageous fortune.‖

Văn bản được chuyển đổi sẽ là:

“sdoosrtesrsefeeoe:nsrrtdn,r h onnhbhhbglfhuhnofu antttttw mltt bs ioaiui Tttn i fne r eoeetraoguiwi e ao es e urqstoo o”

Chú ý rằng nhiều ký tự trong văn bản được chuyển đổi xuất hiện trong

các run (xâu gồm các biểu tượng giống nhau ), hoặc rất gần với sự xuất hiện

trước đó Với các văn bản dài hơn điều này càng dễ nhận thấy hơn Dưới đây

Trang 36

mã hóa bằng:

19nt7nh3ng8nj5nhd3ng

Trong thực tế các bộ mã BWT sử dụng nhiều biểu diễn phức tạp hơn

dòng đầu tiên trong ví dụ trên chứa chỉ 8 ký tự khác nhau đó là ―n‖, ―N‖, ―h‖, hay ―g‖) Mục đích là chuyển đổi làm cho việc mã hóa đơn giản hơn nhiều, và

quan trọng cung cấp kết quả nén có thể so sánh với các phương pháp nén

không tổn hao tốt nhất Hơn nữa, tốc độ nén phải nhanh hơn các phương pháp

mà cho cùng tỷ lệ nén

Phương pháp BWT dựa vào việc ―sắp xếp khối‖, vì nó đưa ra một khối

văn bản và các hoán vị của nó Nhược điểm chính của phương pháp sắp xếp khối là nó không thể xử lý văn bản theo từng ký tự một, mà phải đọc một khối (thường là hàng chục KB ) và sau đó nén nó Điều này không có một giới hạn với hầu hết các mục đích , nhưng không loại trừ một số ứng dụng phải xử lý dữ liệu xen chương trình chạy Mục đích quan trọng khác là văn bản phải được sắp xếp, trong suốt luận văn ta giả thiết việc sắp thứ tự duy nhất trên các

ký tự hoặc các biểu tượng trong văn bản để các xâu con có thể được so sánh bằng các thuật toán sắp xếp

Trang 37

2.1.1 Cách làm việc của chuyển đổi Burrows-Wheeler

Giả sử BWT mã hóa xâu T gồm n ký tự T[1 n] trên một bảng chữ

cái Σ gồm |Σ| ký tự

2.1.1.1 Chuyển đổi Burrows-Wheeler thuận

Chuyển đổi thuận về bản chất liên quan đến việc sắp xếp tất cả các phép quay của xâu đầu vào , nó nhóm các ký tự xuất hiện trong các ngữ cảnh

tương tự lại với nhau Hình 2.1a cho thấy các phép quay A sẽ xuất hiện nếu chuyển đổi được cho T= mississippi là đầu vào, và Hình 2.1b cho thấy kết quả của việc sắp xếp A gọi là A s

Hình 2.1

(a) Mảng A chứa tất cả các phép quay của đầu vào mississippi

(b) A s thu được bằng cách sắp xếp A Cột cuối của A s (ký hiệu L ) là đầu ra của BWT

) như đã được đề xuất bởi Hình 2.1, ta có thể tạo ra một mảng R[1 n] tham chiếu đến các xâu đã được quay trong văn bản đầu vào T Khởi tạo R[i]=i với i  1 ,n, như được thể

Trang 38

được sắp xếp bằng cách sử dụng xâu con bắt đầu tại T[R[i]] như là khóa so

sánh Hình 2.2b cho thấy kết quả củ a quá trình sắp xếp Ví dụ, vị trí 11 là xâu

được quay lần đầu tiên theo thứ tự từ điển (imiss ), được theo sau bởi vị trí 8 (ippim ) và vị trí 5 (issip ), Xâu tham chiếu cuối cùng là R = [11, 8, 5, 2,

1, 10, 9, 7, 4, 6, 3]

Hình 2.2 Mảng R được sử dụng để sắp xếp file mẫu mississippi

Mảng R trực tiếp chỉ đến các ký tự trong T tương ứng với cột đầu tiên của A s (cột F) Cột cuối của A s ( cột L) là đầu ra của BWT , và có thể được biểu thị bằng T[R[i]-1], với i 1 ,n Trong trường hợp này, văn bản được

chuyển đổi là L=pssmipissii Ta phải truyền một chỉ số a để báo cho bộ giải

mã đó là vị trí L tương ứng với ký tự cuối của văn bản gốc (tức là hàng của A s chứa xâu gốc T) Trong trường hợp này chỉ số a = 5

Với mô tả trên chuyển đổi đã hoàn thành mà chỉ sử dụng không gian

O(n) (với R) Thời gian thực hiện là O(n) để tạo ra các mảng R, cộng với thời

gian cần thiết để sắp xếp Thông thường việc sắp xếp được đánh giá mất thời

gian trung bình là O(nlogn) nếu phương pháp chuẩn như quicksort được sử

dụng

Ngày đăng: 17/10/2014, 07:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
10."Move to front" by Arturo San Emeterio Campos : http://www.arturocampos.com/ac_mtf.html Sách, tạp chí
Tiêu đề: Move to front
11. Gerald R. Tamayo The Data Compression Guide - Algorithms and Implementations, Move-to-Front (MTF) Coding;https://sites.google.com/site/compgt/mtf Link
2. Đặng Văn Chuyết, Tạ Tuấn Anh - Cơ sở lý thuyết truyền tin - Tập I, II - ĐHBK Hà Nội 2000 Khác
3. TS Lê Quyết Thắng, ThS Phan Tấn Tài, Ks Dương Văn Hiếu - Đại Học Cần Thơ: Giáo Trình Lý Thuyết Thông Tin Khác
4. Nguyễn Lê Anh, Nguyễn Văn Xuất, Phạm Thế Long: Giáo trình lý thuyết mã –– Trường ĐHDL Đông Đô – 1997 Khác
3. J. L. Bentley, D. D. Sleator, R. E. Tarjan, V. K. Wei, Communications of the ACM-Vol. 29, No. 4, (1986), A Locally Adaptive Data Compression Scheme Khác
4. J. Abel. Incremental frequency count—a post BWT-stage for the Burrows-Wheeler compression algorithm. Software: Practice and Experience, 37:247–265, 2007 Khác
5. B. Balkenhol, S. Kurtz, and Y. M. Shtarkov. Modification of the Burrows and Wheeler data compression algorithm. In Proc. of IEEE Data Compression Conference (DCC), pages 188–197, 1999 Khác
6. J. Bentley, D. Sleator, R. Tarjan, and V. Wei. A locally adaptive data compression scheme. Com-munications of the ACM, 29(4):320–330, 1986 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Máy nén và máy giải nén. - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.1 Máy nén và máy giải nén (Trang 12)
Hình 1.1 Cho thấy một mô hình dựa trên mối quan hệ giữa các thuật  toán nén và giải nén - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.1 Cho thấy một mô hình dựa trên mối quan hệ giữa các thuật toán nén và giải nén (Trang 12)
Hình 1.3: Những thuật toán nén không hao tổn - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.3 Những thuật toán nén không hao tổn (Trang 13)
Hình  1.4  cho  thấy  một  ví  dụ  số  thập  phân  dài  trở  thành  phép  xấp  xỉ  ngắn hơn sau quá trình nén – giải nén - Nén dữ liệu theo kỹ thuật move   to front
nh 1.4 cho thấy một ví dụ số thập phân dài trở thành phép xấp xỉ ngắn hơn sau quá trình nén – giải nén (Trang 14)
Hình 1.5: Dữ liệu về nén - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.5 Dữ liệu về nén (Trang 20)
Hình 1.6: Dữ liệu về giải nén  1.2.2 Dữ liệu ký hiệu - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.6 Dữ liệu về giải nén 1.2.2 Dữ liệu ký hiệu (Trang 21)
Hình 1.7: Dữ liệu ký hiệu về nén - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.7 Dữ liệu ký hiệu về nén (Trang 22)
Hình 1.12: Các điểm ảnh với các màu giống nhau  Ví dụ 1.15: Sự lượng tử hóa. - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.12 Các điểm ảnh với các màu giống nhau Ví dụ 1.15: Sự lượng tử hóa (Trang 33)
Hình 1.14: Một số dữ liệu ma trận được tập hợp dọc theo một dòng - Nén dữ liệu theo kỹ thuật move   to front
Hình 1.14 Một số dữ liệu ma trận được tập hợp dọc theo một dòng (Trang 34)
Hình 2.2 Mảng R được sử dụng để sắp xếp file mẫu mississippi - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.2 Mảng R được sử dụng để sắp xếp file mẫu mississippi (Trang 38)
Hình 2.3 Mảng A s  với mississippi. F và L là các cột đầu và cuối tương ứng - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.3 Mảng A s với mississippi. F và L là các cột đầu và cuối tương ứng (Trang 40)
Hình  2.5  Mảng  (A s )  mặc  nhiên  được  khôi  phục  để  giải  mã  xâu  pssmipissii - Nén dữ liệu theo kỹ thuật move   to front
nh 2.5 Mảng (A s ) mặc nhiên được khôi phục để giải mã xâu pssmipissii (Trang 42)
Hình 2.6 Các mảng phụ trợ V và W có thể được sử dụng để giải mã xâu mẫu - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.6 Các mảng phụ trợ V và W có thể được sử dụng để giải mã xâu mẫu (Trang 44)
Hình 2.8: Mã hóa Huffman - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.8 Mã hóa Huffman (Trang 47)
Hình 2.9: Mã hóa Huffman ngược - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.9 Mã hóa Huffman ngược (Trang 47)
Hình 2.10: Xác suất và khoảng con khởi tạo của biểu tượng - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.10 Xác suất và khoảng con khởi tạo của biểu tượng (Trang 48)
Hình 2.11: Mã hóa số học - Nén dữ liệu theo kỹ thuật move   to front
Hình 2.11 Mã hóa số học (Trang 49)
Bảng 2.3: Sự đảo ngược tần số - Nén dữ liệu theo kỹ thuật move   to front
Bảng 2.3 Sự đảo ngược tần số (Trang 49)
Bảng 2.4: Mã hóa khoảng cách - Nén dữ liệu theo kỹ thuật move   to front
Bảng 2.4 Mã hóa khoảng cách (Trang 50)
Bảng 2.1: Mã hóa Move-To-Front - Nén dữ liệu theo kỹ thuật move   to front
Bảng 2.1 Mã hóa Move-To-Front (Trang 53)
Bảng 2.2: Giải mã Move-To-Front - Nén dữ liệu theo kỹ thuật move   to front
Bảng 2.2 Giải mã Move-To-Front (Trang 55)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w