II. MộT Số SƠ Đồ CƠ BảN Để XĐY DựNG MÂY SUY DIễN
e. Giải thích sơ đồ MIXEDIAGRAM
Thủ tục SOLVE để rút gọn băi toân đầu (gọi lă PB) khỏi PROBLEMSTACK khi thủ tục RUN-A-CYCLE được gọi. Có bốn trường hợp xảy ra :
Trường hợp 1 :
Thủ tục RUN-A-CYCLE trả về ‘failure’ khi PB không tương ứng với một hănh động kết thúc vă không được phđn tâch bởi một luật năo từ danh sâch RULES. Trong trường hợp năy, thủ tục hiện hănh SOLVE dừng vă trả về ‘failure’ ở mức cao hơn.
Tham đối thứ hai của RUN-A-CYCLE lă RULE-INDIC nhận được giống như lă tham đối thứ hai của SOLVE. Tại lời gọi đầu tiín của SOLVE bởi SOLVE-A-PROBLEM (lệnh 4), tham đối năy có giâ trị của RULESBASE. Tương tự như vậy đối với một số lời gọi của SOLVE bởi chính nó (lệnh 5). Đối với câc lời gọi khâc (lệnh 11 của SOLVE), tham đối năy không còn lă một danh sâch con của RULESBASE.
Nếu RUN-A-CYCLE không trả về ‘failure’ lă vì, hoặc PB lă một hănh động kết thúc, hoặc PB lă một băi toân phđn tâch được bởi một trong câc luật của danh sâch cung cấp cho lời gọi RUN-A-CYCLE. Trong hai tình huống năy, người ta gọi ngay lập tức thủ tục SOLVE với tham đối thứ nhất lă bối cảnh của việc xử lý PB (tiến triển của FACTSBASE vă/hoặc của PROBLEMSTACK) bởi RUN-A-CYCLE, vă tham đối thứ hai lă toăn bộ RULESBASE. Sau đđy, ta gọi R lă lời gọi năy đối với thủ tục SOLVE.
Trường hợp 2 :
Nếu lời gọi cuối cùng R năy đối với SOLVE trả về ‘success’, thủ tục SOLVE hiện hănh trả về ‘success’ ở mức cao hơn. Nếu không, việc xử lý phải phđn biệt tuỳ theo thủ tục RUN- A-CYCLE đê nhận biết PB như lă một hănh động kết thúc, nghĩa lă một băi toân sơ khởi không thể phđn tâch được, hoặc đê được dự kiến phđn tâch.
Trường hợp 3 :
trường hợp năy, sự thất bại của lời gọi R đối với SOLVE có nghĩa cần phải xem xĩt lại việc đặt PB văo đầu danh sâch PROBLEMSTACK : lúc năy, thủ tục SOLVE hiện hănh trả về ‘failure’ ở mức cao hơn.
Trường hợp 4 :
Nếu PB không lă một hănh động kết thúc, thì PB phải phđn tâch được. Như vậy, thủ tục RUN-A-CYCLE đê khởi động một luật để phđn tâch PB, đặt kết quả phđn tâch của PB văo đầu danh sâch PROBLEMSTACK vă trả về danh sâch con của RULESBASE có phần tử đầu tiín lă luật vừa được khởi động. Trong trường hợp năy, lời gọi R đối với SOLVE không thănh công do có sự xuất hiện câc băi toân con của PB. Vì vậy, cần thử tìm một phđn tâch khâc đối với PB : bối cảnh đê tồn tại trước lời gọi RUN-A-CYCLE được khôi phục vă xuất hiện một lời gọi mới đối với SOLVE. Tham đối thứ nhất của lời gọi năy đối với SOLVE lă danh sâch câc luật nhận được từ tham đối của SOLVE hiện hănh, sau khi lấy đi luật đê thử.