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_foundtrue; goto Bước 10;}
else Solution_found false;
Bước 6: HoldH;
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{
H H M( 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_foundtrue; goto Bước 10;}
Chọn sự kiện mới f F;
} // 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