Thuật toán giải toán tự động

Một phần của tài liệu Nghiên cứu mô hình COKB thu hẹp và giải quyết vấn đề trên thành phần tri thức hàm (Trang 54)

Xét bài toán P = (T, O, F)  G trong mô hình Funcs-COKB. Để tìm lời giải cho bài

toán tổng quát trên, xuất phát từ giả thiết của bài toán P, ta thử áp dụng các dạng suy luận khác nhau để phát sinh sự kiện mới từ các sự kiện đã biết, từ đó mở rộng dần tập các biến có giá trị xác định cho đến khi đạt được mục tiêu G. Ý tưởng cơ bản là thực hiện một quá trình suy diễn tiến kết hợp với một số qui tắc heuristic nhằm tăng cường tốc độ giải quyết bài toán và đạt được một lời giải tốt hơn, nhanh hơn. Quá trình trên có thể được tiến hành tuần tự theo các bước sau:

Input: Đề bài toán

Output: Lời giải bài toán

Bước 1: Thu thập giả thiết và mục tiêu của bài toán

Bước 2: Solution[]; #khởi tạo lời giải rỗng

Bước 3: Phân tích giả thiết

Kind_Fact(); # phân loại sự kiện Unify_Fact(); # hợp nhất sự kiện Bước 4: do{

Suy diễn bên trong đối tượng Deduce_Objects();

Suy diễn trên hàm

Deduce_Funcs();

Bước 5: ifGHthen{Solution_foundtrue; goto Bước 10;}

else Solution_found false;

Bước 6: HoldH;

52

while(not Solution_found và (f found)) do{

if(sinh ra sự kiện mới từ việc áp dụng f trong H) then{

HHM( f); # cập nhật lại giả thiết

đưa f vào tập lời giải Solution; } # end if

if( sinh ra sự kiện mới hoặc đối tượng mới từ việc áp dụng hàm trong H) then{

)

( f M H

H   ; # cập nhật lại giả thiết

đưa f vào tập lời giải Solution; } # end if

Bước 7: if(GH)then{Solution_foundtrue; goto Bước 10;}

Chọn sự kiện mới fF;

} // kết thúc vòng lặp while tại bước 6 } while(Solution_found hoặc (H = Hold)) Bước 8: if (not Solution_found) then

Không tìm thấy lời giải; else

Bước 9: Tìm thấy lời giải của bài toán: Solution; Thu gọn lời giải.

Bước 10: Thể hiện lời giải

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Nghiên cứu mô hình COKB thu hẹp và giải quyết vấn đề trên thành phần tri thức hàm (Trang 54)