1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Các kỹ thuật kiểm thử đột biến và ứng dụng kiểm thử chương trình c

69 19 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Vũ Văn Minh ĐỀ TÀI ỨNG DỤNG PHƯƠNG PHÁP MOVE-TO-FRONT TRONG NÉN DỮ LIỆU Chuyên ngành: Bảo đảm tốn học cho máy tính hệ thống tính toán Mã số: 60.46.35 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC GS.TSKH Nguyễn Xuân Huy Hà Nội, năm 2011 Ứng dụng phương pháp Move to front nén liệu DANH MỤC HÌNH VẼ, BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT Mở đầu Chương TỔNG QUAN VỀ NÉN DỮ LIỆU 1.1Thơng tin, liệu mã hóa 1.2Dữ liệu ký hiệu 1.3Sự thay đổi độ dài mã 1.3 1.3 1.4Cơ lý thuyết thông tin 1.4 1.4 1.5Sự dư thừa liệu 1.6Nén liệu 1.6 1.6 1.6 1.7Mã hóa Entropy 1.7 1.7 Chương NÉN DỮ LIỆU VÀ PHƯƠNG PHÁP MOVE-TO-FRONT 2.1Thuật tốn mã hóa độ dài (RLE) 2.1 Ứng dụng phương pháp Move to front nén liệu 2.1.2 Mã hóa 21 2.1.3 Giải mã 23 2.2 Thuật toán mã hóa Huffman 24 2.2.1 Giới thiệu thuật tốn mã hóa Huffman 24 2.2.2 Mã hóa Huffman 28 2.2.3 Giải mã Huffman 29 2.3 Thuật toán nén số học 31 2.3.1 Giới thiệu nén số học 31 2.3.2 Mô hình nén số học 32 2.3.3 Trường hợp tổng quát nén số học 35 2.3.4 Ví dụ nén số học 37 2.4 Phép biến đổi Burrows-Wheeler (BWT) 39 2.4.1 Giới thiệu BWT 39 2.4.2 Mã hóa 39 2.4.3 Giải mã 42 2.5 Phép biến đổi Move-To-Front (MTF) 45 2.5.1 Giới thiệu MTF 45 2.5.2 Mã hóa 45 2.5.3 Giải mã 47 2.6 Phân tích phương pháp MTF 48 2.6.1 Tổ chức liệu 48 2.6.2 Thực 49 2.7 Lược đồ nén liệu ứng dụng phương pháp MTF 49 2.7.1 Lược đồ nén liệu 49 Ứng dụng phương pháp Move to front nén liệu 2.7.2 Nén liệu 50 2.8 Một số cải tiến phương pháp MTF 51 2.8.1 Một số định nghĩa 51 2.8.2 Cơ sở MTF 52 2.8.3 Một số cải tiến MTF 53 Chương KẾT QUẢ THỰC NGHIỆM 55 3.1 Môi trường thực nghiệm 3.2 Dữ liệu mẫu 3.3 55 55 Phân tích thực 56 nghiệm kết 3.3.1 Áp dụng MTF với thuật toán nén Huffman .56 3.3.1 Áp dụng MTF với thuật toán nén số học 58 3.4 Kết luận 59 PHỤ LỤC 62 Ứng dụng phương pháp Move to front nén liệu DANH MỤC HÌNH VẼ, BẢNG BIỂU Hình Cây nhị phân Hình Mã tiền tố Hình Nén liệu khơng m Hình Nén liệu có t Hình Phương pháp nén R Hình Phương pháp nén R Hình Minh họa nén theo p Hình Cây Huffman nén liệu Hình Hình 10 Mã hóa Arithmetic v Minh họa Hình 11 Minh họa Hình 12 Minh họa Hình 13 Lược đồ Hình 14 Hình 15 Thể Môi trườ Bảng Mô tả thông tin với mã Huffman Bảng Mô tả trường hợp xuất ký hiệu nén Bảng Bảng mã nhị phân mở rộng với hai ký hiệu Bảng Bảng xác suất phân đoạn ký hiệu Bảng Mã hóa theo phương pháp số học Bảng Giải mã theo phương pháp số học Bảng Mơ tả q trình mã hóa MTF Bảng Mô tả trình giải mã MTF Bảng Các tệp tin mẫu để thực nghiệm Bảng 10 Kết thực nghiệm Bảng 11 So sánh phương pháp nén MTF0, MTF1, MTF2 Bảng 12 Số lần xuất ký hiệu tệp Bảng 13 Số lần xuất ký hiệu sau sử dụng MTF Ứng dụng phương pháp Move to front nén liệu DANH MỤC CÁC TỪ VIẾT TẮT TT Từ viết tắt ASCII BIT BMRH BRH BWCA BWT EC GIF JPEG 10 MPEG 11 MTF 12 RLE Ứng dụng phương pháp Move to front nén liệu Mở đầu Nén liệu sử dụng rộng rãi, lĩnh vực công nghệ thơng tin Những hình ảnh mà thấy trang Web hình ảnh nén JPG, GIF phim có định dạng MPEG nén để đảm bảo sử dụng dung lượng xem trực tuyến tải từ internet, số tệp tin hệ thống máy tính tự động nén lưu trữ Vậy nén liệu gì? Có nhiều phần mềm nén liệu công bố zip, gzip winzip (và nhiều nữa) để giảm bớt dung lượng trước lưu trữ truyền Mục đích luận văn nghiên cứu phương pháp Move-To-Front (MTF) nén liệu MTF kỹ thuật biến đổi mã ký hiệu, thường dùng bước thứ hai thuật toán nén liệu Burrow-Wheeler compression algorithm [10] Bước thuật toán nén liệu BWCA phép biến đổi Burrow-Wheeler transform [9] giới thiệu lần vào năm 1994 hai tác giả Burrow Wheeler, BWT biến đổi vị trí ký hiệu cho ký hiệu giống đứng cạnh nhau, bước thuật toán phương pháp MTF, phương pháp xử lý liệu đầu phương pháp BWT để liệu có khả nén cao với mã nén Entropy (một cách khác thuật tốn BWCA có thêm bước mã nén theo độ dài – Run-Length Encoding (RLE)) Ngày nay, phương pháp BWT kết hợp MTF ứng dụng để nén với nhiều loại liệu khác văn bản, hình ảnh, âm phim Luận văn tập trung nghiên cứu phương pháp MTF số cải tiến phương pháp nén văn để đạt hiệu cao Ứng dụng phương pháp Move to front nén liệu Chương TỔNG QUAN VỀ NÉN DỮ LIỆU 1.1 Thơng tin, liệu mã hóa Thơng tin thể kiến thức tư người hiểu biết trạng thái hệ thống – thơng tin khơng chắn Con người cảm nhận tồn thông tin, nhận biết đa dạng phương tiện mang thông tin lúc nhận thấy tác động ngược trở lại thông tin người – thơng tin chắn Thông tin không hữu thiết bị vật lý, tồn liệu logic chứa phương tiện vật lý đĩa CD hay kênh truyền thơng tin Vì liệu xem dạng số thông tin thực Điều tạo nên khác biệt thông tin với văn bản, đồ họa, âm thanh, hình ảnh… Một lượng lớn thông tin cần phải tổ chức, lưu trữ dạng tệp tin thơng điệp Ví dụ với liệu “-30 C” mang thông tin thực “Trời lạnh” mẩu tin suy diễn từ đoạn văn “âm ba mươi độ C” mẩu tin thể trang báo, truyền hình cơng cụ đo nhiệt độ Nếu khơng có phương tiện thơng tin khơng thể Thuật ngữ liệu nén liệu dạng số hóa thơng tin thực xử lý chương trình máy tính Dữ liệu trước nén gọi liệu nguồn Một số ví dụ thơng tin thực phân loại rộng rãi văn bản, âm thanh, hình ảnh phim Nhiều chương trình ứng dụng nhận kiểu thơng tin kiểu tệp tin phù hợp với cách xử lý chúng Do liệu phân loại dạng văn bản, hình ảnh, âm phim chương trình xử lý số hóa liệu coi thơng tin chuỗi BIT định dạng nhị phân Ứng dụng phương pháp Move to front nén liệu Văn bản: liệu thường thể dạng BIT mã ASCII Chúng xuất tệp tin có phần mở rộng txt doc sử dụng phần mềm soạn thảo Nhị phân: dạng liệu thường xuất tệp tin liệu, tệp tin thi hành mã chương trình Các tệp tin thường có phần mở rộng bin Hình ảnh: liệu thường thể mảng hai chiều điểm ảnh, điểm ảnh mã màu xác định Phần mở rộng tệp tin bmp chương trình xử lý ảnh bitmap Windows psd chương trình xử lý ảnh Photoshop Đồ họa: liệu dạng vector phương trình tốn học Ví dụ liệu dạng png dạng chuẩn Portable Network Graphics Âm thanh: liệu thể dạng sóng âm Định dạng tệp tin âm wav Mã hóa q trình xử lý chuỗi ký tự (chữ cái, chữ số, ký hiệu …) thành dạng đặc biệt để tốt truyền lưu trữ Mã hóa sử dụng hầu hết máy tính cho tệp tin văn mã hóa ASCII, ký tự mã hóa dạng biểu diễn BIT nhị phân 1.2 Dữ liệu ký hiệu Các ký hiệu ký tự sử dụng đầu vào thuật toán nén liệu cách thể phù hợp cho thuật toán nén mà đề tài đề cập đến Văn bản, hình ảnh, âm hay phim xem xét khối liệu bao gồm mảng chiều ký tự xét đến thuật toán Khối liệu nguồn S=(s1, s2, s3, … , sn) coi chuỗi ký tự s1, s2, s3, … , sn Thể dạng số hóa tập ký tự S C=(c 1, c2, c3, …, cn), với ci gọi từ mã đại diện cho ký tự s i (i=1,2,3, ,n) Việc biến đổi ký tự si để ci gọi q trình mã hóa, ngược lại biến đổi từ ci 10 Ứng dụng phương pháp Move to front nén liệu thành si gọi giải mã Sự thể ký hiệu mã ASCII có độ dài 8-bit Số bit từ mã gọi độ dài mã 1.3 Sự thay đổi độ dài mã Đối với ký tự thơng thường bảng mã ASCII mã hóa 256 ký tự khác nhau, ký tự có độ dài mã 8-bit Để biểu diễn chuỗi ký tự S=“banana” theo cách thông thường ta cần 48-bit Nhưng nén liệu ta loại bỏ ký hiệu khơng có liệu nguồn, mà ta mô tả ký hiệu xuất liệu nguồn mà Như vậy, với chuỗi ký tự S ta lưu bảng ký hiệu với mã tương ứng cho ký hiệu là a=00, b=01, n=10 Vậy để biểu diễn chuỗi ký tự S lúc ta cần 12-bit Tuy nhiên có cách khác ta giảm bớt số bit ký tự cách thay đổi độ dài từ mã mà đảm bảo liệu xác 1.3.1 Tính để giải mã Thay đổi độ dài từ mã tốt cho việc nén liệu Tuy nhiên thay đổi độ dài từ mã vơ ích khơng xác định tính từ mã thơng điệp cần mã hóa Nghĩa ký hiệu phải có từ mã Xét từ mã (0, 10, 010, 101) tương ứng với ký tự (a, b, c, d) Một đoạn mã hóa thơng điệp “0100101010” giải mã với nhiều kết khác “0 10 010 101 0” abcda “010 101 010” cadc Một mã có tính để giải mã có cách để giải mã thơng điệp mã hóa Tất nhiên có cách khác để làm việc này, ví dụ thêm dấu “/” để phân cách từ mã “0/10/010/101/0”, điều phản tác dụng ta nén liệu, làm tăng dung lượng liệu nén khó khăn thao tác nén giải nén Tuy nhiên điều cho ta ý tưởng tự phân cách ký tự thông điệp giải mã cách tổ chức dạng nhị phân Tính chất tự phân cách thể rõ ta biểu diễn dạng nhị phân Hình Mỗi nhánh bên trái ký hiệu nhánh bên phải 11 Ứng dụng phương pháp Move to front nén liệu 2.8.3 Một số cải tiến MTF Trong phần trước tác giả trình bày phương pháp biến đổi MTF hay gọi MTF0 Balkenhol, Kurtz and Shtarkov [1] đề xuất sửa đổi phương pháp MTF nhằm cải thiện tỉ lệ nén, phương pháp gọi MTF-1 Sửa đổi đơn giản sau: ký hiệu có vị trí thứ hai di chuyển vị trí danh sách, cịn ký hiệu có vị trí lớn hai di chuyển vị trí thứ hai danh sách Để so sánh ta xét chuỗi X = “baaaaaacccdddddaaaa” danh sách “abcd” sau: baaaaaacccdddddaaaa MTF MTF-1 1100000200300002000 1100000210310002100 Balkenhol and Shtarkov [2] đề xuất thêm sửa đổi thuật toán MTF-1 để thuật toán gọi MTF-2, sửa đổi sau: ký hiệu có vị trí thứ hai di chuyển vị trí danh sách ký hiệu di chuyển trước khơng phải vị trí danh sách Sự thay đổi mã nguồn hai phương pháp MTF1 MTF2 đoạn di chuyển ký hiệu sau: Thay đổi phương pháp MTF1 if(i==1){ p->prev = p->next = head->prev = p; head = p; }else{ p->prev = p->next = 53 Ứng dụng phương pháp Move to front nén liệu head->next->prev = p; head->next = p; } Thay đổi phương pháp MTF2 if((i==1)&&(last_pos!=0)) //Nếu vị trí ký hiệu { p->prev = NULL; p- //vị trí ký >next = head; head- hiệu trước // khác >prev = p; head = p; }else{ p->prev = head; p>next = head->next; head->next->prev = p; head->next = p; } last_pos = i; 54 Ứng dụng phương pháp Move to front nén liệu Chương KẾT QUẢ THỰC NGHIỆM 3.1 Môi trường thực nghiệm Các tệp tin tác giả thực nghiệm mơn trường Dev-C++ Dev-C++ có đầy đủ đặc Mơi trường phát triển tích hợp (Integrated Development Environment - IDE) ngơn ngữ lập trình C/C++ Hình 15 mơ tả chương trình thực nghiệm Hình 15 Mơi trường lập trình Dev C++ 3.2 Dữ liệu mẫu Để thực nén liệu minh họa phương pháp MTF, tác giả sử dụng tệp tin có cấu trúc liệu thơng tin khác nhau, thực theo hai lược đồ nén BMRH BRH Có 16 tệp tin có kích thước kiểu liệu khác thử nghiệm, thông tin tệp tin sau: TT 55 Tệp tin bib book1 book2 geo Ứng dụng phương pháp Move to front nén liệu news obj1 obj2 paper1 paper2 10 paper3 11 paper4 12 paper5 13 paper6 14 progc 15 progl 16 progp 3.3 Phân tích thực nghiệm kết 3.3.1 Áp dụng MTF với thuật toán nén Huffman Trong nghiên cứu tác giả sử dụng phương pháp nén theo lược đồ BWTMTF- RLE- Huffman (BMRH) so sánh với trường hợp khơng có MTF (BRH) Kết thực nghiệm cụ thể sau: TT Tệp tin gốc bib book1 book2 geo news obj1 obj2 56 Ứng dụng phương pháp Move to front nén liệu paper1 paper2 10 paper3 11 paper4 12 paper5 13 paper6 14 progc 15 progl 16 progp Kết cho thấy, với nén liệu sử dụng phương pháp MTF0 hiệu so với phương pháp không dùng MTF0 Sau tác giả so sánh phương pháp MTF0 với phương pháp MTF1 MTF2: Tệp tin gốc bib 111261 book1 768771 book2 610856 geo 102400 news 377109 obj1 21504 obj2 246814 paper1 53161 paper2 82199 paper3 46256 paper4 13286 paper5 11954 paper6 38105 progc 39611 57 Ứng dụng phương pháp Move to front nén liệu progl progp Theo dõi bảng ta thấy, tỷ lệ phần trăm hai phương pháp MTF1 MTF2 có phần tốt phương pháp MTF0 Tuy nhiên xét kỹ cột kích thước ta thấy có tệp tin áp dụng phương pháp MTF2 cho hiệu cao phương pháp MTF1, dùng phương pháp MTF0 cho hiệu phương pháp MTF1 Như phương pháp MTF0, MTF1, MTF2 có cải tiến định đem lại hiệu nén cao 3.3.1 Áp dụng MTF với thuật toán nén số học Trong lần thực nghiệm này, tác giả áp dụng phương pháp MTF0 với thuật toán nén số học, theo lược đồ BWT-MTF-RLE-ARI (BMRA) trường hợp khơng có MTF (BMA) Kết thực nghiệm sau: TT Tệp tin gốc bib book1 book2 geo news obj1 obj2 paper1 paper2 10 paper3 58 Ứng dụng phương pháp Move to front nén liệu 11 paper4 12 paper5 13 paper6 14 progc 15 progl 16 progp Ta nhận thấy rằng, áp dụng MTF0 với thuật toán nén số học cho hiệu cao 3.4 Kết luận Như áp dụng phương pháp MTF nén liệu mang lại hiệu cao, khơng so với phần mềm có thị trường Winzar Winzip Nếu áp dụng lược đồ nén với phương pháp nén số học cho kết cao phương pháp Huffman Tuy nhiên lược đồ nén liệu theo thuật toán BWCA thời gian phép biến đổi BWT, thuật tốn cần phải xét khối liệu, xếp ký hiệu khối liệu hoán vị số Trong phạm vi luận văn tác giả làm rõ tính hiệu phương pháp MTF việc tạo liệu đầu vào cho thuật toán nén liệu khác Trong phần phụ lục, tác giả thống kê sau sử dụng phương pháp MTF số lần lặp ký hiệu đứng đầu bảng mã tăng lên nhiều Điều có lợi thuật tốn mã nén Huffman Tuy nhiên sau sử dụng MTF số ký hiệu tăng lên Trong Bảng 12 số ký hiệu 95, Bảng 13 số ký hiệu tăng lên đến 142 Điều làm ảnh hưởng phần tới chất lượng nén liệu, không đáng kể 59 Ứng dụng phương pháp Move to front nén liệu TÀI LIỆU THAM KHẢO Balkenhol, B, Kurtz, S, Shtarkov, Y M Modifications of the Burrows and Wheeler Data Compression Algorithm Proceedings of the IEEE Data Compression Conference 1999, Snowbird, Utah, J Storer and M Cohn, Eds 188–197, 1999 Balkenhol B, Shtarkov YM One attempt of a compression algorithm using the BWT Preprint 99-133,SFB343: Discrete Structures in Mathematics, Falculty of Mathematics, University of Bielefeld, 1999 http://www.mathematik.uni-bielefeld.de/sfb343/preprints/pr99133.ps.gz Brenton Chapin, Higher compression from the Burrows-Wheeler transform with new algorithms for the list update problem, University of North Texas, 2001 C E Shannon, A Mathematical Theory of Communication, 1948 Guy E Blelloch, Introduction to Data Compression, September 25, 2010 Ida Mengyi Pu, 2006, Fundamental Data Compression Juergen Abel, Improvements to the Burrows-Wheeler Compression Algorithm: After BWT Stages, University Duisburg-Essen Juergen Abel, Post BWT Stages of the Burrows-Wheeler Compression Algorithm, 41469 Neuss – Germany M Burrows and D.J Wheeler, A Block-sorting Lossless Data Compression Algorithm, Research Report 124, System Research Center, Digital System Research Center, Palo Alto, CA, 1994 10 Sebastian Deorowicz, Second step algorithms in the Burrows–Wheeler compression algorithm, November 22, 2001 11 Sebastian Deorowicz, Nov-2001, Second step algorithms in the Burrows– Wheeler compression algorithm 12 Travis Gagie, Giovanni Manzini, Move-to-Front, Distance Coding, and Inversion Frequencies Revisited 60 Ứng dụng phương pháp Move to front nén liệu 13 Vo Si Van, 2009, Image Compression Using Burrows-Wheeler Transform 14 http://sites.google.com/site/datacompressionguide 15 http://michael.dipperstein.com/bwt/index.html 16 http://www.binaryessence.com/dct/en000249.htm 17 http://www.data-compression.info/Algorithms/MTF/index.htm 61 Ứng dụng phương pháp Move to front nén liệu PHỤ LỤC Trong tệp tin thực nghiệm, tác giả thống kê thông tin ký hiệu số lần xuất ký hiệu tệp tin paper1 áp dụng phương pháp MTF Dưới hai bảng thông tin cho biết ký hiệu số lần xuất ký hiệu trước áp dụng MTF sau áp dụng MTF Kết thể theo thứ tự giảm dần số lần xuất ký tự TT 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Ký hiệu 32 101 116 105 111 110 97 115 114 108 104 99 100 10 109 102 117 112 92 46 103 98 48 119 62 Ứng dụng phương pháp Move to front nén liệu 25 26 27 28 29 30 31 32 121 36 44 49 118 50 40 Bảng 12 Số lần xuất ký hiệu tệp tin pape TT 10 11 12 13 14 15 16 17 18 19 20 21 Ký hiệu 10 11 12 13 14 15 16 18 17 19 21 63 Ứng dụng phương pháp Move to front nén liệu 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 Bảng 13 Số lần xuất ký hiệu sau sử dụng MTF 64 ... kết kh? ?c “0 10 010 101 0” abcda “010 101 010” cadc Một mã c? ? tính để giải mã c? ? c? ?ch để giải mã thơng điệp mã hóa Tất nhiên c? ? c? ?ch kh? ?c để làm vi? ?c này, ví dụ thêm dấu “/” để phân c? ?ch từ mã... mã cho ký tự vào (nén) Để giải vấn đề ta c? ??n tổ ch? ?c liệu vào cho đ? ?c ký tự chuỗi liệu vào, luận văn t? ?c giả định dạng tệp tin dạng byte, mẩu tin đ? ?c vào byte c? ? mã tương ứng bảng mã ASCII 25 Ứng. .. hiệu cho ta thuật tốn nén liệu mà c? ? khả chứa BIT liệu ban đầu, với thuật tốn giải nén để khơi ph? ?c chuỗi ký tự g? ?c Vấn đề c? ??n BIT? Điều phụ thu? ?c vào thuật toán dư thừa liệu để suy liệu g? ?c Các

Ngày đăng: 19/11/2020, 20:35

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w