Thuật toán tìm chuỗi suy diễn pdf

5 833 3
Thuật toán tìm chuỗi suy diễn pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

Thuật toán tìm chuỗi suy diễn Trước tiên mời các bạn cùng mình thống nhất vấn đề sau : Nếu ta có : B ⊆ A và B -> C thì A -> A,C Ta có điều trên là vì : B ⊆ A => A -> B (luật phản xạ) mà : B -> C (giả thiết) suy ra : A -> C (luật bắc cầu) suy ra : A -> A,C (luật tăng trưởng) Bài toán tìm chuỗi suy diễn : Cho tập phụ thuộc hàm (PTH) F={f 1 ,f 2 , ,f m }. Tìm chuỗi suy diễn X -> Y nào đó. Để thực hiện thuật toán này ta cần một mảng mà mỗi phần tử của mảng có cấu trúc như sau : {tập thuộc tính 1; tập các phụ thuộc hàm; tập thuộc tính 2} Để đơn giản, đầu tiên các bạn hãy tìm bao đóng của X trên F, ký hiệu là (X) + F . Nếu Y ⊄ (X) + F thì thuật toán kết thúc và thông báo rằng không có chuỗi suy diễn X -> Y Nếu ngược lại các bạn thực hiện như sau : TapTT_dangxet = X {TapTT_dangxet sẽ lưu trữ tập thuộc tính đang xét ở mỗi bước } While Y ⊄ TapTT_dangxet B1 : Tìm các PTH trong F có vế trái chứa trong TapTT_dangxet B2 : TapTT_suyra = TapTT_dangxet ∪ {Tập các thuộc tính có trong vế phải của các PTH tìm được ở bước trên} B3 : Lưu trữ vào mảng như sau {TapTT_dangxet;chỉ số các PTH tìm được ở bước 1 trong F;TapTT_suyra} B4 : Loại bỏ ra khỏi F các PTH tìm được ở bước 1 B5 : TapTT_dangxet = TapTT_suyra End While Xin các bạn ngừng thuật toán ở đây một chút để mình có một vài ghi chú : - Thực chất toàn bộ vòng lặp While ở trên chính là đi tìm bao đóng của X trong F - Tại mỗi bước lặp thì TapTT_suyra chính là bao đóng của TapTT_dangxet ở bước lặp đó, hay rõ hơn đó chính là các thuộc tính có thể suy ra được từ TapTT_dangxet ở mỗi bước lặp. Ta có được điều này chính là nhờ vào vấn đề đã bàn ở đầu (B ⊆ A và B -> C thì A -> A,C) và luật hợp của tiên đề Armstrong (nếu tìm được nhiều hơn 1 PTH ở bước 1). Đến đây thì phần chính của thuật toán xem như đã xong, chúng ta sẽ qua phần trình bày : 1 Duyệt toàn bộ mảng từ phần tử đầu đến phần tử cuối Tại mỗi phần tử ta sẽ trình bày được một PTH là : Tập_thuộc_tính_1 -> Tập_thuộc_tính_2 , kèm theo lời giải thích là ta đã sử dụng những PTH nào trong F (thông qua chỉ số các PTH trong F đã được chuẩn bị trước) kết hợp với lời giải thích B ⊆ A và B -> C thì A -> A,C và luật hợp của Armstrong (nếu số lượng PTH sử dụng > 1) Các bạn để ý rằng tại bước sau thì Tập thuộc tính 1 chính là Tập thuộc tính 2 của bước trước. Nên đến sau bước cuối cùng, ta dựa vào luật bắc cầu và phân rã để đưa ra kết luận X -> Y. Ví dụ cụ thể : Cho tập PTH F={X -> Y (f 1 ); Y -> W (f 2 ); W,Y -> Z (f 3 )} Tìm chuỗi suy diễn X -> Z Chạy tay như sau : Lần lặp 1: {X; f 1 ; XY}, F={Y -> W (f 2 ); W,Y -> Z (f 3 )} Lần lặp 2: {XY; f 2 ; XYW}, F={W,Y -> Z (f 3 )} Lần lặp 3: {XYW; f 3 ; XYWZ}, F=∅ Trình bày : X -> X,Y do X ⊆ X và X -> Y (f 1 ) thì X -> X,Y X,Y -> X,Y,W do Y ⊆ X,Y và Y -> W (f 2 ) thì X,Y -> X,Y,W X,Y,W -> X,Y,W,Z do W,Y ⊆ X,Y,W và W,Y -> Z (f 3 ) thì X,Y,W -> X,Y,W,Z Cuối cùng dựa trên luật bắc cầu, ta có : X -> X,Y,W,Z Dựa trên luật phân rã ta có : X -> Z Một ví dụ khác : Cho tập PTH F={X -> Y (f 1 ); Y -> W (f 2 ); W,Y -> Z (f 3 ); X -> K (f 4 )} Tìm chuỗi suy diễn X -> Z Chạy tay như sau : Lần lặp 1: {X; f 1 f 4 ; XYK}, F={Y -> W (f 2 ); W,Y -> Z (f 3 )} Lần lặp 2: {XYK; f 2 ; XYKW}, F={W,Y -> Z (f 3 )} Lần lặp 3: {XYKW; f 3 ; XYKWZ}, F=∅ Trình bày : X -> X,Y,K do X ⊆ X và X -> Y (f 1 ) thì X -> X,Y do X ⊆ X và X -> K (f 4 ) thì X -> X,K do luật hợp : X -> X,Y,K X,Y,K -> X,Y,K,W do Y ⊆ X,Y,K và Y -> W (f 2 ) thì X,Y,K -> X,Y,K,W 2 X,Y,K,W -> X,Y,K,W,Z do W,Y ⊆ X,Y,K,W và W,Y -> Z (f 3 ) thì X,Y,K,W -> X,Y,K,W,Z Cuối cùng dựa trên luật bắc cầu, ta có : X -> X,Y,K,W,Z Dựa trên luật phân rã ta có : X -> Z Cuối cùng, xin thầy và các bạn góp ý, chỉnh sửa để chúng ta có thể giải quyết bài toán này một cách hoàn thiện. Thuật toán chiếu F+ xuống các lược đồ con Thuật toán này hoàn toàn không bị phụ thuộc vào bất kỳ thuật toán tách một lược đồ quan hệ thành các lược đồ con nào. Cũng như trên trước tiên mình phải cùng với các bạn thống nhất một vấn đề (để chứng minh vấn đề này ta chủ yếu sử dụng các tiên đề Armstrong) Cho R(A 1 ,A 2 , ,A n ), F={f 1 ,f 2 , ,f m } Giả sử bao đóng của A 1 trên F, ký hiệu : (A 1 ) + F = {A i1 , A i2 , ,A ik } Vậy ta có được 2 k -1 phụ thuộc hàm có tính chất sau : - Vế trái là A 1 - Vế phải lần lượt là các tập hợp con các thuộc tính của (A 1 ) + F (trừ tập rỗng) và các phụ thuộc hàm này đều nằm trong F + . Sau khi đã thống nhất vấn đề trên, xin mời các bạn xem qua thuật toán : Cho R(A 1 ,A 2 , ,A n ), F={f 1 ,f 2 , ,f m } Giả sử ta đã tách được R thành h lược đồ con : R 1 (A i1 ,A i2 , ,A ik1 ) R 2 (A j1 ,A j2 , ,A jk2 ) R h( ) Với mỗi lược đồ con, ta lần lượt làm các bước sau : - Ví dụ với R 1 , ta xây dựng 2 k1 – 1 tập con của {A i1 ,A i2 , ,A ik1 } (trừ tập rỗng), giả sử ta được các tập con sau : X 1 ,X 2 , ,X l (l=2 k1 -1) - Lần lượt tính bao đóng của các tập con này trên F, với R 1 ta có (X 1 ) + F , (X 2 ) + F , , (X l ) + F 3 - Với mỗi tập bao đóng tính được, ta cho giao với tập thuộc tính của R 1 (A i1 ,A i2 , ,A ik1 ) để có được các tập : X’ 1 , X’ 2 , , X’ l - Xét các tập : X’ 1 , X’ 2 , , X’ l . Với mỗi X’ i ,i=1, ,l , ta xây dựng được 2 vi – 1 phụ thuộc hàm (với vi là số thuộc tính có trong X’ i ) có tính chất sau : + Vế trái là X i + Vế phải lần lượt là các tập con của X’ i (trừ tập rỗng) - Hội tất cả các phụ thuộc hàm tìm được ở bước trên lại ta sẽ có được hình chiếu của F + trên R 1 Ví dụ cụ thể : (trong slide 21 chương 2 ) Cho R(A,B,S,C) F={AB->S, S->B, S->C} Theo thuật toán tách một lược đồ quan hệ thành các lược đồ con ở 3NF, ta có kết quả : R1(A,B,S) R2(S,B,C) R3(A,B) Ta tìm hình chiếu của F + xuống R1 như sau : Xây dựng 2 3 -1=7 tập con của {A,B,S} ta có : {A},{B},{S},{A,B}, {A,S},{B,S},{A,B,S} Tính (A) + F ={A} (B) + F ={B} (S) + F ={S,B,C} (A,B) + F ={A,B,S,C} (A,S) + F ={A,B,S,C} (B,S) + F ={B,S,C} (A,B,S) + F ={A,B,S,C} Xét : {A} ∩ {A,B,S} = {A} {B} ∩ {A,B,S} = {B} {S,B,C} ∩ {A,B,S} = {B,S} {A,B,S,C} ∩ {A,B,S} = {A,B,S} {A,B,S,C} ∩ {A,B,S} = {A,B,S} {B,S,C} ∩ {A,B,S} = {B,S} {A,B,S,C} ∩ {A,B,S} = {A,B,S} Vậy ta có các phụ thuộc hàm sau : A->A B->B S->B; S->S; S->B,S A,B->A; A,B->B; A,B->S; A,B->A,B; A,B->A,S; A,B->B,S; A,B->A,B,S 4 A,S->A; A,S->B; A,S->S; A,S->A,B; A,S->A,S; A,S->B,S; A,S->A,B,S B,S->B; B,S->S; B,S->B,S A,B,S->A; A,B,S->B; A,B,S->S; A,B,S->A,B; A,B,S->A,S; A,B,S->B,S; A,B,S->A,B,S 29 phụ thuộc hàm trên chính là hình chiếu của F + xuống R 1 . Mong thầy và các bạn góp ý, chỉnh sửa để chúng ta có thể giải quyết bài toán này một cách hoàn thiện. 5 . (giả thiết) suy ra : A -> C (luật bắc cầu) suy ra : A -> A,C (luật tăng trưởng) Bài toán tìm chuỗi suy diễn : Cho tập phụ thuộc hàm (PTH) F={f 1 ,f 2 , ,f m }. Tìm chuỗi suy diễn X ->. chúng ta có thể giải quyết bài toán này một cách hoàn thiện. Thuật toán chiếu F+ xuống các lược đồ con Thuật toán này hoàn toàn không bị phụ thuộc vào bất kỳ thuật toán tách một lược đồ quan. {TapTT_dangxet;chỉ số các PTH tìm được ở bước 1 trong F;TapTT_suyra} B4 : Loại bỏ ra khỏi F các PTH tìm được ở bước 1 B5 : TapTT_dangxet = TapTT_suyra End While Xin các bạn ngừng thuật toán ở đây một chút

Ngày đăng: 08/07/2014, 12:21

Tài liệu cùng người dùng

Tài liệu liên quan