Bảng mã của cây trên tập khóa K

Một phần của tài liệu TỐI ƯU HOÁ LỚP CÁC THÔNG TIN CÓ CẤU TRÚC DẠNG CÂY NHỊ NGUYÊN 1 VÀ N CHIỀU VỚI THÔNG TIN CHỨA Ở LÁ TRÊN TẬP KHÓA HỮU HẠN BẰNG MÔ HÌNH XỬ LÝ SONG SONG (Trang 26)

3. Cây chuẩn tắc một chiều trên tập khóa K

1.4Bảng mã của cây trên tập khóa K

Định nghĩa 6:

a. Một thông tin d trong cây T TREE được gọi là cốt yếu nếu có tồn tại một số tự nhiên k K sao cho f(T,k) = d , hay thông tin d trong cây T ứng với số tự nhiên k.

b. Một thông tin e được gọi là không cốt yếu nếu không tồn tại một số k K sao cho f(T,k) = e , nói cách khác nếu không có một số k K để tạo ra một đường đi từ gốc đến lá chứa thông tin e trong cây.

c. Với T TREE , bảng mã của T là tập tất cả các khoá khác nhau k sao cho: f(T,k) = d D (kí hiệu là m(T)). Mỗi phần tử k m(T) được gọi là mã đúng của cây T.

Định lý l.7:

Nếu T TREE và N k1<d1,k2< d2,....kn <dn,dn+1>...>> là dạng chuẩn tắc của T thì m(T) ={k1, k2 ,...kn , kn+1}

Chứng minh:

Vì T N nên f(T, k) = f(R, k) với mọi k K. N = k1

d1 k2 d2 ...

kn

dn dn+1

Xét ki (i=1..n) theo tính chất của cây lệch phải N ta có: f(R,ki) = di D. vậy ki m(T) với i=1..n.

Luôn tồn tại một phần tử k > kn (k K) sao cho : f(R,ki) = dn+1 D . Vậy k m(T)

=> m(T) ={k1, k2 ,...kn , kn+1} (định lý được chứng minh)

Định lý l.8:

Với T1, T2 TREE. T1 T2 khi và chỉ khi m(T1) = m(T2)

Chứng minh:. T1 T2 N1 N2 N1 N2 m(T1) = m(T2) (theo định lý l.7).

1.5 Cây tối ƣu một chiều trên tập khóa K.

Trước hết ta đưa vào một số kí hiệu sau : a. (t)=số các đỉnh của cây T (kể cả lá).

b. Deep (T, T’) =số các cung của đường đi từ gốc của cây T đến gốc của cây T1 là cây con của cây T.

Trang 25

c. h(T) là chiều cao của cây T và h(T) = max{Deep(T, di ) | di là lá của T}.

Định nghĩa 1.6 (Định nghĩa cây tối ưu một chiều trên tập khóa K).

Cây R TREE gọi là cây tối ưu một chiều trên tập X, nếu R đồng thời thỏa mãn các điều kiện sau đây:

a. (R) = min { (T) } | T TREE và T (K) R } .

b. h(R) = min { h(T) } | T TREE và T (K)R} .

c | Deep(R, di) - Deep(R,dj)| l với mọi i j .

d. Khóa ở đỉnh cha bất kỳ trong cây R nhỏ hơn khóa ở đỉnh cây con phải và lớn hơn khóa ở đỉnh cây con trái.

Định lý l.9:(Sự tồn tại của cây tối ưu trên tập khóa K).

Với mỗi cây T TREE bao giờ cũng tồn tại cây R TREE thỏa mãn đồng thời các điều kiện sau:

a. AX ├ T = R. b. R ( K)T. (adsbygoogle = window.adsbygoogle || []).push({});

c (R) = min { (T) } | T TREE và T (K) R }.

d. h(R) = min { h(T) } | T TREE và T (K)R} .

c. | Deep(R, di) - Deep(R,dj)| l với mọi i j .

f. Khóa ở đỉnh cha bất kỳ của cây R nhỏ hơn khóa đỉnh cây con bên phải và lớn hơn khóa ở đỉnh cây con bên trái.

Chứng minh:

Theo định lý 1.3 thì tồn tại duy nhất dạng chuẩn tắc N sao cho: AX ├ T = N. N có dạng như sau:

N k1 d1 k2

ks ds ds+1

Đặt n=[n/2]+l. Thực hiện tiên đề ax2 (ngược) để bẻ đôi cây N tại đỉnh [kn, dn]. Tiếp tục áp dụng tiên đề ax2 (thuận) cho cây con trái và tiên đề ax2(ngược) cho cây con phải cho đến khi thu được cây tối ưu R. Vì AX ├ T = N mà R thu được bằng cách biến đổi N theo tiên đề ax2 nên AX ├ T = R. Vậy a) được chứng minh.

b) được suy ra từ a) bằng định lý 1.1

Dễ thấy (R) = (N) . áp dụng định lý 1.6 ta có c).

Gọi S là tổng số đỉnh (cả đỉnh trong và lá) của cây N. Theo thuật toán bẻ đôi xây dựng cây tối ưu R thì S cũng chính là tổng số đỉnh của R (vì tiên đề ax2

không làm mất đi hay thêm đỉnh). Gọi S’ là tổng số đỉnh của một cây bất kỳ T’ (K)T. Theo định lý 1.6 ta có:

S S’ . Độ cao của cây R là: h =log2(S+l) - 1 . Độ cao của cây T’ là: h’ log2(S’ + 1 ) - 1 . Vậy h < h’ nên d) hiển nhiên đúng.

Theo thuật toán bẻ đôi thì e) là hiển nhiên đúng.

Vì chỉ áp dụng tiên đề ax2 cho việc bẻ cây N nên f) hiển nhiên đúng. Vậy định lý được chứng minh.

Chú ý: Với mỗi cây T TREE có thể tồn tại nhiều hơn 1 cây nhị phân tối ưu thỏa mãn định lý 1.9. Chỉ cần có 1 cây tối ưu R, qua tiên đề ax2 chúng ta có thể có một cây tối ưu tương đương và khác với R. Vì vậy, mục đích của ta là đi xây dựng 1 cây tối ưu của T là đủ.Tất nhiên điều quan trọng là: với mỗi cây T, qua thuật toán 1 .5 luôn cho la duy nhất một cây tối ưu R (K)T.

1.6 Thuật toán phân rã tìm cây nhị phân tối ƣu trên tập khóa hữu hạn K.

Bài toán:

Trang 27 Output: Cây tối ưu R (K)T.

Trong [3], đã chỉ ra thủ tục thực hiện tìm cây tối ưu R của T trên tập hữu hạn K. Ở đây ta dùng thuật toán phân rã để giải quyết bài toán trên với mục đích rút ngắn thời gian tính toán trong việc xây dựng cây tối ưu R của cây T trên tập khóa hữu hạn K.

1.6.1 Thuật toán chuyển về cây chuẩn tắc trên tập khóa hữu hạn Ki (i=l,...,n)

Thuật toán 1.1

Input: Cây T TREE , tập khóa hữu hạn Ki (i=l,...,n). Output: Ni TREE là cây chuẩn tắc trên Ki, Ni (Ki)T.

Bước 1 : Khởi gán Ni = T.

Bước 2: Kiểm tra xem Ni có phải là dạng chuẩn tắc không?

+ Nếu đúng thì chuyển sang bước 4.

+ Nếu sai thì chuyển sang bước 3.

Bước 3: Thực hiện lần lượt các tiên đề sau: + Thực hiện tiên đề axi4

+ Thực hiện tiên đề axi5 + Thực hiện tiên đề axi1 . + Thực hiện tiên đề axi2 (adsbygoogle = window.adsbygoogle || []).push({});

+ Thực hiện tiên đề axi3

Quay lại bước 2 .

Bước 4: Cây Ni (Ki)T là dạng chuẩn tắc.

Thuật toán 1.1 được thực hiện đồng thời trên các tập khóa con K1, K2 ... Kn và cho ta các dạng chuẩn tắc N1, N2 ... Nn Ở đây Ni (Ki)T với i=l, 2,..., n.

1.6.2 Thuật toán nối các cây chuẩn tắc Ni (Ki)T (i=l,...,n) thành cây chuẩn

Input: Các cây chuẩn tắc Ni (Ki)T (i=l, 2, ...,n)

Output: Cây chuẩn tắc N (K)T. , ở đây N = N123...n là kết quả của việc ghép cây Nn vào cây N12...n-1 của bước trước.

Thuật toán 1.2

Bước 1 : Khởi tạo N là cây rỗng . Khởi tạo biến đếm i= 1 . Bước 2 : Kiểm tra i > n ?

+ Nếu đúng thì sang bước 4. + Nếu sai thì sang bước 3.

Bước 3: Kiểm tra cây Ni có là cây rỗng không?

+ Nếu là cây rỗng thì tăng i (i=i+l) (loại bỏ cây rỗng ra khỏi quá trình ghép).

+ Nếu là cây không rỗng thì nối cây Ni vào cuối cây N theo nguyên tắc đồng nhất lá bên phải nhất của N với đỉnh có khoá bé nhất của Ni ,và sau đó tăng i (i=i+ 1)

Quay lại bước 2.

Bước 4: Cây chuẩn tắc N (K)T.

1.6.3 Phân hoạch tƣơng đƣơng trên tập khóa K.

Chia K thành n tập con Kl, K2 ... Kn sao cho chúng thỏa mãn đồng thời ba điều kiện sau:

1 Kl K2 ... Kn = K. 2. Ki Kj = (i j).

3 . Mọi phần tử x Ki và y Ki+1 đều thỏa mãn x< y với i =1,2, . . , n

Các tập Kl, K2 ... Kn thỏa mãn đồng thời ba điều kiện trên gọi là phân hoạch tương đương trên tập khóa K.

Trang 29

Chia tập K thành n tập con K1, K2 ... Kn sao cho chúng tạo thành một phân hoạch tương đương trên K.

1 6.4 Thuật toán chuyển cây chuẩn tắc về cây tối ƣu trên tập khóa hữu hạn K.

Sau khi thực hiện thủ tục nối các cây chuẩn tắc Ni trong thuật toán 1.2 ta được cây chuẩn tắc N . Tiếp theo ta sẽ chuyển N về cây tối ưu R (K)N (K)T. Giả sử ta đã có hàm sau: Numr(p) đo chiều cao của cây N có con trỏ p trỏ tới gốc của nó.

Input: Cây chuẩn tắc N (K)T. Output: Cây tối ưu R (K)N (K)T.

Thuật toán 1.4

Bước 1 : Dùng hàm Numr(p) để đo chiều cao của cây chuẩn tắc N. Nếu Numr(p) 1 thì chuyển xuống bước 4

Ngược laị thì áp dụng (Numr(p) div 2 ) lần tiên đề ax2 - ngược cho cây N.

Bước 2 : Kiểm tra xem cây R đã tối ưu chưa > + Nếu đúng thì chuyển sang bước 4, ngược lại:

Dùng hàm Numl(p->left) và hàm Numr(p->right) để đo chiều cao của cây con trái và cây con phải của N (giả sử ta đo được m,n). (adsbygoogle = window.adsbygoogle || []).push({});

+ áp dụng (m div 2) lần tiên đề ax2 -thuận cho cây con trái của N.

+ áp dụng (n div 2) lần tiên đề ax2 - ngược cho cây con phải của N.

Bước 3 : Chuyển sang xét cây con trái và cây con phải của N. Quay lại bước 2 .

Bước 4 : Cây hiện thời R là cây tối ưu.

1.6.5 Thuật toán phân rã xây dựng cây tối ƣu trên tập khóa hữu hạn K.

d c 3 a h h i

Output : Cây tối ưu R (K)T.

Bước 1: áp dụng thuật toán 1.3 để phân rã tập khóa K thành n tập con K1, K2 ...Kn.

Bước 2 : áp dụng thuật toán 1.1 để xây dựng các cây chuẩn tắc Ni của T trên các tập khóa hữu hạn Ki (i= 1 , . . . , n ) .

Bước 3: áp dụng thuật toán 1.2 để ghép các cây Ni (i=l, 2, ..., n) thành cây chuẩn tắc N (K)T.

Bước 4: áp dụng thuật toán 1.4 để chuyển cây chuẩn tắc N (xây dựng ở bước 3) về cây tối ưu R (K)N (K)T.

1.7 Ví dụ minh hoạ.

Luận văn này đã giải quyết hoàn chỉnh bài toán: cho T TREE tìm cây tối ưu của T tập khóa hữu hạn bằng thuật toán phân rã. Nó rất có ý nghĩa trong việc nghiên cứu lớp các thông tin có cấu trúc dạng cây nhị phân. Dưới đây ta xét một số ví dụ của với mục đích mô phỏng hoạt động của các thuật toán một cách trực quan.

1.7.1 Ví dụ mô phỏng thuật toán chuyển về cây chuẩn tắc trên tập khóa hữu

hạn Ki (i=l, 2, ..., n) (thuật toán l . l).

Xét cây T trên tập khoá hữu hạn Ki = { 3, 4, 5, 6, 7, 8, 9, 10} . Cây T có

dạng 3 6 1 7 5 8 7 11 4

Trang 31 k b e f e g 7 4 e 4 i a h 7 8 6 f h b e 5 7 4 e 4 a h 7 8 11 f h b k e 5 6 i Bước 1 : Khởi gán Ni = T.

Bước 2: Ni chưa phải là dạng chuẩn tắc. Chuyển sang bước 3. Bước 3: + Áp dụng tiên đề ax7 Ni + Áp dụng tiên đề ax6 Ni 4 2

4 e f 4 a h 7 8 6 h b e 5 4 e e a h 7 8 6 h b 5 e a h 7 8 6 h b 5 + Áp dụng tiên đề ax1 : Ni + Áp dụng tiên đề ax3 Ni + Áp dụng tiên đề ax4 Ni + Áp dụng tiên đề ax5

Trang 33 e a h 8 b 6 5 a 6 8 5 h b e 9 e k 4 5 b c a Ni + Áp dụng tiên đề ax2 - thuận : Ni

Quay lại bước 2, kiểm tra thấy Ni là dạng chuẩn tắc Bước 4: Ni là dạng chuẩn tắc của cây T trên tập khoá Ki

1.7.2 Ví dụ mô phỏng thuật toán nối các cây chuẩn tắc Ni (Ki)T , (i=1..n)

thành cây chuẩn tắc N (K) (thuật toán l.3).

Giả sử ta có 3 cây chuẩn tắc như sau:

N1 N2 N3

Bước 1: Khởi gán N = . Khởi gán i =1 Bước 2: i < 4. chuyển sang bước 3

4 5 9 a b e k 3 5 6 a b c 8 9 d

Bước 2: i < 4. chuyển sang bước 3 Bước 3: N2 = . i =3. quay lên bước 2 Bước 2: i < 4. chuyển sang bước 3 Bước 3: N3 . Nối N3 vào N ta được N

i = 4. quay lên bước 2 (adsbygoogle = window.adsbygoogle || []).push({});

Bước 2: i = 4. chuyển sang bước 4 Bước 4: N là dạng chuẩn cần tìm

1.7.3 Ví dụ mô phỏng thuật toán chuyển cây chuẩn tắc của T về cây tối ƣu

(thuật toán l.5). Giả sử ta có cây:

Trang 35 3 6 a b c 9 f d 8 e 5

h(N) = 5. Ta có: [5/2] + 1 = 3. Bẻ cây N tại đỉnh 6 ta được:

Chương 2

THUẬT TOÁN PHÂN RÃ LỚP THÔNG TIN CÓ CẤU TRÚC DẠNG CÂY NHỊ PHÂN N CHIỀU VỚI THÔNG TIN CHỨA Ở LÁ TRÊN TẬP KHÓA

HỮU HẠN

Nội dung của chương này gồm:

- Các định nghĩa về: cây nhị phân n-chiều với thông tin chứa ở lá, hàm kết quả, sự tương đương giữa các cây nhị phân n-chiều, dạng chuẩn của cây nhị phân n-chiều, bảng mã của cây nhị phân n-chiều, cây nhị phân n-chiều tối ưu.

- Các qui tắc dẫn xuất và hệ tiên đề của cây nhị phân n-chiều.

- Các tính chất của cây tương đương, của dạng chuẩn tắc và các bổ đề, các định lý cho phép kiểm tra tính tương đương giữa các cây nhị phân n-chiều, biến đổi tương đương giữa các cây nhị phân n-chiều.

- Thuật toán chuyển về cây nhị phân n-chiều chuẩn tắc, thuật toán nối các cây n-chiều chuẩn tắc, phân hoạch tập khóa ban đầu K(n) thành m tập khóa con K1(n), K2(n), ..., Km(n), thuật toán chuyển về cây nhị phân n-chiều tối ưu. - Thuật toán phân rã xây dựng cây nhị phân n-chiều tối ưu.

- Các ví dụ minh họa các thuật toán.

Chương 1 đã trình bày chi tiết thuật toán phân rã xây dựng cây nhị phân một chiều tối ưu với thông tin chứa ở lá. Chương 2 là chi tiết thuật toán phân rã xây dựng cây nhị phân n chiều tối ưu với thông tin chứa ở lá.. Điều thú vị là khi thay n = 1 ta thu lại được những kết quả đã nghiên cứu với cấu trúc cây nhị phân một chiều với thông tin chứa ở lá.

2.1 Cây nhị phân n-chiều với thông tin chứa ở lá.

Giả sử D là tập không rỗng các Documents nào đó và mỗi phần tử của nó ta gọi một thông tin, D được gọi là tập các thông tin. Các tập Ki(i=l, 2, ..., n) là

Trang 39

tập các phần tử mà trên đó thỏa mãn quan hệ so sánh ( x,y Ki : hoặc x y hoặc x < y). Không mất tính tổng quát ta xem K1 = K2 = ... = Kn = K là tập các số tự nhiên. Tích Decac K(n) = K x K x ... x K được gọi là tập khóa của cây nhị phân n-chiều và mỗi phần tử ln =(l1 , 12 ,..., ln) K(n) với li K là một khóa. Vậy mỗi một khóa là bộ gồm n số tự nhiên. Giả sử các kí hiệu [ ] < >, D K.

Định nghĩa 2.l (Định nghĩa đệ qui cây nhị phân n-chiều với thông tin chứa ở lá)

a. Mỗi phần tử d D gọi là một cây.

b. Nếu Tl, T2 là hai cây và k K thì dãy kí hiệu [i, k]<Tl,T2> cũng là một cây. Dạng đồ thị của cây [i, k] < Tl, T2> là: [i, k]

T1 T2

Ở đây [i, k] là đỉnh trong của cây, nó chứa k K và i là chỉ số khóa (1 i n). Tl

là cây con bên trái, T2 là cây con bên phải. Đỉnh ngoài hay còn gọi là lá chứa thông tin d D. Tập tất cả các cây định nghĩa như trên được kí hiệu qua TREE(N) và được gọi là tập các cây nhị phân n-chiều với thông tin chứa ở lá trên tập khóa K(n) (gọi tắt là cây nhị phân n-chiều).

Định nghĩa 2.2 (Định nghĩa hàm đánh giá hay hàm kết quả )

Ta kí hiệu " " (" ") để chỉ sự đồng nhất bằng nhau (không đồng nhất bằng nhau) giữa các cây nhị phân n-chiều.

Giả sử T là một cây nhị phân n-chiều và ln

=(l1, l2 , ...,ln) K(n).

Ta định nghĩa hàm f : TREE(N) xK(n) D theo định nghĩa đệ quy của cây như sau: a. Nếu T d D thì f(T , ln ) = f(d, ln ) = d với mọi ln K(n) b. Nếu T [i, k]<T1,T2> thì : f(T1,ln) nếu li k. f(T, ln ) = f(T2, ln) nếu li > k. (adsbygoogle = window.adsbygoogle || []).push({});

Định nghĩa 2.3 (Định nghĩa sự tương đương của 2 cây nhị phân n-chiều).

Giả sử Tl , T2 TREE(n). Ta nói Tl là tương đương với T2 trên K(n) ( kí hiệu Tl (K(n)) T2) khi và chỉ khi f(Tl , ln ) = f(T2, ln) Với mọi ln

K(n).

2.2 Hệ tiên đề và các quy tắc dẫn xuất trên TREE(n). 2.2.1 Qui tắc dẫn xuất của TREE(n). 2.2.1 Qui tắc dẫn xuất của TREE(n).

Trước tiên ta đưa vào. khái niệm phương trình cây.

Giả sử Tl, T2 TREE(N), khi đó dãy ký hiệu Tl = T2 được gọi là một phương trình cây Ta ký hiệu tập các phương trình cây trên TREE(n) là EQU(n). Như vậy:

EQU(n) = { Tl = T2 | Tl , T2 TREE(n) } Giả sử X EQU(n) và T 1 = T2 EQU(n).

Định nghĩa 2.4 (Định nghĩa dẫn được).

Phương trình cây Tl = T2 dẫn được trực tiếp từ tập X (ký hiệu X ├ T1 = T2) khi và chỉ khi hoặc T1= T2 X hoặc T1 = T2 được suy ra từ các phần tử của X bằng cách áp dụng một số hữu hạn lần các quy tắc sau:

Quy tắc l (Rl): X ├ T = T với mọi T TREE(n) (phản xạ). Quy tắc 2(R2): Nếu X├ Tl = T2 thì X ├ T2 = Tl (đối xứng).

Quy tắc 3(R3): Nếu X ├ Tl = T2 và X ├ T2 = T3 thì X ├ T1 = T3 (bắc cầu)

Quy tắc 4(R4): Nếu X ├ Tl = Tl’ thì X├ [i, k]<Tl,T2> = [i, k] <Tl’ , T2> (ghép trái).

Quy tắc 5(R5): Nếu X ├ T2 =T2’ thì X ├ [i,k]<Tl ,T2> = [i,k]<Tl, T2'> (ghép phải).

2.2.2 Hệ tiên đề của TREE(N) trên tập khóa hữu hạn Ki(n)(i=l, 2, ...,m).

Hệ tiên đề của TREE(n) là các phương trình cây sau:

Tiên đề axl: [i,k]<[i,k'] <Tl,T2>,T3> = [i,k] <Tl,T3> là một tiên đề nếu kmin k

Trang 41 Dạng đồ thị: [i, k] = [i, k]

[i, k] T3 T1 T3

T1 T2

Tiên đề ax2: [i, k]<[i, k']<Tl,T2>,T3> = [i, k']<Tl, [i, k]<T2 ,T3>> là một tiên đề

nếu kmin k’ k kmax

Dạng đồ thị: [i, k] = [i, k’] [i, k’] T3 T1 [i, k] T1 T2 T2 T3

Tiên đề ax3: [i, k]<T1, [i, k']<T2,T3>> = [i, k]<Tl,T3>> là một tiên đề nếu kmin

k’ k kmax

Một phần của tài liệu TỐI ƯU HOÁ LỚP CÁC THÔNG TIN CÓ CẤU TRÚC DẠNG CÂY NHỊ NGUYÊN 1 VÀ N CHIỀU VỚI THÔNG TIN CHỨA Ở LÁ TRÊN TẬP KHÓA HỮU HẠN BẰNG MÔ HÌNH XỬ LÝ SONG SONG (Trang 26)