Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
238,5 KB
Nội dung
Luận văn tốt nghiệp Một số phơng pháp nén mục lục Mục lục Lời nói đầu Chơng I Mã hoá theo mã loạt dài I Nguyên lý II Thuật toán nén III Thuật toán giải nén Chơng II Mã hoá theo mã Huffman I Nguyên lý II Thuật toán sinh mã A Quá trình thu gọn B Quá trình triển khai III Thuật toán nén IV Thuật toán giải nén Chơng III Mã hoá theo mã LZW I Nguyên lý mã hoá LZW II Thuật toán nén LZW III Thuật toán giải nén LZW IV Đánh giá thuật toán Chơng IV Đánh giá kết thực nghiệm I Đánh giá phơng pháp mã hoá phơng diện lý thuyết II Kết thực nghiệm đánh giá Kết luận Phụ lục: Mã nguồn phơng pháp mã hoá I Phơng pháp mã hoá theo mã loạt dài II Phơng pháp mã hoã theo mã Huffman Chơng trình nén Chơng trình giải nén III Phơng pháp mã hoá theo mã LZW Tài liệu tham khảo Hồ Thị Ngọc Lan 39 A CNTT Trang 3 7 8 10 14 15 17 17 17 22 26 29 29 30 32 33 33 35 35 41 43 49 Luận văn tốt nghiệp Một số phơng pháp nén Lời nói đầu Nh biết, hầu hết tệp liệu thờng đợc lu trữ cho chúng dễ dàng chạy đợc máy tính hay xác dễ dàng lu chúng đĩa nạp vào nhớ Tuy nhiên, cách lu trữ thờng làm cho tệp có dung lợng lớn muốn chuyển tải tệp máy tính với download từ mạng xuống tốn thời gian Để khắc phục vấn đề ngời ta đa số phơng pháp chuyển đổi liệu từ dạng "dễ sử dụng" sang dạng "tối u" gọi nén Thật vậy, giả sử ta muốn download từ mạng Internet xuống máy tính cá nhân ảnh có dung lợng khoảng 600 Kbytes thời gian cần để download khoảng 142 giây, nhiên nh ảnh đợc nén dung lợng khoảng 300 Kbytes thời gian cần thiết để download 71 giây Song song với trình nén trình giải nén Nếu nh nén chuyển liệu dạng "tối u" giải nén trình khôi phục liệu dạng gốc Dựa vào kỹ thuật nén ngời ta chia thành hai kiểu nén Lossless Lossy Trong đó, Lossless kiểu nén mà liệu đợc khôi phục lại giống hệt liệu gốc, bao gồm phơng pháp nh: Run - Length, Huffman, Delta, LZW Còn Lossy kiểu nén mà liệu đ ợc khôi phục lại cho kết tơng đơng, bao gồm phơng pháp nh: CS&Q, JPEG, MPEGBản chất kiểu nén Lossless chuyển byte lặp chuỗi byte thành từ mã ngời ta gọi nén mã hóa Trong luận văn xin trình bày số phơng pháp mã hóa đơn giản kiểu nén Lossless : Mã hóa theo mã loạt dài (Run - Length) Mã hóa theo mã Huffman Mã hóa theo mã LZW Mục tiêu luận văn chủ yếu tìm hiểu phơng pháp mã hóa theo kiểu Lossless, từ dựa số mã nguồn có, sửa đổi nhằm hiểu sâu giải thuật Luận văn đợc hoàn thành dới hớng dẫn giúp đỡ tận tình thầy giáo Lê Văn Bằng Dù cố gắng song chắn không tránh khỏi thiếu sót, mong đợc đóng góp ý kiến thầy cô bạn Xin chân thành cảm ơn Sinh viên: Hồ Thị Ngọc Lan Hồ Thị Ngọc Lan 39 A CNTT Luận văn tốt nghiệp Một số phơng pháp nén Chơng I Mã hóa theo mã loạt dài I Nguyên lý: Trong file liệu thờng xuất dãy ký tự liên tiếp giống chẳng hạn nh : Tệp văn dùng khoảng trắng để tách đoạn, xen kẽ hát dãy dài số 0, hình ảnh bầu trời lúc nửa đêm chứa dãy dài ký tự màu đen Rõ ràng, tệp liệu xảy tợng lu trữ dãy ký tự lặp dẫn đến dung lợng tệp lớn Để khắc phục tợng ngời ta đa phơng pháp nén liệu dựa vào xuất lặp lại liên tiếp ký tự gọi phơng pháp mã hóa theo mã loạt dài Nguyên lý: Trong tệp liệu xuất đoạn có byte liên tiếp có nội dung giống đợc biểu diễn hai giá trị file nén là: Giá trị thứ : Số lợng byte trùng lặp Giá trị thứ hai : Nội dung byte Tuy nhiên, lu giá trị thứ giá trị thứ hai dới dạng byte không phân biệt đợc đâu giá trị thứ đâu giá trị thứ hai Vì vậy, giá trị thứ đợc lu dới dạng byte bit cao bit lại lu số lợng byte trùng lặp (Số lần lặp không 31) Trong trờng hợp có byte xuất lần xảy hai trờng hợp : Nếu giá trị byte nhỏ 224 để nguyên tức lu dới dạng byte Ngợc lại, byte đợc lu hai giá trị file nén : + Giá trị thứ : Có dạng 11100000 + Giá trị thứ hai : Nội dung byte Ví dụ : Dòng liệu gốc : AAAA 3A b CC 1C 2d Dựa vào nguyên lý ta có thuật toán nén nh sau : II Thuật toán nén : Bớc : Lấy byte tệp liệu Bớc : Lấy byte Kiểm tra xem byte có giá trị với byte trớc không ? + Nếu có đếm số lần lặp - giả sử k (k =P(1)>=P(2)>=>=P(N-1) Kí hiệu L(i) (i=0,N-1) mảng chứa độ dài từ mã, L(i) phải có thứ tự tăng dần: L(0)[...]... triển thành một chơng trình nén "thông minh" đó là một chơng trình tự động tìm Hồ Thị Ngọc Lan 39 A CNTT 29 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản kiếm kiểu nén phù hợp với chính bản thân kiểu dữ liệu của tệp và đem lại hiệu quả nén cao nhất Hồ Thị Ngọc Lan 39 A CNTT 30 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản Phụ lục : mã nguồn của các phơng pháp mã hóa I Phơng pháp mã hóa theo mã loạt... quá trình giải nén không cần phải duyệt lại bảng chuỗi đã đợc xây dựng từ thuật giải nén, mà bảng này sẽ đợc thiết lập lại giống hệt bảng chuỗi khi thực hiện nén LZW và sử dụng nó để giải nén dòng dữ liệu vào Điều này là có thể thực hiện đợc vì thuật toán nén luôn luôn xuất ra các thành phần STRING và CHAR của Hồ Thị Ngọc Lan 39 A CNTT 20 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản một mã trớc khi... pháp này để tiến hành nén một tệp dữ liệu trong đó mỗi phơng pháp đảm nhiệm một phần nào đó của tệp ở đây, tôi chỉ mới đa ra các phơng pháp nén đơn giản và riêng lẻ vì vậy khi cần nén một tệp nào đó muốn có đợc hiệu quả cao đòi hỏi chúng ta phải biết đợc kiểu dữ liệu của tệp đó từ đó chọn ra phơng pháp nén phù hợp Tuy nhiên, từ các phơng pháp nén đơn giản này chúng ta cũng có thể phát triển thành một. .. dụng 3 phơng pháp này để nén các tệp dạng EXE thì nói chung hiệu quả nén không cao, dung lợng không giảm là bao nhiêu so với ban đầu Chẳng hạn, đối với tệp có dung lợng là 8935 Kbytes, khi nén bằng Run-Length Hồ Thị Ngọc Lan 39 A CNTT 28 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản thì dung lợng sau khi nén là 8471 Kbytes, với Huffman là 7624 Kbytes và với LZW là 7684Tuy nhiên, khi nén các tệp dạng... ai có trong bảng với mã là 261 ain có trong bảng với mã là 269 278 = ainl Bổ sung chuỗi vào bảng 279 = ly nt 280 = y/ nt 281 = /o nt 19 Luận văn tốt nghiệp 32 o n 33 n / 34 n/ t 35 t h 36 37 38 39 40 41 42 43 44 th e e/ p l a n e e/ e / p l a n e / EOF Một số phơng pháp nén cơ bản cha o 282 = on nt n/ có trong bảng với mã là có(263) 263 cha 263 283 = n/t Bổ sung chuỗi vào bảng th có trong bảng với mã... mỗi lần đọc vào một mã mới Kết quả bảng chuỗi này giống hệt bảng chuỗi thu đợc khi thực hiện thuật toán nén và xâu xuất ra tệp kết quả giống hệt xâu vào trong thuật toán nén Lu ý là 256 mã đầu tiên của bảng chuỗi đợc ngầm định để chuyển thành các byte đơn lẻ Thuật toán trên đợc mô tả dới dạng lu đồ khối ở hình 4: Hồ Thị Ngọc Lan 39 A CNTT 21 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản Bắt đầu Đọc... nghiệp Một số phơng pháp nén cơ bản phải đợc chèn vào đúng vị trí của nó Điều này thật sự là tốn công dẫn đến ''chi phí'' cho vấn đề này lớn Tìm kiếm chuỗi sẽ gặp khó khăn ở công đoạn so sánh chuỗi vì vậy khi áp dụng thuật toán này chúng ta sẽ không ấn định 4096 chuỗi theo một thứ tự nào đó mà sử dụng một phơng pháp lu trữ khác đó là phơng pháp lu trữ sử dụng thuật toán Băm Khi sử dụng phơng pháp này,... và bằng phơng pháp Run-Length là 193882 Kbytes Đối với các tệp ảnh dạng Bmp thì trong một số trờng hợp phơng pháp LZW lại cho kết quả tốt hơn so với dạng Text chẳng hạn trong bảng trên ta thấy dung lợng của tệp giảm đi khoảng 1/31 (137818/3584) so với ban đầu Tuy nhiên, trong một số trờng hợp khác thì phơng pháp LZW lại cho hiệu quả không cao bằng khi nén các tệp dạng văn bản với tỉ lệ nén chỉ là 1:1... gAbAgEcEdeEfAEAf Bảng 2 Minh hoạ quá trình giải nén Hồ Thị Ngọc Lan 39 A CNTT 15 Luận văn tốt nghiệp Một số phơng pháp nén cơ bản Chơng III Mã hóa theo mã LZW LZW là tên viết tắt của ba nhà khoa học xây dựng nên thuật toán mã hóa LZW đó là : A Lempel, J Ziv và Terry A Welch I Nguyên lý mã hóa LZW Nh chúng ta biết, trong các tệp dữ liệu thờng xuất hiện một số chuỗi liên tiếp các ký tự sẽ tái xuất hiện với tần số. .. bổ sung vào bảng chuỗi nếu nh chuỗi đó đã xuất hiện trong bảng chuỗi, hay nói khác đi mã của nó đã có mặt trong file nén II Thuật toán nén LZW Bảng chuỗi ban đầu là bảng mã ASCII chuẩn bao gồm 256 xâu ký tự với mỗi xâu là một ký tự đơn lẻ Trong quá trình thuật toán nén thực hiện, các xâu mới sẽ đợc bổ sung vào bảng chuỗi nhng bắt đầu từ xâu thứ 256 tơng ứng với mã số 256 Vì vậy, thuật toán nén đợc mô ... nghiệp Một số phơng pháp nén kiếm kiểu nén phù hợp với thân kiểu liệu tệp đem lại hiệu nén cao Hồ Thị Ngọc Lan 39 A CNTT 30 Luận văn tốt nghiệp Một số phơng pháp nén Phụ lục : mã nguồn phơng pháp. .. phải số nguyên tố Sở dĩ nh số lần tìm kiếm số nguyên từ đến kích thớc bảng Nếu nh số lần tìm kiếm kích thớc bảng số nguyên tố việc tìm kiếm khe trống bị lỗi có nhiều khe trống rỗi Trong trình nén. .. 21906 58080 Một số phơng pháp nén 79853 3455 15064 31863 66133 2518 10455 25256 70370 1731 5887 18841 Bảng Kết thực nghiệm Qua kết thu đợc bảng ta nhận thấy tệp dạng văn nén phơng pháp Run-Length