.b –4 Xây dựng mã Huffman – bước 4

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kho dữ liệu an toàn với mã huffman (Trang 60 - 65)

Từ đó, khi đi từ gốc đến từng lá, ta thu được bảng mã của các chữ cái như sau: Chữ cái Tần suất Mã Huffman T 61 11 D 43 01 L 70 10 C 23 000 G 12 001

c. Thuật toán giải mã

Bước 1: Đọc lần lượt từng bit trong tập tin nén và duyệt cây nhị phân đã được xác định cho đến khi hết một lá. Lấy ký tự ở lá đó ghi vào tệp giải nén.

Bước 2: Trong khi chưa hết tập tin nén thì thực hiện bước 1, ngược lại thực hiện bước 3.

Bước 3: Kết thúc thuật toán.

d. Ứng dụng mã hóa Huffman để nén file

Các bước thực hiện nén:

- Đọc file và xác định các ký tự xuất hiện trong file & tần suất của chúng - Dựng cây mã Huffman

- Dựa vào cây mã thu được mã hóa từng ký tự và ghi vào file nén - Lưu cây mã vào cuối file nén

Các bước giải nén ngược lại.

Nhược điểm của thuật toán Huffman trên (Huffman tĩnh) là quá trình mã hóa phải duyệt dữ liệu 2 lần: một lần để xác định tần suất & dựng cây mã, một lần nữa để mã hóa. Do đó, thuật toán Huffman động được đề xuất (độc lập) bởi Faller (1973), Gallager (1978) vào năm 1985, Knuth đưa ra một số cải tiến và hoàn chỉnh thuật toán (vì thế thuật

không cần tính trước số lần xuất hiện của các kí tự, không cần lưu thông tin phục vụ cho việc giải nén, quá trình nén chỉ cần một lần duyệt file và có thể nén trên dữ liệu phát sinh theo thời gian thực.

CHƯƠNG 5. GIỚI THIỆU BÀI TOÁN MÃ HÓA VĂN BẢN TIẾNG VIỆT 5.1. Yêu cầu bài toán

Văn bản trước khi đưa lên kho lưu trữ cần được mã hóa, để đảm bảo tính bí mật và riêng tư của người sử dụng, với từ khóa do người dùng tự nhập vào (như vậy mỗi người sử dụng sẽ có một từ khóa riêng cho mỗi văn bản mà họ đưa lên kho lưu trữ)

Sau khi các văn bản được mã hóa sẽ được nén lại để đảm bảo tối ưu kho lưu trữ. Việc mã hóa cũng như nén giữ liệu sẽ được thực hiện trên các văn bản Tiếng Việt với các từ (đơn và ghép) để nâng cao hiệu quả bảo mật cũng như tỷ lệ nén dữ liệu.

5.2. Đề xuất giải pháp cho mã hóa và nén văn bản tiếng Việt

5.2.1. Mã hóa văn bản tiếng Việt với phương pháp mã hóa Vigenere

Áp dụng phương pháp mã hóa Vigenere để mã hóa văn bản tiếng Việt trước khi nén. Để nâng cao tính bảo mật và độ phức tạp cho các phương pháp thám mã Vigenere, việc mã hóa vă bản được thực hiện trên các từ tiếng Việt (bao gồm cả từ đơn và từ ghép) thay vì chỉ là mã hóa các ký tự.

Như vậy, chỉ cần với một bộ từ điển Tiếng Việt khoảng 30.000 từ thì hình vuông Vigenère hay bảng Vigenère sẽ là một ma trận 30.000 x 30.000; Và với một từ khóa có độ dài là d = 3 (ví dụ với từ khóa “Bài tập Tiếng Anh về nhà” với 3 từ ghép trong từ điển là “bài tập”, “Tiếng Anh”, “về nhà”) thì các thuật toán vét cạn sẽ phải quét với tổng số là: 30.000*30.000*30.000 = 27.000.000.000.000 khóa hợp lệ thay vì 26*26*26 = 17.576 khóa hợp lệ nếu tiến hành việc mã hóa trên các ký tự.

5.2.2. Nén văn bản tiếng Việt với phương pháp mã hóa Huffman

Áp dụng thuật toán mã Huffman để nén và giải nén các văn bản tiếng Việt: thay vì thay thế một ký tự bằng 1 chuỗi các bít 0,1 thì sẽ thay thế 1 từ bằng một chuổi bít (ví dụ: thay thế từ “Ngày” bằng một chuổi bít 0,1).

Khắc phục nhược điểm của thuật toán Huffman: khi nén văn bản phải liệt kê tỷ lệ xuất hiện từng từ, và cây Huffman sẽ khác nhau giữa các văn bản khác nhau. Như vậy để nén và giải nén thì cần gửi kèm cây mã Huffman.

Để khắc phục điểm này cần xây dựng một bộ mã Huffman dựa trên số lần xuất hiện của từng từ trên một bộ dữ liệu đầu vào (là căc văn bản được dùng làm dữ liệu mẫu). 5.2.3. Tập văn bản mẫu cho việc mã hóa và nén văn bản Tiếng Việt

Việc kết hợp hai phương pháp mã hóa Vigenere và Huffman trên văn bản Tiếng Việt sẽ đưa ra các bài toán yêu cầu cần xử lý:

- Để mã hóa Vigenere cần có 01 hình vuông Vigenere với mỗi hàng/cột là 01 từ Tiếng Việt (là từ đơn hay ghép có nghĩa trong Từ điển Tiếng Việt).

- Phương pháp mã Huffman yêu cầu xây dựng bộ thư viện mẫu bằng cách phân tích một tập các văn bản, tài liệu … đầu vào, qua đó thống kê tần suất xuất hiện của các từ (đơn và ghép) qua đó xây dựng lên bộ mã Huffman.

- Tuy nhiên việc phân tích các văn bản với văn phong hiện đại sẽ phát sinh những trường hợp như:

o Các từ cổ trong Tiếng Việt không xuất hiện đầy đủ ở các văn bản tài liệu. Điều này dẫ tới tập thư viện của mã Huffman sẽ nhở hơn bộ từ điển của mã Vigenere.

o Việc vay mượn hay giữ nguyên các từ phiên âm tiếng Anh cũng như sự phát sinh từ mới trong văn phong hiện đại sẽ làm cho bộ mã Huffman chứa những từ không có trong bộ từ điển tiếng Việt.

 Nói cách khác các tập từ điển cho hai phương pháp mã hóa là không trùng lặp, không phủ kín nhau:

Từ điển Tiếng Việt

Thư viện từ của mã Huffman

Các từ trong Từ điển Tiếng Việt được sử dụng

trong tập văn bản mẫu

Văn phong hiện đại, các từ giữ nguyên từ tiếng nước ngoài Các từ Tiếng Việt cổ ít hoặc không còn sử dụng trong các văn bản, tài liệu mới

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kho dữ liệu an toàn với mã huffman (Trang 60 - 65)

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

(78 trang)