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

Một phần của tài liệu Nén dữ liệu theo kỹ thuật move to front (Trang 35 - 37)

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 là một trích đoạn tiêu biểu của BWT:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 30 nnnnnnnnnnnnnnnnnntnnnnnnnhnnngnnnnnnnnjnnnnnhdnnng nnnnonnNnnnhhNnnnnnnnnntnnhnnnnnnnnnnnnnnNnndnnnhnn nnnNnnnnnnnnnnnnnnnnnnnnnonntnnNNnnnnnnnndngnnnnnnn nnnnnnnNnnnnnnnngnnnnnnnnnnnnnnnnnngnnnnnnnnonnnnnn nnnNNnlnnnhnnnnnnnnnntdbdnnrrmnnmnmnnnuoccppppppdnr rDolBbbdddodbbBddbbddbdBdbbdbdDddddBbbbbdDbubbdbdbB

Sự phân cụm của các ký tự này làm cho quá trình nén rất dễ dàng. Một cách đơn giản để mã hóa nó là thay thế các ký tự được lặp lại với một số mà diễn đạt bao nhiêu lần nó được lặp lại . Ví dụ, trên dòng đầu tiên có thể được 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 mà tận dụng sự hỗn hợp của các ký tự xuất hiện thường xuyên (Ví dụ, bố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.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

31

Một phần của tài liệu Nén dữ liệu theo kỹ thuật move to front (Trang 35 - 37)

Tải bản đầy đủ (PDF)

(77 trang)