intTypePromotion=3

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

Chia sẻ: Van Thuan | Ngày: | Loại File: DOC | Số trang:5

0
240
lượt xem
63
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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={f1,f2,...,fm}. 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...

Chủ đề:
Lưu

Nội dung Text: Thuật toán tìm chuỗi suy diễn

  1. 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={f1,f2,...,fm}. 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 ⊆ 1
  2. 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 : 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 (f1); Y ­> W (f2); W,Y ­> Z (f3)} Tìm chuỗi suy diễn X ­> Z Chạy tay như sau : Lần lặp 1: {X; f1; XY}, F={Y ­> W (f2); W,Y ­> Z (f3)} Lần lặp 2: {XY; f2; XYW}, F={W,Y ­> Z (f3)}  Lần lặp 3: {XYW; f3; XYWZ}, F=∅ Trình bày : X ­> X,Y do X ⊆  X và X ­> Y (f1) thì X ­> X,Y X,Y ­> X,Y,W do Y ⊆  X,Y và Y ­> W (f2) thì X,Y ­> X,Y,W X,Y,W ­> X,Y,W,Z do W,Y ⊆  X,Y,W và W,Y ­> Z (f3) 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 (f1); Y ­> W (f2); W,Y ­> Z (f3); X ­> K (f4)} Tìm chuỗi suy diễn X ­> Z 2
  3. Chạy tay như sau : Lần lặp 1: {X; f1f4; XYK}, F={Y ­> W (f2); W,Y ­> Z (f3)} Lần lặp 2: {XYK; f2; XYKW}, F={W,Y ­> Z (f3)}  Lần lặp 3: {XYKW; f3; XYKWZ}, F=∅ Trình bày : X ­> X,Y,K do X ⊆  X và X ­> Y (f1) thì X ­> X,Y         do X ⊆  X và X ­> K (f4) 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 (f2) thì X,Y,K ­> X,Y,K,W X,Y,K,W ­> X,Y,K,W,Z do W,Y ⊆  X,Y,K,W và W,Y ­> Z (f3) 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(A1,A2,...,An), F={f1,f2,...,fm} Giả sử bao đóng của A1 trên F, ký hiệu : (A1)+F = {Ai1, Ai2,...,Aik}  Vậy ta có được 2k­1 phụ thuộc hàm có tính chất sau : - Vế trái là A1 - Vế phải lần lượt là các tập hợp con các thuộc tính của (A1)+F (trừ tập rỗng) và các phụ thuộc hàm này đều nằm trong F+. 3
  4. 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(A1,A2,...,An), F={f1,f2,...,fm} Giả sử ta đã tách được R thành h lược đồ con :  R1(Ai1,Ai2,...,Aik1) R2(Aj1,Aj2,...,Ajk2) ... Rh(...) Với mỗi lược đồ con, ta lần lượt làm các bước sau : - Ví dụ với R1, ta xây dựng 2k1 – 1 tập con của {Ai1,Ai2,...,Aik1} (trừ tập rỗng),  giả sử ta được các tập con sau : X1,X2,...,Xl (l=2k1­1) - Lần lượt tính bao đóng của các tập con này trên F, với R1 ta có (X1)+F , (X2)+F  ,..., (Xl)+F - Với mỗi tập bao đóng tính được, ta cho giao với tập thuộc tính của R1  (Ai1,Ai2,...,Aik1) để 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 2vi – 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à Xi + 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 R1 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 23­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} 4
  5. (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 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 R1. 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

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản