Tải bản đầy đủ - 0 (trang)
Chương 3 ỨNG DỤNG CHƯƠNG TRÌNH LOGIC ƯU TIÊN ĐỐI VỚI VIỆC LẬP LUẬN

Chương 3 ỨNG DỤNG CHƯƠNG TRÌNH LOGIC ƯU TIÊN ĐỐI VỚI VIỆC LẬP LUẬN

Tải bản đầy đủ - 0trang

Ví dụ 3.1. Một đứa trẻ thường bị ho do dị ứng, nguyên nhân gây ho di ứng có thể

do lơng động vật hoặc khói thuốc lá. Ta biểu diễn trong chương trình như sau:

ho ← di_ung

di_ung ← long_dong_vat

di_ung ← khoi_thuoc_la

long_dong_vat | not long_dong_vat ←

khoi_thuoc_la | khoi_thuoc_la ←

trong đó long_dong_vat và khoi_thuoc_la là các phỏng đốn. Lúc đó, cho quan sát

O = ho thì chương trình ∪ {←not ho} có ba tập trả lời:

{ho, di_ung, long_dong_vat},

{ho, di_ung, khoi_thuoc_la},

{ho, di_ung, long_dong_vat, khoi_thuoc_la}.

Như vậy, {long_dong_vat}, {khoi_thuoc_la}, {long_dong_vat, khoi_thuoc_la} là

các giải thích có thể của quan sát ho.

3.1.1. Phỏng đoán cực tiểu

Trong phỏng đốn, việc lựa chọn giải thích tốt nhất từ nhiều giải thích rất

quan trọng. Trong trường hợp này, giải thích cực tiểu được sử dụng như là giả

thuyết đơn giản nhất để giải thích một quan sát. Giải thích E là cực tiểu nếu khơng

có giải thích E’ ⊂ E. Phỏng đốn cực tiểu được thể hiện trong chương trình logic ưu

tiên như sau:

Định nghĩa 3.2 (Phỏng đoán cực tiểu). Cho là một chương trình logic phỏng đốn

và O là một quan sát, phỏng đoán cực tiểu được định nghĩa là một chương trình

logic ưu tiên (, ΦMA) trong đó:



ΦMA = {a not a: a ∈ }.



46



Trong ΦMA, ưu tiên a not a được đọc là "a ít có khả năng xảy ra". Điều kiện ưu tiên

này dùng để loại bỏ phỏng đoán a trong mỗi p-tập trả lời. Một tập trả lời S được gọi

là -cực tiểu nếu không có tập trả lời S’ sao cho S’ ∩ ⊂ S ∩ . Lúc đó ta có các kết

quả sau:

Định lý 3.1 [8] (Phỏng đốn cực tiểu trong chương trình logic ưu tiên dạng tuyển).

Cho (, ΦMA) là một chương trình logic ưu tiên dạng tuyển biểu diễn phỏng đốn cực

tiểu. Lúc đó, quan sát O có giải thích cực tiểu E trong nếu ( ∪ {← not O}, ΦMA) có

một p-tập trả lời nhất quán S sao cho E = S ∩ .

Ví dụ 3.2. Trong ví dụ 3.1, cho ΦMA = {long_dong_vat



not long_dong_vat,



khoi_thuoc_la not khoi_thuoc_la}. Lúc đó, ( ∪ {← not ho}, ΦMA) có hai tập trả lời

{ho, di_ung, long_dong_vat} và {ho, di_ung, khoi_thuoc_la}, do đó ta có giải thích

cực tiểu {long_dong_vat} và {khoi_thuoc_la} tương ứng.

3.1.2. Phỏng đốn ưu tiên

Mặc dù phỏng đoán cực tiểu làm giảm số lượng các giải thích, nhưng nó

khơng đủ mạnh để chọn giải thích mong muốn. Trong thực tế, một chương trình

logic phỏng đốn thường có nhiều giải thích cực tiểu. Để xác định các ưu tiên giữa

các giải thích cực tiểu, chúng ta áp dụng quan hệ ưu tiên với các phỏng đốn và áp

dụng quan hệ với các giải thích.

Định nghĩa 3.3 (Ưu tiên trên các phỏng đoán). Với bất kỳ phỏng đoán A1 và A2

trong , nếu A1 A2 chúng ta nói rằng A2 có ưu tiên cao hơn A1. Đặt là tập các ưu tiên

trên các phỏng đoán. Với hai tập E ⊆ và F ⊆ , E F được định nghĩa như trong định

nghĩa 2.10 đối với các ưu tiên trong .

Định nghĩa 3.4 (Giải thích cực tiểu ưa thích). Cho là một chương trình logic phỏng

đốn và là tập các ưu tiên trên các phỏng đoán. Cho quan sát O, giải thích cực tiểu

E của O được gọi là giải thích ưa thích nếu EF kéo theo F E (theo ) với F là giải

thích cực tiểu bất kỳ của O.



47



Theo định nghĩa, một giải thích cực tiểu được ưa thích nếu nó chứa phỏng đốn có

ưu tiên cao hơn so với các phỏng đốn khác trong mọi giải thích khác. Đặc biệt, nếu

một chương trình logic phỏng đốn có giải thích cực tiểu duy nhất, thì đó chính là

giải thích ưa thích.

Định nghĩa 3.5 (Phỏng đoán cực tiểu được ưu tiên). Cho (, ΦMA) là một chương

trình logic ưu tiên dạng tuyển biểu diễn phỏng đoán cực tiểu. Cho là tập các ưu tiên

trên các phỏng đoán, phỏng đoán cực tiểu ưu tiên được định nghĩa là một chương

trình logic ưu tiên dạng tuyển (, PMA) trong đó

PMA



= MA ∪ {not Ai not Aj: (Aj Ai) ∈}



Trong định nghĩa, thêm ưu tiên not Ai not Aj được đọc là “phỏng đốn Aj ít có khả

năng xảy ra hơn Ai”. Thêm ưu tiên này vào ΦMA, mọi tập trả lời S thỏa mãn ‘not Aj’

đều được ưa thích. Như vậy, giải thích cực tiểu ưa thích được xác định bởi phỏng

đoán cực tiểu ưu tiên.

Định lý 3.2 [8] (Giải thích cực tiểu ưa thích với phỏng đốn cực tiểu ưu tiên). Cho

là một chương trình logic phỏng đoán, là tập các ưu tiên trên các phỏng đốn, và O

là một quan sát. Lúc đó, E là một giải thích cực tiểu ưa thích của O nếu

( ∪ {← not O}, ΦPMA) có tập trả lời nhất quán S sao cho E = S ∩ .

Ví dụ 3.3. Trong ví dụ 3.2 giả sử nhà khơng ni động vật chó mèo, do đó lý do

‘not long_dong_vat’ thích hợp hơn ‘not khoi_thuoc_la’. Tình huống được thể hiện

bằng cách sử dụng phỏng đoán cực tiểu ưu tiên (, ΦPMA) trong đó ΦPMA chứa các ưu

tiên trong ΦMA và ưu tiên not khoi_thuoc_la not long_dong_vat. Lúc đó, chương

trình chương trình logic ưu tiên ( ∪ {← not O}, ΦPMA) có tập trả lời duy nhất {ho,

di_ung, khoi_thuoc_la}, do đó giải thích cực tiểu ưa thích là {khoi_thuoc_la}.



48



3.2. HỆ THỐNG PHẦN MỀM DLV VÀ ECLIPSE

3.2.1. Hệ thống DLV

3.2.1.1. Tổng quan về hệ thống DLV

DLV là một hệ thống cơ sở dữ liệu suy diễn dựa trên lập trình logic dạng

tuyển. Ngơn ngữ nền tảng của DLV là Datalog dạng tuyển (chương trình logic dạng

tuyển khơng chứa ký hiệu hàm). Hệ thống DLV được xây dựng bởi một nhóm

nghiên cứu người Ý và Áo (thuộc trường Đại học Calabria và trường Đại học Công

nghệ Vienna).

Phiên bản đầu tiên của hệ thống DLV ra đời vào năm 1997 và đã được cải tiến

đáng kể trong những năm vừa qua: tăng khả năng ngôn ngữ, kết hợp các tính năng

mới và các kỹ thuật tối ưu có liên quan vào tất cả các module của hệ thống... Hiện

tại, DLV là một hệ thống biểu diễn tri thức và suy diễn. Nhờ có sự nỗ lực lâu dài về

lý thuyết và thực hành mà ngôn ngữ của hệ thống được hỗ trợ bởi hệ thống thực thi

thời gian thực hiệu quả.

Hệ thống DLV được cài đặt trên các hệ điều hành (HĐH) Unix/Linux hoặc

Windows. Ở đây, sử dụng hệ thống DLV trên HĐH Windows.

Sau đây là kiến trúc tổng quát của hệ thống DLV.



49



Model

Checker



Input

Program



Intelligent

Grounder



Relational

Database



WCHH



Model

Generator



Output



Relational

Database



Hình 3.1. Kiến trúc tổng quát của hệ thống DLV

Ngay khi khởi động, chương trình đầu vào đặc tả bởi người dùng được phân

tích cú pháp và biến đổi vào một cấu trúc dữ liệu nội tại của hệ thống. Chương trình

đầu vào có thể viết dạng tập tin văn bản, nhưng DLV còn cung cấp một giao diện

đối với cơ sở dữ liệu quan hệ qua ODBC. Module IG (Intelligent Grounder) phát

sinh một chương trình nền Ground(P) có kích thước nhỏ hơn nhiều so với chương

trình nền đầy đủ. Sau đó sự tính tốn được thực hiện bởi các module MG (Model

Generator) và MC (Model Checker). Chú ý rằng, trong sự có mặt của các ràng buộc

yếu, sau q trình nền hóa chương trình, sự tính tốn được chi phối bởi module

WCH (Weak Constraints Handler) và bao gồm hai pha:

(i)



Pha đầu tiên xác định chi phí của một mơ hình bền vững tối ưu cùng với mơ hình



(ii)



bền vững tối ưu đó.

Pha thứ hai tính tất cả các mơ hình bền vững tối ưu mà có chi phí tối ưu đó.



50



3.2.1.2. Thực thi chương trình logic bằng hệ thống DLV

Sau khi tải về từ Website của DLV, hệ thống DLV là một tập tin nhị phân có

tên dlvmingw.exe. Tập tin chương trình để thực thi trên DLV thường có phần mở

rộng là .dl. Trước hết, ta thực hiện viết chương trình trong một tập tin văn bản theo

cấu trúc ngôn ngữ của hệ thống DLV và lưu vào một thư mục nào đó. Sau đó thực

hiện dòng lệnh chạy chương trình từ dấu nhắc lệnh như sau:

Đường dẫn\dlvmingw.exe



[Các tùy chọn] Đường dẫn\Tên chương trình



Trong đó một số tùy chọn thường sử dụng là:

- filter=tên vị từ[, tên vị từ[, . . . .] chỉ xuất ra màn hình các thể hiện của các vị

từ được chỉ định.

- silent nếu ta không muốn thấy dòng thơng tin trạng thái của hệ thống.

- nofacts nếu ta không muốn xuất hiện các sự kiện EDB trong kết xuất.

- n=n chỉ tính nhiều nhất là n mơ hình. Nếu n là rỗng hoặc all thì tất cả mơ

hình đều được tính.

3.2.2. Hệ thống Eclipse

3.2.2.1. Giới thiệu về hệ thống Eclipse

Eclipse là một hệ thống phần mềm mã nguồn mở để phát triển và triển khai

các ứng dụng lập trình ràng buộc, chẳng hạn trong các lĩnh vực lập kế hoạch, lập kế

hoạch, phân bổ nguồn lực, thời gian biểu, vận chuyển,… Đây cũng là ý tưởng cho

việc giải quyết vấn đề tổ hợp như mô hình hóa vấn đề, lập trình ràng buộc, lập trình

tốn học và các kỹ thuật tìm kiếm. Nó chứa một số thư viện giải quyết ràng buộc,

một ngôn ngữ lập trình và kiểm sốt bậc cao, giao diện cho các trình giải quyết của

bên thứ ba, một mơi trường phát triển tích hợp và các giao diện để nhúng vào mơi

trường máy chủ.

Vì hệ thống DLV khơng thể đọc cấu trúc file chương trình logic ưu tiên nên

chúng ta sử dụng Eclipse để biên dịch file chương trình logic ưu tiên ban đầu sang

file .dlv để hệ thống DLV có thể thực thi được.

51



3.2.2.2.Thực thi chương trình logic ưu tiên

Trước hết, ta thực hiện viết chương trình ưu tiên trong một tập tin văn bản theo

cấu trúc ngôn ngữ của hệ thống DLV và lưu vào một thư mục nào đó với phần mở

rộng .lp hoặc .vlp nếu chương trình có chứa biến.

Ví dụ 3.4. Cho chương trình logic ưu tiên như sau:

N1 : fly(tweety) ← bird(tweety), not ¬fly(tweety)

N2:ly(tweety) ← penguin(tweety), not fly(tweety)

N3: bird(tweety) ←

N4: penguin(tweety) ←

N1 < N2

Chương trình trên được biểu diễn lại trong file văn bản penguin.lp theo cú pháp như sau:

penguin(tweety).

bird(tweety).

flies(tweety) :- name(1), not neg flies(tweety), bird(tweety).

neg flies(tweety) :- name(2), not flies(tweety), penguin(tweety).

1 < 2.

Sau khi cài đặt phần mềm Eclipse, thực hiện dòng lệnh chạy chương trình từ

dấu nhắc lệnh như sau:

đường dẫn\eclipse.exe.

Sau đó, để có thể thực hiện việc biên dịch ta cần sao chép bốn file Prolog

pref.pl, grounder.pl, pp.pl, dlv.pl vào trong cùng thư mục với file thực thi

eclipse.exe.

Cuối cùng, để thực thi chương trình logic ưu tiên ta thực hiện như sau:

Bước 1. Thực hiện tải trình biên dịch:

52



[eclipse 1]: [pref].

Eclipse sẽ tự động tiến hành nạp các file Prolog pp.pl,

grounder.pl, dlv.pl

Bước 2. Thực hiện biên dịch file .lp

Nếu chương trình khơng chứa biến, ta gọi lệnh:

[eclipse 2]:lp2dlv(‘đường dẫn/tên chương trình’).

Nếu chương trình chứa biến, ta gọi lệnh:

[eclipse 2]: vlp2dlv(‘đường dẫn/tên chương trình’).

Kết quả lưu vào file .dlv và được sử dụng làm file đầu vào cho hệ

thống DLV trong bước tiếp theo.

Bước 3.Thực hiện gọi DLV hai lần bằng cách gọi các lệnh:

[eclipse 3]: dlv(‘đường dẫn/tên chương trình’).

[eclipse 4]: dlv(‘đường dẫn/tên chương trình’,nice).

3.3. CÀI ĐẶT MỘT SỐ BÀI TỐN

Phần này trình bày một số bài toán minh họa việc biểu diễn tri thức bằng

các chương trình logic ưu tiên và cài đặt, thực thi bằng hệ thống DLV và phần

mềm Eclipse.

Bài tốn 3.1. Nam và Mai có một số thói quen như sau:

(1) Nam và Mai thường đi đến một nơi yêu thích vào mỗi tối, trừ thứ Bảy họ

sẽ đi đến cả nhà hàng (nhahang) và quán cà phê (cafe).

(2) Nam thích đến quán cà phê hơn nhà hàng.

(3) Mai thích đến nhà hàng hơn quán cà phê.

(4) Nếu Nam mời Mai thì anh ấy sẽ tơn trọng sở thích của Mai và ngược lại,

Mai cũng tơn trọng sở thích của Nam.

(5) Thường thì Nam mời Mai (nam_moi), trừ khi sinh nhật Nam (sinhnhat) thì

Mai mời Nam (mai_moi).

53



(6) Nếu nhà hàng đóng cửa (dongcua) họ sẽ đến quán cà phê.

Ta có thể mã hóa bài tốn trên bằng chương trình logic ưu tiên P như sau:

N1: nhahang ← not ¬nhahang, not dongcua

N2: cafe ← not¬cafe

N3: ¬nhahang ← cafe, not thubay

N4: ¬cafe ← nhahang, not thubay

N5: nam_moi ← not ¬nam_moi

N6: mai_moi ← sinhnhat

N7: ¬nam_moi ← mai_moi

N8: ¬mai_moi ← nam_moi

N9: cafe ← dongcua

(N2
(N1


54



Chương trình trên được biểu diễn lại trong file văn bản dichoi.lp theo cú pháp

như sau:

nhahang :- name(1),



not neg nhahang, not dongcua.



cafe :- name(2), not neg cafe.

neg nhahang :- cafe, not thubay.

neg cafe :- nhahang, not thubay.

nam_moi :- not neg nam_moi.

mai_moi :- sinhnhat.

neg nam_moi :- mai_moi.

neg mai_moi :- nam_moi.

cafe :- dongcua.

(2 < 1) :- nam_moi.

(1 < 2) :- mai_moi.



Như vậy, nếu khơng có thêm thơng tin, chương trình trên sẽ kết luận Nam

mời Mai đi đến nhà hát với tập trả lời {nam_moi, ¬mai_moi, ¬cafe, nhahang}.



Hình 3.2. Kết quả thực thi bài toán 3.1

Nếu sinh nhật Nam, ta thêm vào chương trình trên sự kiện:

sinhnhat ←

Lúc đó, chương trình sẽ kết luận Mai mời Nam đi đến quán cà phê với tập trả lời

{¬nam_moi, mai_moi, sinhnhat, cafe, ¬nhahang}.



55



Hình 3.3. Kết quả thực thi bài tốn 3.1 khi thêm sự kiện sinhnhat ←

Tuy nhiên, nếu là thứ Bảy thì dù ai là người mời, hay ngày đó có phải là sinh

nhật Nam hay khơng thì họ cũng đi đến cả hai nơi. Lúc đó, ta thêm vào chương

trình sự kiện: thubay ←

Chương trình lúc này sẽ có tập trả lời:

{thubay, nam_moi, ¬mai_moi, cafe, nhahang}.



Hình 3.4. Kết quả thực thi bài toán 3.1 khi thêm sự kiện thubay ←

Ngồi ra, nếu nhà hàng đóng cửa thì họ sẽ đi đến quán cà phê. Ta thêm sự kiện sau:

dongcua ←

Lúc này, tập trả lời tương ứng là {dongcua, nam_moi, ¬mai_moi, ¬nhahang, cafe}.



Hình 3.5. Kết quả thực thi bài tốn 3.1 khi thêm sự kiện dongcua ←



56



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương 3 ỨNG DỤNG CHƯƠNG TRÌNH LOGIC ƯU TIÊN ĐỐI VỚI VIỆC LẬP LUẬN

Tải bản đầy đủ ngay(0 tr)

×