1. Trang chủ
  2. » Công Nghệ Thông Tin

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

5 833 3

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 47,5 KB

Nội dung

Để 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ì

Trang 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 ⊆ 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 :

Trang 2

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

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

Trang 3

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+

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

Trang 4

- 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}

(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

Trang 5

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

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w