主要参考资料:‘Production Matching for Large Learning Systems’。
1.join node的问题。
论文给的示例,产生式规则形如:
if (<x> on <y>) (<y> in (z)) then action
其中,(<x> on <y>)是第一个condition,简称c1,(<y> in <z>)是第二个condtion,简称c2,那么,对于这条产生式规则而言,需要有一个join node,将c1和c2进行合并,本质上也就是,在分别满足c1和c2的wme集合里,看看能不能找到合适<y>变量,使得一部分wme能同时满足c1和c2。
因为c1和c2只有一个共同的变量<y>,所以只需要一个join node。
情况一:如果c1和c2有两个共同变量呢?
比如1: if (<x> <y> <z>) (<x> on <y>) then action
这里的c1 = (<x> <y> <z>) (<x> ), c2 = (<x> on <y>)。c1,任意wme都符合这个condition,没有实际意义,但在语法上是成立的,合法的。此时,c1和c2就有两个变量。
比如2:if (<x> in <z>) (<x> on <y>) then action
<x>和<y>是否可以有多种关系?即可以是in也可以是on。
比如3:if (A <y> <z>) (B <y> <z>) (A marry B )then action
A和B有两种同样的特征,且A和B是marry关系。
在这种情况下,join node该如何设定?
情况二,如果c1的变量在后续更多的condtion出现呢?
比如: if (<x> on <y>) (<x> in <z>) (<t> move <y>) then action
此时,第一个join node需要处理变量<x>。第三个condition (<t> move <y>),跟第一个condition是相关的,如何处理比较合适?
to be continue。