Như hầu hết các chuyển đổi, BWT không thay đổi kích thước file đã được chuyển đổi , nhưng đơn thuần sắp xếp lại làm cho nó dễ để biểu diễn ngắn gọn hơn . Sau đó nó cần được mã hóa bằng cách sử dụng giai đoạn thứ hai gọi là ―chuyển đổi từ cục bộ đến tổng thể – Local to Global Transform‖ (LGT).
Nhiều kỹ thuật tinh vi đã được đề xuất để khai thác các quy luật của văn bản được chuyển đổi BWT và đã xuất hiện một số các phương pháp đơn giản nhất (RLEAC dựa trên mã hóa chiều dài run và bộ mã số học order-0)
cung cấp tỉ lệ nén tốt nhất và tốc độ rất nhanh được so sánh với các phương pháp phức tạp hơn. Phần này xem xét các phương pháp tiếp cậ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
40
được đề xuất bao gồm : mã hóa entropy , danh sách ―Move -To-Front‖ (MTF) gốc của Burrows và Wheeler, sự đảo ngược tần số (inversion frequencies), mã hóa khoảng cách, các phương pháp đếm tần số.
2.1.2.1 Mã hóa Entropy
Trước khi ta xem xét cụ thể cấu trúc của một xâu BWT có thể được khai thác cho việc nén như thế nào, ta sẽ xem lại một số nguyên tắc cơ bản mà các biểu tượng có thể được chuyển đổi thành các bit như thế nào dựa trên ước lượng phân bố xác suất với mỗi biểu tượng có thể xảy ra như thế nào . Quá trình này được gọi là mã hóa entropy, vì mục đích để biểu diễn các biểu tượng theo một số bit có thể và giới hạn này được quyết định bởi entropy. Các hệ thống dựa trên BWT mà ta sẽ xem xét thường sử dụng mã hóa entropy cho
giai đoạn cuối cùng của nó. Vì vậy BWT được xem như là bước tiền xử lý để chuẩn bị dữ liệu.
Trong mã hóa entropy, biểu diễn một biểu tượng dựa trên một số ước lượng xác suất của biểu tượng đang hiện hành . Biểu tượng tiếp theo được mã hóa được suy ra từ phân phối xác suất thường được ước lượng dựa trên các quan sát trước đó. Ví dụ, nếu ký tự ―e‖ được xuất hiện 20 trong số 100 ký tự cuối cùng, ta có thể ước tính xác suất ký tự tiếp theo ―e‖ sẽ là 20%.
Mã hóa Huffman và mã hóa số học là hai phương pháp mã hóa entropy được sử dụng rộng rãi nhất.
2.1.2.2 Mã hóa Huffman
Mã Huffman là một kỹ thuật nén dữ liệu được sử dụng trong nén hình ảnh, văn bản ,... Mã Huffman dựa trên xác suất của dữ liệu xuất hiện trong dãy. Các biểu tượng xuất hiện thường xuyên hơn sẽ cần ít các bit hơn các biểu tượng mà ít thường xuyên hơn . Xem một dãy gồm 6 biểu tượng. Xác suất xuất hiện của các biểu tượng được cho như Hình 2.8.
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
41
Hình 2.8: Mã hóa Huffman
Đầu tiên, mã Huffman tính tổng đồng thời hai biểu tượng có xác suất nhỏ nhất thành một biểu tượng mới với một xác suất mới (0,06+0,04=0,1), lặp lại quá trình đó cho đến khi chỉ còn một biểu tượng, và xác suất bằng 1. Bước ngược lại để mã hóa mỗi xác suất với mã nhị phân bắt đầu với nguồn nhỏ nhất và làm trở lại nguồn ban đầu. Cho các bit nhị phân 0 và 1 với nguồn bên phải, sau đó đi ngược trở lại với cùng đường, thêm vào nguồn 0 và 1. Hoạt động này được lặp lại với mỗi nguồn được giảm cho đến khi nguồn ban đầu đạt được. Mã cuối cùng xuất hiện tận bên trái của Hình 2.9.
Hình 2.9: Mã hóa Huffman ngược
Có thể thấy từ Hình 2.9, biểu tượng a2 được mã hóa với 1 bit và a5 có
mã với 5 bit. Tóm lại, các biểu tượng mà xuất hiện thường xuyên hơn được mã với ít bit hơn các biểu tượng ít thường xuyên.
2.1.2.3 Mã hóa số học
Mã hóa số học là một kỹ thuật mã hóa entropy khác. Như mã hóa Huffman, xác suất xuất hiện của các biểu tượng trong thông điệp mã hóa phải được biết trong mã hóa số học. Mã hóa số học mã hóa dữ liệu bằng cách tạo
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
42
ra một số thực giữa 0 và 1 biểu diễn dãy giá trị. Để dễ hiểu, giả sử ta mã hóa một dãy a1a2a3a3a4 với xác suất được cho trong Hình 2.10.
Trong mã hóa số học , quá trình bắt đầu với nửa khoảng [0, 1), tất cả các biểu tượng có xác suất xuất hiện của chúng và được đặt vào một khoảng con gồm tần số mà nó giữ trong thông điệp . Vì biểu tượng đầu tiên của thông điệp đang được mã hóa, khoảng thông điệp khởi tạo được thu hẹp với [0.0, 0.2). Bước tiếp theo là chia khoảng thông điệp thêm một lần nữa thành khoảng con nhỏ hơn với biểu tượng tiếp theo a2, cung cấp một khoảng con [0.04, 0.08). Với biểu tượng tiếp theo a3, khoảng được phân chia thành một
khoảng con mới [0.056, 0.072). Tiếp tục quá trình này, ta sẽ đạt được khoảng cuối cùng [0.0688, 0.06752). Dãy các biểu tượng có thể được mã hóa với bất kỳ số nào trong biểu diễn khoảng dữ liệu.
Hình 2.10: Xác suất và khoảng con khởi tạo của biểu tượng
Hình 2.10 cho thấy 4 biểu tượng của dữ liệu nguồn và xác suất mỗi biểu tượng, cũng như khoảng con khởi tạo mà biểu tượng được kết hợp . Hình 2.11 cho thấy quá trình cơ bản của mã hóa số học . Đó là 5 biểu tượng của thông điệp và 4 biểu tượng của dữ liệu nguồn được mã hóa.
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
43
Hình 2.11: Mã hóa số học
2.1.2.4 Sự đảo ngược tần số (Inversion Frequencies-IF)
Phương pháp đảo ngược tần số (IF) được giới thiệu bởi Arnavut và Magliveras, mục đích là để thay thế giai đoạn MTF. Ý tưởng của phương pháp IF là dựa trên khoảng cách giữa sự xuất hiện các biểu tượng sau giai đoạn BWT. Ví dụ, dãy L=[3 2 5 1 4 1 3 4 5 6 1 2 2] là đầu ra của BWT. Bước đầu tiên là tạo một danh sách các biểu tượng . Ở đây danh sách biểu tượng là S=[1 2 3 4 5 6]. Bắt đầu với biểu tượng đầu tiên của danh sách bằng cách đếm khoảng cách của biểu tượng sau đó loạ i bỏ biểu tượng từ dãy ban đầu. Để dễ hiểu hơn, hãy nhìn vào bảng dưới đây.
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
44
Đầu ra của tần số đảo ngược là [3 1 4 1 6 0 0 2 1 0 0 0 0]. So với dãy ban đầu, đáng chú ý là nhiều các giá trị 0 hơn được tạo ra bởi phương pháp IF.
2.1.2.5 Mã hóa khoảng cách (DC)
Mã hóa khoảng cách được dựa trên bắt đầu của mỗi biểu tượng trong đầu ra của BWT, vì vậy ta phải biết xuất hiện đầu tiên của biểu tượng. Sau đó, ta phải đếm khoảng cách của cùng biểu tượng từ xuất hiện đầu tiên của biểu tượng. Biểu tượng được đếm từ dãy gốc mà không loại bỏ các biểu tượng. Kết thúc biểu tượng sẽ có được khoảng cách 0 để thông báo kết thúc mỗi biểu tượng. Ví dụ, L=[3 2 5 1 4 1 3 4 5 6 1 2 2]
Bảng 2.4: Mã hóa khoảng cách
Khi giải mã, ta bắt đầu với cột xuất hiện đầu tiên , bằng cách thiết lập xuất hiện đầu tiên của mỗi biểu tượng đến vị trí của riêng nó . Từ bảng 2.4 có thể thấy rằng biểu tượng 1 xuất hiện đầu tiên theo vị trí thứ 4, biểu tượng 2 theo vị trí thứ 2, biểu tượng 3 theo vị trí thứ 1, và vv….Ở đây ―*‖ là biểu tượng chưa được biết.
Khoảng cách của cột run tiếp theo cho ta biết khoảng cách đến cùng biểu tượng. Khoảng cách biểu tượng 1 đến run tiếp theo là 2. Đặt 1 thứ hai tại vị trí 6 và khoảng cách tiếp theo là 5 từ vị trí 6 đó là vị trí 11.
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
45
Sau khi tiếp tục điều này với tất cả các biểu tượng , kết quả cuối cùng của bộ giải mã là L=[3 2 5 1 4 1 3 4 5 6 1 2 2]
2.1.2.6 Mã hóa run_length
Mã hóa run-length (RLE) là một kỹ thuật nén đơn giản, mà có thể để sử dụng trước hoặc sau BWT để giảm số lượng các run trong dãy dữ liệu. RLE hiệu quả hơn khi dãy chứa nhiều dữ liệu lặp lại. Ý tưởng chính của RLE là để tính các run được lặp lại trong dữ liệu đầu vào và thay thế các biểu tượng với số lần lặp khác nhau. Ví dụ, dãy các biểu tượng của dữ liệu đầu vào 1112222333444444, biểu tượng ―1‖ được lặp lại ba lần, biểu tượng ―2‖ lặp lại bốn lần, các giá trị có thể được biểu diễn như (1,3), (2,4),…. Dãy có thể được mã hóa bởi cặp (giá trị, lần lặp) đến hết dữ liệu gốc.
Dữ liệu đầu vào: 1112222333444444 Bộ mã hóa: 13243346
Giải mã run-length, biểu tượng đầu tiên của bảng mã hóa được biết bởi giá trị của biểu tượng, biểu tượng thứ hai là lần lặp của một giá trị, trong đó 3 lần đối với biểu tượng 1.
Bộ giải mã: 111XXXXXXXXXXXXX
Trong khi giải mã đến hết giá trị, đầu ra của bộ mã hóa là: Dữ liệu đầu ra: 1112222333444444
Mã hóa RLE sẽ nén các biểu tượng của dãy hiệu quả với các run chứa các biểu tượng lớn hơn hoặc bằng 3. Nhưng nếu các lần lặp của các run là nhỏ hơn 2, điều đó không giảm tỉ lệ nén của dãy.
Dữ liệu đầu vào: 112334 Bộ mã hóa: 12213241
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
46
Các phương pháp đếm tần số cải tiến MTF bằng cách dựa trên thứ hạng của các biểu tượng trên các tần số của ch úng. Cách tiếp cận đơn giản nhất là đưa ra thứ hạng cao nhất cho biểu tượng với tần số cao nhất , điều đó sẽ không hiệu quả vì nó sẽ mất quá nhiều thời gian để thích ứng với các biểu tượng ưu tiên mà đã trở thành phổ biến theo chi phí của các biểu tượng phổ biến trước đó.
Đếm trọng số tần số (WFC) được thực hiên bằng cách định nghĩa một hàm dựa trên tần số biểu tượng và khoảng cách đến xuất hiện cuối cùng của mỗi biểu tượng trong cửa sổ trượt , với các trọng số cao hơn sẽ được gán cho sự xuất hiện của biểu tượng mới xáy ra . Trong khi phương pháp này cung cấp tỷ lệ nén tốt, nhưng nó rất chậm vì sự phức tạp trong tính toán.
Một cách khác là đếm gia tăng tần số (IFC) mà gần giống với WFC bằng cách giữ số đếm của ký t ự xuất hiện khi chúng được quan sát , cung cấp nhiều trọng số hơn cho các xuất hiện mới xảy ra . Điều này làm cho việc tính toán nhanh hơn, nhưng chi phí về hiệu suất nén nhỏ.
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
47