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 BAAAAAAACgồ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à 29=512. Sự dư thừa này có thể được giảm bằng một phương pháp chia tỷ lệ đơn giản. Ví dụ, lấy phần dư của d chia 32 với dữ liệu , ta có (0, 13, 1, 2, 4)
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
26
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ì 0d'16 và 24=16.
Ví dụ 1.13: Xem xét một ma trận dữ liệu nhị phân.
000 001 011 011 001 001 001 010 001 001 001 010 011 001 010 000
Một số mẫu nhị phân dư thừa trong ma trận này. Dữ liệu hai chiều có thể dễ dàng được xem như một dãy xâu. Ví dụ, 000 001 011 011 001 001 001 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: 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
2. Giữ lại bit ở giữa của mỗi đầu vào: 0 0 1 1
0 0 0 1 1 0 1 0 1 0 1 0
3. Loại bỏ hai bit đầu tiên của mỗi đầu vào: 0 1 1 1
1 1 1 0 1 1 0 0
Bây giờ ma trận con đầu tiên chứa liên tiếp các 0. Ma trận con thứ hai chứa liên tiếp các 0 nhiều hơn 1, và ma trận con cuối cùng chứa liên tiếp các 1 nhiều hơn 0.
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
27
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 hướng trong cùng một màu hay tương tự nhau như các láng giềng của nó . 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.
Trong Hình 1.14, sự dư thừa có thể được thấy từ các điểm bên trá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.
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
28
Hình 1.14: Một số dữ liệuma 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.
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
29
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 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