[rust-022] 关于rete算法的几个讨论

主要参考资料:‘Production Matching for Large Learning Systems’。

1.join node的问题。 

论文给的示例,产生式规则形如:

if ( on ) ( in (z)) then action

其中,( on )是第一个condition,简称c1,( in )是第二个condtion,简称c2,那么,对于这条产生式规则而言,需要有一个join node,将c1和c2进行合并,本质上也就是,在分别满足c1和c2的wme集合里,看看能不能找到合适变量,使得一部分wme能同时满足c1和c2。

因为c1和c2只有一个共同的变量,所以只需要一个join node。

情况一:如果c1和c2有两个共同变量呢?

比如1: if ( )  ( on ) then action

这里的c1 = ( ) ( ), c2 = ( on )。c1,任意wme都符合这个condition,没有实际意义,但在语法上是成立的,合法的。此时,c1和c2就有两个变量。

比如2:if ( in )  ( on ) then action

是否可以有多种关系?即可以是in也可以是on。

比如3:if (A  )  (B ) (A marry B )then action

A和B有两种同样的特征,且A和B是marry关系。

在这种情况下,join node该如何设定?

情况二,如果c1的变量在后续更多的condtion出现呢?

比如: if (  on  )  ( in ) ( move ) then action

此时,第一个join node需要处理变量。第三个condition ( move ),跟第一个condition是相关的,如何处理比较合适?

to be continue。

你可能感兴趣的:(rust,rust)