Tải bản đầy đủ (.pptx) (36 trang)

Báo cáo tiểu luận Nén DỮ LIỆU HUFFMAN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (548.76 KB, 36 trang )

LOGO
Nén DỮ LiỆU HUFFMAN
Học viên:
Nguyễn Thị Thu Hà
Báo cáo tiểu luận:
Thông tin:
Môn: Mật mã và an toàn dữ liệu
GVHD: PGS. TS. Trịnh Nhật Tiến
COMPANY LOGO
Nội dung chính
IV. Nén và giải nén
III. Xây dựng Cây Huffman
II. Ý tưởng Nén dữ liệu Huffman
I. Giới thiệu về nén và giải nén
V. Cài đặt chương trình
COMPANY LOGO
I. 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
I. GIỚI THIỆU CHUNG VỀ NÉN VÀ GIẢI NÉN

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.
COMPANY LOGO

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
II. Ý tưởng Nén DỮ LiỆU huffman
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
II. Ý tưởng NÉN DỮ LiỆU huffman
Để 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.


Mã hóa dữ liệu
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
II. Ý tưởng NÉN DỮ LiỆU huffman

Ví dụ:
Giả sử có dữ liệu sau:
“ma hoa huffman”
Ký tự Tần số Mã Số bit SD
m 2 1101101 16
a 3 1100001 24
2 0100000 16
h 2 1101000 16
o 1 1101111 8
u 1 1110101 8
f 2 1100110 16
n 1 1101110 8
Tổng cộng:
Dùng 112 bit
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
II. Ý tưởng nén dữ liệu huffman

tự
Tần
số
Mã Số bit
SD
m 2 1101101 16

a 3 1100001 24
2 0100000 16
h 2 1101000 16
o 1 1101111 8
u 1 1110101 8
f 2 1100110 16
n 1 1101110 8
Tổng cộng: dùng 42 bit
Ký tự Tần
số
Mã Số bit
SD
m 2 000 6
a 3 001 9
2 010 6
h 2 011 6
o 1 100 3
u 1 101 3
f 2 110 6
n 1 111 3
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.
COMPANY LOGO
II. Ý tưởng nén dữ liệu huffman
Tổng cộng: dùng 28 bit
Ký tự Tần
số
Mã Số bit
SD
m 2 000 6

a 3 001 9
2 010 6
h 2 011 6
o 1 100 3
u 1 101 3
f 2 110 6
n 1 111 3
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.
Ký tự Tần
số
Mã Số bit
SD
m 2 00 4
a 3 0 3
2 01 4
h 2 10 4
o 1 000 3
u 1 001 3
f 2 11 4
n 1 010 3
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
II. Ý tưởng nén dữ liệu huffman
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 mã.
Và mã tiền tố là giải pháp phù hợp trong
trường hợp này.
Ký tự Tần
số
Mã Số bit
SD
m 2 00 4
a 3 0 3
2 01 4
h 2 10 4
o 1 000 3
u 1 001 3
f 2 11 4
n 1 010 3
00010 là mn? mah? hmh? aan? …
00,0,10 là mah
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
II. Ý tưởng nén dữ liệu huffman

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
II. Ý tưởng nén dữ liệu Huffman
COMPANY LOGO
III. Xây dựng cây huffman
Ví dụ: Giả sử ta có dữ liệu như sau:
“ma huffman”
nfum a h
Mảng A
0,090,180,090,18 0,18 0,180,09
Tần suất
1212 2 21
Số lần xuất hiện
III. Xây dựng cây Huffman
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2
null
2
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
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 2
u 1
a 2 f 2 h 2 m 2
null
2
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
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1
u 1
a
2
f 2 h 2 m 2
null
2
Tiếp tục chọn 2 phần tử đầu của mảng cây để tạo cây cha
mới
null
3

III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1u 1
a 2
f 2 h 2 m 2
null
2
Sắp xếp lại mảng cây
null
3
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
IV. Minh họa thuật toán
1 n 1 u 1
a 2
f 2 h 2 m 2
null
2
Tiếp tục tạo cây mới từ 2 cây 0 và 1 của mảng cây
nul
l
3
null
4
III. Xây dựng cây Huffman
COMPANY LOGO
1 n 1 u 1
a 2

f 2 h 2
m 2
null
2
Tiếp tục sắp xếp lại
null
3
null
4
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
IV. Minh họa thuật toán
1 n 1 u 1
a 2
f 2 h 2
m 2
null
2
Tiếp tục xây dựng cây mới
null
3
null
4
null
4
III. Xây dựng cây Huffman
COMPANY LOGO
1 n 1
u 1

a 2
f 2 h 2
m 2
null
2
Tiếp tục sắp xếp
null
3
null
4
null
4
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2

null
2
Tiếp tục xây dựng cây mới
null
3
null
4
null
4

null
7
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2
null
2
Tiếp tục xây dựng cây mới
null
3
null
4
null
4
null
7
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2
null

2
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.
null
3
null
4
null
4
null
7
null
11
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2
null
2
null
3
null
4
null
4
null

7
null
11
1
0
0
0
0
0
0
1
1
1
1
Duyệt cây
m: 00 “ ”: 010 n: 011 u: 100
1
a: 101
f: 110 h: 111
III. Xây dựng cây Huffman
III. Xây dựng cây huffman
COMPANY LOGO
IV. Nén và giải nén
Kí tự Mã bit
m 00
010
n 011
u 100
a 101
f 110

h 111
Dữ liệu gốc: ma huffman

Nén tập tin:
00101010111
100
110
110
00101
011
IV. Nén và giải nén
COMPANY LOGO
1 n 1
u 1
a 2
f 2 h 2
m 2
null
2
null
3
null
4
null
4
null
7
null
11
IV. nén và giải nén


Giải nén tập tin:
0
0 0 11 11 01
0
101
0
11 0 1 1 0 0 0 1 0 1 0 1 1
m
Chuỗi:
IV. Nén và giải nén
0
0
0
0
0
0
1
1
1
1
1
1

×