逻辑前瞻

你可以使用逻辑与(&&)和逻辑或(||)运算符来创建布尔规则集,作为专家系统应用程序的一部分。在此类应用程序中,你将规则与提示用户输入信息的节点组合在一起。

参见逻辑与。

参见逻辑或。

例如,以下节点定义集创建了确定患者是否感冒的专家系统的一部分。

Cold:= Runny Nose&&Slight Fever
Runny Nose:=askyesno("Does the patient have a runny nose?")
Slight Fever:=Temperature>=99&&Temperature<=102
Temperature:=asknumber("What is the patient's temperature?")

第一个定义包含一条规则,如果患者既有流鼻涕又有轻微发烧,则该规则为真。下一个定义是定义轻微发烧的规则。其余两个定义向用户呈现问题,要求输入数字(asknumber)或要求回答是/否问题(askyesno)。

参见 asknumber。

参见 askyesno。

假设这些定义是更大医疗诊断系统的一部分。此外,假设用户之前已回答了 Temperature 问题并指出患者体温为 104。然后,在计算节点 Cold 时,你希望应用程序识别出 Cold 永远不可能为真,因此不要询问患者是否流鼻涕。你可以使用逻辑前瞻来实现这一点。

逻辑前瞻是 DScript 的一项功能,它控制逻辑与和逻辑或运算符的行为。具体来说,此功能防止应用程序提示用户提供不需要的信息。

在计算布尔表达式时,DScript 扫描整个逻辑树,以确定是否有任何方法可以在不询问用户输入的情况下计算结果。如果无法计算出解决方案,DScript 会询问一个问题,然后重复扫描。

逻辑前瞻让你构建基于规则的应用程序,而无需担心向用户提问的顺序。此外,你不必担心冗余逻辑。DScript 只询问必要的问题。

参见布尔运算符