我遇到了问题,并想知道是否有可能预测最终结果。
这是图表上的一对一(交替移动)游戏(有向无环图) 从起点或节点,玩家1选择边缘到节点v1。从节点v1,播放器2选择边缘到节点v3,依此类推。
如何获胜:一个到达没有边缘输球的节点的玩家。
是否有可能提出一种算法,无论其他玩家做什么,它都能保证获胜?
因此,起始节点是s。玩家1可以选择C或A.所以基本上,有没有办法让我根据某种算法做出决定,这可以保证我获胜?
http://i45.tinypic.com/2hs3imt.jpg
在这种情况下,如果我在节点D或B并选择到节点E的边缘,那么我将获胜,然后播放器2卡在节点E上。
*距离无关紧要
答案 0 :(得分:4)
您需要将图形的节点分为两类:获胜节点和丢失节点。获胜节点是当前玩家在该节点上具有获胜策略的节点,并且丢失节点是当前玩家将失去的节点,无论他如何玩(假设他的对手正确地玩)。由于这是一个有向无环图,所有节点都是赢或输(因为最终会到达没有输出边的节点)。
没有传出边缘的节点显然正在丢失节点。对于另一个节点N:
要对所有节点进行分类,请反向遍历节点topological order。根据上述规则对每个节点进行分类。反向拓扑顺序保证您在对N进行分类之前对从N可以到达的所有节点进行了分类。
完成后,如果起始节点是获胜节点,则有一个获胜策略:始终为丢失的节点选择边缘。
答案 1 :(得分:0)
一般来说,没有。这取决于你的图表。假设您有一个奇数个节点的简单树/链(= n个节点和n-1个边的图)。然后玩家二将永远赢,因为你不能强制获胜。
您可以查看一些min-max algorithms来指导您的游戏策略。有了这些,您可以确定谁将通过最后开始并逐步返回来递增获胜,确定DAG的每个子DAG的获胜者。