KHOA CÔNG NGHỆTrần Thị Ngọc Hà 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 LUẬN
Trang 1KHOA CÔNG NGHỆ
Trần Thị Ngọc Hà
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
LUẬN VĂN THẠC SĨ
Hà Nội - Năm 2004
Trang 2Trang 89
Contents
MỤC LỤC
LỜI GIỚI THIỆU 1
Chương l: 4
THUẬT TOÁN PHÂN RÃ LỚP THÔNG TIN CÓ CẤU TRÚC DẠNG CÂYNHỊ PHÂN MỘT CHIỀU VỚI THÔNG TIN CHỨA Ở LÁ TRÊN TẬP KHÓA HỮU HẠN 4
1 Định nghĩa cây nhị phân một chiều với thông tin chứa Ở lá 4
2 Hệ tiên dề và các quy tắc dẫn xuất trên TREE 6
2.1 Quy tắc dẫn xuất của TREE 6
2.2 Hệ tiên đề của TREE trên tập khóa hữu hạn K i(i=l, 2, , n-l) 6
3 Cây chuẩn tắc một chiều trên tập khóa K 11
1.4 Bảng mã của cây trên tập khóa K 23
1.5 Cây tối ưu một chiều trên tập khóa K 24
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 26
1.7 Ví dụ minh hoạ 30
Chương 2 38
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 38
2.1 Cây nhị phân n-chiều với thông tin chứa ở lá 38
2.2 Hệ tiên đề và các quy tắc dẫn xuất trên TREE(n) 40
2.2.1 Qui tắc dẫn xuất của TREE(n) 40
2.2.2 Hệ tiên đề của TREE(N) trên tập khóa hữu hạn K i (n)(i=l, 2, ,m). 40
Trang 32.3 Dạng chuẩn tắc của cây nhị phân n-chiều 48
2.4 Bảng mã của cây n-chiều trên tập khóa K(n) 72
2.5 Cây nhị phân n- chiều tối ưu 73
2.6 Thuật toán phân rã xây dựng cây n-chiều tối ưu trên tập khóa hữu hạn K(n) 74
2.6.1 Thuật toán chuyển về cây n-chiều chuẩn tắc trên tập khoá hữu hạn K i (n)(i=l, 2, , m) (Thuật toán 2.l) 74
2.6.2 Thuật toán nối các cây n-chiều chuẩn tắc N i n (K i (n))T(i=l, .,m) thành cây n-chiều chuẩn tắc N n (K(n))T (Thuật toán 2.2) 74
2.6.3 Thuật toán phân rã tập khóa K(n) thành m tập con K l (n), K 2(n), ,
K m (n) (Thuật toán 2.3) 75
2.6.4 Thuật toán chuyển về cây n -chiều tối ưu (Thuật toán 2.4) 76
2.6.5 Thuật toán phân rã xây dựng cây n-chiều tối ưu trên tập khóa K(n) 76
2.7 Ví dụ minh hoạ 77
2.7.1 Ví dụ mô phỏng thuật toán chuyển về cây 2-chiều chuẩn tắc trên tập khóa hữu hạn K i (2) (thuật toán 2.l) 77
2.2.7 Ví dụ mô phỏng thuật toán nối các cây chuẩn tắc N i 2 (K i ( 2))T thành cây chuẩn tắc N 2 (K(2))T (Thuật toán 2.3) 78
2.7.3 Ví dụ mô phỏng thuật toán chuyển cây 2 - chiều chuẩn tắc của T về cây tối ưu ( thuật toán 2.5) 80
KẾT LUẬN 85
TÀI LIỆU THAM KHẢO: 87
PHỤ LỤC 88
Trang 4Trang 1
LỜI GIỚI THIỆU
Khái niệm cây tìm kiếm nhị phân đóng vai trò rất quan trọng trong cấu trúc
dữ liệu và trong lý thuyết thuật toán Tuy nhiên, để khai thác tối đa ưu điểm của cây tìm kiếm nhị phân thì nhất thiết ta phải lưu trữ thông tin trên cây tìm kiếm nhị phân tối ưu (tức cây nhị phân có số đỉnh và độ cao nhỏ nhất trong tất cả các cây tương đương với nó) Hơn thế nữa, sau một thời gian sử dụng thì thông tin lưu trữ trên cây sẽ bị lạc hậu, khi đó ta phải đánh giá và tổ chức lại chúng, các thông tin lạc hậu sẽ bị loại bỏ Như vậy, nhu cầu xây dựng cây nhị phân tối ưu luôn được đặt ra Vấn đề đặt ra là làm thế nào để xây dựng cây nhị phân tối ưu?
Đã có nhiều thuật toán xây dựng cây nhị phân tối ưu, tuy nhiên, các thuật toán này hoạt động dựa trên việc xét duyệt trên toàn bộ tập khóa, chính vì vậy khi tập khóa quá lớn nhất là khi tập khóa là vô hạn thì thời gian thực hiện thuật toán là rất lớn Để khắc phục nhược điểm trên, trong luận văn này, ta áp dụng thuật toán phân rã để tìm cây nhị phân tối ưu và lưu trữ các thông tin đã được phân loại trong cây tối ưu đó Thuật toán phân rã dựa trên việc chia nhỏ tập khóa hữu hạn ban đầu thành n tập khóa con (n tập hữu hạn) Sau đó áp dụng phương pháp tiên
đề của H.Thiele để tìm cây nhị phân chuẩn tắc trên từng tập con đó Công việc này có thể tiến hành đồng thời trên tất cả các tập khóa con vì vậy nó sẽ làm giảm đáng kể thời gian thực hiện thuật toán so với việc thực hiện thuật toán trên toàn tập khóa ban đầu Tiếp theo, ta ghép nối các cây chuẩn tắc của từng tập con theo quy luật các khóa có giá trị tăng dần ta được cây chuẩn tắc trên toàn tập khóa ban đầu Từ đó dùng thuật toán bẻ đôi cây chuẩn tắc ta được cây nhị phân tối ưu trên toàn tập khóa ban đầu Thuật toán phân rã hoàn toàn không làm mất thông tin có ích, Cây nhị phân tối ưu thu được bằng thuật toán phân rã hoàn toàn giống với cây tối ưu thu được khi thực hiện trên toàn tập khóa ban đầu
Một vấn đề nữa đặt ra là: với cấu trúc cây nhị phân n-chiều thì liệu các kết quả trên có còn đúng không? Để trả lời câu hỏi này chúng tôi đã tổng quát hoá
Trang 5bài toán trên cho cấu trúc cây nhị phân n-chiều Tuy nhiên, cho đến nay, em mới chỉ giải quyết xong bài toán với cấu trúc cây nhị phân n-chiều với thông tin chứa
ở lá Điều thú vị là khi thay n = 1 ta thu lại được hoàn toàn 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á
Luận văn gồm các chương sau:
Chương 1: Thuật toán phân rã lớp thông tin có cấu trúc dạng cây nhị phân một
chiều với thông tin chứa ở lá trên tập khóa hữu hạn
- Xây dựng các khái niệm: Cây nhị phân một 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 một chiều, dạng chuẩn của cây nhị phân một chiều, bảng mã của cây nhị phân, cây nhị phân một 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 một chiều
- Các tính chất tương đương giữa các cây nhị phân một chiều, của dạng chuẩn tắc, của cây tối ưu 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, biến đổi tương đương giữa các cây nhị phân
- Thuật toán chuyển về cây nhị phân một chiều chuẩn tắc, thuật toán nối các cây nhị phân một chiều chuẩn tắc, phân hoạch tập khóa ban đầu K thành n tập khóa con
- Thuật toán chuyển về cây nhị phân một chiều tối ưu
- Thuật toán phân rã xây dựng cây nhị phân một chiều tối ưu
- Các ví dụ minh hoạ
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
- Xây dựng các khái niệm 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, 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
Trang 6Trang 3
- Các tính chất tương đương giữa các cây nhị phân n-chiều, của dạng chuẩn tắc, của cây tối ưu 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 nhị phân n-chiều chuẩn tắc tắc, phân hoạch tập khóa ban đầu K(n) thành in tập con Kl(n), K2(n), , Kn(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 hoạ
Kết luận: Tóm tắt lại những kết quả thu được của luận văn này
Tài liệu tham khảo
Phụ lục: Cài đặt chương trình mô phỏng thuật toán xây dựng cây nhị phân một
chiều tối ưu cho lớp các thông tin có cấu trúc dạng cây nhị phân một chiều với thông tin chứa ở lá
Trang 7Chương l:
THUẬT TOÁN PHÂN RÃ LỚP THÔNG TIN CÓ CẤU TRÚC DẠNG CÂY NHỊ PHÂN MỘT 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 một 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 một chiều, dạng chuẩn của cây nhị phân một chiều, bảng mã của cây nhị phân, cây nhị phân một 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 một chiều
- Các tính chất tương đương giữa các cây nhị phân một chiều, 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, biến đổi tương đương giữa các cây nhị phân
- Thuật toán chuyển về cây nhị phân một chiều chuẩn tắc trên tập khóa hữu hạn,
- Thuật toán nối các cây nhị phân một chiều chuẩn tắc, phân hoạch tập khóa ban đầu K thành n tập con K1, K2, Kn
- Thuật toán chuyển về cây nhị phân một chiều tối ưu
- Thuật toán phân rã xây dựng cây nhị phân một chiều tối ưu
- Các ví dụ minh họa các thuật toán
1 Định nghĩa cây nhị phân một 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 là một thông tin, D được gọi là tập các thông tin Tập K là tập hữu hạn các phần tử mà trên đó thỏa mãn quan hệ so sánh (tức là với mọi x, y K ta có : x >
y hoặc x y) Không mất tính tổng quát ta xem K là tập các số tự nhiên K được gọi là tập khóa của các cây nhị phân
Ta kí hiệu là cây rỗng và ta đặt D+ = D { }
Giả sử các kí hiệu [ ] < > , D+ K
Trang 8Trang 5
Định nghĩa l.1 (Định nghĩa đệ qui cây nhị phân một 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 T1, T2 là hai cây và k K, thì dãy kí hiệu k <T1,T2> cũng là một cây Dạng đồ thị của cây d <T1,T2> như sau:
k
T1 T2
Tập tất cả các cây định nghĩa như trên ta kí hiệu qua TREE và gọi là tập các cây nhị phân một chiều với thông tin chứa ở lá trên tập khóa K (gọi tắt là cây nhị phân).K là tập khoá của TREE Mỗi đỉnh có khoá k được gọi là đỉnh trong của cây Thông tin được chứa ở đỉnh ngoài ( tức là đỉnh không chứa khoá) còn
Định nghĩa 1.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 Giả sử T là một cây nhị phân và l K Ta định nghĩa hàm kết quả f từ tập TREE K vào D theo định nghĩa đệ quy của T như sau:
a Nếu cây nhị phân T d D thì f(T,l) = f(d,1) = d với mọi l K
b Nếu cây nhị phân T k<T1,T2> thì :
f(T1,l) nếu 1 k f(T,1) = f(k<T1,T2>,l) =
f(T2) nếu 1 > k
Định nghĩa 1.3 (Định nghĩa sự tương đương giữa hai cây nhị phân)
Giả sử T1 , T2 TREE Ta nói T1 là tương đương với T2 trên K( Kí hiệu T1 (K) T2 ) khi và chỉ khi: f(T1, l) = f(T2, l) với mọi 1 K
Từ định nghĩa trên ta thấy rằng: T1 không tương đương với T2 trên K (Ký hiệuT1 (K) T2) khi và chỉ khi tồn tại một khóa l0 K sao cho f(T1, l0) f(T2, l0)
Trang 92 Hệ tiên dề và các quy tắc dẫn xuất trên TREE
2.1 Quy tắc dẫn xuất của TREE
Trước hết ta đưa vào khái niệm phương trình cây:
Giả sử T1, T2 TREE và "=" là một kí hiệu không thuộc tập K D+ {
[,],<,>} Khi đó dãy kí hiệu Tl = T2 gọi là một phương trình cây
Đặt EQU : {T1 = T2 | T1,T2 TREE} EQU được gọi là tập tất cả những phương trình cây trên TREE Giả sử X EQU và Tl= T2 EQU
Định nghĩa 1.4 (Định nghĩa dẫn được)
Phương trình cây T1 = T2 là dẫn được từ X( kí hiệu X ├ T1 = T2) khi và chỉ khi
T1= T2 X hoặc T1 = T2 dẫn được từ các phần tử trong X bằng cách áp dụng một số hữu hạn lần các qui tắc dẫn xuất sau :
Quy tắc 4 (R4): Nếu X ├ T1= T1' thì X ├ k <T1, T2> = k < T1', T2>
Quy tắc 5 (R5): Nếu X ├ T2=T2' thì X ├ k <T1,T2> = k < T1, T2'>
Do Ki hữu hạn nên trong Ki tồn tại phần tử bé nhất và phần tử lớn nhất mà ta kí hiệu tương ứng là kimin , kimax
Hệ tiên đề của TREE trên tập khóa hữu hạn Ki là tập các phương trình cây sau:
Tiên đề ax i1: k<k' <T1,T2>, T3> = k <T1, T3> là một tiên đề nếu
kimin k < k’ kimax
Dạng đồ thị: k = k
k’ T3 T1 T3
T1 T2
Trang 11Tiên đề ax i7 (tiên đề min) k <T1, T2> = T2 là một tiên đề nếu k < kimin
Một cách tổng quát, trong cây Tl ta có thể thay cây con T0 bởi cây T00 , Khi
đó, ta sẽ được cây T2 (ký hiệu T1T0T00T2) Như vậy, ký hiệu T1T0T00T2 có nghĩa
là T2 nhận được từ Tl bằng cách thay cây con T0 của Tl bởi T00
Giả sử X EQU ta có bổ đề sau:
Trường hợp 2: Nếu Tl k < Tll, T12> , Khi đó ta có các trường hợp sau:
Nếu Tl T2 thì bổ đề hiển nhiên đúng
Nếu Tl T0 và T00 T2 Theo giả thiết ta có X ├ T0 = T00 X ├ T1 = T2Nếu Tl T2 , Tl T0 và T00 T2 giả sử ta đã có T21 , T22 thoả mãn
Trang 12vậy ta có f(Tl, l ) = f(T2 ,1 ) với mọi l K thỏa mãn l > k'
Vậy ta có f(Tl, l ) = f(T2, l ) Với mọi l K nếu Tl T2 là axl
Trang 13vậy ta có f(Tl , l) = f(T2, l) với mọi l K thỏa mãn l > k
Vậy ta có f(Tl , l) = f(T2 , l) với mọi l K nếu T1 = T2 là ax2
vậy ta có f(Tl, l) = f(T2 , l) với mọi l K thỏa mãn l > k
Vậy ta có f(Tl , l) = f(T2 , l) Với mọi l K nếu Tl = T2 là ax3
+ Nếu Tl = T2 là ax4 , khi đó ta có:T1 k <Tll , T12> và T2 Tll với k > kmax
Với mọi l K ta có: f(Tl, l) = f(Tll, l) = f(T2 ,l) (Vì l kmax < k) Vậy ta có f(Tl, l) = f(T2 , l) với mọi l K nếu Tl = T2 là ax4
+ Nếu Tl = T2 là ax5 khi đó ta có:Tl k <Tll,T12> và T2 T12 với k < kminVới mọi l K ta có: f(Tl, l) = f(T12 , l ) = f(T2 , l) (vì k < kmin l)
Vậy ta có f(Tl, l) = f(T2 , l) với mọi l K nếu Tl = T2 là ax5
Trang 153 Cây chuẩn tắc một chiều trên tập khóa K
Định nghĩa 1.5 (Định nghĩa cây chuẩn tắc )
Cây N TREE gọi là cây chuẩn tắc nếu N là một trong hai dạng sau :
Định lý l.2 (tính duy nhất của dạng cây chuẩn tắc)
Giả sử N1, N2 là 2 cây một chiều chuẩn tắc khi đó ta có: N1 N2 N1 N2 Chứng minh:
Trang 16Trang 13
f(N1,l) = f(d1,l) = d1
f(N2,l) = f(e1,l) = e1 Vậy N1 N2 thì N1 N2
Trang 18et et+1 Với ki K , i=1 t , l1< l2 < <lt
Trang 19Theo định lý 1.1 ta có: nếu AX ├ T1 = T2 thì T1 (K)T2 nên câu b) dễ dàng suy
ra từ a) Vậy ta chỉ cần chứng minh câu a) là đủ
Với mọi cây T TREE ta sẽ chỉ ra rằng: ta luôn chọn được duy nhất cây một chiều chuẩn tắc (cây lệch phải) N sao cho: AX ├ T = N sau khi đã áp dụng
một số lần các tiên đề trong AX hoặc các qui tắc dẫn xuất Ta chứng minh định lý 1.3 bằng qui nạp theo chiều dài dẫn xuất của cây Ta xét các trường hợp sau:
1 Nếu T d D Ta chọn ngay N d và ta có ngay AX ├ T = N (theo qui tắc R1)
2 Nếu T = k <T1, T2> ở đây Ti (i=1,2) đã tồn tại cây lệch phải là Ri (i=1,2) Ta
Trang 20d k1
d1
kn
Trang 21dn dn+1
Rõ ràng N là cây lệch phải thoả mãn AX ├ T = N
2.2.2 Nếu k1 < k2 < < kt k < kt+1 < < kn thì áp dụng tiên đề AX3 và qui tắc R3 (t lần) ta có:
AX ├ T = k
dt+1
kn
dn dn+1
N là cây lệch phải và AX ├ T = N 2.2.3 Nếu k kn áp dụng AX3 và N2 (n lần ) ta có:
Trang 22Trang 19
AX ├ T = k
với k1<k2< <kn và di di+1 (i=1 n)
Tương tự như trường hợp 2 2
2.4 Nếu N1 k1<d1,k2<d2, ,kn<dn,dn+1> >>
với k1<k2< <kn và di di+1 (i=1 n)
N2 l1<e1,l2<e2, ,ls<es,es+1> >>
với l1<l2< <ls và ei ei+1 (i=1 s)
Trang 24Trang 21
es es+1Tương tự như trường hợp 2.2 đưa T’ về dạng lệch phải N’ ta có:
AX ├ T = k1
d1 k2
d2
kn
Trang 25Như vậy ta đã chứng minh được rằng: với mọi cây T TREE luôn chọn được cây
1 chiều chuẩn tắc N sao cho AX ├ T = N.Ta sẽ chứng minh tính duy nhất của N Thật vậy: Giả sử tồn tại N’ N sao cho N’ là dạng chuẩn tắc và AX ├ T = N’
áp dụng các qui tắc R2 , R3 ta có: AX ├ N = N’ Theo định lý 1.1 ta có: N N’
Theo định lý 1.2 ta có N N’ (vô lý vì N’ N) Vậy N là duy nhất
Định lý 1.3 đã được chứng minh
Định lý 1.4 chỉ ra cách kiểm tra tính tương đương của 2 cây nhị phân)
Giả sử N1 , N2 lần lượt là dạng chuẩn của T1 , T2 TREE Điều kiện cần
và đủ để T1 T2 là N1 N2
Chứng minh:
Điều kiện cần: Vì N1, N2 lần lượt là dạng chuẩn của T1, T2 nên T1 N1, T2 N2 Suy ra: N1 N2 Áp dụng định lý 1.2 ta có N1 N2
Điều kiện đủ: Vì N1 N2 mặt khác T1 N1, T2 N2 nên T1 T2
Vậy định lý 1.4 được chứng minh
Định lý 1.4 cho ta cách thức để kiểm tra 2 cây nhị phân một chiều có tương đương với nhau không Thuật toán kiểm tra tính tương đương của 2 cây T1, T2 TREE như sau:
Bước 1 : Lần lượt áp dụng thuật toán 1.1 cho T1 ,T2
Điều kiện cần: Theo định lý 1.3 ta có:
Tồn tại duy nhất dạng chuẩn tắc N1 sao cho AX ├ T1 = N1
Trang 26Vậy định lý 1.5 được chứng minh
Ký hiệu (T) là số các đỉnh của cây T TREE Ta có định lý sau:
Định lý l.6:
Nếu T TREE có dạng chuẩn là N thì (N) < (T) Điều này có nghĩa là: trong tất cả các cây tương đương với T thì cây chuẩn tắc là cây có số đỉnh ít nhất
Chứng minh:
Theo định lý 1.3 thì luôn tồn tại duy nhất dạng chuẩn tắc N của cây T bằng cách
áp dụng một số hữu hạn lần các qui tắc dẫn xuất hoặc hệ tiên đề Mà các quy tắc dẫn xuất hay hệ tiên đề chỉ làm giảm hoặc giữ nguyên số đỉnh của cây
Vậy định lý hiển nhiên đúng
1.4 Bả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
Trang 271.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 28Trang 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
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
Trang 29ks
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
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:
Input: Cây T TREE và tập khóa hữu hạn K
Trang 30Trang 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
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
+ 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:
Quay lại bước 2
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
tắc N (K)T
Trang 31Input: 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
+ 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
Thuật toán 1.3 (Thuật toán phân hoạch tập khóa hữu hạn K)
Trang 32Input: 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)
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
Input : T TREE , tập khóa hữu hạn K
Trang 33d c
3
a h
h
i
Output : Cây tối ưu R (K)T
Kn
tập khóa hữu hạn Ki (i= 1 , , 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 K i (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ó
Trang 36Quay 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
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
Bước 3: N1 Nối N1 vào N ta được N = N1 i = 2 quay lên bước 2
Trang 37Bướ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
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:
N
Trang 38h(N) = 5 Ta có: [5/2] + 1 = 3 Bẻ cây N tại đỉnh 6 ta được:
1.7.4 Ví dụ mô phỏng thuật toán phân rã xây dựng cây tối ƣu
Trang 40Trang 37