Bảng chân lý của quan hệ

Một phần của tài liệu Phụ thuộc logic trong cơ sở dữ liệu (Trang 33)

Với hai bộ uv tùy ý trong quan hệ R ta định nghĩa (u,v) là phép gán trị:

(u,v) = (u.A1= v.A1, u.A2= v.A2,..., u.An= v.An)

Nói cách khác, nếu u = (u1, u2, u3 … n,)v = (v1, v2, v3 … n) thì ta đặt:

t = (u,v) = (t1,t2,...,tn)

trong đó ti = 1 nếu ui = viti = 0 nếu uivi, 1 i n

Với mỗi quan hệ R REL(U) ta gọi bảng chân lý của quan hệ R là tập :

TR = {u,v)u,v R}

T h í d ụ 2 . 4

Nhận xét:

- Mỗi dòng t của TR chính là một phần tử trong không gian Bn

- Nếu R  thì TR = - Nếu R  thì e TRvì (u,u) = e nên eTR R Bộ A B C t1 1 a 2 t2 2 b 2 t3 1 a 3 TR A B C t1&t1 1 1 1 t1&t2 0 0 1 t1&t3 1 1 0 t2&t3 0 0 0 Hình 2.5 Bảng chân lý TR Hình 2.4 Quan hệ R(A,B,C)

2.2.3 Phụ thuộc Boole dƣơng Định nghĩa 2.6

Mỗi công thức Boole dương trong PU) được gọi là một hụ h ộ B e g PTBD). Dễ thấy phụ thuộc hàm là một PTBD.

Ta nói quan hệ R thỏa tập PTBD F và ký hiệu RF) nếu TRTF.

Cho tập PTBD F và một PTBD f. Ta nói F dẫn ra được f theo quan hệ, và ký hiệu F f nếu R RELU): RF) Rf).

Cho tập PTBD F và một PTBD f. Ta nói F dẫn ra được f theo quan hệ có không quá hai bộ, ký hiệu F ├2 f nếu RREL_2U): RF) Rf).

2.2.4 Một số tính chất của công thức Boole dƣơng

Mệnh đề 2.1

Tích các công thức Boole dương (CTBD) là một CTBD. Tổng các CTBD là một CTBD.

Chứng minh

Gọi f và g là hai CTBD và e là phép gán trị đơn vị thì f(e) = g(e) = 1, do đó f(e)g(e) = 1.1 = 1 và f(e) + g(e) = 1+1 = 1.

Định nghĩa 2.7

Mỗi tập CTBD F = {f1,…,fk} được hiểu là một CTBD duy nhất có dạng tích như sau: F = f1…fk.

Định nghĩa 2.8

Tập CTBD F suy dẫn ra được tập CTBD G nếu F => G với mọi g trong G. Tập CTBD F và G tương đương, F  G nếu F => G và G => F. Nếu G  F thì G là phủ của F.

Mệnh đề 2.2

Tập CTBD được chuẩn hóa CNF nếu mọi công thức thành phần của nó đều có dạng CNF.

Thí dụ 2.5

Mệnh đề 2.3

Mọi tập CTBD đều có thể được chuẩn hóa CNF.

Thí dụ 2.6

Cho g = (a+b)(c’+a) là một CTB CNF. Hãy đưa g’ về dạng CNF? Ta có g’ = [(a+b)(c’+a)]’ = (a+b)’ + (c’+a)’ = a’b’ + ca’ =

(a’+c)(a’+a’)(b’+c)(b’+a’) = (a’+c)(b’+c)(b’+a’)a’.

Thí dụ 2.7

Cho g = (a’+b)(a+c’+d)e là một CTB CNF. Hãy đưa g’ về dạng CNF? g’ = (a+a’+e’)(a+c+e’)(a+d’+e’)(b’+a’+e’)(b’+c+e’)(b’+d’+e’).

Định nghĩa 2.9

- Tập CTBD F dược gọi là không dư nếu với mọi f thuộc về tập F ta có F\{f} không tương đương với F.

- Tập CTBD G dược gọi là một phủ không dư của tập CTBD nếu G là một phủ của F và G là tập không dư.

Quy trình tìm phủ không dƣ

1. CNF: Chuyển các công thức f trong F sang dạng CNF. Nếu f là công thức hằng đúng thì loại.

Trùng lặp thì lược bớt.

2. Với mỗi CNF f trong F xây dựng một CNF cho f’. 3. Duyệt

Với mỗi f trong F:

Nếu Ff’ = 0 thì F = F \ {f}; return F;

Thí dụ 2.8

Tìm phủ không dư của F = {a’, a+b, b} // chú ý: a’ không phải là CTBD F CNF F CNF f’ Xét Loại?

1 a’ a’ a 1

2 a+b a+b a’b’ 2 Loại

3 b B b’ 3

Thí dụ 2.9

Tìm phủ không dư của F = {a=>b, c=>b, ac=>b}

F CNF F CNF f’ Xét Loại? 1 a=>b a’+b ab’ 1

2 c=>b c’+b cb’ 2

3 ac=>b a’+c’+b acb’ 3 Loại Kết quả: G = { a’+b, c’+b}

Thí dụ 2.10

Tìm phủ không dư của F = {a=>b, b=>c, a=>c, ad=>d, a’+b, abd=>d}. Chuẩn hóa CNF: F = {a’+b, b’+c, a’+c}

Loại ad => d và abd => d vì là các hằng đúng (tautology) Đưa các phủ định của F về CNF: F* = {ab’, bc’, ac’}

F CNF f’ Xét Loại? 1 a’+b ab’ 1

2 b’+c bc’ 2

3 a’+c ac’ 3 Loại Kết quả: G = {a’+b, b’+c}

2.2.5 Định lý tƣơng đƣơng

Cho tập PTBD F và một PTBD f. Ba mệnh đề sau là tương đương: i) Ff gi )

ii) F f he hệ)

iii) F 2 f he hệ ó h g 2 ộ)

Đối với PTH ta đã định nghĩa quan hệ R thỏa PTH f: X Y, và ký hiệu là

R(f) nếu:

Khi coi PTH như là một trường hợp riêng của CTBD ta chấp nhận định nghĩa quan hệ R thỏa PTH f: X Y nếu TRTf.

Định lý 2.1 sau đây xác định tính tương đương của hai định nghĩa trên.

Định lý 2.1

Cho quan hệ R trên tập thuộc tính U và một PTH f: X Y trên U. Khi đó

R(f) khi và chỉ khi TR Tf.

Hệ quả 2.1

Cho quan hệ R trên tập thuộc tính U và tập PTH F trên U. Khi đó R(F) khi và chỉ khi TR TF.

2.3 Bài to n suy dẫn cho lớp phụ thuộc Boole dƣơng

Với hầu hết các loại phụ thuộc dữ liệu, bài toán suy dẫn hay còn gọi là bài toán thành viên đều được đề cập đến với nhiều khía cạnh khác nhau. Bài toán thành viên là bài toán quyết định xem với một tập F hữu hạn các phụ thuộc và f là một phụ thuộc nào đó, hãy cho biết tập F có suy dẫn hay dẫn ra được f theo quan hệ hay không.

Vận dụng bài toán thành viên ta có thể xác định được một tập phụ thuộc dữ liệu đã cho có dư thừa không hay có thể kiểm tra xem hai tập phụ thuộc dữ liệu có tương đương với nhau hay không. Thuật toán giải quyết bài toán thành viên có ý nghĩa quan trọng trong việc thiết kế cơ sở dữ liệu. Nhiều nhà nghiên cứu xem đây như là một trong những mục đích cơ bản của việc nghiên cứu các phụ thuộc dữ liệu.

Bài toán suy dẫn cho phụ thuộc Boole dương được phát biểu như sau:

Ch L QH = U F ) F BD ộ BD f. X ị h f F+ (hay F f) hay h g g ó F+ ó g BD F?

Định nghĩa 2.7

Cho tập PTBD F trên U. Xét LĐQH a = (U, F). Bao đóng của tập PTBD F, ký hiệu F+ là tập PTBD được suy dẫn từ F, cụ thể là:

F+ = { g P(U) | Fg } = { g P(U) | TFTg } trong đó P(U) là tập các công thức Boole dương trên U.

Trong phần này sẽ đề cập một số cách giải quyết bài toán suy dẫn trong trường hợp F là tập PTBD và f là một trong các PTBD ứng với các công thức suy dẫn, suy dẫn mạnh, suy dẫn yếu, suy dẫn đối ngẫu,… thuật toán giải bài toán suy dẫn trong trường hợp tổng quát cũng được đề xuất và chứng minh. Các kết quả này đã được trình bày trong [11], [6].

Trong logic ta đã biết F ╞ (gh) khi và chỉ khi với mọi t TF ta có hoặc là

gt) = 0 hoặc là ht) = 1.

F ╞(gh) t TF: gt) = 0 ht) =1 Hoặc một phát biểu tương đương khác,

F ╞(gh)t TF: gt) = 1 ht) = 1

Ngoài ra ta có, với mọi tập biến X U và với mọi phép gán trị v Bn: Xv) = 1 A X: v.A = 1

Xv) = 1  A X: v.A = 1 hoặc các mệnh đề đối ngẫu là

Xv) = 0  A X: v.A = 0 Xv) = 0  A X: v.A = 0 Vận dụng các nhận xét trên ta có,

Định lý 2.2

Cho tập PTBD F trên U và các tập X, Y, Z U. Khi đó:

1.XY F+ vTF:  A X: v.A = 0) B Y: v.B=1)) 2.XY F+ v TF: A X: v.A = 0)B Y: v.B=1)) 3.XY F+ v TF:A X: v.A = 0)B Y: v.B=1))

4.XY F+ v TF:A X: v.A = 0)B Y: v.B=1)) 5.XY)Z) F+ 

vTF: AX:v.A=0)BY: v.B=1)CZ: v.C=1))

Định nghĩa 2.8

Cho U = {A1,A2,...,An} và tập trị logic B = {0,1}. Với mỗi phép gán trị vBn ta ký hiệu Setv)= {A U | v.A=1} và với mỗi bảng TB n ta ký hiệu

SetT) = {Setv) | vT}.

Ngoài ra ta định nghĩa ánh xạ Vec: SubSet(U) Bn như sau:

XU: Vec(X) = (v1,v2,...,vn), vi = 1 nếu AiXvi = 0 nếu AiX.

Ta cũng phát triển toán tử Vec cho họ các tập con bất kỳ của U, cụ thể là, P SubSet(U): Vec(P) = {Vec(X) | X P}

Dễ thấy VecSet là hai ánh xạ thuận nghịch với nhau.

Thí dụ 2.5

1. Với bảng T cho trên tập U = ABC như dưới đây ta có:

Set(T) = {BC, AC, B}.

2. Cho U = ABCDP = {AC,ABD,B,}. Ta có:

Vec(P) = {(1,0,1,0), (1,1,0,1), (0,1,0,0), (0,0,0,0)}. Khi đó kết quả trên có thể phát biểu theo ngôn ngữ tập hợp như sau:

Định lý 2.2 Ch BD F ê U X Y Z U Khi ó: 1. X Y F+V SetTF: X V Y V T A B C 0 1 1 1 0 1 0 1 0

2. X Y F+V SetTF: X V Y V 

3. X Y F+V SetTF: X V  Y V

4. X Y F+V SetTF: X V  Y V 

5. XYZF+V SetTF:

X V Y V Z V

2.4 Biểu diễn phụ thuộc boole dƣơng dƣới dạng hội suy dẫn

2.4.1 Công thức suy dẫn

Trong tin học các công thức suy dẫn được sử dụng khá rộng. Chúng đóng vai trò chủ yếu trong các motor suy dẫn của các hệ chuyên gia, trong việc thể hiện các ràng buộc dữ liệu của các cơ sở dữ liệu cũng như trong các thuật toán trích chọn luật từ các kho dữ liệu thuộc lĩnh vực khai thác tri thức.

Phần này sẽ phát biểu và chứng minh điều kiện cần và đủ để biểu diễn phụ thuộc Boole dương dưới dạng hội các công thức suy dẫn.

Ta xét các công thức suy dẫn có dạng X Y, trong đó X Y là các hội logic của hữu hạn biến, hai vế của CTSD, trái và phải đều chứa ít nhất một biến.

Cho f: X Y là một CTSD trên tập biến U, với mỗi phép gán trị v, ta có

f(v)=1khi và chỉ khi(Set(v) X)(Set(v)Y).

Ký hiệu I(U) là tập các CTSD trên tập biến U. Cho F là một tập các CTSD,

F = {f1, f2 … fm}. Quy ước coi F là một hội logic của các CTSD thành phần, cụ thể là F = f1 f2 fmvà gọi F là mộthội suy dẫn (HSD).

Với mỗi CTSD f: X Y, ta biết Y(e) = 1 và X(z) = 0, trong đó e là phép gán trị đơn vị và z là phép gán trị không. Từ đây suy ra f(e) = f(z)=1. Như vậy các CTSD là các công thức Boole dương, tức là I(U) P(U).

Nếu coi X là một hội các biến logic thì với mỗi phép gán trị v, ta có X(v)=1 khi và chỉ khi Set(v)  X.

Định nghĩa 2.9

Cho V là tập các phép gán trị trên U. Với hai phép gán trị u,v V ta xét phép toán nhân, ký hiệu là u & v, như là phép nhân logic trên các thành phần tương ứng của uv. Cụ thể là, nếu:

u = (u1,u2,...,un) và v = (v1,v2,...,vn) thì u & v = (u1v1, u2v2,...,unvn)

Thí dụ 2.6

Với u = (1,1,0,1 ) và v = (1,0,0,1) , ta có u & v = (1,0,0,1).

Quy ước tích của một tập rỗng các phần tử trong V chính là phép gán trị đơn vị

e = (1,...1).

Định nghĩa 2.10

Tập các phép gán trị V được gọi là ó g i i hé h & nếu V chứa tích của mọi cặp phần tử trong V, tức là u,v V: u & v V.

Dễ thấy, Set(u & v) = Set(u)  Set(v).

2.4.2 Bài to n biểu diễn phụ thuộc Boole dƣơng dƣới dạng hội suy dẫn

Ta đã biết, mọi công thức logic đều có thể biểu diễn dưới dạng chuẩn tuyển (hội). Nói cách khác, mỗi bảng T Bnđều ứng với một công thức logic dạng chuẩn tuyển (hội). Vấn đề biểu diễn một công thức logic qua một tập các phép toán và hằng logic cho trước chưa có lời giải tổng quát. Bài toán biểu diễn tập các phụ thuộc Boole dương dưới dạng hội các công thức suy dẫn được phát biểu như sau:

Bài toán 2.1

Xác định điều kiện cần và đủ để có thể biểu diễn một phụ thuộc Boole dương dưới dạng hội suy dẫn?

Các phần trình bày dưới đây liên quan đến bài toán 3.2.1.

Định lý 2.3

Với mỗi CTSD f I(U), Tf chứa các phép gán trị đơn vị e, không z và đóng với phép nhân & [4].

Chứng minh

Cho CTSD f: XY. Dễ thấy f(e) = f(z) = 1, do đó e, z Tf . Giả sử u,v Tf . Đặt t = u & v, ta cần chứng minh t Tf . Giả sử Set(t)  X.

Set(t) = Set(u & v) = Set(u)  Set(v) nên Set(u)  X Set(v)  X. Vì f(u)

= f(v) = 1 nên ta phải có Set(u)  YSet(v)  Y và do đó Set(t) = Set(u)  Set(v)  Y. Vậy f(t) = 1, và do đó t Tf .

Với mỗi HSD F trong I(U), vì bảng chân lý TF của F là giao của các bảng chân lý của các công thức thành viên nên ta có các hệ quả 3.2.1 sau đây.

Hệ quả 2.2

Với mỗi HSD F trong I(U), TF chứa các phép gán trị đơn vị e, không z và đóng với phép nhân &.

Mặt khác, vì Set(e) = USet(z) =  ta thu được hệ quả sau.

Bài toán 2.2

Cho bảng 0/1 T trên tập biến U, T chứa các phép gán trị đơn vị e, không z và đóng với phép &. Hãy xây dựng HSD F trên U nhận T làm bảng chân lý.

Thuật toán DF dưới đây giải bài toán 2.5.2 nêu trên.

Algorithm DF Input: - B g Bn hứ e z ó g i hé & Output: - Hội F ê U h h hấ F = T. Method F := ; for each u in Bn\T do X := Set(u); X v Set T v X v Set Y    ) ( \ ) ( : F := F {XY};

endfor; return F; end DF.

Thuật toán trên được minh họa qua thí dụ sau.

Thí dụ 2.7

Thiết lập HSD cho bảng T trên tập 4 biến Boole U = ABCD sau đây:

T là bảng chân lý cho HSD cần tìm F nên F phải thoả hai điều kiện sau đây:

(i) t T: F(t) = 1 ,

(ii) t Bn\ T: F(t) = 0

Để tiện theo dõi ta bổ sung cho các bảng thêm hai cột: cột Set(v) chứa giá trị của hàm Set ứng với mỗi dòng v và cột N(v) chứa giá trị của số tự nhiên tương ứng với biểu diễn nhị phân của mỗi dòng v. Ý nghĩa của cột N(v) sẽ được giải thích sau.

Với dòng thứ nhất, u = (1,1,0,0) trong Bn\T ta có X = Set(u) = AB, do đó

Y = (ABD ABCD)\AB = D. Ta thu được F={AB D}.

Với dòng thứ hai, u = (1,1,1,0) trong Bn\T ta có X = Set(u) = ABC, do đó

Y = ABCD\ABC =D. Ta thu được F = {AB D, ABC D}.

Với dòng thứ ba, u = (1,0,0,1) trong Bn\T ta có X = Set(u) = AD, do đó

T A B C D Set(v) N(v) 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 A B C AC BC D BD ABD ABCD 0 8 4 2 10 6 1 5 13 15 Bn\T A B C D Set(v) N(v) 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 AB ABC AD CD ACD BCD 12 14 9 3 11 7

Y = (ABD ABCD)\AD = B. Ta thu được F = {AB D, ABC D, AD B}. Với dòng thứ tư, u = (0,0,1,1) trong Bn\T ta có X = Set(u) = CD, do đó

Y = ABCD\CD = AB. Ta thu được F = {AB D, ABC D, AD B, CD AB}. Vớidòng thứ năm, u = (1,0,1,1) trong Bn

\T ta có X = Set(u) = ACD, do đó

Y= ABCD\ACD =B. Ta thu được F = {AB D, ABC D, AD B, CD AB, ACD B}.

Với dòng thứ sáu, u = (0,1,1,1) trong Bn\T ta có X = Set(u) = BCD, do đó

Y = ABCD\BCD = A. Ta thu được đầu ra của thuật toán:

F={AB D, ABC D, AD B, CD AB, ACD B, BCD A}. Từ kết quả của bài toán 2.2, ta suy ra định lý 2.4 sau:

Định lý 2.4

Với bảng T trên U chứa các phép gán trị đơn vị e, không z và đóng với phép

&, thuật toán DF tính đúng tập công thức suy dẫn F nhận T làm bảng chân lý.

Chứng minh

Gọi F là tập công thức suy dẫn thu được qua thuật toán DF. Ta chứng minh tT: F(t)=1và tB\T: F(t)=0. Thật vậy, giả sử tT, f: XY F Set(t) X.

Ta có, theo thuật toán DF phải tồn tại u B\T để X = Set(u) và

X v Set T v X v Set Y    ) ( \ ) (

tTSet(t) X nên Set(t)  Y, do đó f(t) = 1.

Giả sử t Bn\T. Ta chỉ ra rằng trong F tồn tại một công thức f để f(t) = 0. Xét công thức f: XY xây dựng từ t theo thuật toán DF. Ta có X = Set(t) và

X v Set T v X v Set Y    ) ( \ ) (

Từ biểu thức tính Y ta thấy XY không giao nhau. Kết hợp với điều kiện

Nhận xét

Ta biết bảng chân lý của mọi HSD đều chứa hai phép gán trị là phép gán trị đơn vị e và phép gán trị không z. Kết hợp thuật toán DF với định lý 2.5.2 về tính

Một phần của tài liệu Phụ thuộc logic trong cơ sở dữ liệu (Trang 33)

Tải bản đầy đủ (PDF)

(71 trang)