Pyke 逻辑编程入门(9):规则
2010-03-11 07:20
459 查看
规 则
从概念上讲,规则很简单:if
A
B
C
then
D
E
它的意思是:“如果A、B、C是真的,则D、E也是真的”。通常叫做 if-then 规则。
A、B、C、D、E 是什么?
它们是简单的事实陈述。具体地说,它们是以模式为参数的广义的陈述语句。以后会有更多的解释。
规则的 if 和 then 这两部分,包含着一个或多个事实或目标,即广义的陈述语句。
处理 if 子句中的“前提条件”
在 if 子句中的前提条件,是广义陈述句,它们与已知的一个或多个事实相匹配。Pyke 通过回溯的方式,尝试每个可能的匹配。因此,同一规则可能多次适用成功,每次成功匹配的是不同的事实。
回溯
注意,回溯发生的过程,是处理规则 if 子句“列表”中的那些前提之时:如果 Pyke 证明某前提成立:
Pyke 将继续处理列表中的下一个前提。
列表中的最后一个前提证明成立,则该规则适用成功。
如果 Pyke 证明某前提失败:
Pyke 会退回上一个前提处,尝试证明它的其他途径。这里是新过程的起点,是否继续回退,要看上一个前提是否另有再试的可能。
列表中的第一个前提证明失败,则该规则适用失败。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202010/13/98fe2cb9babccb2ab2aab8dbffbd3cd0.png)
回溯流程图
在规则的 if 子句的“前提列表”中,是进还是退、是上还是下,取决于前提的证明是成功还是失败。在列表中往后退,尝试别的证明办法,这个过程叫做回溯。
推理
规则保存在规则库中,各有不同的具体内容。规则之间没有嵌套和显性关联。Pyke 必须自己设法来解决规则之间的整合,以完成某些大型任务。 Pyke 用的办法叫做“推理”,它有两种不同的方式:应用正向推理规则,要求规则库已经激活。
正向推理规则可以断言新的事实,可以激活更多的规则库。
当你的程序要求 Pyke 证明某个具体目标时,使用反向推理规则(例如,向 Pyke 询问)。
应用这些规则,是为了回答某个问题,而非断言新事实,或者激活更多的规则库。
反向推理规则,还能汇集 Python 函数,形成具体的“调用顺序图”或叫做“方案图”的程序,以处理实际问题。
注 意
正向推理规则和反向推理规则,可以处于同一规则库中。二者有不同语法形态,Pyke 能据此分辨它们。
相关文章推荐
- Pyke 逻辑编程入门(10):规则之“正向推理”
- Pyke 逻辑编程入门(11):规则之“反向推理”
- Pyke 逻辑编程入门(15):知识库之“规则库”
- Pyke 逻辑编程入门(1)
- Pyke 逻辑编程入门(16):知识库之“问题库”
- Pyke 逻辑编程入门(17):知识库之“特别库”
- Pyke 逻辑编程入门(4):模式匹配 之“文字模式”
- Pyke 逻辑编程入门(5):模式匹配 之“模式变量”
- Pyke 逻辑编程入门(6):模式匹配 之“元组模式”
- Pyke 逻辑编程入门(7):模式匹配之“两个模式的匹配”
- Pyke 逻辑编程入门(2):表示事实的陈述句
- Pyke 逻辑编程入门(8):模式匹配之“病理学问题的答案”
- Pyke 逻辑编程入门(14):知识库之“事实库”
- Pyke 逻辑编程入门(13):知识库
- Pyke 逻辑编程入门(3):模式匹配
- Pyke 逻辑编程入门(12):“方案”
- DLL动态链接库编程入门之四:MFC规则DLL(下)
- DLL动态链接库编程入门之三:MFC规则DLL(上)
- DLL动态链接库编程入门之三:MFC规则DLL(上)
- 6.2bash编程入门之逻辑运算和条件判断