【问题标题】:Predicting path on a directed acyclic graph在有向无环图上预测路径
【发布时间】:2012-11-05 11:50:53
【问题描述】:

我遇到了一个问题,想知道是否可以预测最终结果。

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

如何获胜:到达没有出边的节点的玩家输了。

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

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

在这种情况下,如果我在节点 D 或 B 并选择通往节点 E 的边,那么我会赢,所以玩家 2 会卡在节点 E。

*距离无所谓

【问题讨论】:

  • 如果你能“看到”整个图表,你就可以。如果您只看到当前节点,则没有。
  • 是的,您可以看到整个图表。让我看看我能不能放一张图片

标签: algorithm graph


【解决方案1】:

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

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

  • 如果从 N 到失败节点有一条边,则 N 为获胜节点。
  • 否则,N 为失败节点。

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

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

【讨论】:

    【解决方案2】:

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

    您可以查看一些min-max algorithms 来指导您的游戏策略。有了这些,您可以递归地确定谁将获胜,方法是从最后开始并返回,确定 DAG 的每个子 DAG 的获胜者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      相关资源
      最近更新 更多