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

Tiểu luận môn biểu diễn tri thức và suy luận GIẢI BÀI TOÁN TAM GIÁC BẰNG MÔ HÌNH HỆ LUẬT DẪN

22 1,4K 16

Đ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 22
Dung lượng 827 KB

Nội dung

Bài thu hoạch này trình bày về phương pháp biểu diễn tri thức dùng mô hình hệ luật dẫn và trình bày áp dụng mô hình để xây dựng chương trình giải bài toán tam giác kinh điển.. Các nhà ng

Trang 1

i

Đại Học Quốc Gia TP.HCM

Trường Đại Học Công Nghệ Thông Tin

BÁO CÁO CHUYÊN ĐỀ

BIỂU DIỄN TRI THỨC VÀ ỨNG DỤNG

Trang 2

LỜI MỞ ĐẦU

Việc xây dựng mô hình biểu diễn tri thức để đưa tri thức lên máy tính, tổ chức lưu trữ và xử lý tri thức, đặc biệt là suy luận giải các vấn đề, các bài toán Biểu diễn tri thức đóng vai trò hết sức quan trọng trong thiết kế và xây dựng một hệ giải bài toán thông minh và các hệ chuyên gia Các phương pháp biểu diễn tri thức thích hợp sẽ tạo nên một hệ thống chặt chẽ và hiệu quảkhi vận hành

Hiện nay, mô hình biểu diễn tri thức thường dựa trên:

- Các cấu trúc dữ liệu cơ bản và trừu tượng đã biết

- Các mô hình và cấu trúc toán học

- Các mô hình biểu diễn tri thức cơ bản: logic vị từ, mạng ngữ nghĩa, hệ luật dẫn, frame

- Các ngôn ngữ đặc tả: mô hình mạng tính toán, mô hình COKB và các Ontology

Bài thu hoạch này trình bày về phương pháp biểu diễn tri thức dùng mô hình hệ luật dẫn và trình bày áp dụng mô hình để xây dựng chương trình giải bài toán tam giác kinh điển

Em xin chân thành cám ơn PGS TS Đỗ Văn Nhơn về những tri thức và những kinh nghiệm quý báu mà thầy đã truyền đạt lại cho lớp trong phạm vi môn học Biểu diễn tri thức và ứng dụng thuộc chương trình đào tạo cao học ngành Khoa học máy tính tại trường

Trang 3

Mục lục

Mục lục ii

1 Biểu diễn tri thức 3

1.1 Tri thức 3

1.2 Biễu diễn tri thức và xử lý tri thức 4

2 Biểu diễn tri thức bằng luật dẫn (luật sinh) 4

2.1 Khái niệm 4

2.2 Cơ chế suy luận trên các luật sinh 5

2.3 Vấn đề tối ưu luật 5

3 Bài toán tam giác 7

3.1 Phát biểu bài toán và giới hạn phạm vi 7

3.2 Biểu diễn tri thức và tổ chức lưu trữ 9

3.3 Biểu diễn thuật giải 11

3.3.1 Thuật giải Suy diễn tiến 11

3.3.2 Thuật giải Suy diễn lùi 13

3.4 Tính toán và trình bày kết quả 17

3.4.1 Tính toán 17

3.4.2 Trình bày kết quả 18

3.5 Kết quả chương trình demo 18

KẾT LUẬN 20

3.6 Tóm tắt kết quả đạt được 20

3.7 Hướng phát triển 20

3.8 Tài liệu tham khảo 21

Trang 4

1 Biểu diễn tri thức

1.1 Tri thức

Tri thức (knowledge): là sự hiểu biết của người trong một phạm vi, lĩnh vực nào đó; được xem xét theo các mục tiêu hay các vấn đề nhất định

Ví dụ:

- Kiến thức về một lĩnh vực y học và khả năng chẩn đoán bệnh là tri thức

- Biết một tam giác có các yếu tố nào cùng với các công thức liên hệ giữa các yếu

- Tri thức cấu trúc: mô tả tri thức theo cấu trúc Loại tri thức này mô tả mô hình tổng quan hệ thống theo quan điểm của chuyên gia, bao gồm khái niệm, khái niệm con

và các đối tượng; diễn tả chức năng và mối liên hệ giữa các tri thức dựa theo cấu trúc xác định

- Tri thức thủ tục: mô tả cách thức giải quyết một vấn đề Loại tri thức này đưa ra giải pháp để thực hiện một công việc nào đó Các dạng tri thức thủ tục tiêu biểu là các luật, chiến lược, lịch trình và thủ tục

- Tri thức meta: mô tả tri thức về tri thức Loại tri thức này giúp lựa chọn tri thức thích hợp nhất trong số các tri thức khi giải quyết một vấn đề Các chuyên gia sử dụng

Trang 5

tri thức này để điều chỉnh hiệu quả giải quyết vấn đề bằng cách hướng các lập luận về miền tri thức có khả năng cao hơn

1.2 Biễu diễn tri thức và xử lý tri thức

Biểu diễn tri thức (Kowledge Representation) là phương pháp cho phép mã hóa tri thức trong cơ sở tri thức của hệ thống

Biểu diễn tri thức là một vấn đề được quan tâm trong cả khoa học nhận thức lẫn trí tuệ nhân tạo Trong khoa học nhận thức, người ta quan tâm đến cách thức lưu trữ và

xử lý thông tin Còn trong trí tuệ nhân tạo, mục tiêu chính là lưu trữ tri thức sao cho các chương trình có thể xử lý chúng và đạt được sự thông minh như con người Các nhà nghiên cứu trí tuệ nhân tạo đã mượn các lý thuyết về biểu diễn thông tin từ khoa học nhận thức

2.1 Khái niệm

Phương pháp biểu diễn tri thức bằng luật sinh được phát minh bởi Newell và Simon trong lúc hai ông đang cố gắng xây dựng một hệ giải bài toán tổng quát Đây là một kiểu biểu diễn tri thức có cấu trúc Ý tưởng cơ bản là tri thức có thể được cấu trúc bằng một cặp điều kiện và hành động: "NẾU điều kiện xảy ra THÌ hành động sẽ được thi hành" Chẳng hạn, NẾU đèn giao thông là đỏ THÌ bạn không được đi thẳng, NẾU máy tính đã mở mà không khởi động được THÌ kiểm tra nguồn điện, …

Ngày nay, các luật sinh đã trở nên phổ biến và được áp dụng rộng rãi trong nhiều

hệ thống trí tuệ nhân tạo khác nhau Luật sinh có thể là một công cụ mô tả để giải quyếtcác vấn đề thực tế thay cho các kiểu phân tích vấn đề truyền thống Trong trường hợp này, các luật được dùng như là những chỉ dẫn (tuy có thể không hoàn chỉnh) nhưng rất hữu ích để trợ giúp cho các quyết định trong quá trình tìm kiếm, từ đó làm giảm không gian tìm kiếm Một ví dụ khác là luật sinh có thể được dùng để bắt chước hành vi của những chuyên gia Theo cách này, luật sinh không chỉ đơn thuần là một kiểu biểu diễn tri thức trong máy tính mà là một kiểu biễu diễn các hành vi của con người

Một cách tổng quát luật sinh có dạng như sau:

P1  P2   Pn  Q

Tùy vào các vấn đề đang quan tâm mà luật sinh có những ngữ nghĩa hay cấu tạo khác nhau:

Trang 6

0 Trong logic vị từ: P1, P2, , Pn, Q là những biểu thức logic.

1 Trong ngôn ngữ lập trình, mỗi một luật sinh là một câu lệnh

IF (P1 AND P2 AND AND Pn) THEN Q

2 Trong lý thuyết hiểu ngôn ngữ tự nhiên, mỗi luật sinh là một phép dịch: ONE  một

2.2 Cơ chế suy luận trên các luật sinh

5 Suy diễn tiến: là quá trình suy luận xuất phát từ một số sự kiện ban đầu, xác định các sự kiện có thể được "sinh" ra từ sự kiện này

Sự kiện ban đầu: H, K

R3: H  A {A, H K }R1: A  E { A, E, H, K }

R5: E  K  B { A, B, E, H, K }

R2: B  D { A, B, D, E, H, K }R6: D  E  K  C { A, B, C, D, E, H, K }

6 Suy diễn lùi: là quá trình suy luận ngược xuất phát từ một số sự kiện ban

đầu, ta tìm kiếm các sự kiện đã "sinh" ra sự kiện này Một ví dụ thường gặp trong thực tế là xuất phát từ các tình trạng của máy tính, chẩn đoán xem máy tính đã bị hỏng hóc ở đâu.

2.3 Vấn đề tối ưu luật

Tập các luật trong một cơ sở tri thức rất có khả năng thừa, trùng lắp hoặc mâu

thuẫn Dĩ nhiên là hệ thống có thể đổ lỗi cho người dùng về việc đưa vào hệ thống

những tri thức như vậy Tuy việc tối ưu một cơ sở tri thức về mặt tổng quát là một thaotác khó (vì giữa các tri thức thường có quan hệ không tường minh), nhưng trong giới hạn cơ sở tri thức dưới dạng luật, ta vẫn có một số thuật toán đơn giản để loại bỏ các vấn đề này

Trang 7

7 Rút gọn bên phải:

luật sau hiển nhiên đúng : A  B  A (1)

do đó luật: A  B  A  C

là hoàn toàn tương đương với: A  B  C

Quy tắc rút gọn : Có thể loại bỏ những sự kiện bên vế phải nếu những sự kiện

đó đã xuất hiện bên vế trái Nếu sau khi rút gọn mà vế phải trở thành rỗng thì luật đó làluật hiển nhiên Ta có thể loại bỏ các luật hiển nhiên ra khỏi tri thức

Tương đương với hai luật: A  C và B  C

Với quy tắc này, ta có thể loại bỏ hoàn toàn các luật có phép nối HOẶC Các luật

có phép nối này thường làm cho thao tác xử lý trở nên phức tạp

11 Thuật toán tối ưu tập luật dẫn:

Thuật toán này sẽ tối ưu hóa tập luật đã cho bằng cách loại đi các luật có phép nốiHOẶC, các luật hiển nhiên hoặc các luật thừa

Thuật toán bao gồm các bước chính:

B1: Rút gọn vế phải

Với mỗi luật r trong R

Với mỗi sự kiện A VếPhải(r)

Nếu A VếTrái(r) thì Loại A ra khỏi vế phải của R

Nếu VếPhải(r) rỗng thì loại bỏ r ra khỏi hệ luật dẫn : R = R \{r}

Trang 8

B2: Phân rã các luật

Với mỗi luật r : X1  X2  …  Xn  Y trong R

Với mỗi i từ 1 đến n R := R + { Xi  Y }

R := R \ {r}

B3: Loại bỏ luật thừa

Với mỗi luật r thuộc R

Nếu VếPhải(r)  BaoĐóng(VếTrái(r), R-{r}) thì R := R \ {r}

B4: Rút gọn vế trái

Với mỗi luật dẫn r : X : A1 A2, …, An  Y thuộc R

Với mỗi sự kiện Ai  r

Gọi luật r1 : X - Ai  Y

S = (R - {r}) {r1}

Nếu BaoĐóng (X - Ai , S)  BaoĐóng (X, R) thì loại sự kiện A ra khỏi X

3.1 Phát biểu bài toán và giới hạn phạm vi

Bài thu hoạch này sẽ trình bày cách giải bài toán tam giác dùng hệ luật dẫn gồm cả suy diễn tiến và suy diễn lùi Bài toán tam giác này sẽ giới thiệu cách làm với các công thức tam giác thông dụng.

Bài toán:

- Giả thiết: Một số thông số (đối tượng, sự kiện) của tam giác cho trước

- Mục tiêu: Xác định một thông số (đối tượng) của tam giác

Ví dụ: Xét tam giác ABC có góc A = 30 độ, cạnh b = 6, cạnh c = 5 đơn vị độ dài Hãy xác định độ dài đường cao ha

Phạm vi:

Trang 9

Ta có các đối tượng trong tam giác cần xét:

- A: Số đo góc đối diện cạnh a

- B: Số đo góc đối diện cạnh b

- C: Số đo góc đối diện cạnh c

- a: độ dài cạnh a

- b: độ dài cạnh b

- c: độ dài cạnh c

- ha: độ dài đường cao tương ứng với cạnh a

- hb: độ dài đường cao tương ứng với cạnh b

- hc: độ dài đường cao tương ứng với cạnh c

- S: diện tích của tam giác

- p: nửa chu vi

Các công thức trong tam giác (luật)

A + B + C = 180 (độ)

Trang 10

3.2 Biểu diễn tri thức và tổ chức lưu trữ

Tri thức gồm hai thành phần (F, R), tức là các khái niệm (phát biểu) và các luật dẫn.Trong bài toán tam giác trên, phần tri thức theo luật dẫn (Facts, Rules) gồm:

Facts = {A, B, C, a, b, c, ha, hb, hc, p, S}

Tổ chức tri thức lưu trên bộ nhớ phụ với 2 file : Facts.txt và Rules.txt

Cấu trúc file Facts txt :

Begin

<tên đối tượng 1> : <mô tả của đối tượng 1>

<tên đối tượng 2> : <mô tả của đối tượng 2>

Trang 11

End

File Facts txt của chương trình :

Begin

A : so do goc doi dien canh a

B : so do goc doi dien canh b

C : so do goc doi dien canh c

a : do dai canh a

b : do dai canh b

c : do dai canh c

ha : do dai duong cao tuong ung voi canh a

hb : do dai duong cao tuong ung voi canh b

hc : do dai duong cao tuong ung voi canh c

S : dien tich tam giac

a,c,B=>S.( a * c * sin B ) / 2

b,c,A=>S.( b * c * sin A ) / 2

a,ha->S.a * ha / 2

b,hb->S.b * hb / 2

Trang 12

Mỗi luật được đưa vào sẽ được phân tích như sau:

Mỗi sự kiện trong mệnh đề IF sẽ được đánh dấu là 0, trong mệnh đề THEN là 1

3.3 Biểu diễn thuật giải

3.3.1 Thuật giải Suy diễn tiến

Tư tưởng của thuật giải Suy diễn tiến là từ những giả thiết đã biết (know) ta áp dụng các tập luật để sinh ra thêm giả thiết mới và bổ sung vào know Quá trình này cứ tiếp tục cho đến khi kết luận cần tìm đã nằm trong know hoặc không thể áp dụng được luật nào để sinh thêm giả thiết mới nữa và chương trình kết thúc

Mô phỏng thuật giải :

Bước 1: Khởi tạo một mảng đánh dấu các luật, để đánh dấu những luật nào đã được sử dụng để tránh trùng lặp các bước

Bước 2: Kiểm tra xem mục tiêu đã nằm trong tập giả thiết (know) chưa?

Nếu đúng, goto Bước 6

Trang 13

Nếu sai, chuyển tới bước 3.

Bước 3: Cho kiểm tra các luật, nếu luật nào chưa dùng (chưa được đánh dấu):

Kiểm tra xem các luật trong đó có đủ điểu kiện để áp dụng sinh ra giả thiết mới hay không?

Nếu đủ điều kiện:

+ Đánh dấu luật này lại

+ Bổ sung kết luận của luật vào trong know

+ Chuyển tới Bước 2

Nếu không đủ điều kiện: tiếp tục với luật tiếp theo

Bước 4: Nếu không còn luật nào có thể áp dụng được nữa, chuyển tới bước 6

Bước 5: Quay lại bước 2

Bước 6: Kết luận:

+ Nếu Bước 4 đúng: bài toán không thể giải được

+ Nếu Bước 2 đúng: dùng suy diễn lùi để loại bỏ các luật thừa, đưa ra kết luận

Ví dụ minh họa cho thuật giải Suy diễn tiến:

Giả thiết: góc A, góc B, cạnh c

Kết luận: Tính hc

Bài giải (các luật):

Chương trình sẽ lần lượt thử chạy các luật theo tuyến tính cho đến khi kết luận hc nằm trong Know

Trang 14

Vì hc đã nằm trong Known nên dừng Suy diễn.

Đó là các luật mà máy sẽ chạy để tính được hc, nhưng trong quá trình chạy suy diễn tiến, sẽ phát sinh ra các luật thừa, lúc này ta sẽ dùng suy diễn lùi để loại bỏ các luật thừa đó, tức là nếu kết luận của luật liền trước không có trong giả thiết của một luật thì loại luật đó ra

Kết quả ta được:

B1: Tính góc C: A,B->C

B2: Tính cạnh a: c,C,A->a

B3: Tính hc: a,B->hc

3.3.2 Thuật giải Suy diễn lùi

Trong thuật giải Suy diễn lùi, ta dùng kỹ thuật đệ quy để thực hiện suy diễn lùi Để suy

ra được kết luận, ta thực hiện tìm luật để suy ra được đích là kết luận, ta phải lùi về để tìm những thành phần còn thiếu trong luật, tiếp tục ta lại đệ quy với đích mới là thành phần còn thiếu đó Quá trình đệ quy cứ tiếp tục cho đến khi các hàm đệ quy được khử hay nói cách khác là ta tìm đủ điều kiện để suy ra được đích Nếu ta cho hàm đệ quy thực hiện Suy diễn lùi vô hạn thì trong một số trường hợp bài toán không thể giải được trong khi ta vẫn có thể giải được bài bằng Suy diễn tiến, do vậy ta phải đặt số lần quay lui của hàm đệ quy Trong bài này tôi đặt số lần quay lui của hàm đệ quy là 3 Sau 3 lần suy diễn lùi, nếu vẫn không thể đủ giả thiết để thực thi các luật, ta sẽ sử dụng suy diễn tiến để sinh ra thêm giả thiết để giải bài toán

Mô phỏng thuật giải:

int BackTracking(int _dest, int _levelBack, List<int> _statusOfAgr)

Trang 15

/*Sắp xếp các luật có chứa kết luận theo số lượng biến nằm trong know của mỗi luật*/

SortListByNumberOfArgInKnow(_listRulesContainDest);

//Duyệt từng luật chứa kết luận

for i = 1 to numberOfRulesCotainDest:

{

bool _isLoop = false;

bool _isReady = true;

/*duyệt từng biến trong giả thiết của mỗi luật*/

foreach int j in _listHypothesisArg(_listRulesContainDest[i]){

/*Nếu biến đó đang được tìm kiếm trong các vòng đệ quy trước thìđánh dấu lại)*/

if(_listStatusOfArg[j] == 0)_isLoop = true;

/*Nếu có biến đó không nằm trong know thì luật này chưa sẵn sàng để dùng*/

if(Known.Contain(j) == 0)_isReady = false;

Trang 16

/*Nếu đây là bước lùi thứ ba và đã thử hết toàn bộ luật có thể sinh kết luận cần tìm*/

if(_levelBack == 3 && i == numberOfRulesContainDest){

//tiến hành sinh thêm giả thiếtint result = generateAHypothesis();

/*Nếu không thể sinh thêm được bất kỳ giả thiết nào nữa thì trả về kết quả là không thành công*/

if (result == -1)return 0;

/* Nếu giả thiết được sinh ra đang được tìm kiếm ở những vòng đệ quy ngoài thì báo kết quả ra */

/*đánh dấu xem liệu có thể đệ quy để tìm đủ giả thiết để sinh luật hay không*/

bool _isAble = true;

Trang 17

/*Duyệt từng biến trong phần giả thiết của luật */

foreach int j in _listHypothesisArg(_listRulesContainDest[i])

/*đánh dấu danh sách trạng thái trước khi quay lui*/_listStatus[j] = 0;

_resultBackTracking = BackTracking(j, _levelBack+1, _listStatus);

/*Nếu quay lui thất bại*/

if(_resultBackTracking == 0){

_isAble = false ;break ;

}else/*Nếu quay lui thành công*/

if (_resultBackTracking == 1)

continue ;else

/*Nếu quay lui tình cờ tìm thấy một giả thiết ở vòng

đệ quy ngoài ta kiểm tra xem nó có phải điều ta đang tìm kiếm hay không, nếu đúng, báo thành công, nếu sai, báo ra các vòng đệ quy ngoài*/

if (Known.Contain(_dest))

return 1 ;else

return 2 ;}

Trang 18

//Nếu có khả năng sinh được luật

if (_isAble){

/*Cập nhật danh sách trạng thái và báo thành công */

_listStatus[_dest] = -1 ;return 1 ;

}}

}}

return 0 ;

}

3.4 Tính toán và trình bày kết quả

Sau khi xây dựng thuật giải và tìm được các luật áp dụng, tìm được các công thức cần

áp dụng để đi đến được kết quả Vậy là bài toán đã coi như gần hoàn tất, bây giờ công việc cuối cùng để hoàn thành bài toán là tính toán và trình bài kết quả

Thuật toán để chuyển một biểu thức Infix sang dạn Posfix:

Đọc từng token trong biểu thức infix từ trái qua phải, với mỗi token ta thực hiện các bước sau:

- Nếu là toán hạng: cho ra output

- Nếu là dấu mở ngoặc “(“: cho vào stack

Ngày đăng: 19/05/2015, 00:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w