Giải thuật Huffman

Một phần của tài liệu chuong-3 (Trang 31 - 38)

Thuật toỏn 3.5.1. Giải thuật Huffman

Đầu vào. Tập ký hiệu X và bảng tần suất f(x) với mọi xX. Đầu ra. Cõy mó tối ưu Huffman.

Cỏc bước.

(i) T là rừng cú n =X cõy, mỗi cõy cú đỳng 1 đỉnh tương ứng với một ký hiệu trong X. Gỏn mỗi gốc x một nhón f(x).

Chương III. Cõy III.32

(iii) Tỡm hai cõy trong T với nhón gốc nhỏ nhất. Gọi cỏc gốc là u và v. Nối u và v với đỉnh w ta được cõy mới gốc w (cỏc cõy u và v trở thành cõy con của w). Nhón gỏn cho w là tổng nhón của u và v. Quay lại bước (ii).  Bổ đề 3.5.1. Gọi x và y là hai ký hiệu cú tần suất xuất hiện f(x), f(y) nhỏ nhất

trong X. Khi đú tồn tại cõy mó tối ưu T của X sao cho x và y là hai nỳt anh em trong T.

Chứng minh.

Gọi T0 là một cõy mó tối ưu của X.

Giả sử x, y khụng là lỏ anh em. Gọi u là lỏ cú mức lớn nhất trong T0. Khi đú u phải cú lỏ anh em v, vỡ nếu khụng ta cú thể xoỏ nỳt u và gỏn ký hiệu u cho cha của u và ta cú mó mới tốt hơn T0 , mõu thuẫn với T0 là mó tối ưu.

Nếu x khụng cựng mức với u, tức h(x) < h(u), ta hoỏn đổi ký hiệu x và u và nhận được cõy mới T1. Ta cú

E(T1) = E(T0) - h(x).f(x) - h(u).f(u) + h(x).f(u)+h(u).f(x) = = E(T0) - [h(u)-h(x)].[f(u)-f(x)] < E(T0)

Điều này mõu thuẫn với tớnh tối ưu của T0. Vậy x và tương tự y cú cựng mức với u,v. Bằng cỏch hoỏn đổi x với u và y với v ta nhận được cõy T cú E(T) = E(T0), nghĩa là T cũng là cõy tối ưu.

 Định lý 3.5.2. Giải thuật Huffman cho cõy mó tối ưu.

Chứng minh.

Quy nạp theo số ký hiệu n của X.

+ Bước cơ sở: n=2. Giả sử hai ký hiệu trong X là x và y thỡ giải thuật cho cõy mó

0 1

x y

Hỡnh 3.5.2

và hiển nhiờn đõy là cõy mó tối ưu.

+ Bước quy nạp: Giả sử X cú n ký hiệu và x và y là hai ký hiệu cú tần suất nhỏ nhất.

Gọi X’ là tập cú n1 ký hiệu nhận được từ X bằng cỏch thay ký hiệu x và y bằng 1 ký hiệu z với tần suất f(z)=f(x)+f(y).

Theo bổ đề tồn tại cõy mó tối ưu T sao cho x và y là anh em. Từ T bỏ hai nỳt lỏ x và y và gỏn z cho nỳt cha của x và y ta nhận được cõy mó T’ của X’.

Bõy giờ cho H là cõy nhận được từ giải thuật Huffman của X với x và y là anh em. Từ H bỏ hai nỳt lỏ x và y và gỏn z cho nỳt cha của x và y ta nhận được cõy mó Huffman H’ của X’. Theo giả thiết quy nạp H’ là cõy mó tối ưu. Vỡ vậy ta cú

E(H) = E(H’) + f(x) + f(y)  E(T’) + f(x) + f(y) = E(T) Mặt khỏc vỡ T tối ưu nờn từ đú suy ra E(H) = E(T), tức là H tối ưu.

Chương III. Cõy III.33

Vớ dụ 3.5.3. Xột vớ dụ với bảng ký hiệu và tần suất như sau:

Ký hiệu : a b c d e f

Tần suất (%) : 40 10 15 5 20 10

Cõy nhị phõn của mó Huffman được xõy dựng qua cỏc bước:

Khởi tạo: Rừng T cú 6 cõy cú gốc là a, b, c, d, e, f với cỏc nhón được ghi trong ngoặc. a(40) e(20) c(15) f(10) d(5) b(10) Hỡnh 3.5.3

Bước 1: Gốc d và b cú nhón nhỏ nhất, nối chỳng vào gốc db. Rừng T cú 5 cõy cú gốc là a, e, db, c, f a(40) e(20) db(15) c(15) f(10) d(5) b(10) Hỡnh 3.5.4

Bước 2: Gốc f và c cú nhón nhỏ nhất, nối chỳng vào gốc fc. Rừng T cú 4 cõy cú gốc là a, e, db, fc a(40) fc(25) e(20) db(15) c(15) f(10) d(5) b(10) Hỡnh 3.5.5

Bước 3: Gốc db và e cú nhón nhỏ nhất, nối chỳng vào gốc dbe. Rừng T cú 3 cõy cú gốc là a, dbe, fc

Chương III. Cõy III.34 a(40) dbe(35) fc(25) e(20) db(15) c(15) f(10) d(5) b(10) Hỡnh 3.5.6

Bước 4: Gốc fc và dbe cú nhón nhỏ nhất, nối chỳng vào gốc fcdbe. Rừng T cú 2 cõy cú gốc là a, fcdbe fcdbe(60) a(40) dbe(35) fc(25) e(20) db(15) c(15) f(10) d(5) b(10) Hỡnh 3.5.7

Bước 5: Nối a và fcdbe vào gốc afcdbe. T là cõy mó tối ưu:

afcdbe(100) 0 1 fcdbe(60) a(40) 0 1 dbe(35) fc(25) 0 1 0 1 e(20) db(15) c(15) f(10) 0 1 d(5) b(10) Hỡnh 3.5.8

Chương III. Cõy III.35

Ký hiệu : a b c d e f

Mó Huffman : 1 0011 010 0010 000 011

Cỏch mó hoỏ này cho chiều dài bản tin là

Chương III. Cõy III.36 VI. CÂY QUYẾT ĐỊNH

Cỏc cõy cú gốc cú thể dựng để mụ hỡnh húa cỏc bài toỏn trong đú cú một dóy cỏc quyết định dẫn đến lời giải.

Định nghĩa 3.6.1. Cõy cú gốc trong đú mỗi đỉnh tương ứng với một quyết định

và mỗi cõy con tại cỏc đỉnh này ứng với một kết cục cú thể của quyết định được gọi là cõy quyết định.

Bài toỏn 5 đồng tiền

Cú 5 đồng tiền bằng kim loại hoàn toàn giống nhau, trong đú cú một đồng tiền giả nặng hơn hoặc nhẹ hơn cỏc đồng tiền thật khỏc. Người ta dựng cõn cõn bằng so sỏnh cỏc đồng tiền để xỏc định đồng tiền giả.

Cỏc đồng tiền ký hiệu là C1, C2, C3, C4, C5. Một phương phỏp giải bài toỏn cho ở cõy quyết định sau.

C1 : C2 C1 : C5 C3 : C4 C1 : C5 C1 : C5 C3 : C4 C1 : C5 C1,H C2,L C2,H C1,L C3 : C5 C1 : C5 C3 : C5 C3,H C4,L C5,L C5,H C4,H C3,L Hỡnh 3.6.1

Cỏc nỳt biểu diễn cỏc lần cõn so sỏnh đồng tiền Ci (trỏi) và Cj (phải). Cỏc nhón trờn cạnh cú ý nghĩa như sau

đồng tiền trỏi nặng hơn đồng tiền phải đồng tiền phải nặng hơn đồng tiền trỏi hai đồng tiền trỏi nặng bằng nhau

Cỏc lỏ nhón Ci,H nghĩa là đồng tiền Ci nặng, cỏc lỏ nhón Ci,L nghĩa là đồng tiền Ci nhẹ.

Chẳng hạn, tại gốc, ta so sỏnh C1 với C2 , nếu bờn trỏi nặng hơn, ta biết hoặc C1 là đồng tiền nặng, hoặc C2 là đồng tiền nhẹ. Theo cõy quyết định, ta so sỏnh C1 với C5 (là đồng tiền thật), nếu bờn trỏi nặng hơn thỡ C1 là đồng tiền giả nặng,

Chương III. Cõy III.37

nếu hai bờn bằng nhau thỡ C2 là đồng tiền giả nhẹ (vỡ C là đồng tiền thật cú trọng lượng bằng C5 ).

Ta coi số lần cõn so sỏnh tối thiểu trong trường hợp xấu nhất là độ phức tạp thuật toỏn. Thuật toỏn trờn là tối ưu. Thật vậy giả sử tồn tại thuật toỏn giải bài toỏn 5 đồng tiền với số lần cõn trong trường hợp xấu nhất nhỏ hơn 3. Khi đú cõy quyết định biểu diễn thuật toỏn T' là cõy tam phõn cú độ cao  2. Số lỏ của T' sẽ nhỏ hơn hoặc bằng 32

= 9. Mặt khỏc số lỏ của T' phải biểu diễn cỏc kết quả cú thể của bài toỏn: Ci,H và Ci,L với i=1,...,5. Số kết quả này là 10 cho nờn cõy T' khụng thể giải hết cỏc trường hợp của bài toỏn.

Bài toỏn 4 đồng tiền

Bài toỏn 4 đồng tiền cũng cú độ phức tạp là 3.

Thật vậy, nếu ta so sỏnh cặp C1, C2 với cặp C3, C4 thỡ sau hai lần cõn cú tối đa 6 lỏ kết quả (xem hỡnh), trong khi lời giải yờu cầu cú 2*4=8 kết quả.

C1 C2 : C3C4 khụng tồn tại cạnh 6 kết quả Hỡnh 3.6.2

Ngược lại, nếu ta so sỏnh C1 với C2 thỡ trong trường hợp hai đồng tiền nặng bằng nhau, một lần cõn so sỏnh nữa chỉ cho tối đa 3 lỏ kết quả (xem hỡnh sau), trong khi số kết quả cú thể của nhỏnh này là 4: C3,H ; C3,L ; C4,H ; C4,L.

C1 : C2

3 kết quả

Chương III. Cõy III.38

BÀI TẬP

Một phần của tài liệu chuong-3 (Trang 31 - 38)