7. Ý nghĩa khoa học của đề tài
2.3.1. Các định nghĩa
Để mô tả các thuật toán , ký hiệu sau sẽ được sử dụng. Giả sử A là một tập có thứ tự, được gọi là bảng chữ cái, với kích thước |A|. Giả sử X=x0x1x2…xn-1 biểu thị một dãy với chiều dài n và xiA. Mỗi giai đoạn có một dãy đầu vào Xin và một dãy đầu ra Xout cũng như một bảng chữ cái đầu vào tương ứng Ain và một bảng chữ cái đầu ra Aout. Giai đoạn xử lý các biểu tượng của Xin và tính toán các biểu tượng tương ứng của Xout. Sau khi kết thúc một giai đoạn, Xout của giai đoạn này sẽ được sử dụng như
Xin của giai đoạn sau. Kích thước tối đa với Xin được gọi kích thước khối bn. Đến giai đoạn GST, Ain và Aout sẽ có chiều dài bit của 8 kết quả bit trong |Ain|=|Aout|=256. Vì một số giai đoạn GST có các biểu tượng đầu ra có các giá trị lớn hơn 255, chiều dài bit của Ain và Aout sau giai đoạn GST được áp dụng là 32 bit để có thể điều khiển các giá trị lớn hơn 255. Hơn nữa, dãy biểu diễn nhị phân của một biểu tượng a được gọi là
Ba, ví dụ B4=”100” và B7=”111”. Tỉ lệ và tốc độ nén được đo trên Calgary Corpus [Bell và các cộng sự 1989,1990], đó là tập hợp các file chuẩn được sử dụng cho các thuật toán nén làm chuẩn.
2.3.2. Sự đảo ngược tần số (IF)
Nhiều giai đoạn GST đã được đề xuất từ khi BWCA ra đời vào năm 1994. Mục đích của nó là đưa ra một dãy đầu ra có thể nén được bởi mã hóa entropy nhiều hơn dãy đầu ra của giai đoạn MTF gốc . Một thay thế MTF là thuật toán từ Arnavut và Magliveras [1997] được gọi là là sự đảo ngược tần số (IF) .
Ý tưởng : Dựa trên khoảng cách giữa sự xuất hiện của các biểu tượng sau BWT. Bắt đầu với biểu tượng đầu tiên của danh sách bằn g cách đếm khoảng cách của các 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 sau đó.
Ví dụ, với dãy L = [NNBAAA] là đầu ra của BWT.
Đầu tiên tạo một danh sách các biểu tượng S, ở đây S = [A,B,N]. Ta có kết quả sau khi đã mã hóa ở bảng 2.3 như sau:
Bảng 2.3: Sự đảo ngược tần số
List Occurrence Sequence
A 3,0,0 NNBAAA
B 2 NNB
N 0,0 NN
Đầu ra của tần số đảo ngược là [3 0 0 2 0 0 ]. So với dãy ban đầu, đáng chú ý là nhiều các giá trị 0 được tạo ra bởi phương pháp IF.
Thuật toán IF không phải là LUA . Với mỗi biểu tượng aAin, IF đưa ra dãy thành phần Sa. Với mỗi biểu tượng bảng chữ cái a của dãy đầu vào Xin được quét và nếu phần tử hiện hành của Xin bằng a, số các biểu tượng lớn hơn a giữa vị trí hiện hành và vị trí cuối cùng của a là đầu ra. Để khôi phục Xin từ tập Sa thì những tần số của các biểu tượng bảng chữ cái hoặc một biểu tượng dấu kết thúc sau mỗi Sa cần được thêm vào.
Ưu điểm: Dữ kiện mà dãy thành phần biểu tượng cuối cùng z của bảng chữ cái được gọi là Sz chỉ chứa biểu tượng 0. Vì vậy Sz không cần để khôi phục dãy gốc và chiều dài của Xout có được nhỏ hơn chiều dài của Xin. Xout của IF khác với Xout của MTF theo nhiều khía cạnh. Xout của giai đoạn MTF chứa nhiều run 0, đó là biểu diễn các run của những biểu tượng bằng nhau và những run đó được phân phối bằng nhau trên toàn bộ dãy. Xout của giai đoạn IF chứa nhiều dãy thành phần Sa, với mỗi aAin
ngoại trừ biểu tượng cuối cùng z. Sa của các biểu tượng cao hơn có các giá trị đặc trưng nhỏ hơn Sa của các biểu tượng thấp hơn, vì số lượng của các biểu tượng bảng chữ cái lớn hơn biểu tượng đã được quét. Sa với các biểu tượng cuối cùng của Ain
thường có nhiều run dài của các 0.
Hạn chế: Giai đoạn IF đưa ra dãy thành phần Sa với mỗi biểu tượng aAin. Trong suốt quá trình này, chỉ các biểu tượng lớn hơn a được đếm . Vì vậy , nếu các biểu tượng với phân phối tần số cao sẽ được xử lý đầu tiên , các dãy thành phần của các biểu tượng tiếp theo, với phân bố tần số thấp hơn có được các giá trị nhỏ hơn. Mặt khác, những dãy thành phần cho các biểu tư ợng với phân phối tần số cao dài hơn các dãy thành phần cho các biểu tượng với một phân phối tần số thấp hơn
Hình 2.12 so sánh sự phân chia các 0 của file book1 trên vị trí file với cả đầu ra giai đoạn MTF và đầu ra giai đoạn IF. Như có thể thấy, sự chia sẻ trung bình của các 0 trong đầu ra của IF gia tăng về cuối file cho đến khi đạt đến 100% khi kết thúc. Với đầu ra của MTF, sự chia sẻ trung bình của các 0 giao động khoảng 60%.
Hình 2.12: Sự chia sẻ các zero theo phần trăm của file book1: (a) Vị trí đầu ra MTF
(b) Vị trí đầu ra IF
2.3.3. Mã hóa khoảng cách (DC)
Thuật toán DC có liên quan hơn với thuật toán IF và dựa trên lược đồ mã hóa khoảng từ Elias [1987]. Với mỗi biểu tượng của dãy đầu vào, thuật toán DC cung cấp khoảng cách đến xuất hiện tiếp theo của cùng biểu tượng . Nếu biểu tượng không xuất hiện nữa, 0 là đầu ra . Binder [2000] đã đề xuất ba cải tiến từ thuật toán cơ bản. Nếu chiều dài của dãy đầu vào cũng được truyền, dãy cuối cùng của những số 0 mã hóa là dư thừa. Hơn nữa, để tính toán khoảng cách đến xuất hiện tiếp theo của cùng biểu tượng, chỉ có những biểu tượng chưa được biết phải được đếm. Cải tiến cuối cùng là nếu biểu tượng cuối cùng bằng với biểu tượng hiện hành, không có biểu tượng nào được đưa ra và DC xử lý với biểu tượng tiếp theo. Sự khác biệt chính với mã hóa khoảng của Elias là DC không đếm các biểu tượng đã được biết và bỏ qua các biểu tượng lặp đi lặp lại
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=[NNBAAA]
Bảng 2.4: Mã hóa khoảng cách
Symbol Fist occurrence Distance to next run
A 4 1,1,0
B 3 0
N 1 1,0
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 A xuất hiện đầu tiên theo vị trí thứ 4, biểu tượng B theo vị trí thứ 3, biểu tượng N theo vị trí thứ 1, và vv….Ở đây “*” là biểu tượng chưa được biết.
N * B A * *
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 A đến run tiếp theo là 1. Đặt A tiếp theo tại vị trí 5 và khoảng cách tiếp theo là 1 từ vị trí 5 đó là vị trí 6.
N * B A A A
Tiếp tục điều này với biểu tượng N, kết quả cuối cùng của bộ giải mã là L=[NNBAAA]
N N B A A A 2.3.4. Phương pháp đếm trọng số tần số (WFC).
Một giai đoạn GST khác là thuật toán WFC được trình bày bởi Deorowicz năm 2002 [5] đạt tỉ lệ nén tốt hơn nhiều so với các giai đoạn MTF . Vì một biểu tượng được đưa thẳng lên trước L mà không đưa phân phối tần số trước của biểu tượng vào tín h toán, giai đoạn MTF đẩy tới nhiều lần những biểu tượng thường xuyên hơn về một bên bằng những biểu tượng ít được sử dụng thường xuyên hơn . Điều này làm cho những giá trị xếp hạng cao hơn với những biểu tượng đã sử dụng thường xuyên và cản trở quá trình nén tại giai đoạn EC, vì các giá trị thấp hơn ít chi phí để nén hơn với các mô hình EC đã được sử dụng phổ biến
biểu tượng mới xảy ra . Phương pháp này cung cấp tỉ lệ nén tốt , nhưng rất chậm và phức tạp trong tính toán
Bảng 2.5 biểu diễn những giá trị xếp hạng trung bình r x của MTF và giai đoạn WFC cùng với thời gian thực hiện tương ứng theo giây với tất cả các file của Calgary Corpus. Những giá trị xếp hạng trung bình là những giá trị trung bình dãy đầu ra của những giai đoạn tương ứng . Cả giai đoạn MTF và WFC được thực hiện với giai đoạn RLE được xử lý trước.
Bảng 2.5: Những giá trị xếp hạng trung bình rx và thời gian thực hiện theo giây cho những giai đoạn MTF và WFC.
Trong tất cả các trường hợp, những giá trị xếp hạng trung bình cho giai đoạn WFC là nhỏ hơn hoặc bằng với giai đoạn MTF, vì vậy dãy đầu ra WFC có thể được nén cao hơn. Hạn chế của giai đoạn WFC là thời gian tiêu thụ cao, khoảng 20 lần so với giai đoạn MTF
2.3.5. Những thay thế MTF khác
Bên cạnh MTF, WFC và IF, CD đã có những giai đoạn GST được xuất bản, như thuật toán MTF-1 từ Balkenhol, Kurtx và Shtarkov [1999], thuật toán MTF-2 từ Balkenhol và Shtarkov [1999]. Các thuật toán MTF-1 và MTF-2 gần với thuật toán
MTF. MTF-1 đưa biểu tượng từ vị trí thứ hai lên đầu danh sách, những biểu tượng với vị trí cao hơn được đưa đến vị trí thứ hai. MTF-1 khác với MTF-1, bởi thực tế những biểu tượng từ vị trí thứ hai được đưa đến đầu danh sách nếu giá trị xếp hạng cuối cùng không phải là 0, tức là nếu cùng biểu tượng được xuất hiện lại lần nữa..
2.3.6. Mã hoá Run Length
RLE là một thuật toán nén dữ liệu đơn giản và phổ biến. Dãy có chiều dài l của biểu tượng lặp đi lặp lại s được thay thế bởi một dãy ngắn hơn, thường chứa một hay nhiều hơn những biểu tượng s, thông tin chiều dài và đôi khi một biểu tượng escape c. 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 L = NNNNBBBBAAA, biểu tượng “N” được lặp lại bốn lần, biểu tượng “B” lặp lại bốn lần, biểu tượng “A” được lặp lại ba lần. Các giá trị có thể được biểu diễn như (N,4), (B,4),(A,3)
Khi đó bộ mã hóa được là: N4B4A3
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ị.
Bộ giải mã: NNNNXXXXXXX
Trong khi giải mã đến hết giá trị, đầu ra của bộ mã hóa là: Dữ liệu đầu ra: NNNNBBBBAAA
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: NNBAAA Bộ mã hóa: N2B1A3
Trong một số cách tiếp cận B WCA, giai đoạn RLE được sử dụng trước BWT hoặc trước giai đoạn EC . Hầu hết những cài đặt BWT sử dụng RLE trước giai đoạn EC vì đầu ra GST chứa nhiều run dài những số 0, Balkenhol và Shtarkov đặt tên cho hiện tượng này là “áp suất của run” . Giai đoạn RLE làm giảm áp suất này . Một kiểu RLE phổ biến cho máy nén dựa trên BWT là chuyển đổi run_0 (RLE0) từ Wheeler [Fenwick, 1996] được thể hiện trong hình 2.13.
Hình 2.13: Thuật toán nén Burrows-Wheeler sử dụng giai đoạn RLE0
Để giải thích các mô hình hoạt động của các giai đoạn khác nhau, hình 2.14(a)- 2.14(e) cho thấy dữ liệu được chuyển đổi của xâu đầu vào
“abracadabraabracadabra” trong hệ 16. Dữ liệu đầu vào của giai đoạn BWT được hiển thị trong hình 2.14(a). Như có thể thấy trong hình 2.14(b) dữ liệu đầu ra của BWT chứa nhiều dãy những biểu tượng lặp lại và có cấu trúc cục bộ , tức là những biểu tượng với cùng ngữ cảnh tạo thành các đoạn nhỏ. Trong ví này giai đoạn GST là MTF được sử dụng để chuyển đổi cấu trúc cục bộ của đầu vào BWT sang cấu trúc tổng thể bằng cách sử dụng lược đồ xếp hạng theo những biểu tượng vừa mới xảy ra sau cùng và đưa ra dãy những số 0 liên tiếp như được hiển thị trong hình 2.14(c). Giai đoạn RLE0 loại bỏ các run_0 trong hình 2.14(d) và giai đoạn EC cuối cùng đưa ra đầu ra bit bằng cách sử dụng lược đồ mã hóa số học trong hình 2.14(e).
Hình 2.14: Dữ liệu được chuyển đổi của xâu đầu vào ”abracadabraabracadabra” với các giai đoạn khác nhau
2.3.7. Các cải tiến với mã hóa RLE
2.3.7.1. Hoạt động chung
Các thuật toán RLE khác khác nhau chủ yếu bởi ba điểm: ngưỡng t, đánh dấu bắt đầu của một run và mã hóa thông tin chiều dài. Nếu l nhỏ hơn t, run giữ không thay đổi, và nếu l lớn hơn hoặc bằng t, run được thay thế . Bắt đầu của một run có thể được biểu thị bằng một run ngưỡng hay một biểu tượng escape c. Nếu run ngưỡng được sử dụng, bắt đầu được mô tả bằng một dãy nhỏ s, dãy này có chiều dài lớn hơn hoặc bằng t. Nếu biểu tượng escape c chỉ định bắt đầu của run, thì s thường đặt sau c
xuất hiện của c phải được mã hóa làm sao mà nó không lẫn lộn với bắt đầu của run. Thông tin chiều dài l có thể được mã hóa theo nhiều cách khác nhau. Thông thường l
đặt trực tiếp sau run ngưỡng hay sau s.
Maniscalco [2001] mô tả một thuật toán sử dụng mã hóa chiều dài thay đổi và chia thông tin chiều dài làm hai phần: một phần mũ e và một phần biểu diễn nhị phân
Ba. Phần mũ e, được gọi là kích thước của mã hóa chiều dài thay đổi trong bài báo của Maniscalco, tương ứng với logarithm của l. Phần biểu diễn nhị phân Ba, được gọi là
giá trị của mã hóa chiều dài thay đổi bởi Maniscalco, chứa các bit biểu diễn nhị phân của l. Một cấu trúc đưa đến thuật toán RLE tao nhã và hiệu quả cho BWCA.
Hai thuật toán RLE được xây dựng và thảo luận trong phần tiếp theo. Một thuật toán dựa trên mã hóa chiều dài thay đổi của Maniscalco được gọi là RLE-EXP. Thuật toán khác là một thuật toán mới có tên là RLE-BIT và dựa trên ý tưởng sử dụng hai biểu tượng escape hơn là một.
2.3.7.2. Vị trí mới cho giai đoạn RLE
Gringeler đã có ý tưởng với vị trí giai đoạn RLE trực tiếp sau giai đoạn BWT thay vì trước giai đoạn EC [2002]. Có hai lý do cho thứ tự mới. Vì chiều dài Xout của giai đoạn RLE thường nhỏ hơn chiều dài của Xin, giai đoạn GST phải xử lý ít biểu tượng hơn với giai đoạn RLE ở phía trước. Ngoài ra, giai đoạn RLE thường nhanh hơn giai đoạn GST, vì vậy toàn bộ quá trình nén trở nên nhanh hơn. Lý do thứ hai là việc mã hóa các run làm giảm áp suất của các run thực sự tại giai đoạn GST và điều này làm cho dãy đầu ra GST có thể nén được tốt hơn. Tỉ lệ nén cho BWCA với giai đoạn RLE-BITvà RLE sau giai đoạn WFC (RLE0, [Fenwick, 1996]) được so sánh trong bảng 2.6. Đặt vị trí giai đoạn RLE lên trước giai đoạn WFC đạt được lợi ích nén khoảng 1.3%.
Bảng 2.6. Tỉ lệ nén với giai đoạn RLE trước và sau giai đoạn WFC trong bps.
2.3.7.3. Thuật toán RLE-EXP
Vì biểu tượng escape c khác với biểu tượng run s, c phá vỡ ngữ cảnh biểu tượng cục bộ. Vì vậy, cách sử dụng run ngưỡng thay cho biểu tượng escape thường