1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn cơ sở dữ liệu nâng cao NGHIÊN CỨU CƠ SỞ DỮ LIỆU SUY DIỄN VÀ ỨNG DỤNG

58 672 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 405,29 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1 Prolog là ngôn ngữ lập trình LogicProlog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữ lậptrình Logic logos, nghĩa nguyên thủyProlog có nghĩa là Programming in logic..

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT

ĐỀ TÀI : NGHIÊN CỨU CƠ SỞ DỮ LIỆU

SUY DIỄN VÀ ỨNG DỤNG

Giảng viên hướng dẫn : PGS.TS Đỗ PhúcHọc viên thực hiện : Đoàn Vũ Ngọc DuyMSSV : CH1101010

Trang 2

I CHƯƠNG I : MỞ ĐẦU 3

1 MÓC PHÁT TRIỂN CỦA LẬP LUẬN LOGIC 3

2 NHU CẦU VỀ CƠ SỞ DỮ LIỆU SUY DIỄN 5

II CHƯƠNG II : LẬP TRÌNH LOGIC 6

1 GIỚI THIỆU VỀ LẬP TRÌNH LOGIC 6

2 NGÔN NGỮ PROLOG 7

1) Prolog là ngôn ngữ lập trình Logic 7

2) Cú pháp Prolog 8

3 NHỮNG XỬ LÝ LIÊN QUAN ĐẾN LOGIC 13

1) Xây dựng sự kiện 13

2) Xây dựng luật 20

III CHƯƠNG III : CƠ SỞ DỮ LIỆU SUY DIỄN 22

1 GIỚI THIỆU CHUNG 22

2 CƠ SỞ DỮ LIỆU SUY DIỄN 23

1) Mô hình cơ sở dữ liệu suy diễn 24

2) Lý thuyết mô hình đối với cơ sở dữ liệu quan hệ 26

3) Nhìn nhận cơ sở dữ liệu suy diễn 28

4) Các giao tác trên CSDL suy diễn 29

3 CƠ SỞ DỮ LIỆU DỰA TRÊN LOGIC 30

1) Cú pháp 30

2) Ngữ nghĩa 30

3) Cấu trúc cơ bản 31

4) Cấu trúc của câu hỏi 36

5) So sánh DATALOG với đại số quan hệ 39

6) Các hệ CSDL chuyên gia 45

4 MỘT SỐ VẤN ĐỀ KHÁC 46

Trang 3

IV CHƯƠNG VI : CHƯƠNG TRÌNH ỨNG DỤNG 47

1 GIỚI THIỆU SWI PROLOG 47

2 CÀI ĐẶT SWI-PROLOG 47

3 LÀM VIỆC VỚI SWI-PROLOG 49

1) Đặt câu hỏi 49

2) Chạy chương trình demo 50

4 CHẠY DEMO XPCE 52

5 SOẠN THẢO CHƯƠNG TRÌNH 55

6 MỘT SỐ LỆNH SWI-PROLOG THÔNG DỤNG 56

V TÀI LIỆU THAM KHẢO 58

Trang 4

I Chương I : MỞ ĐẦU

Suy diễn Logic, lập luận bằng suy diễn hay suy diễn là lập luận mà trong đó kếtluận được rút ra từ các sự kiện được biết trước theo kiểu: nếu các tiền đề là đúngthì kết luận phải đúng Nghĩa là các sự kiện cho trước đòi hỏi rằng kết luận làđúng

Kiểu lập luận này khác với lập luận loại suy và lập luận quy nạp, trong đó cáctiền đề có thể tiên đoán một xác suất cao của kết luận nhưng không đảm bảo kếtluận là đúng

Suy diễn còn được định nghĩa là kiểu suy luận từ trường hợp tổng quát hơn tớitrường hợp cụ thể hơn, hay là suy luận mà trong đó kết luận có độ xác tính ngangbằng với các tiền đề

1 Móc phát triển của lập luận Logic

Logic hay luận lý học, từ tiếng Hy Lạp cổ điển λόγος (logos), nghĩa nguyên thủylogos), nghĩa nguyên thủy

là từ ngữ, hoặc điều đã được nói, (logos), nghĩa nguyên thủynhưng trong nhiều ngôn ngữ châu Âu đã trởthành có ý nghĩa là suy nghĩ hoặc lập luận hay lý trí) Logic thường được nhắcđến như là một ngành nghiên cứu về tiêu chí đánh giá các luận cứ, mặc dù địnhnghĩa chính xác của logic vẫn là vấn đề còn đang được bàn cãi giữa các triết gia.Tuy nhiên khi môn học được xác định, nhiệm vụ của nhà logic học vẫn như cũ:làm đẩy mạnh tiến bộ của việc phân tích các suy luận có hiệu lực và suy luậnngụy biện để người ta có thể phân biệt được luận cứ nào là hợp lý và luận cứ nào

có chỗ không hợp lý

Theo truyền thống, logic được nghiên cứu như là một nhánh của triết học Kể từgiữa thế kỉ 19 logic đã thường được nghiên cứu trong toán học và luật Gần đâynhất logic được áp dụng vào khoa học máy tính và trí tuệ nhân tạo Là một ngành

Trang 5

khoa học hình thức, logic nghiên cứu và phân loại cấu trúc của các khẳng định vàcác lý lẽ, cả hai đều thông qua việc nghiên cứu các hệ thống hình thức của việcsuy luận và qua sự nghiên cứu lý lẽ trong ngôn ngữ tự nhiên Tầm bao quát củalogic do vậy là rất rộng, đi từ các đề tài cốt lõi như là nghiên cứu các lý lẽ ngụybiện và nghịch lý, đến những phân tích chuyên gia về lập luận, chẳng hạn lậpluận có xác suất đúng và các lý lẽ có liên quan đến quan hệ nhân quả Ngày nay,logic còn được sử dụng phổ biến trong lý thuyết lý luận.

Qua suốt quá trình lịch sử, đã có nhiều sự quan tâm trong việc phân biệt lập luậntốt và lập luận không tốt, và do đó logic đã được nghiên cứu trong một số dạng ítnhiều là quen thuộc đối với chúng ta Logic Aristotle chủ yếu quan tâm đến việcdạy lý luận thế nào cho tốt, và ngày nay vẫn được dạy với mục đích đó, trong khitrong logic toán học và triết học phân tích (logos), nghĩa nguyên thủyanalytical philosophy) người ta nhấnmạnh vào logic như là một đối tượng nghiên cứu riêng, và do vậy logic đượcnghiên cứu ở một mức độ trừu tượng hơn

Các quan tâm về các loại logic khác nhau giải thích rằng logic không phải làđược nghiên cứu trong chân không Trong khi logic thường có vẻ tự cung cấp sựthúc đẩy chính nó, môn học này phát triển tốt nhất khi lý do mà chúng ta quantâm đến logic được đặt ra một cách rõ ràng

Một trong những tác phẩm logic sớm nhất còn tồn tại đến ngày nay là củaAristotle Logic của Aristotle được chấp nhận rộng rãi trong khoa học và toánhọc và vẫn còn được sử dụng rộng rãi ở phương Tây đến đầu thế kỷ 19 Hệ thốnglogic của Aristotle phù hợp cho việc giới thiệu suy diễn giả định, và logic quynạp Ở Châu Âu, trong cuối thời kỳ trung đại, có nhiều nỗ lực nhằm chứng tỏnhững tư tưởng của Aristotle tương thích với niềm tin Cơ Đốc Trong suốt thời

kỳ Trung kỳ Trung cổ, logic trở thành đề tài chính của các nhà triết học, nhữngngười muốn tham gia vào những cuộc tranh luận triết học về phân tích logic học

Trang 6

Logic trong triết học Hồi giáo, đặc biệt là logic của Avicennia, chịu ảnh hưởnglớn từ logic của Aristotle.

Tại Ấn Độ, những đổi mới trong trường phái triết học, gọi là Nyaya, tiếp diễn từthời cổ đại đến đầu thế kỷ 18 với trường phái Navya-Nyaya Đến trước thế kỷ 16,

nó đã phát triển những lý thuyết giống với logic hiện đại

2 Nhu cầu về cơ sở dữ liệu suy diễn

Cơ sở dữ liệu suy diễn có mục tiêu tổ chức dữ liệu, truy cập và cập nhật nhữngkhối lượng lớn dữ liệu một cách thuận lợi, an toàn và hiệu quả Hai thế hệ đầuCSDL suy diễn đã đáp ứng được nhu cầu thu thập và tổ chức các dữ liệu của các

cơ quan, xí nghiệp và tổ chức kinh doanh, các ứng dụng trong suy diễn ngữ nghĩa, logic để có thể giải các bài toán đơn giản hơn

Tuy nhiên, với sự phát triển nhanh chóng của công nghệ truyền thông và sự bànhtrướng mạnh mẽ của mạng Internet, cùng với xu thế toàn cầu hoá trong mọi lĩnhvực, đặc biệt là về thương mại, đã làm nảy sinh nhiều ứng dụng mới trong đóphải quản lý những đối tượng có cấu trúc phức tạp (logos), nghĩa nguyên thủyvăn bản, âm thanh, hình ảnh)

và động (logos), nghĩa nguyên thủycác chương trình, các mô phỏng) Trong những năm 1990 đã xuất hiệnmột thế hệ thứ ba các hệ quản trị cơ sở dữ liệu, các hệ "hướng đối tượng", có khảnăng hỗ trợ các ứng dụng đa phương tiện (logos), nghĩa nguyên thủymultimedia)

Mục đích của đề tài nghiên cứu CSDL suy diễn là nhằm trình bày các khái niệm

và thuật toán cơ sở của CSDL bao gồm : các mô hình dữ liệu và các hệ CSDLtương ứng, các ngôn ngữ CSDL, tổ chức lưu trữ và tìm kiếm, xử lý và tối ưu hoácâu hỏi, quản lý giao dịch và điều khiển tương tranh, thiết kế các CSDL thế hệ 3

Tuy đã cố gắng, nhưng đề tài nghiên cứu này không thể được những sai sót Rấtmong nhận được ý kiến đóng góp của thầy cô để hoàn chỉnh hơn

Trang 7

II Chương II : LẬP TRÌNH LOGIC

1 Giới thiệu về lập trình Logic

Trong lập trình logic, ta có thể sử dụng các vị từ để định nghĩa các khái niệm củatất cả các môn khoa học khác Ví dụ định nghĩa một số nguyên tố: Số nguyên tố

N là một số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó Để xét xem số N

có phải là số nguyên tố hay không, người ta thường sử dụng dấu hiệu nhận biết :

Số nguyên tố là một số nguyên dương, không chia hết cho mọi số nguyên tố nhỏhơn nó và 2 là số nguyên tố nhỏ nhất

Dấu hiệu này có thể mô tả bằng các vị từ như sau:

không chia hết cho M

Khi mô tả bài toán dưới dạng logic vị từ, ta có thể yêu cầu hệ thống tìm kiếm cáclời giải liên quan đến các khai báo đó Bài toán cần giải được xem là “mục tiêu”

mà hệ thống phải chứng minh trên cơ sở các tri thức đã được khai báo Như thế,toàn bộ các ký hiệu của ngôn ngữ lập trình suy về một công thức đặc biệt :

nó như là một “đích” và cố chứng minh “đích” đó bằng cách tạo nhữngsuy diễn trên cơ sở các tri thức đã khai báo

Một ngôn ngữ logic có thể được dùng trong giai đoạn đặc tả yêu cầu của quytrình xây dựng một sản phẩm phần mềm Hơn thế nữa, logic vị từ cho phép biểudiễn hầu hết các khái niệm và các định lý trong các bộ môn khoa học

2 Ngôn ngữ prolog

Trang 8

1) Prolog là ngôn ngữ lập trình Logic

Prolog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữ lậptrình Logic (logos), nghĩa nguyên thủyProlog có nghĩa là Programming in logic) Ngôn ngữ Prolog do giáo

sư người Pháp Alain Colmerauer và nhóm nghiên cứu của ông đề xuất lần đầutiên tại trường Đại học Marseille đầu những năm 1970 Đến năm 1980, Prolognhanh chóng được áp dụng rộng rãi ở châu Âu, được người Nhật chọn làm ngônngữ phát triển dòng máy tính thế hệ 5 Prolog đã được cài đặt trên các máy vitính Apple II, IBM-PC, Macintosh

Prolog còn được gọi là ngôn ngữ lập trình ký hiệu (logos), nghĩa nguyên thủysymbolic programming)tương tự các ngôn ngữ lập trình hàm (logos), nghĩa nguyên thủyfunctional programming), hay lập trình phi

số (logos), nghĩa nguyên thủynon- numerical programming) Prolog rất thích hợp để giải quyết các bài toánliên quan đến các đối tượng (logos), nghĩa nguyên thủyobject) và mối quan hệ (logos), nghĩa nguyên thủyrelation) giữa chúng

Prolog được sử dụng phổ biến trong lĩnh vực trí tuệ nhân tạo Nguyên lý lập trìnhLogic dựa trên các mệnh đề Horn (logos), nghĩa nguyên thủyHorn logíc) Một mệnh đề Horn biễu diễn một

sự kiện hay một sự việc nào đó là đúng hoặc không đúng, xảy ra hoặc không xảy

ra (logos), nghĩa nguyên thủycó hoặc không có, v.v )

Ví dụ sau đây là một số mệnh đề Horn :

Trong các mệnh đề Horn ở trên, các mệnh đề 1, 3, 5 được gọi là các luật (logos), nghĩa nguyên thủyrule),các mệnh đề còn lại được gọi là các sự kiện (logos), nghĩa nguyên thủyfact) Một chương trình Logic có thểđược xem như là một cơ sở dữ liệu gồm các mệnh đề Horn, hoặc dạng luật, hoặc

Trang 9

dạng sự kiện, chẳng hạn như tất cả các sự kiện và luật từ 1 đến 6 ở trên Người sửdụng (logos), nghĩa nguyên thủyNSD) gọi chạy một chương trình Logic bằng cách đặt câu hỏi (logos), nghĩa nguyên thủyquery/question) truy vấn trên cơ sở dữ liệu này, chẳng hạn câu hỏi :

Socrat có chết không ? (logos), nghĩa nguyên thủytương đương khẳng định Socrat chết đúng hay sai ?)

Một hệ thống Logic sẽ thực hiện chương trình theo cách «suy luận» & tìm kiếmdựa trên vốn «hiểu biết» đã có là chương trình cơ sở dữ liệu, để minh chứng câuhỏi là một khẳng định, là đúng (logos), nghĩa nguyên thủyYes) hoặc sai (logos), nghĩa nguyên thủyNo) Với câu hỏi trên, hệ thốngtìm kiếm trong cơ sở dữ liệu khẳng định Socrat chết và «tìm thấy» luật 5 thoảmãn (logos), nghĩa nguyên thủyvế thì) Vận dụng luật 5, hệ thống nhận được Socrat là người (logos), nghĩa nguyên thủyvế nếu) chính

là sự kiện 5 Từ đó, câu trả lời sẽ là :

Yes (logos), nghĩa nguyên thủy có nghĩa sự kiện Socrat chết là đúng )

Các hạng phức hợp biểu diễn các đối tượng phức tạp của bài toán cần giải quyếtthuộc lĩnh vực đang xét Hạng phức hợp là một hàm tử (logos), nghĩa nguyên thủyfunctor) có chứa các đối(logos), nghĩa nguyên thủyargument), có dạng

Trang 10

Tên_hàm_tử (logos), nghĩa nguyên thủyĐối_1, , Đối_n)

Tên hàm tử là một chuỗi chữ cái và/hoặc chũ số được bắt đầu bởi một chữ cáithường Các đối có thể là biến, hạng sơ cấp, hoặc hạng phức hợp Trong Prolog,hàm tử đặc biệt “.” (logos), nghĩa nguyên thủydấu chấm) biểu diễn cấu trúc danh sách (logos), nghĩa nguyên thủylist) Kiểu dữ liệuhàm tử tương tự kiểu bản ghi (logos), nghĩa nguyên thủyrecord) và danh sách (logos), nghĩa nguyên thủylist) tương tự kiểu mảng(logos), nghĩa nguyên thủyarray) trong các ngôn ngữ lập trình mệnh lệnh (logos), nghĩa nguyên thủyC, Pascal )

Ví dụ 2 :

f(logos), nghĩa nguyên thủy5, a, b)

student(logos), nghĩa nguyên thủyrobert, 1975, info, 2,

address(logos), nghĩa nguyên thủy6, 'mal juin', 'Caen'))

(logos), nghĩa nguyên thủyở chế độ tương tác có dấu nhắc lệnh)

b) Các kiểu dữ liệu Prolog

Hình 1.1 biểu diễn một sự phân lớp các kiểu dữ liệu trong Prolog gồm kiểu dữliệu sơ cấp và kiểu dữ liệu có cấu trúc Sự phân lớp này nhận biết kiểu của mộtđối tượng nhờ bề ngoài cú pháp

Trang 11

Cú pháp của Prolog quy định mỗi kiểu đối tượng có một dạng khác nhau Prologkhông cần cung cấp một thông tin nào khác để nhận biết kiểu của một đối tượng.Trong Prolog, NSD không cần khai báo kiểu dữ liệu.

Hình I.1 Các kiểu dữ liệu trong Prolog

Các kiểu dữ liệu Prolog được xây dựng từ các ký tự ASCII :

Trang 12

Trong trường hợp muốn đặt một chú thích ngắn sau mỗi phần khai báo Prologcho đến hết dòng, có thể đặt trước một ký hiệu %.

Prolog sử dụng cả số nguyên và số thực Cú pháp của các số nguyên và số

thực rất đơn giản, chẳng hạn như các ví dụ sau :

Tuỳ theo phiên bản cài đặt, Prolog có thể xử lý các miền số nguyên và miền

số thực khác nhau Ví dụ trong phiên bản Turbo Prolog, miền số nguyên chophép từ -32768 đến 32767, miền số thực cho phép từ ±1e-307 đến ±1e+308 Các

số thực rất khi được sử dụng trong Prolog Lý do chủ yếu ở chỗ Prolog là ngônngữ lập trình ký hiệu, phi số Các số nguyên thường chỉ được sử dụng khi cầnđếm số lượng các phần tử hiện diện trong một danh sách Prolog dạng [a1, a2, ,

an ]

Kiểu hằng Logic

Trang 13

Prolog sử dụng hai hằng Logic có giá trị là true và fail Thông thường các hằngLogic không được dùng như tham số mà được dùng như các mệnh đề Hằng failthường được dùng để tạo sinh lời giải bài toán.

Kiểu hằng chuỗi ký tự

Các hằng là chuỗi (logos), nghĩa nguyên thủystring) các ký tự được đặt giữa hai dấu nháy kép

"" chuỗi rỗng (logos), nghĩa nguyên thủyempty string)

Kiểu hằng nguyên tử

Các hằng nguyên tử Prolog là chuỗi ký tự ở một trong ba dạng như sau :

Chuỗi gồm chữ cái, chữ số và ký tự _ luôn luôn được bắt đầu bằng một chữ cái inthường

Trang 14

Ở đây, vị từ parent có hai đối là tom và bill Người ta có thể biểu diễn vị từ nàybởi một cây như trong Hình 1 (logos), nghĩa nguyên thủyb) : nút gốc là tên của vị từ, còn các nút lá là cácđối.

Trang 15

Hình 1.Cây gia hệ.

Từ cây gia hệ trên đây, có thể tiếp tục viết các vị từ khác để nhận được mộtchương trình Prolog gồm 6 vị từ như sau :

 parent(logos), nghĩa nguyên thủymary,bill)

 parent(logos), nghĩa nguyên thủytom, bill)

 parent(logos), nghĩa nguyên thủytom, liz)

 parent(logos), nghĩa nguyên thủybill, ann)

 parent(logos), nghĩa nguyên thủybill, sue)

 parent(logos), nghĩa nguyên thủysue, jim)

Sau khi hệ thống Prolog nhận được chương trình này, thực chất là một cơ sở dữliệu, người ta có thể đặt ra các câu hỏi liên quan đến quan hệ parent Ví dụ : câuhỏi Bill có phải là cha mẹ của Sue được gõ vào trong hệ thống đối thoại Prolog(logos), nghĩa nguyên thủydấu nhắc ?-_) như sau :

?- parent(logos), nghĩa nguyên thủybill, sue)

Sau khi tìm thấy sự kiện này trong chương trình, Prolog trả lời :

Yes

Trang 16

Ta tiếp tục đặt câu hỏi khác :

?- parent(logos), nghĩa nguyên thủyliz, sue)

No

Bởi vì Prolog không tìm thấy sự kiện Liz là người mẹ của Sue trong chươngtrình Tương tự, Prolog trả lời No cho sự kiện :

?- parent(logos), nghĩa nguyên thủytom, ben)

Vì tên ben chưa được đưa vào trong chương trình Ta có thể tiếp tục đặt ra cáccâu hỏi thú vị khác Chẳng hạn, ai là cha (logos), nghĩa nguyên thủyhay mẹ) của Liz ?

?- parent(logos), nghĩa nguyên thủyX, liz)

Lần này, Prolog không trả lời Yes hoặc No, mà đưa ra một giá trị của X làm thoảmãn câu hỏi trên đây :

X = tom

Để biết được ai là con của Bill, ta chỉ cần viết :

?- parent(logos), nghĩa nguyên thủybill, X)

Với câu hỏi này, Prolog sẽ có hai câu trả lời, đầu tiên là :

X = ann ->;

Để biết được câu trả lời tiếp theo, trong hầu hết các cài đặt của Prolog, NSD phải

gõ vào một dấu chấm phẩy (logos), nghĩa nguyên thủy;) sau -> (logos), nghĩa nguyên thủyArity Prolog) :

X = sue

Nếu đã hết phương án trả lời mà vẫn tiếp tục yêu cầu (logos), nghĩa nguyên thủy;), Prolog trả lời No

NSD có thể đặt các câu hỏi tổng quát hơn, chẳng hạn : ai là cha mẹ của ai ?

Trang 17

Nói cách khác, cần tìm X và Y sao cho X là cha mẹ của Y Ta viết như sau :

?- parent(logos), nghĩa nguyên thủyX, Y)

Sau khi hiển thị câu trả lời đầu tiên, Prolog sẽ lần lượt tìm kiếm những cặp cha

mẹ − con thoả mãn và lần lượt hiển thị kết quả nếu chừng nào NSD còn yêu cầucho đến khi không còn kết quả lời giải nào nữa (logos), nghĩa nguyên thủykết thúc bởi Yes) :

X = sue Y = jim Yes

Tuỳ theo cài đặt Prolog, NSD có thể gõ vào một dấu chấm (logos), nghĩa nguyên thủy.) hoặc Enter để

chấm dứt giữa chừng luồng trả lời

Ta có thể tiếp tục đưa ra những câu hỏi phức tạp hơn khác, chẳng hạn ai là ông(logos), nghĩa nguyên thủybà) của Jim ? Thực tế, quan hệ ông − bà (logos), nghĩa nguyên thủygrandparent) chưa được định nghĩa,cần phải phân tách câu hỏi này thành hai phần sơ cấp hơn :

Trang 18

1 Ai là cha (logos), nghĩa nguyên thủymẹ) của Jim ? Giả sử có tên là Y.

2 Ai là cha (logos), nghĩa nguyên thủymẹ) của Y ? Giả sử có tên là X

Hình 2 Quan hệ ông bà được hợp thành từ hai quan hệ cha mẹ

Lúc này, có thể viết trong Prolog như sau :

?- parent(logos), nghĩa nguyên thủyY, jim), parent(logos), nghĩa nguyên thủyX, Y)

Prolog trả lời :

Y = sue

X = bill Yes

Câu hỏi trên đây tương ứng với câu hỏi : tìm X và Y thoả mãn :

parent(logos), nghĩa nguyên thủyY, jim)

parent(logos), nghĩa nguyên thủyX, Y)

Nếu thay đổi thứ tự hai thành phần câu hỏi, thì nghĩa Logic vẫn không thay đổi

và Prolog trả lời cùng kết quả (logos), nghĩa nguyên thủycó thể thay đổi về thứ tự), nghĩa là ta có thể đặtcâu hỏi như sau :

Trang 19

?- parent(logos), nghĩa nguyên thủyX, Y), parent(logos), nghĩa nguyên thủyY, jim).

X = bill

Y = đường dẫn Yes

Bây giờ ta đặt câu hỏi ai là cháu của Tom ?

?- parent(logos), nghĩa nguyên thủytom, X), parent(logos), nghĩa nguyên thủyX, Y)

Một câu hỏi khác có thể như sau : Ann và Sue có cùng người ông không ?

nghĩa là ta diễn đạt thành hai giai đoạn :

Câu hỏi và trả lời trong Prolog như sau :

?- parent(logos), nghĩa nguyên thủyX, ann), parent(logos), nghĩa nguyên thủyX, sue)

X = bill

Trong Prolog, câu hỏi còn được gọi là đích (logos), nghĩa nguyên thủygoal) cần phải được thoả mãn(logos), nghĩa nguyên thủysatisfy) Mỗi câu hỏi đặt ra đối với cơ sở dữ liệu có thể tương ứng với một hoặcnhiều đích Chẳng hạn dãy các đích :

Trang 20

parent(logos), nghĩa nguyên thủyX, ann), parent(logos), nghĩa nguyên thủyX, sue).

tương ứng với câu hỏi là phép hội (logos), nghĩa nguyên thủyconjunction) của 2 mệnh đề : X là một cha mẹcủa Ann, và

X là một cha mẹ của Sue

Nếu câu trả lời là Yes, thì có nghĩa đích đã được thoả mãn, hay đã thành công.Trong trường hợp ngược lại, câu trả lời là No, có nghĩa đích không được thoảmãn, hay đã thất bại

Nếu có nhiều câu trả lời cho một câu hỏi, Prolog sẽ đưa ra câu trả lời đầu tiên vàchờ yêu cầu của NSD tiếp tục

3) Xây dựng luật

a Định nghĩa luật

Từ chương trình gia hệ trên đây, ta có thể dễ dàng bổ sung các thông tin khác,chẳng hạn bổ sung các sự kiện về giới tính (logos), nghĩa nguyên thủynam, nữ) của những người đã nêu têntrong quan hệ parent như sau :

 woman(logos), nghĩa nguyên thủymary)

 man(logos), nghĩa nguyên thủytom)

 man(logos), nghĩa nguyên thủybill)

 woman(logos), nghĩa nguyên thủyliz)

 woman(logos), nghĩa nguyên thủysue)

 woman(logos), nghĩa nguyên thủyann)

 man(logos), nghĩa nguyên thủyjim)

Ta đã định nghĩa các quan hệ đơn (logos), nghĩa nguyên thủyunary) woman và man vì chúng chỉ liên quanđến một đối tượng duy nhất Còn quan hệ parent là nhị phân, vì liên quan đến

Trang 21

một cặp đối tượng Như vậy, các quan hệ đơn dùng để thiết lập một thuộc tínhcủa một đối tượng Mệnh đề :

woman(logos), nghĩa nguyên thủymary)

được giải thích : Mary là nữ Tuy nhiên, ta cũng có thể sử dụng quan hệ nhị phân

để định nghĩa giới tính : sex(logos), nghĩa nguyên thủymary, female) sex(logos), nghĩa nguyên thủytom, male)

sex(logos), nghĩa nguyên thủybill, male)

Bây giờ ta đưa vào một quan hệ mới child, đối ngược với parent như sau :

child(logos), nghĩa nguyên thủyliz, tom)

Từ đó, ta định nghĩa luật mới như sau : child(logos), nghĩa nguyên thủyY, X) :- parent(logos), nghĩa nguyên thủyX, Y) Luật trênđược hiểu là :

Với mọi X và Y,

Y là con của X nếu

X là cha (logos), nghĩa nguyên thủyhay mẹ) của Y

Hay với mọi X và Y,

nếu X là cha (logos), nghĩa nguyên thủyhay mẹ) của Y thì Y là con của X

Có sự khác nhau cơ bản giữa sự kiện và luật Một sự kiện, chẳng hạn :

parent(logos), nghĩa nguyên thủytom, liz)

là một điều gì đó luôn đúng, không có điều kiện gì ràng buộc Trong khi đó, cácluật liên quan đến các thuộc tính chỉ được thoả mãn nếu một số điều kiện nào đóđược thoả mãn Mỗi luật bao gồm hai phần:

Trang 22

 phần bên phải (logos), nghĩa nguyên thủyRHS: Right Hand Side) chỉ điều kiện, còn được gọi là thân(logos), nghĩa nguyên thủybody) của luật

(logos), nghĩa nguyên thủyhead) của luật

Nếu điều kiện parent(logos), nghĩa nguyên thủyX, Y) là đúng, thì child(logos), nghĩa nguyên thủyY, X) cũng đúng và là hậu quảLogic của phép suy luận (logos), nghĩa nguyên thủyinference)

Câu hỏi sau đây giải thích cách Prolog sử dụng các luật : Liz có phải là con củaTom không ?

?- child(logos), nghĩa nguyên thủyliz, tom)

Thực tế, trong chương trình không có sự kiện nào liên quan đến con, mà ta phảitìm cách áp dụng các luật Luật trên đây ở dạng tổng quát với các đối tượng X và

Y bất kỳ, mà ta lại cần các đối tượng cụ thể liz và tom

Ta cần sử dụng phép thế (logos), nghĩa nguyên thủysubstitution) bằng cách gán giá trị liz cho biến Y vàtom cho X Người ta nói rằng các biến X và Y đã được ràng buộc (logos), nghĩa nguyên thủybound) :

X = tom và

Y = liz

Lúc này, phần điều kiện có giá trị parent(logos), nghĩa nguyên thủytom, liz) và trở thành đích con

(logos), nghĩa nguyên thủysub-goal) để Prolog thay thế cho đích child(logos), nghĩa nguyên thủyliz, tom) Tuy nhiên, đích này thoảmãn và có giá trị Yes vì chính là sự kiện đã thiết lập trong chương trình Sau đây,

Trang 23

ta tiếp tục bổ sung các quan hệ mới Quan hệ mẹ mother được định nghĩa như sau(logos), nghĩa nguyên thủychú ý dấu phẩy chỉ phép hội hay phép và Logic) :

mother(logos), nghĩa nguyên thủyX, Y) :- parent(logos), nghĩa nguyên thủyX, Y), woman(logos), nghĩa nguyên thủyX)

1 Giới thiệu chung

Xuất phát từ quan điểm lý thuyết, các CSDL suy diễn có thể được coi như cácchương trình logic với sự khái quát hoá khái niệm về CSDL quan hệ Đó là cáchtiếp cận của Brodie và Manola vào năm 1989, của Codd vào năm 1970, của Da tevào năm 1986, của Gardarin và Valdurier vào năm 1989 và của Ullman vào năm

1984 Lập trình logic là mảng công việc trước tiên khi chứng minh định lý cơhọc Sự thật thì việc chứng minh định lý đã tạo nên cơ sở cho hầu hết hệ thốnglập trình logic hiện nay Tư tưởng cơ bản của lập trình logic là sử dụng logic toánhọc như ngôn ngữ lập trình Điều này được đề cập trong tài liệu của Kowaskinăm 1970, và được Colmerauer đưa vào thực hành năm 1975 trong các cài đặtngôn ngữ lập trình logic đầu tiên, tức là ngôn ngữ PROLOG(logos), nghĩa nguyên thủy Programming Logic )

Nhờ sự hình thức hoá, Kowalski đã xem xét tập con của các logic bậc một, gọi làlogic mệnh đề Hom Một câu hay một mệnh đề theo logic có thể có nhiều điềukiện đúng nhưng chỉ có một hay không có kết luận đúng Đối với nhu cầu thựchành CSDL suy diễn xử lý các câu không phức tạp như các câu trong hệ thốnglập trình logic Số các luật, tức là số các câu với các điều kiện không trống trongCSDL suy diễn nhỏ hơn số các sự kiện, tức các câu với điều kiện rỗng

Một khía cạnh khác nhau nữa giữa CSDL suy diễn và lập trình logic là các hệthống lập trình logic nhấn mạnh các chức năng, trong khi CSDL suy diễn nhấn

Trang 24

mạnh tính hiệu quả Cơ chế suy diễn dùng trong CSDL suy diễn để tính toán trảlời không được tổng quát như trong lập trình logic.

Ngoài việc dùng logic để diễn tả các câu CSDL, người ta còn dùng logic để diễn

tả những câu hỏi và các điều kiện toàn vẹn.ệu quan hệ do E.F Codd đề xuất vàonăm 1970

2 Cơ sở dữ liệu suy diễn

1) Mô hình cơ sở dữ liệu suy diễn

Mô hình dữ liệu gồm:

vẹn

Ngôn ngữ bậc một được dùng như kí pháp toán học để mô tả dữ liệu trong môhình CSDL suy diễn và dữ liệu được xử lý trong các mô hình như vậy nhờ việcđánh giá công thức logic Tiếp cận của logic bậc một như nền tảng lý thuyết củacác hệ thống CSDL suy diễn

Tuy nhiên để dễ biểu diễn hình thức các khái niệm về CSDL suy diễn, ta thườngdùng phép toán vị từ, tức logic vị từ bậc nhất Logic vị từ bậc nhất là ngôn ngữhình thức dùng để thể hiện quan hệ giữa các đối tượng và để suy diễn ra quan hệmới

Định nghĩa 1: Mỗi một hằng số, một biến số hay một hàm số áp lên các tâm là

một hạng thức (logos), nghĩa nguyên thủyterm)

Hàm n ngôi f(logos), nghĩa nguyên thủyx1 ,x2, …, xn) ; xi | i = 1 ,2,…, n là một hạng thức thì f(logos), nghĩa nguyên thủyx1, x2 ,…,xn) là một term

Trang 25

Định nghĩa 2: Công thức nguyên tố(logos), nghĩa nguyên thủycông thức nhỏ nhân là kết quả của việc ứng

dụng một vị từ trên các tham số của term dưới dạng P(logos), nghĩa nguyên thủyt1, t2,…,tn)

Nếu P là vị từ có n ngôi và ti 1 i=l,2, ,n là một hạng thức(logos), nghĩa nguyên thủyterm)

Định nghĩa 3: (logos), nghĩa nguyên thủyLiteral) Dãy các công thức nguyên tố hay phủ định của công

thức nguyên tố đã được phân tách qua các liên kết logic (logos), nghĩa nguyên thủy ∧,∨, →,

↔, ¬, ∀, ∃) thì công thức đó được thiết lập đúng đắn

(logos), nghĩa nguyên thủyi): Một công thức nguyên tố là công thức thiết lập đúng đắn

(logos), nghĩa nguyên thủyii): F, G là Công thức thiết lập đúng đắn => F ^ G, F v G, F → G, F ↔ G,

F , G cũng là các công thức thiết lập đúng đắn

(logos), nghĩa nguyên thủyiii): Nếu F là Công thức thiết lập đúng đắn, mà x là một biến tự do trong F

=> (logos), nghĩa nguyên thủy ∀ x)F và (logos), nghĩa nguyên thủy ∃ x)F cũng là các công thức thiết lập đúng đắn (logos), nghĩa nguyên thủy ∀ x, ∃ x trong F )

Ví dụ 1 : Cho quan hệ R(logos), nghĩa nguyên thủyA1, A2,…, An) với n bậc (logos), nghĩa nguyên thủy tức n thuộc tính) => là một

vị từ n ngôi Nếu ra (logos), nghĩa nguyên thủyr bộ của R) => (logos), nghĩa nguyên thủyr.Al, r.A2,…., r.An ) => R(logos), nghĩa nguyên thủyA1, A2, , An)nhận giá trị đúng Nếu r∉R (logos), nghĩa nguyên thủyr bộ của R) => gán (logos), nghĩa nguyên thủyr.Al, r.A2, ., lan ) => Rau,A2, , An) nhận giá trị sai

Định nghĩa 4: Câu(logos), nghĩa nguyên thủyclause) Công thức có dạng P1^p2^ ^Pn → Q1^Q2^ ^Qn

Trong đó: Pi và Qj (logos), nghĩa nguyên thủyi, j =1,2, ,n) là các Literal dương

Trong hệ thống logic, Literal dương có dạng nguyên tố, nhỏ nhất, trái với Literal

âm là phủ định của nguyên tố

Định nghĩa 5 : Câu Hom (logos), nghĩa nguyên thủyHom clause) là câu có dạng P1^p2^…^Pn → Q1 Định nghĩa 6 : CSDL suy diễn tổng quát (logos), nghĩa nguyên thủyGeneral deductive database) CSDL

suy diễn tổng quát, hay CSDL tổng quát, hay CSDL suy diễn được xác định như

Trang 26

cặp (logos), nghĩa nguyên thủyD,L), trong đó D là tập hữu hạn của các câu CSDL và L là ngôn ngữ bậcmột Giả sử L có ít nhất hai ký hiệu, một là ký hiệu hằng số và một ký kiệu vị từ.

Một CSDL xác định (logos), nghĩa nguyên thủyhay CSDL chuẩn) là CSDL suy diễn(logos), nghĩa nguyên thủyd,L) mà D chỉ chứacác câu xác định(logos), nghĩa nguyên thủycâu chuẩn)

Một CSDL quan hệ là CSDL suy diễn (logos), nghĩa nguyên thủyD,L) mà D chỉ chứa các sự kiện xác định.Vậy CSDL quan hệ là một dạng đặc biệt của CSDL tổng quát, hay chuẩn, hayxác định Còn một CSDL xác định là dạng đặc biệt của CSDL chuẩn hay tổngquát

4) Lý thuyết mô hình đối với cơ sở dữ liệu quan hệ

Nhìn nhận CSDL theo quan điểm logic:

Một CSDL có thể được nhìn nhận dưới quan điểm của logic như sau:

Theo quan điểm diễn giải, các câu hỏi và các điều kiện toàn vẹn là công thứcdùng để đánh giá việc sử dụng định nghĩa ngữ nghĩa Còn theo quan điểm lýthuyết, các câu hỏi được coi như các định lý có thể chứng minh được hay côngthức hiển nhiên theo lý thuyết này

Hai tiếp cận này được tham chiếu đến như quan điểm lý thuuyết mô hình, hayquan điểm cấu trúc quan hệ, và quan điểm lý thuyết chứng minh Hai quan điểmtrên đã được hình thức hoá thành khái niệm tương ứng của cơ sở dữ liệu thôngthường và CSDL suy diễn

Tư tưởng đằng sau quan điểm lý thuyết chứng minh của CSDL(logos), nghĩa nguyên thủyD,L) là

o Xây dựng một lý thuyết T, gọi là lý thuyết chứng minh của (logos), nghĩa nguyên thủyD,L), bằng cáchdùng các câu D và ngôn ngữ L, và

Trang 27

o Trả lời các câu hỏi trong CSDL.

Nhìn lại CSDL quan hệ

Ở đây ta xét lớp các CSDL quan hệ, tức là các sự kiện làm nền dựa trên nền củacác sự kiện, với các ngôn ngữ không chứa bất kỳ kí hiệu hàm nào Các giả thiếtđược đặt ra trên lớp của các CSDL quan hệ để đánh giá các câu hỏi

Giả thiết về thế giới đóng(logos), nghĩa nguyên thủyCWA Close World Assumption): Khẳng định rằng cácthông tin không đúng trong CSDL được coi là sai, tức là R(logos), nghĩa nguyên thủya1,a2, ,an) coi làR(a1,a2, ,an) coi làđúng chỉ khi sự kiện R(logos), nghĩa nguyên thủya1,a2, ,an) không xuất hiện trong CSDL

Ví dụ: Có CSDL sau : Hoc_sinh(logos), nghĩa nguyên thủyXuân)

Sinh_vien(logos), nghĩa nguyên thủyĐông)

Nghiên_cưu(logos), nghĩa nguyên thủyĐông)

Thich(logos), nghĩa nguyên thủyXuân, Toán)

Như vậy theo CWA thì bộ Thich (logos), nghĩa nguyên thủyĐông, Toán) được giả sử là đúng, tức là Đôngkhông thích Toán

Giả thiết về tên duy nhất (logos), nghĩa nguyên thủyUNA Unique Name Assumption): Khẳng định các

hằng số của các tên khác nhau được coi là khác nhau

Theo ví dụ trên có thể nói rằng hai hằng số Xuân và Đông gán tên duy nhất chohai sinh viên khác nhau

Giả thiết về bao đóng của miền (logos), nghĩa nguyên thủyDCA Domain Closure Assumption): Cho rằng

không có các hằng số ngoài các hằng số trong ngôn ngữ của CSDL.Theo ví dụtrên có thể nói rằng Triết không phải là hằng đúng

Cho CSDL quan hệ (logos), nghĩa nguyên thủyD,L), D có một vài hạn chế L không chứa kí hiệu hàm nào.Vậy CSDL này có thể được coi là diễn giải của lý thuyết bậc môt gồm có ngônngữ L và các biến của L , như đã được sắp đặt trên miền trong diễn giải này Việcđánh giá công thức Logic trong diễn giải này dựa trên :

Trang 28

R(logos), nghĩa nguyên thủya1,a2,…,an) đúng chỉ khi R(logos), nghĩa nguyên thủya1,a2,…,an) D

Các tiên đề của ngôn ngữ T:

Theo quan điểm lý thuyết chứng minh của CSDL quan hệ thu được bằng cáchxây dựng lý thuyết T trong ngôn ngữ L

T1 Xác nhận : Đối với mỗi sự kiện R(logos), nghĩa nguyên thủya1,a2,…,an)  D => R(logos), nghĩa nguyên thủya1,a2,…,an) được

xác định

T2 Các tiên đề đầy đủ: Với mỗi kí hiệu quan hệ R,

Nếu R(logos), nghĩa nguyên thủya1, a2 ,… , an), R(logos), nghĩa nguyên thủya1, a2,… , an),…, R(logos), nghĩa nguyên thủya1m, a2m,… , anm) kí hiệu cho các

sự kiện của R thì tiên đề đầy đủ đối với R là:

x1, x2,…, xn R(logos), nghĩa nguyên thủya1, a2, ,an)  (logos), nghĩa nguyên thủyx1 = a11  x2 = a21 …  xn = an1) 

(logos), nghĩa nguyên thủyx1 = a1  x2 = a2 …  xn = an) …. (logos), nghĩa nguyên thủyx1 = a1m  x2 = a2m …  xn = anm)

T3 Các tiên đề về tên duy nhất: Nếu a1, a2, , ap là tất cả những kí hiệu hằng số

của L thì (logos), nghĩa nguyên thủya1  a2), (logos), nghĩa nguyên thủya1  a3), …., (logos), nghĩa nguyên thủya1  ap ), (logos), nghĩa nguyên thủya2  a3), (logos), nghĩa nguyên thủya2  a4),…, (logos), nghĩa nguyên thủyap-1  ap )

T4 Các tiên đề về bao đóng của miền: Nếu a1, a2, , ap là các kí hiệu hằng số

của L thì : x(logos), nghĩa nguyên thủy(logos), nghĩa nguyên thủyx=a1)  (logos), nghĩa nguyên thủyx=a2) …. (logos), nghĩa nguyên thủyx=ap))

T5 Các tiên đề tương đương:

1 x(logos), nghĩa nguyên thủyx=x)

2 xy(logos), nghĩa nguyên thủy(logos), nghĩa nguyên thủyx=y)  (logos), nghĩa nguyên thủyy=x))

3 xyz (logos), nghĩa nguyên thủy(logos), nghĩa nguyên thủyx=y)  (logos), nghĩa nguyên thủyy=z)  (logos), nghĩa nguyên thủyx=z))

4 x1,x1,…,xn(logos), nghĩa nguyên thủyP(logos), nghĩa nguyên thủyx1, x2, , xn)  (logos), nghĩa nguyên thủyx1=y1)  (logos), nghĩa nguyên thủyx2=y2)  ….(logos), nghĩa nguyên thủyxn=yn)  (logos), nghĩa nguyên thủyy1, y2, , yn))

5) Nhìn nhận cơ sở dữ liệu suy diễn

Ở đây chỉ nhìn nhận lý thuyết chứng minh áp dụng cho CSDL suy diễn Ngônngữ L của CSDL (logos), nghĩa nguyên thủyD, L) được xây dựng chỉ bằng các kí hiệu xuất hiện trong D,

và người ta có thể dùng bất kì ngữ nghĩa thủ tục nào trong ngữ cảnh của chươngtrình logic như công cụ để tìm các câu trả lời bằng cách suy diễn từ lý thuyết

Trang 29

chứng minh T, lý thuyết T đảm bảo ngữ nghĩa của D nhất trí với ngữ nghĩa củaT.

Liên quan đến CSDL suy diễn, người ta đưa ra Comp(logos), nghĩa nguyên thủyD) như là lý thuyết chứngminh của CSDL (logos), nghĩa nguyên thủyD, L) và dùng cách giải SLDNF để tìm câu trả lời cho câu hỏi.Giả sử (logos), nghĩa nguyên thủyD, L) là CSDL chuẩn Như trong trường hợp của CSDL quan hệ, quanđiểm lý thuyết chứng minh của D đạt được bằng cách xây dựng một lý thuyết Ttrong ngôn ngữ L

Các tiên đề lý thuyết của T như sau :

L, tương ứng với các câu trong D

tương đương là tuỳ theo các kí hiệu hằng số, hàm số và vị từ của L

L và f1, f2, ,fq là các kí hiệu hàm số của L, thì tiên đề về bao đóng của miền,theo Lloyd năm 1987, Mancarella năm 1988 như sau:

x(logos), nghĩa nguyên thủy(logos), nghĩa nguyên thủyx=a1)  (logos), nghĩa nguyên thủyx=ap)  (logos), nghĩa nguyên thủyx1, x2, , xm(logos), nghĩa nguyên thủyx = f1(logos), nghĩa nguyên thủyx1, x2, , xm)))  …  (logos), nghĩa nguyên thủyy1,

y2,…., yn(logos), nghĩa nguyên thủy x = fq(logos), nghĩa nguyên thủyy1, Y2,…, yn))))

6) Các giao tác trên CSDL suy diễn

Định nghĩa 1: Giao tác (logos), nghĩa nguyên thủyTransaction) :

Một giao tác trong CSDL suy diễn là một một xâu hữu hạn của các phép toán,hay các hành động bổ sung, loại bỏ hay cập nhật các câu Vì một CSDL suy diễnđược xem như tập các câu, tức là theo quan điểm lý thuyết mô hình, không mộtphép loại bỏ hay cập nhật nào được phép thực hiện trên sự kiện Các sự kiện làngầm có trong CSDL

Định nghĩa 2: Khẳng định (logos), nghĩa nguyên thủyCommit)

Ngày đăng: 10/04/2015, 13:22

HÌNH ẢNH LIÊN QUAN

Hình 1 : cửa sổ làm việc của Swi-Prolog - Tiểu luận môn cơ sở dữ liệu nâng cao NGHIÊN CỨU CƠ SỞ DỮ LIỆU SUY DIỄN VÀ ỨNG DỤNG
Hình 1 cửa sổ làm việc của Swi-Prolog (Trang 48)
Hình 2: các chương trình demo của XPCE trong SWI-Prolog - Tiểu luận môn cơ sở dữ liệu nâng cao NGHIÊN CỨU CƠ SỞ DỮ LIỆU SUY DIỄN VÀ ỨNG DỤNG
Hình 2 các chương trình demo của XPCE trong SWI-Prolog (Trang 51)
Hình 3: chương trình demo XPCE Rubiks Cube của SWI-prolog - Tiểu luận môn cơ sở dữ liệu nâng cao NGHIÊN CỨU CƠ SỞ DỮ LIỆU SUY DIỄN VÀ ỨNG DỤNG
Hình 3 chương trình demo XPCE Rubiks Cube của SWI-prolog (Trang 52)
Hình 4: Cửa số navigator - Tiểu luận môn cơ sở dữ liệu nâng cao NGHIÊN CỨU CƠ SỞ DỮ LIỆU SUY DIỄN VÀ ỨNG DỤNG
Hình 4 Cửa số navigator (Trang 53)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w