1. Trang chủ
  2. » Công Nghệ Thông Tin

DA3 data compression (text compression) vo quoc hung

40 221 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Bùng nổ công nghệ thông tin cùng với sự mở rộng mạng lưới Internet hiện nay giúp cho việc trao đổi và chia sẻ tài nguyên (phim, ảnh, nhạc, văn bản…) trên toàn thế giới được nhanh chóng và thuận lợi. Văn hóa nhân loại cũng đạt đến trình độ cao và luôn không ngừng gia tăng về chất lượng cũng như số lượng. Những vấn đề liên quan đến việc chia sẻ và lưu trữ thông tin được con người quan tâm từ những năm đầu của thế kỷ XX đó là: Làm sao để có thể lưu trữ lượng tài nguyên lớn với chi phí thấp? Làm thế nào để việc chia sẻ thông tin đi một cách nhanh hơn mà không làm thay đổi nội dung? Làm sao để giảm tải tới mức tối đa đường truyền mạng? .v.v. Câu trả lời cho những thắc mắc trên chính là sự ra đời của thuật ngữ nén (nén dữ liệu). Báo cáo Đồ án III này là kết quả của việc tìm hiểu một cách tổng quan về nén dữ liệu (Data Compression), trong đó đi sâu hơn về mảng nén văn bản (Text Compression). Với sự nỗ lực và cố gắng của bản thân, sự hướng dẫn nhiệt tình của cô giáo – TS. Nguyễn Thị Thanh Huyền, em đã hoàn thành Đồ án III nhưng vì hạn chế về kiến thức và thời gian nên không tránh khỏi thiếu sót. Em rất mong nhận được sự đóng góp ý kiến từ các thầy cô giáo để hoàn thiện hơn nữa. Em xin chân thành cảm ơn

Đồ án III – Data Compressing Lời nói đầu Bùng nổ công nghệ thông tin với mở rộng mạng lưới Internet giúp cho việc trao đổi chia sẻ tài nguyên (phim, ảnh, nhạc, văn bản…) toàn giới nhanh chóng thuận lợi. Văn hóa nhân loại đạt đến trình độ cao không ngừng gia tăng chất lượng số lượng. Những vấn đề liên quan đến việc chia sẻ lưu trữ thông tin người quan tâm từ năm đầu kỷ XX là: Làm để lưu trữ lượng tài nguyên lớn với chi phí thấp? Làm để việc chia sẻ thông tin cách nhanh mà không làm thay đổi nội dung? Làm để giảm tải tới mức tối đa đường truyền mạng? .v.v. Câu trả lời cho thắc mắc đời thuật ngữ nén (nén liệu). Báo cáo Đồ án III kết việc tìm hiểu cách tổng quan nén liệu (Data Compression), sâu mảng nén văn (Text Compression). Với nỗ lực cố gắng thân, hướng dẫn nhiệt tình cô giáo – TS. Lê Thị Thanh Huyền, em hoàn thành Đồ án III hạn chế kiến thức thời gian nên không tránh khỏi thiếu sót. Em mong nhận đóng góp ý kiến từ thầy cô giáo để hoàn thiện nữa. Em xin chân cảm ơn! Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing Mục lục Lời nói đầu . I. Tổng quan . 1.1. Tổng quan nén liệu? . 1.1.1. Khái niệm liệu 1.1.2. Khái niệm nén liệu . 1.1.3. Mục đích việc nén liệu . 1.1.4. Tốc độ tỷ lệ nén . 1.1.5. Các loại dư thừa liệu . 1.2. Phân loại ứng dụng 1.2.1. Dựa vào nguyên lý nén 1.2.2. Dựa vào cách thức thực nén 11 1.3. Quá trình nén giải nén . 11 1.3.1. Công đoạn nén 11 1.3.2. Công đoạn giải nén . 11 1.4. Những khái niệm mô hình nguồn 11 1.4.1. Định nghĩa mô hình nguồn 12 1.4.2. Một vài loại mô hình . 12 1.4.2.1. Mô hình context . 12 1.4.2.2. Mô hình ngữ pháp . 13 1.4.2.3. Mô hình state . 13 II. Nội dung thuật toán kỹ thuật nén liệu 15 2.1. Một số loại mã . 15 2.1.1. Mã ký hiệu . 15 2.1.2. Mã đóng gói 15 2.1.3. Mã theo độ dài . 16 Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing 2.2. Nội dung thuật toán 16 2.2.1. Phương pháp mã hóa Shannon-Fano . 16 2.2.2. Phương pháp mã hóa Huffman . 18 2.2.3. Phương pháp mã hóa LZ78 . 21 2.2.4. Phương pháp mã hóa LZW . 24 III. Kết chương trình mô số thuật toán nén . 32 3.1. Khái quát chương trình . 32 3.2. Mô thuật toán 32 3.2.1. Thuật toán Huffman 32 3.2.1.1. Lưu đồ thuật toán Huffman . 32 3.2.1.2. Kết chương trình 33 3.2.2. Thuật toán LZW . 35 3.2.2.1. Lưu đồ thuật toán LZW . 35 3.2.2.2. Kết chương trình 35 KẾT LUẬN . 39 TÀI LIỆU THAM KHẢO . 40 Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing Danh mục bảng biểu, hình vẽ Bảng 2.1: Mô tả thuật toán Shannon-Fano . 17 Bảng 2.2: Mô tả thuật toán LZ78 . 21 Bảng 2.3: Cấu trúc từ điển phương pháp mã hóa LZW 25 Hình 3.1: Lưu đồ thuật toán Huffman 32 Hình 3.2: Kết nén Huffman với đoạn văn 34 Hình 3.3: Lưu đồ thuật toán LZW 35 Hình 3.4: Kết nén LZW với đoạn văn 36 Hình 3.5: Thuật toán LZW - Quá trình mã hóa . 37 Hình 3.6: Thuật toán LZW – Quá trình giải mã 38 Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing I. Tổng quan 1.1. Tổng quan nén liệu? 1.1.1. Khái niệm liệu Dữ liệu mã hóa thông tin máy tính, bao gồm tập phần tử sở mà ta gọi liệu nguyên tử (atoms). 1.1.2. Khái niệm nén liệu Nén liệu ghi lại dòng liệu cho tốn nhớ mà cho phép khôi phục lại liệu ban đầu. 1.1.3. Mục đích việc nén liệu Một chức máy tính xử lý lưu trữ liệu. Câu hỏi đặt làm để xử lý nhanh lưu trữ nhiều? Bên cạnh việc nâng cấp sản phẩm công nghệ người ta quan tâm đến việc tiết kiệm nhớ giảm chi phí lưu trữ. Hiện nay, mạng Internet trở nên phổ biến phủ khắp giới, làm cho khoảng cách người với người bị gỡ bỏ mặt giao tiếp, trao đổi thông tin, liệu. Điều dẫn đến phải làm để giảm thiểu thời gian, chi phí sử dụng trao đổi liệu mạng. Nghĩa là, việc nâng cao chất lượng thiết bị truyền dẫn phải nghĩ phương pháp việc truyền tải liệu hiệu hơn. Tất vấn đề giúp nảy sinh khái niệm nén liệu. Một hình thức nén liệu hệ chữ Braille, dùng phương Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing pháp mã hóa ký hiệu cho người mù đọc viết. Ngày nay, nén liệu mang lại nhiều lợi ích to lớn:  Tìm kiếm nhanh hơn.  Tiết kiệm vùng nhớ.  Giảm chi phí lưu trữ, truyền tải liệu.  Mang lại hiệu cho việc truyền liệu qua mạng. 1.1.4. Tốc độ tỷ lệ nén Tất chương trình nén file dù có dùng chung thuật toán hoạt động chúng khác nhau. Các phần mềm nén giải nén triển khai để dung hòa vấn đề: thời gian tỷ lệ nén. Tỷ lệ nén đặc trưng quan trọng phương pháp nén. Tuy nhiên, cách đánh giá kết công bố cần quan tâm xem xét. Nhìn chung, người ta định nghĩa tỷ lệ nén sau: Tỷ lệ nén = 1/r (tính theo % ) Trong đó, r tỷ số nén định nghĩa: r = kích thước liệu gốc/ kích thước liệu thu sau nén. Như hiệu suất nén là: (1 – tỷ lệ nén). Tuy nhiên, phải thấy số đo phương pháp nén có giá trị với nén đó, hiệu nén phụ thuộc vào kiểu liệu định nén. Nhiều tỷ lệ nén cao chưa thể nói phương pháp hiệu phương pháp khác, chi phí khác thời gian, không gian chí độ phức tạp tính toán nữa. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing 1.1.5. Các loại dư thừa liệu Chúng ta biết nén liệu nhằm mục đích giảm kích thước liệu cách loại bỏ dư thừa liệu. Việc xác định chất kiểu dư thừa liệu có ích cho việc xây dựng phương pháp nén liệu khác nhau. Nói cách khác, phương pháp nén liệu khác sử dụng kiểu dư thừa liệu khác nhau, người ta coi có kiểu dư thừa chính:  Sự phân bố ký tự Trong dãy ký tự, có số ký tự có tần suất xuất nhiều số ký tự khác. Do vậy, ta mã hóa liệu cách cô đọng hơn. Các dãy ký tự có tần suất cao thay từ mã nhị phân với số bit nhỏ; ngược lại, dãy có tần suất thấp thay từ mã có nhiều bit hơn. Đây chất phương pháp mã hóa Huffman.  Sự lạp lại ký tự Trong số tình huống, ký hiệu (bit “0” hay “1”) lặp lặp lại số lần. Kỹ thuật nén dùng trường hợp thay dãy lặp dãy gồm thành phần: số lần lặp ký hiệu dùng để mã. Phương pháp mã hóa kiểu có tên mã hóa loạt dài RLC (Run Length Coding) – Phương pháp mã hóa RLC.  Những mẫu sử dụng tần suất Có thể có dãy ký hiệu xuất với tần suất tương đối cao. Do vậy, mã hóa bit hơn. Đây sở phương pháp mã hóa kiểu từ điển Lempel-Ziv đưa ra, có cải tiến năm 1977, 1978 tên gọi Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing phương pháp LZ77, LZx. Năm 1984, Terry Welch cải tiến hiệu đặt tên phương pháp mã hóa LZW (Lempel-Ziv – Welch).  Độ dư thừa vị trí Do phụ thuộc lẫn liệu, biết ký hiệu (giá trị) xuất vị trí, đồng thời đoán trước xuất giá trị vị trí khác cách phù hợp. Chẳng hạn, ảnh biểu diễn lưới hai chiều, số điểm hàng dọc khối liệu lại xuất vị trí hàng khác nhau. Do vậy, thay lưu trữ liệu, ta cần lưu vị trí hàng cột. Phương pháp nén dựa dư thừa gọi phương pháp mã hóa dự đoán. Cách đánh giá độ dư thừa hoàn toàn mang tính trực quan nhằm biểu thị xuất nhiều lần. Đối với liệu ảnh, đặc thù chung đó, có đặc thù riêng. Ví dụ có ứng dụng không cần toàn liệu thô ảnh mà cần thông tin đặc trưng biểu diễn ảnh biên ảnh hay vùng đồng nhất. Do vậy, có phương pháp nén riêng cho ảnh dựa vào biến đổi ảnh hay dựa vào biểu diễn ảnh. 1.2. Phân loại ứng dụng 1.2.1. Dựa vào nguyên lý nén Theo cách người ta phân thành hai họ:  Nén không tổn hao (nén bảo toàn): Đó mô hình nén liệu mà cho phép người sử dụng bảo toàn thông tin suốt trình nén. Điều giải thích sau: Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing Giả sử ta có liệu nguồn D liệu nén D’. Sau giải nén D’ liệu D” hoàn toàn giống với liệu D ban đầu. Thông thường, kỹ thuật áp dụng với loại liệu văn đòi hỏi độ xác văn bản. Nếu hiểu theo toán học ánh xạ 1-1 từ tập X -> Y cho: xi  X tương ứng với phần tử yi  Y. Thông dụng phương pháp nén không tổn hao thuật toán LZ (Lempel-Ziv). DEFLATE – biến thể thuật toán LZ, tối ưu hóa nhằm tăng tốc độ giải nén tỷ lệ nén, bù lại thuật toán có tốc độ trình nén chậm. DEFLATE dùng PKZIP, GZIP PNG. LZW (Lempel-Ziv – Welch) dùng định dạng file GIF. Hai biến thể thuật toán LZ đáng chý ý thuật toán LZX dùng định dạng file CAB Microsoft (Microsoft sử dụng thuật toán nén file CHM, file office 2007) thuật toán LZMA dùng chương trình 7-ZIP. Các thuật toán nén không tổn hao dùng để nén file file thực thi, file văn bản, word, excel… Các loại liệu sai lệch dù bit. Các thuật toán nén không tổn hao là:  Shannon-Fano  RLC (Run Length Coding)  LZ77, LZ78, LZW  Nén tổn hao (nén không bảo toàn) Nén không bảo toàn mô hình nén liệu mà tính bảo toàn liệu không trọng. Có nghĩa ta có liệu D, nén thành D’ Sinh viên thực hiện: Võ Quốc Hưng - 20102679 Đồ án III – Data Compressing giản nén D’, ta liệu D” khác với liệu D ban đầu. Kỹ thuật thường áp dụng cho việc nén liệu loại tệp ảnh. Trong phương pháp nén tổn hao liệu nén giải nén không giống với liệu gốc phải đảm bảo liệu sau giải nén hữu ích. Đối với hình ảnh, âm thanh, video, giới hạn mắt tai người nên lượng lớn dung lượng tiết kiệm cách loại bỏ phần dư thừa, chất lượng không thay đổi. Thực tế, file hình ảnh, âm video lưu trữ máy tính nén có tổn hao để tiết kiệm dung lượng băng thông. Đối lập với nén không tổn hao, phương pháp nén tổn hao thường gây giảm chất lượng nhanh thực nén giải nén đệ qui nhiều lần. Mã hóa suy hao thực theo kiểu chính: - Các mẫu hình ảnh, âm chia thành phần nhỏ biến đổi qua miền khác. Các hệ số biến đổi lượng tử hóa sau mã hóa mã Huffman mã hóa số học. - Các mẫu hình ảnh, âm trước sử dụng để dự đoán mẫu tiếp theo. Sai số liệu dự đoán liệu thực lượng tử hóa mã hóa. Ưu điểm nén tổn hao so với nén không tổn hao nén tổn hao nhiều trường hợp cho tỉ lệ nén cao nhiều so với thuật toán nén không tổn hao biết, đảm bảo chất lượng. Nén tổn hao thường sử dụng để nén ảnh, âm thanh, video. Âm nén với tỉ lệ 10:1 mã không giảm chất lượng. Video nén với tỉ lệ 300:1 với chất lượng giảm ít. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 10 Đồ án III – Data Compressing Do kích thước nhớ vô hạn để đảm bảo tốc độ tìm kiếm, từ điển giới hạn 4096 phần tử dùng để lưu lớn 4096 giá trị từ mã. Như độ dài lớn từ mã 12 bits (4096 = 212). Cấu trúc từ điển sau: … … 255 255 256 256 | Clear Code 257 257 | End of Information 258 Chuỗi … … 4095 Chuỗi 256: Mã hóa CC để khắc phục tình trạng mẫu lặp lớn 4096, mẫu lặp lớn 4096 gửi CC để xây dựng cho từ điển cho phần tiếp theo. Eoi: Báo hiệu hết phần nén. Bảng 2.3: Cấu trúc từ điển phương pháp mã hóa LZW  256 từ mã theo thứ tự từ 0…255 chứa số nguyên từ 0…255. Đây mã 256 ký tự bảng mã ASCII.  Từ mã thứ 256 chứa mã đặc biệt mã xóa CC (Clear Code). Mục đích việc dùng mã xóa nhằm khắc phục tình trạng số mẫu lặp ảnh lớn 4096. Khi ảnh quan niệm nhiều mảnh ảnh, Sinh viên thực hiện: Võ Quốc Hưng - 20102679 25 Đồ án III – Data Compressing từ điển từ điển gồm nhiều từ điển con. Cứ hết mảnh ảnh người ta lại gửi mã xóa để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh đồng thời khởi tạo lại từ điển cho mảnh ảnh mới. Mã xóa có giá trị 256.  Từ mã thứ 257 chứa mã kết thúc thông tin (EOI – End of Information). Mã có giá trị 257. Như biết, file ảnh GIF chứa nhiều ảnh, ảnh mã hóa riêng. Chương trình giải mã lặp lại thao tác giải mã ảnh gặp mã kết thúc thông tin dừng lại.  Các từ mã lại (từ 258 đến 4095) chứa mẫu thường lặp lại ảnh. 512 phần tử từ điển biểu diễn bits, từ mã từ 512 đến 1023 biểu diễn 10 bits, từ 1024 đến 2047 biểu diễn 11 bits từ 2048 đến 4095 biểu diễn 12 bits.  Nguyên lý: Nguyên lý hoạt động sau:  Một xâu kí tự tập hợp từ hai kí tự trở lên.  Nhớ tất xâu kí tự gặp gán cho dấu hiệu (token) riêng.  Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự thay dấu hiệu nó. Phần quan trọng phương pháp nén phải tạo mảng lớn dùng để lưu trữ xâu ký tự gặp (Mảng gọi “từ điển”). Khi byte liệu cần nén đem đến, chúng liền giữ lại đệm chứa (Accumulator) đem so sánh với chuỗi có “từ điển”. Nếu chuỗi liệu đệm chứa “từ điển” bổ sung Sinh viên thực hiện: Võ Quốc Hưng - 20102679 26 Đồ án III – Data Compressing thêm vào “từ điển” số chuỗi “từ điển” dấu hiệu chuỗi. Nếu chuỗi đệm chứa có “từ điển” dấu hiệu chuỗi đem thay cho chuỗi dòng liệu ra. Có bốn quy tắc để thực việc nén liệu theo thuật toán LZW là:  Quy tắc 1: 256 dấu hiệu dành cho ký tự đơn (0 – 0ffh).  Quy tắc 2: Cố gắng so sánh với “từ điển” đệm chứa có nhiều ký tự.  Quy tắc 3: Các ký tự đầu vào (Nhận từ tập tin nén) bổ sung vào đệm chứa đến chuỗi ký tự đệm chứa “từ điển”.  Quy tắc 4: Khi đệm chứa có chuỗi mà “từ điển” chuỗi đệm chứa đem vào “từ điển”. Ký tự cuối chuỗi ký tự đệm chứa phải lại đệm chứa để tiếp tục tạo thành chuỗi mới. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 27 Đồ án III – Data Compressing  Thuật toán nén: o Bước 1: Thống kê tạo từ điển, ghi vào tệp nén, t:=false; Đọc ký tự ->w o Bước 2: While not eof(f) Begin Đọc ký tự ->ch If t=false then w:=w+ch Else Begin w:= ww+ch; t:=false; End; TIMCHU(w,tl); If tl=false then Begin Code(w,j); Ghi j tệp nén. Thêm w vào từ điển. w:=ch End Else Begin ww:=w; t:=true; End; End; o Bước 3: Code(ch), Dừng chương trình. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 28 Đồ án III – Data Compressing  Thuật toán giải nén: o Bước 1: Đọc thông tin từ điển tệp nén, đọc byte tiếp theo, giải nén gán vào w, t=false; o Bước 2:While not eof(f) Begin Đọc byte ->b Decode(b,s,t); If t=true then Begin For i:=1 to length(s) Begin If t=false then w:=w+s(i) Else Begin w=ww+s(i); t:=false; End; TIMCHU(w,t); If t=false then Begin Thêm vào từ điển; Ghi tệp giải nén. w:=s(i) End; End; End; Else Begin Ghi tệp giải nén; w:=w+ w(i); Sinh viên thực hiện: Võ Quốc Hưng - 20102679 29 Đồ án III – Data Compressing Thêm w vào từ điển End; End; o Bước 3: Decode(b,s,t): ghi s tệp giải nén. Dừng chương trình. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 30 Đồ án III – Data Compressing  Ưu nhược điểm phương pháp mã hóa LZW:  Ưu điểm:  Thuật toán nén LZW có hệ số nén tương đối cao, tập tin nén không cần phải chứa bảng mã.  Bên nhận xây dựng bảng mã mà không cần bên gửi phải gửi kèm tin nén.  Thuật toán LZW khắc phục lãng phí nhớ mà thuật toán trước không tận dụng hết. Đồng thời khắc phục cứng nhắc thuật toán nén, góp phần làm thuật toán nén trở nên mềm dẻo hơn, có sức hấp dẫn người sử dụng.  Nhược điểm:  Thuật toán làm tốn nhiều nhớ, khó thực dựa mảng đơn giản (bé 64Kb). Sinh viên thực hiện: Võ Quốc Hưng - 20102679 31 Đồ án III – Data Compressing III. Kết chương trình mô số thuật toán nén 3.1. Khái quát chương trình - Đầu vào: file *.txt đoạn văn gõ từ bàn phím. - Xây dựng chương trình để nén giải nén file *.txt hay đoạn văn đó. - Chương trình thực thuật toán nén thông dụng: Huffman LZW. - Thực nén giải nén file hai phương pháp. - Dựa vào kích thước file trước sau nén đưa so sánh. - Tỉnh tỷ lệ nén. 3.2. Mô thuật toán 3.2.1. Thuật toán Huffman 3.2.1.1. Lưu đồ thuật toán Huffman Hình 3.1: Lưu đồ thuật toán Huffman Sinh viên thực hiện: Võ Quốc Hưng - 20102679 32 Đồ án III – Data Compressing 3.2.1.2. Kết chương trình Ví dụ: Thực nén đoạn văn đầu vào: “Thuat toan nen Huffman”. (1) (2) Sinh viên thực hiện: Võ Quốc Hưng - 20102679 33 Đồ án III – Data Compressing (3) Hình 3.2: Kết nén Huffman với đoạn văn Nhìn vào kết ta thấy: - Đoạn văn có độ dài: 22 x = 110 bits. - Sau mã hóa, độ dài đoạn văn còn: 76 bits.  Tỷ lệ nén = 76/110 x 100 % = 69 %. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 34 Đồ án III – Data Compressing 3.2.2. Thuật toán LZW 3.2.2.1. Lưu đồ thuật toán LZW Hình 3.3: Lưu đồ thuật toán LZW 3.2.2.2. Kết chương trình Đầu vào đoạn văn bản: “TOBEORNOTTOBEORTOBEORNOT”. (1) Sinh viên thực hiện: Võ Quốc Hưng - 20102679 35 Đồ án III – Data Compressing (2) (3) Hình 3.4: Kết nén LZW với đoạn văn Sinh viên thực hiện: Võ Quốc Hưng - 20102679 36 Đồ án III – Data Compressing  Mã hóa: Hình 3.5: Thuật toán LZW - Quá trình mã hóa Kết cho thấy: - Đoạn văn có độ dài: 25 x bits = 125 bits. - Sau mã hóa, đoạn mã còn: x bits + 11 x bits = 96 bits.  Tỷ lệ nén = (96/125) x 100% = 76.8%. Sinh viên thực hiện: Võ Quốc Hưng - 20102679 37 Đồ án III – Data Compressing  Giải mã: Hình 3.6: Thuật toán LZW – Quá trình giải mã Sinh viên thực hiện: Võ Quốc Hưng - 20102679 38 Đồ án III – Data Compressing KẾT LUẬN Với phạm vi tìm hiểu nén liệu, đặc biệt nén văn bản, với việc chạy mô vài thuật toán (Huffman, LZW…) em phần nắm nội dung thuật toán, chứng tỏ ưu nhược điểm nêu đắn. Trong trình làm, có mặt em làm chưa làm được:  Đã làm được:  Tìm hiểu cách tổng quan kiến thức, khái niệm liên quan đến nén liệu.  Mô thành công hai thuật toán nén Huffman LZW chương trình sử dụng ngôn ngữ C#.  Đưa tỉ lệ nén loại, chứng tỏ tính đắn kết luận mà phần lý thuyết nêu.  Hạn chế:  Chưa thực việc với file text lớn mã tiếng Việt (có dấu), ký tự đặc biệt.  Chưa thực việc so sánh cách trực quan tất loại mã nén nay.  Chưa thực nén folder (1 folder chứa nhiều file).  Hướng phát triển đề tài: Trong thời gian thực Đồ án III theo quy định, em thực công việc nêu nhiều hạn chế. Tuy nhiên, em cố gắng hoàn thành thời gian tới xây dựng chương trình mô có giao diện đơn giản, nén liệu với file dầ vào file text (*.txt), nén liệu với folder… Sinh viên thực hiện: Võ Quốc Hưng - 20102679 39 Đồ án III – Data Compressing TÀI LIỆU THAM KHẢO 1. http://en.wikipedia.org/wiki/Lempel-Ziv-Welch 2. http://snipd.net/huffman-coding-in-c 3. http://diendan.congdongcviet.com/threads/t2381::thuat-toan-nen-du-lieu-lythuyet-nen-du-lieu-huffman-phan-1-y-tuong.cpp 4. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.6585&rep=rep1 &type=pdf 5. http://doc.edu.vn/tai-lieu/de-tai-ma-hoa-lzwlempel-ziv-wech-4550/ Sinh viên thực hiện: Võ Quốc Hưng - 20102679 40 [...]...Đồ án III – Data Compressing 1.2.2 Dựa vào cách thức thực hiện nén Theo cách này người ta cũng phân thành 2 họ:  Phương pháp không gian (Spatial Data Compression) : Các phương pháp thuộc họ này thực hiện nén bằng cách tác động trực tiếp lên việc lấy mẫu của ảnh trong miền không gian... III – Data Compressing  Thuật toán nén o Bước 1: Đọc một ký tự -> ch, đoạn được gán bằng 1, kết nạp ký tự đó vào từ điển, w=ch; o Bước 2: While not eof(f) do Begin Đọc tiếp ký tự tiếp theo w:= ww+ch; If w thuộc từ điển then ww:=w; Else begin Code(w,j); Ghi j và ch vào tệp nén Thêm w vào từ điển End; End; o Bước 3: Dừng chương trình Sinh viên thực hiện: Võ Quốc Hưng - 20102679 22 Đồ án III – Data Compressing... vào từ điển End Else Begin ww:=s; End; End; o Bước 3: Dừng chương trình  Đánh giá: Nói chung thuật toán LZ78 là một thuật toán nén văn bản khá tốt, có thời gian chạy chương trình tương đối nhanh tuy nhiên khả năng tiết kiệm chưa được khai thác tốt đa Sinh viên thực hiện: Võ Quốc Hưng - 20102679 23 Đồ án III – Data Compressing 2.2.4 Phương pháp mã hóa LZW Phương pháp nén LZW được phát minh bởi Lempel... End; End; End; Else Begin Ghi ra tệp giải nén; w:=w+ w(i); Sinh viên thực hiện: Võ Quốc Hưng - 20102679 29 Đồ án III – Data Compressing Thêm w vào từ điển End; End; o Bước 3: Decode(b,s,t): ghi s ra tệp giải nén Dừng chương trình Sinh viên thực hiện: Võ Quốc Hưng - 20102679 30 Đồ án III – Data Compressing  Ưu và nhược điểm của phương pháp mã hóa LZW:  Ưu điểm:  Thuật toán nén LZW có hệ số nén tương... toán Huffman Hình 3.1: Lưu đồ thuật toán Huffman Sinh viên thực hiện: Võ Quốc Hưng - 20102679 32 Đồ án III – Data Compressing 3.2.1.2 Kết quả chương trình Ví dụ: Thực hiện nén đoạn văn bản đầu vào: “Thuat toan nen Huffman” (1) (2) Sinh viên thực hiện: Võ Quốc Hưng - 20102679 33 Đồ án III – Data Compressing (3) Hình 3.2: Kết quả nén Huffman với đoạn văn bản Nhìn vào kết quả ta thấy: - Đoạn văn bản có... 76/110 x 100 % = 69 % Sinh viên thực hiện: Võ Quốc Hưng - 20102679 34 Đồ án III – Data Compressing 3.2.2 Thuật toán LZW 3.2.2.1 Lưu đồ thuật toán LZW Hình 3.3: Lưu đồ thuật toán LZW 3.2.2.2 Kết quả chương trình Đầu vào là đoạn văn bản: “TOBEORNOTTOBEORTOBEORNOT” (1) Sinh viên thực hiện: Võ Quốc Hưng - 20102679 35 Đồ án III – Data Compressing (2) (3) Hình 3.4: Kết quả nén LZW với đoạn văn bản Sinh viên... 3: Đệ quy làm hai phần, mỗi phần có tổng xác suất gần bằng nhau Mã hóa phần trên bằng bit 0 (hoặc bit 1), phần dưới bằng bit 1 (hoặc bit 0) Sinh viên thực hiện: Võ Quốc Hưng - 20102679 16 Đồ án III – Data Compressing  Bước 4: Vẽ sơ đồ cây  Bước 5: Tính Entropy, số bits mã hóa trung bình với số bits mã hóa thông thường  Ví dụ mô tả thuật toán Ký hiệu A B C D E Số lần xuất hiện 15 7 6 5 6 Ký hiệu... Ưu điểm: Đơn giản, dễ thực hiện  Nhược điểm: Thuật toán Shanno-Fano có hệ số nén khá thấp và yêu cầu khá phức tạp nên hiếm khi được sử dụng Sinh viên thực hiện: Võ Quốc Hưng - 20102679 17 Đồ án III – Data Compressing 2.2.2 Phương pháp mã hóa Huffman  Đặt vấn đề Năm 1952 (lúc đó chưa có ASCII), Huffman lúc bấy giờ đang là một anh sinh viên, nhìn thấy sự lãng phí trong cách lưu trữ dữ liệu Ví dụ, để... trong câu (8 lần), còn ký tự “M” xuất hiện ít hơn (4 lần) Vậy, nếu ta dùng 1 bit để mã hóa ký tự “C”, và 5 bit để mã hóa ký tự “M”, đại loại là: Sinh viên thực hiện: Võ Quốc Hưng - 20102679 18 Đồ án III – Data Compressing “C” = 0 “M” = 11111 Thì khi đó ta sẽ tiết kiệm được thêm: (3 x 8 + 3 x 4) – (1 x 8 + 5 x 4) = 36 – 28 = 8 bits Như vậy, ý tưởng chính ở đây là ta có thể không cần dùng đủ 8 bits để mã... của hai ký tự đem ghép o Bước 2: Trong khi số lượng ký tự trong danh sách còn lớn hơn một thì thực hiện Bước 1, nếu không thì thực hiện Bước 3 Sinh viên thực hiện: Võ Quốc Hưng - 20102679 19 Đồ án III – Data Compressing o Bước 3: Tách ký tự cuối cùng và tạo cây nhị phân với quy ước bên trái mã 0, bên phải mã 1  Thuật toán giải nén: o 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 . kết quả của việc tìm hiểu một cách tổng quan về nén dữ liệu (Data Compression) , trong đó đi sâu hơn về mảng nén văn bản (Text Compression) . Với sự nỗ lực và cố gắng của bản thân, sự hướng dẫn. thực hiện nén Theo cách này người ta cũng phân thành 2 họ:  Phương pháp không gian (Spatial Data Compression) : Các phương pháp thuộc họ này thực hiện nén bằng cách tác động trực tiếp lên việc. góp ý kiến từ các thầy cô giáo để hoàn thiện hơn nữa. Em xin chân thanh cảm ơn! Đồ án III – Data Compressing Sinh viên thực hiện: Võ Quốc Hưng - 20102679 2 Mục lục Lời nói đầu 1 I.

Ngày đăng: 15/09/2015, 18:57

Xem thêm: DA3 data compression (text compression) vo quoc hung

TỪ KHÓA LIÊN QUAN