什么是AND并行和OR并行?

时间:2014-04-03 09:31:13

标签: parallel-processing

我正在阅读某人的论文,并且我一直在讨论“AND-parallelism”和“OR-parallelism”这两个术语。一个简单的谷歌搜索没有透露一个简单的解释。什么是“AND-parallelism”和“OR-parallelism”,它们有何不同?

2 个答案:

答案 0 :(得分:1)

假设一个逻辑编程上下文,当你有目标的结合或分离时,就有可能并行地证明所有目标。在目标结合的情况下,你谈论和平行,同时你谈论的目标的脱节或平行。并行性很简单,当所有目标都是独立的时(即目标的输出不用作另一个目标的输入;然而,有些情况下使用累加器传递目标仍可被视为独立目标)。在其他情况下,它很快变得棘手。顾名思义,在并行中,所有目标都必须为真,才能使结合成立。对于或平行,它足以使其中一个目标成为现实。这会导致一种变体被称为竞争性或并行性,只要您证明其中一个目标,就可以停止搜索其他目标的证据。

独立或并行和或并行都可以是隐式的,即编译器识别可以并行化或显式化证明的情况。在后一种情况下,程序员通常使用语言结构,告诉编译器哪些目标可以并行运行。隐式或并行的实现示例是YapOr。

可以使用多线程实现独立或并行和(竞争)或并行。当Prolog后端编译器使用SWI-Prolog,XSB或YAP时,Logtalk支持它。可以在Logtalk分布上找到几个独立或并行和竞争或并行的示例。 SWI-Prolog发行版​​还包括提供类似功能的库。同样有趣和有趣的是例如找到的逻辑引擎的概念。在Lean Prolog。

如果你想进一步挖掘,有很多关于这个主题的论文。我希望如果您想了解并使用这些概念,我提供了足够的信息来帮助您入门。

答案 1 :(得分:0)

这些术语出现在用Prolog(一般逻辑语言)编写的程序的并行评估中。 你可以在这里找到解释:

http://www.cs.nmsu.edu/~epontell/adventure/node12.html