Prolog - 术语替换,工作流程图中的术语更改

时间:2011-07-11 12:02:41

标签: replace prolog

在这个链接(Meta Interpreter)中,我相信已经找到了一种解决我必须解决的问题的好方法,但由于我的序言非常糟糕,我首先要问的是它是否有可能我所拥有的心神。

我想根据一组规则转换工作流/图表的某些部分。图形基本上由序列(a-> b)和分割/连接组成,它们是并行的或条件的,即两个步骤在工作流程中并行运行,或者根据条件选择单个分支(条件本身不是这个级别上的问题)(并行拆分 - (a&& b) - 并行连接)等等。现在一个图形通常有节点和边缘,使用我希望摆脱边缘的术语的形式。

此外,每个节点都有一个partner属性,指定谁将执行它。

我将尝试给出一个简单的例子:

一个名为A的节点,由伙伴X执行,与一个名为B的节点连接,由伙伴Y执行。

A_X -> B_Y
seq((A,X),(B,Y))

如果我检测到这样的模式,即与不同伙伴按顺序执行两个步骤,我希望将其替换为:

A_X -> Send_(X-Y) -> Receive_(Y-X) - B_Y // send step from X to Y and a receive step at Y waiting for something from X

seq((A,X), seq(send(X-Y), seq(receive(Y-X), B)))

如果有人能给我一些指示或帮助提出解决方案,我将非常感激!

1 个答案:

答案 0 :(得分:0)

  

图形基本上由序列(a-> b)和分割/连接组成,它们是平行的或条件的,即在工作流程中并行运行两个步骤,或者根据条件选择单个分支

这听起来很像and/or graph。这些图中的Prolog算法由Ivan Bratko在Prolog Programming for Artificial Intelligence第13章中介绍。即使您的图形不是真实的和/或图形,您也可以根据自己的任务调整其中一些算法。