1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÀI TẬP LỚN MẬT MÃ VÀ AN TOÀN DỮ LIỆU Nén dữ liệu Huffman

20 1,1K 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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 0,92 MB

Nội dung

BÀI TẬP LỚN MẬT MÃ VÀ AN TOÀN DỮ LIỆU Nén dữ liệu Huffman Giới thiệu chung: Hầu hết các tập tin trong máy tính có nhiều thông tin dư thừa Nén tập tin thực chất là mã hóa lại thông tin dư thừa Tầm quan trọng: Giảm kích thước dữ liệu: Để lưu trữ. Truyền dữ liệu. Tăng tính bảo mật.

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

-BÀI TẬP LỚN MÔN HỌC: MẬT MÃ VÀ AN TOÀN DỮ LIỆU

ĐỀ TÀI: Nén dữ liệu Huffman

Họ tên: Nguyễn Thị Thu Hà Lớp: Cao học K20 - HTTT

Mã học viên: 13025079 Giảng viên hướng dẫn: PGS.TS Trịnh Nhật Tiến

Hà Nội - 2014

Trang 2

MỤC LỤC

MỤC LỤC 2

1 Giới thiệu chung về nén và giải nén 3

2 Ý tưởng Nén dữ liệu Huffman 3

3 Xây dựng cây huffman 6

4 Nén và giải nén Huffman 10

4.1 Nén tập tin 10

4.2 Giải nén tập tin: 10

5 Cài đặt chương trình 16

Trang 3

1 Giới thiệu chung về nén và giải nén

 Giới thiệu chung:

− Hầu hết các tập tin trong máy tính có nhiều thông tin dư thừa

− Nén tập tin thực chất là mã hóa lại thông tin dư thừa

 Tầm quan trọng:

* Giảm kích thước dữ liệu:

− Để lưu trữ

− Truyền dữ liệu

* Tăng tính bảo mật

2 Ý tưởng Nén dữ liệu Huffman

 Tác giả:

− Được đề xuất bởi David A Huffman khi còn là sinh viên

− Công bố năm 1952 trong bài báo "A Method for the Construction of Minimum - Redundancy Codes“

− Sau này Huffman trở thành giảng viên của Đại học California

 Mã hóa dữ liệu:

Để lưu trữ dữ liệu trong máy tính, ta phải mã hóa chúng Ví dụ, trong

bộ mã ASCII nổi tiếng ra đời năm 1967, người ta dùng 8 bit để mã hóa

1 ký tự, cụ thể như:

“A” = 1000001

“B” = 1000010

“C” = 1000011

Vậy, với bộ mã ASCII, chúng ta có thể mã hóa 28 = 256 ký tự, với mỗi từ

mã dài 8 bit

 Ví dụ:

Giả sử có dữ liệu sau: “ma hoa huffman”

Trang 4

Xét thấy:

Chuỗi có 8 ký tự = 23, nên ta chỉ cần dùng 3 bit cho mỗi ký tự là đủ để mã hóa

Ngoài ra:

Ký tự o xuất hiện 1 lần và ký tự a xuất hiện 3 lần đều dùng 3 bit như nhau Huffman nghĩ ra phương án ký tự nào xuất hiện nhiều lần thì nên dùng số bit ít

Ký tự nào xuất hiện ít thì có thể mã hóa bằng từ mã dài hơn

Trang 5

Tuy nhiên, nếu mã hóa với độ dài thay đổi, thì khi giải mã ta làm thế nào phân biệt được xâu bít nào là mã hóa của ký hiệu nào?

Một trong các giải pháp là dùng các dấu phẩy (“,”) để tách từ mã của các kí tự đứng cạnh nhau

Nhưng như thế số các dấu phẩy sẽ chiếm một không gian đáng kể trong bảng

Và mã tiền tố là giải pháp phù hợp trong trường hợp này

 Mã tiền tố là gì?

− Nếu mã hóa “A”=0, “B”=01, “C”=11 thì bộ từ mã này không là mã tiền

tố Vì từ mã của “A” là tiền tố của từ mã của “B”

− Nếu mã hóa “A”=0, “B”=10, “C”=11 thì bộ mã này là mã tiền tố Khi

đó, để mã hóa xâu “ACB” ta có 01110

 Xây dựng và biểu diễn mã tiền tố

− Được xây dựng và biểu diễn bằng cây nhị phân gọi là cây Huffman

Trang 6

3 Xây dựng cây huffman

Ví dụ: Giả sử ta có dữ liệu như sau: “ma huffman”

− Tạo 1 cây mới với cây con trái và cây con phải là hai cây từ mảng cây

có tần suất nhỏ nhất, tức là 2 cây ở vị trí 0 và 1

− Khóa của cây cha là chuỗi gồm chuỗi cây con trái và cây con phải

− Tần suất của cây cha là của 2 cây con trái và phải cộng lại

− Sắp xếp lại mảng cây theo tần suất tăng dần, nếu bằng nhau ưu tiên theo kí tự đầu của khóa

- Tiếp tục chọn 2 phần tử đầu của mảng cây để tạo cây cha mới

Trang 7

− Sắp xếp lại mảng cây

− Tiếp tục tạo cây mới từ 2 cây 0 và 1 của mảng cây

− Tiếp tục sắp xếp lại

− Tiếp tục xây dựng cây mới

Trang 8

− Tiếp tục sắp xếp

− Tiếp tục xây dựng cây mới

− Tiếp tục xây dựng cây mới

Trang 9

− Tiếp tục đến khi mảng cây chỉ còn 1 phần tử, ta được cây Huffman hoàn chỉnh

Trang 10

4 Nén và giải nén Huffman

4.1 Nén tập tin

4.2 Giải nén tập tin:

Trang 16

5 Cài đặt chương trình

Chạy demo chương trình Nén dữ liệu Hufman

Bước 1: Chạy chương trình mở cửa sổ giao diện

Bước 2: Thực hiện thao tác nén dữ liệu bằng một tệp Tran Ba Kien.txt và nén dữ liệu lưu lại trong một tệp txt khác đang trống là Luu_Tran Ba Kien.txt

Trang 17

 Kết quả sau khi thực hiện nén dũ liệu Tran Ba Kien.txt

Trang 18

Bước 3: Giải nén tệp Luu_Tran Ba Kien.txt sang một tệp mới (đặt tên là Moi_Tran Ba Kien.txt), sau đó đối chiếu lại với tệp Tran Ba Kien.txt ban đầu

Trang 19

Kết quả giải nén dữ liệu trong tệp Moi_Tran Ba Kien cho kết quả giống

hoàn toàn tệp Tran ba Kien ban đầu

Ngày đăng: 19/10/2014, 21:29

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w