Relatorio de um algoritmo de huffman para compressão de arquivos.Full description
Fingerprint system is one of the most common biometric features used for personal identification and verification. There are many techniques used for finding the features of fingerprint when it matches the other images of fingerprint. This system mus
jbbhjhbDescripción completa
f30 codingDescripción completa
Full description
Huffman coding uses a specific method for choosing the representation for each symbol, resulting in a prefix code (sometimes called "prefix-free codes", that is, the bit string representing …Full description
comunicacionesDescripción completa
Adaptive Path Guide to Experience Mapping
Langkah-langkah kompresi citra dengan menggunakan Metode Huffman.Full description
ADAPTIVE REUSE
Controlling meshing distortion
adaptive fiter for desired filter performanceFull description
Full description
Compresor Huffman Imple JavaDescripción completa
Descripción: Book Adaptive controller design
the concept of Adaptive Reuse giving examples in india. and a few over the world. History Project.
Full description
ADAPTIVE HUFFMAN
David A. Huffman (9/8/1925 – 7/10/1999)
Topic 9: Adaptive Huffman Nhóm Nhóm thực hiện:
Lữ Cao Tiến
0612444
Nguyến Khắc Tiệp
0612449
Lê Phước Trung
0612461
Lưu Đứ c Trí
0612484
Adaptive Huffman
Giới thiệu: Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm.
Thuật toán tổng quát. Cây Hu Huffm fmaan (đ (động). Tính ch Tính chất anh anh em (Si (Sibl blin ingg prop proper erty ty)) Hình th thành và và cập nh nhật cây. Các vi phạm và cách giải quyết
Thuật to Thu toán án né nénn (E (Enc ncod odin ing) g) Thuật toán gi giải né nén (D (Decoding)
Adaptive Huffman - Giới thiệu:
Giới thiệu: Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm.
Thuật toán tổng quát. Cây Huffm fmaan (động). Tính ch Tính chất anh anh em em (Si (Sibl bling ing pr prop oper erty ty)) Hình thành và cập nhật cây. Các vi phạm và cách giải quyết
Thuật toá Thu toánn nén nén (E (Enc ncod odin ing) g) Thuật toán giải nén (Decoding) Demo minh họa.
Adaptive Huffman - Giới thiệu (tt):
Hạn chế của thuật toán Huffman tĩnh.
Trong quá trình nén cần đến 2 lầ n duyệt File → Chi phí nén cao.
Cần phải lưu trữ thông tin để giải nén → Làm tăng kích thước dữ liệu nén.
Dữ liệu nén cần phải có sẵn → Không nén được dữ liệu phát sinh theo thời gian thự c.
Adaptive Huffman - Giới thiệu (tt):
Ý tưởng:
Thuật toán này vẫn dựa trên ý tưởng của Huffman là sử dụng một vài bit (bit code) để biểu diễn một kí tự.
Độ dài “mã bit” cho các kí tự không giống nhau:
o
Kí tự xuất hiện nhiều lần→biểu diễn bằng mã ngắn. Kí tự xuất hiện ít → biểu diễn bằng mã dài.
o
Tạo sẵn một cây “tối thiểu” ban đầu, dữ liệu nén sẽ được cập nhật dần vào cây.
Giới thiệu (tt):
Lịch sử hình thành:
Được đề xuất (độc lập) bởi Faller (1973) và Gallager (1978)
Năm 1985 Knuth đưa ra một số cải tiến và hoàn chỉnh thuật toán. Vì vậy thuật toán này còn được gọi là thuật toán FGK.
Năm 1987 Vitter trình bày các cải tiến liên quan tới việc tối ư u cây Huffman.
Giới thiệu (tt):
Ưu điểm:
Không cần tính trước số lần xuất hiện của các kí tự.
Quá trình nén chỉ cần một lần duyệt file.
Không cần lưu thông tin phục vụ cho việc giải nén.
Nén “online” trên dữ liệu phát sinh theo thời gian thực.
Adaptive Huffman
Giới thiệu:
Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm. Thuật toán tổng quát.
Cây Huffman (động).
Tính chất anh Tính anh em (S (Sib ibli ling ng pro prope pert rty) y) Hình thành và cập nhật cây. Các vi phạm và cách giải quyết
Thuật to Thu toán án né nénn (E (Enc ncod odin ing) g) Thuật toán giải nén (Decoding)
Adaptive Huffman - Thuật toán tổng quát:
Static Huffman:
o
Cây Huffman được tạo thành từ bảng thống kê số lần xuất hiện của các kí tự.
o o
Adaptive Huffman: Nén “online” → không có trước bả n thống kê. Phương pháp: khởi tạo cây “tối thiểu” ban đầu, cây sẽ được cập nhật dần dần dựa trên dữ liệu phát sinh tr trong qu quá tr trình né nén hoặc giải nén.
Adaptive Huffman - Thuật toán tổng quát: Dữ liệu phát sinh
Khởi tạo cây “tối thiểu”
Cây Huffman
Nén/ gi giải né nén
Cập nhật cây
Dữ liệu nén/giải nén
Sự phối hợp giữa việc dùng cây (cho thu ật toán nén/gi ải nén) và c ập nh ật
Adaptive Huffman - Thuật toán tổng quát: Thuật toán nén
Đọc kí tự c
Khởi tạo cây “tối thiểu”
No
c != EOF Y e s
Cây Huffman
Mã hóa (nén kí kí tự c)
Dữ liệu nén
Cập nhật kí tự c và vào câ cây
Kế t thúc
Adaptive Huffman - Thuật toán tổng quát: Thuật toán giải nén
Đọc dữ liệu nén b
Khởi tạo cây “tối thiểu” No
b != EOF
Y e s
Cây Huffman
Giải nén b thành c
Dữ liệu giải nén c
Cập nhậ t kí tự c và vào câ cây
Kế t thúc
Adaptive Huffman
Giới thiệu: Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm.
Thuật toán tổng quát. Cây Huffman (động). Tính ch Tính chất anh anh em em (Si (Sibl bling ing pr prop oper erty ty)) Hình thành và cập nhật cây. Các vi phạm và cách giải quyết
Thuật toá Thu toánn nén nén (E (Enc ncod odin ing) g) Thuật toán giải nén (Decoding) Demo minh họa.
Adaptive Huffman - Cây Huffman (động):
Một cây nhị phân có n node lá được gọi là cây Huffman nếu thỏa:
Adaptive Huffman - Cây Huffman (động):
Root W=17 #9
Ví dụ:
E W=10 #8
W=7 #7
W=3 #5
A W=1 #1
W=4 #6
B W=2 #2
C W=2 #3
D W=2 #4
Thứ tự Wi
#1 1
#2 2
#3 2
#4 2
Giá trị
A
B
C
D
#5 3
#6 6
#7 7
#8 10
#9 17 17
E
Root
Adaptive Huffman - Cây Huffman (động):
Cách thức tạo cây:
b1: Khởi tạo cây “tối thiểu”, chỉ có node Escape (node 0) Escap e W=0
b2: Cập nhật từng kí tự vào trong cây theo qui tắc: Nếu kí tự chư a có trong cây thêm mới node lá Nếu kí tự đã có trong cây tăng trọng số node lên 1 Cập nhật trọng số của các node liên quan trong cây
Adaptive Huffman - Cây Huffman (động): Thuật
toán cập nhật trọng số:
Tăng trọng số của node lá lên 1.
Đi từ node lá đến node gốc tăng trọng số của các node lên 1. Kiểm tr traa tí tínnh chất an anh em và hiệu chỉnh lại cây nếu có vi phạm.
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ): Tăng trọng số (cuối)
Tăng trọng số (3)
W=26 W=25 #10
W=15 W=14 #8
W=11 #9
Tăng trọng số (2) W=6 W=5 #5
Tăng trọng số (1)
C W=3 W=2 #1
B W=11 #7
W=9 #6
T W=3 #2
D W=4 #3
L W=5 #4
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ):
Khi thêm một node mới hoặc tăng trọng số:
Vi phạm tính chất anh em.
Tràn
số.
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ): Vi phạm tính chất anh em:
W=29 #9
B W=17 #8
W=12 #7
W=6 #6
W=6 #5
Tăng trọng số (1)
D C W=4 W=3 #1
T W=3 #2
D W=3 #3
L W=3 #4
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ): Hiệu chỉnh cây để thỏa tính chất anh em:
W=30 W=29 #9 #10
B W=17 #8
W=13 W=12 #7 #8
W=7 W=6 #6
W=6 #5
C W=4 #1#1
T W=3 #2
D W=3 #3
L W=3 #4 #4
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ):
Thuật toán xác định node vi phạm:
Gọi x là node hiện hành. So sánh x với các node tiếp theo sau (theo thứ tự từ trái sang phải, từ d ướ ưới lên trên). Nếu tồn tại y sao cho y.Weight < x.Weight thì x là node vi phạm.
Thuật toán hiệu chỉnh cây thỏa tính chất anh em:
Gọi x là node vi phạm. Tìm node y xa nhất, có trọng số cao nhất thỏa y.Weight < x.Weight Hoán Ho án đổi x và no node de y trê trênn cây cây.. Cập nhật lại các node cha tương ứng . Lặ lại b1 h đế khi khô ò d i hạ
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ):
Vấn đề tràn số:
Quá trình câp ̣ nhâṭ cây → làm tăng trong ̣ số cać node.
Tron ro ̣ng sô số no node gô gốc tăn tăngg nha nhanh → có th thể vượt qu quá kh khả năng lưu tữ rữ ̉cua k̉ iêữuữḍ liêu.
o Kiêu ̉ int → gia ́ tri ̣ max = 215- 1 o Kiêu ̉ unsigned int → giá trị max = 216 – 1 o Kiêu ̉ long → gia ́ tri ̣ max = 231 - 1
Adaptive Huffman - Cây Huffman (động):
Vi ́ dụ về traǹ sô:́
W=255 #9
Node gốc đan đang có giá trị trọng số tối đa mà kiểu dữ liệu có thể biểu diễn. Hiện tượng tràn số sẽ xuất hiện khi ta tăng trọng số của bất kì node lá nào
B W=135 #8
W=120 #7
W=55 #5
C W=25 #1
W=65 #6
T W=30 #2
D W=30 #3
L W=35 #4
Adapti Adap tive ve Hu Hufffm fman an - Cây Cây Hu Hufffm fman an (động ng): ):
Thuật toán xử lí tràn số:
Khi
cập nhật trọng số, kiểm ta trọng số node gốc.
Nếu trọng
số node gốc > MAX_VALUE:
o Giảm trọng số các node lá trong cây (chia cho 2). o Cập nhật lai trọng số cac node nhánh. o Kiểm tra tính chất anh em và hiệu chỉnh lại cây.
(Do phép chia cho 2 làm mất phần dư của số nguyên)
Adaptive Huffman - Cây Huffman (động):
Xử lí traǹ sô:́ (tt) W=255 W=116 #9
B W=135 W=67 #8
W=59 W=120 #7
W=55 W=27 #5
C W=25 W=12 #1
W=65 W=32 #6
T W=30 W =15 #2
D W=30 W=15 #3
L W=35 W =17 #4
Adaptive Huffman
Giới thiệu: Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm.
Thuật toán tổng quát. Cây Hu Huffman (đ (động).
Tính ch Tính chất anh anh em (Si (Sibl blin ingg prop proper erty) ty) Hình thành và cập nhật cây. Các vi phạm và cách giải quyết
Thu Th uật toá toán n né nén n (E (Enc ncod odin ing) g)
Thuật to toán giải né nén (Decoding)
Adaptive Huffman
Thuật toán nén: initialize_model(); while(c != EOF) { c = getchar(inputfile); encode(c, outputfile); update_model(c); }
Adaptive Huffman
Thuật toán mã hóa kí tự c: encode (c, outputfile)
o o o
o o
Nếu c chư a có trong cây Duyệt câ cây T tì tìm m mã mã bit bit của Esc Escap apee ghi ghi lê lênn out outpu putf tfil ile. e. Ghi titiếp 8 bit mã ASC SCII II của c lên ou outp tpuutfi file le.. Thêm node c vào cây và cập nhật lại cây. Nếu c đã có tr troong cây: Duyệt câ cây T tì tìm m mã bi bitt của c và gh ghii lên lên ou outp tpuutf tfil ilee Tăng trọng số của node c lên 1 và cập nhật l ại cây
Adaptive Huffman
Giới thiệu: Hạn chế của thuật toán Huffman tĩnh. Ý tưởng. Lịch sử hình thành. Ưu điểm.
Thuật toán tổng quát. Cây Hu Huffman (đ (động). Tính ch Tính chất anh anh em (Si (Sibl blin ingg prop proper erty) ty) Hình thành và cập nhật cây. Các vi phạm và cách giải quyết
Thuuật toá Th toánn né nénn (E (Enc ncod odin ing) g) Thuật toán giải nén (Decoding)
Adaptive Huffman
Thuật toán giải nén:
inputfile: dữ liệu ở dạng nén outputfile: dữ liệu gi ải nén initialize_model(); while((c = decode(inputfile)) != EOF) { putchar(c, outputfile); update_model(c); }
Adaptive Huffman
Thuật toán giải mã kí tự c: decode(inputfile) b = getchar(inputfile);
o o • • •
Bắt đầu từ vị trí hiện tại trên inputfile. Lấy từng bit của b, duyệt trên cây (b==0: trái, b==1: phải). Nếu đi đến node lá x, return x.char Nếu đi đến node Escape: c = lấy 8 bit tiếp theo từ inputfile Thêm c vào cây, cập nhật lại cây. return c
DEMO MINH HỌA
Adaptive Huffman – Ví dụ Giả sử có dữ liệu như s au: f = “abacbdc”
Adaptive Huffman – Ví dụ (tt) B1: Khởi tạo cây và đưa kí tự “a ” vào cây: a W=1
input = 01100001
#1
E
#3
a W=1
#2
Adaptive Huffman – Ví dụ (tt) B2: Th Thêm êm kí tự “b “b”” vào vào tr tron ongg cây cây “b” ch chư a có trong cây Ta thêm “b” vào thành node lá trên cây
W=1 0
#1
input = 01100001 01100010
#3
E
#2
a W=1
Adaptive Huffman – Ví dụ (tt) b #3
W=1
W=1
#1
#1
#3
b W=1
#2
E
#2
a W=1
Adaptive Huffman – Ví dụ (tt) W=1 #3
W=1
#4
#1
E
#5
b W=1
#2
a W=1
Adaptive Huffman – Ví dụ (tt) W=1 W =2
Cập nhật trọng số của các node có liên quan #3
#1
E
W=1
#4
b W=1
#5
a W=1
#2
Adaptive Huffman – Ví dụ (tt) a B3: th thêm êm kí tự “a “a”” vào vào cây ây.. “a” đã tồn tại trong cây Tăng trọng số của node a thêm 1 Cập nhật lại trọng số của #3 các node liên quan
#1
input = 01100001001100010
E
WW=2 =3
W=1
#4
b W=1
#5
a W=1 W=2
#2
Adaptive Huffman – Ví dụ (tt) B4: th thêm êm kí tự “c “c”” vào vào cây ây.. “c” chư a có trong cây Ta thêm “c” vào thành node lá trên cây
#1
W=3
#3
W=1
E
input = 01100001001100010 011000101100 01100010
#4
b W=1
#5
a W=2
#2
Adaptive Huffman – Ví dụ (tt) c #3
W=3
#3
W=1
#1
#1
E
c W=1
#2
E
#5
a
W=1
W=2
b W=1
#2
#4
Adaptive Huffman – Ví dụ (tt) W=3
#3
#1
E
#3
W=1
#5
c W=1
#2
#5 #7
a W=2
W=1
b W=1
#2 #4
#4 #6
Adaptive Huffman – Ví dụ (tt) W=3 W =4
Cập nhật trọng số của các node có liên quan
#3
#1
E
#5
a W=2
W=1 W =2
b W=1
W=1
c W=1
#7
#2
#4
#6
Adaptive Huffman – Ví dụ (tt) b B5: th thêm êm kí tự “b “b”” vào vào câ câyy. “b” đã tồn tại trong cây Tăng trọng số của node b thêm 1 Cập nhật lại trọng số của các node liên quan