预测有向无环图上的路径

时间:2012-11-05 11:50:53

标签: algorithm graph

我遇到了问题,并想知道是否有可能预测最终结果。

这是图表上的一对一(交替移动)游戏(有向无环图) 从起点或节点,玩家1选择边缘到节点v1。从节点v1,播放器2选择边缘到节点v3,依此类推。

如何获胜:一个到达没有边缘输球的节点的玩家。

是否有可能提出一种算法,无论其他玩家做什么,它都能保证获胜?

因此,起始节点是s。玩家1可以选择C或A.所以基本上,有没有办法让我根据某种算法做出决定,这可以保证我获胜?

http://i45.tinypic.com/2hs3imt.jpg

在这种情况下,如果我在节点D或B并选择到节点E的边缘,那么我将获胜,然后播放器2卡在节点E上。

*距离无关紧要

2 个答案:

答案 0 :(得分:4)

您需要将图形的节点分为两类:获胜节点和丢失节点。获胜节点是当前玩家在该节点上具有获胜策略的节点,并且丢失节点是当前玩家将失去的节点,无论他如何玩(假设他的对手正确地玩)。由于这是一个有向无环图,所有节点都是赢或输(因为最终会到达没有输出边的节点)。

没有传出边缘的节点显然正在丢失节点。对于另一个节点N:

  • 如果从N到丢失节点存在边缘,则N是获胜节点。
  • 否则,N是一个失败的节点。

要对所有节点进行分类,请反向遍历节点topological order。根据上述规则对每个节点进行分类。反向拓扑顺序保证您在对N进行分类之前对从N可以到达的所有节点进行了分类。

完成后,如果起始节点是获胜节点,则有一个获胜策略:始终为丢失的节点选择边缘。

答案 1 :(得分:0)

一般来说,没有。这取决于你的图表。假设您有一个奇数个节点的简单树/链(= n个节点和n-1个边的图)。然后玩家二将永远赢,因为你不能强制获胜。

您可以查看一些min-max algorithms来指导您的游戏策略。有了这些,您可以确定谁将通过最后开始并逐步返回来递增获胜,确定DAG的每个子DAG的获胜者。