Lược đồ nén dữ liệu ứng dụng phương pháp MTF

Một phần của tài liệu (LUẬN văn THẠC sĩ) các kỹ thuật kiểm thử đột biến và ứng dụng kiểm thử chương trình c (Trang 48 - 50)

Chương 2 NÉN DỮ LIỆU VÀ PHƯƠNG PHÁP MOVE-TO-FRONT

2.7 Lược đồ nén dữ liệu ứng dụng phương pháp MTF

2.7.1 Lược đồ nén dữ liệu

Một lược đồ điển hình của thuật toán nén dữ liệu Burrows - Wheeler được trình bày như hình 13 bao gồm 4 giai đoạn. Mỗi giai đoạn sẽ xử lý và biến đổi khối dữ liệu để tạo dữ liệu đầu vào cho giai đoạn tiếp theo. Khi nén dữ liệu thì các giai đoạn xử lý lần lượt từ trái sang phải; khi giải nén thì thực hiện từ phải sang trái.

Hình 13. Lược đồ nén dữ liệu của Burrows-Wheeler

Giai đoạn đầu tiên của thuật toán nén là phép biến đổi BWT. Mục đích của giai đoạn này là sắp xếp dữ liệu theo cách mà các ký tự có cùng ngữ cảnh nhóm lại gần nhau hơn. BWT khơng làm thay đổi số lượng các ký hiệu có trong khối dữ liệu, trừ khi ta phải thêm vào chỉ số của ký hiệu đầu tiên của khối dữ liệu chưa mã hóa,

input

ký hiệu này được sử dụng để biến đổi khối dữ liệu về thứ tự ban đầu. Chỉ số này là một số nguyên có giá trị từ 0 đến n-1 (n là số lượng ký tự trong khối dữ liệu nguồn), và nó được đặt tại vị trí đầu tiên của khối dữ liệu được mã hóa bằng BWT.

Giai đoạn thứ hai là phương pháp dịch chuyển MTF, được sử dụng trong thuật toán nén dữ liệu BWCA. MTF là một thuật toán cập nhật lại khối dữ liệu bằng cách thay thế các ký hiệu lặp lại thường xuyên bằng các ký hiệu có số thứ tự là 0. MTF cũng khơng làm thay đổi kích thước khối dữ liệu. Điều kỳ diệu ở đây là trước giai đoạn này là phương pháp BWT đã làm biến đổi vị trí các ký hiệu, các ký hiệu giống nhau đứng cạnh nhau, vì thế khi di chuyển ký hiệu đứng đầu về phía trước thì ký hiệu ngay sau đó sẽ có mã là “0”.

Giai đoạn thứ ba là nén số lượng các ký hiệu sử dụng thuật toán RLE. Thuật toán RLE sẽ dồn các ký hiệu lặp đi lặp lại nhiều lần bằng cách thay thế số lần lặp của ký hiệu đó. Như vậy thuật tốn này thu nhỏ kích thước của khối dữ liệu nhưng lại làm tăng số ký hiệu trong khối dữ liệu bởi vì RLE cịn phải lưu giữ số lần lặp của ký hiệu đó, số lần lặp là một số nguyên cũng chính là mã của ký hiệu mới có giá trị từ 0 đến 255, nếu số lần lặp lớn hơn 255 thì ta phải dồn thành hai đoạn.

Giai đoạn thứ tư là phương pháp nén dữ liệu Entropy. Entropy Coding là một phương pháp nén dữ liệu không mất thơng tin, nó phụ thuộc vào tần suất xuất hiện các ký hiệu. Trong các phương pháp mã hóa Entropy có các thuật tốn Huffman Coding và Arithmetic Coding.

2.7.2 Nén dữ liệu

Để làm rõ các giai đoạn nén dữ liệu khác nhau, hình 14 hiển thị các dịch chuyển khối dữ liệu đầu vào là "abracadabraabracadabra" bằng mã Hexa. Khối dữ liệu trong các bài tốn thực tế là 64KB, trong ví dụ này ta bỏ qua chỉ số của ký hiệu đầu tiên trong phép dịch chuyển BWT.

BWT input: 61 62 72 61 63 61 64 61 62 72 61 61 62 72 61 63 61 64 61 62 72 61 BWT output: 61 72 72 64 64 61 72 72 63 63 61 61 61 61 61 61 61 61 62 62 62 62 MTF output: 61 72 00 65 00 02 02 00 65 00 02 00 00 00 00 00 00 00 65 00 00 00 RLE output: 61 72 00 65 00 02 02 00 00 65 00 02 00 00 05 65 00 00 01

Huffman: 89 67 EC E5 62 03

Hình 14. Thể hiện các bước nén khối dữ liệu "abracadabraabracadabra".

Ta nhận thấy trong giai đoạn BWT kết xuất khối dữ liệu ra có các ký hiệu cùng ngữ cảnh được lặp đi lặp lại liên tiếp nhau. Giai đoạn MTF tạo ra các ký hiệu có mã 00 nhiều hơn so với khối dữ liệu ban đầu. Giai đoạn thứ ba là RLE dồn các ký hiệu giống nhau lại với nhau và ghi lại số lần lặp của ký hiệu đó. Trong ví dụ trên ta thấy có 7 ký hiệu 00 được nén lại thành “00 00 05”, nghĩa là có 5 ký hiệu đứng sau ký hiệu 00. Giai đoạn thứ 4 là thuật toán Huffman xử lý trên chuỗi BIT theo cấu trúc cây Huffman. Hai giai đoạn BWT và MTF không làm thay đổi kích thước khối dữ liệu. Trong khi đó thuật tốn RLE và Huffman làm thay đổi kích thước khối dữ liệu nguồn.

Trong ví dụ trên tác giả bỏ qua các dữ liệu thêm vào như chỉ số của ký hiệu đầu tiên trong thuật toán BWT, cấu trúc cây Huffman trong thuật toán nén Entropy. Tuy nhiên trong nhiều trường hợp khác, dữ liệu thêm vào là không đáng kể so với hệ số nén của thuật toán.

Một phần của tài liệu (LUẬN văn THẠC sĩ) các kỹ thuật kiểm thử đột biến và ứng dụng kiểm thử chương trình c (Trang 48 - 50)

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

(63 trang)