產生式系統
產生式系統是給定事實與推理規則,進行自動推理的推理系統。python
產生式系統由3個部分組成:總數據庫、產生式規則、控制策略。數據庫
- 總數據庫是存放求解過程當中各類當前信息的數據結構,包括已知事實與推理過程當中獲得的結論
- 產生式規則是一個規則庫,存放形如"if <前提>, then <結論>" 的推理規則.
- 控制策略決定了推理過程當中如何應用規則,即肯定下一步應該選用什麼規則,類比於圖搜索中的圖搜索策略(DFS,BFS,etc.)
產生式系統 |
圖搜索 |
初始事實數據 |
初始節點 |
目標條件 |
目標節點 |
產生式規則 |
狀態轉換規則 問題變換規則 |
規則集 |
操做集 |
動態數據庫 |
節點(狀態/問題) |
控制策略 |
搜索策略 |
按照搜索方向,產生式系統可分爲正向推理、逆向推理和雙向推理。數據結構
例 正向推理 設$P_1,P_2,P_3,P_4$ 爲謂詞公式或命題, 初始總數據庫 $DB=\{P_1\},$ 規則庫 $R=\{R_1:P_1\to P_2, R_2:P_2\to P_3, R_3:P_3 \to P_4 \},$ 則推理步驟以下code
- $P_1 \in DB,$ 在規則庫$R$中尋找到可用的規則 $R_1:P_1\to P_2,$ 獲得 $P_2,$ 當前$DB=\{P_1,P_2\}$
- $P_2 \in DB,$ 在規則庫$R$中尋找到可用的規則 $R_2:P_2\to P_3,$ 獲得 $P_3,$ 當前$DB=\{P_1,P_2,P_3\}$
- $P_3 \in DB,$ 在規則庫$R$中尋找到可用的規則 $R_3:P_3\to P_4,$ 獲得 $P_4,$ 當前$DB=\{P_1,P_2,P_3,P_4\}$
if True:
print('hello')