【问题标题】:Find a path with zero weight sum between two vertices找到两个顶点之间权重和为零的路径
【发布时间】:2016-04-28 04:04:20
【问题描述】:

给定一个带有顶点 u 和 v 的加权 DAG,每条边的权重要么为 -1,要么为 1。如何确定是否存在从 u 到 v 且权重和为零的路径?我只能想出一个算法来计算从 u 到 v 的所有路径,然后对权重求和以查看路径是否可以满足要求。我听说过针对类似问题的 A* 方法,但我认为这个问题不应该那么复杂。有没有更好的算法来解决这个问题?

【问题讨论】:

  • 你可以使用DP来解决它,因为它是一个有向无环图。
  • 是的,也许 DP 可以解决它。但不知道子问题的样子:/

标签: algorithm graph


【解决方案1】:

考虑顶点u 和后继节点n_i,各自的边权重w_i

如果您有,则您的路径的权重为 W 从 uv

  • n_0v 的路径,权重为W - w_0,或

  • n_1v 的路径,权重为W - w_1,或

  • ...

你可以在上面的基础上做一个DP算法,并以集合的形式记忆子问题的解决方案,包含<n,w>对,意思是“有一条从nv的路径,权重为@ 987654335@。” 如果集合最后包含<u,0>,您有一个解决方案。

【讨论】:

  • 空间复杂度最坏的情况是 O(|V||E|),因为在所有路径中,不同的权重不能超过 2|E|+1 个(路径可以加权的最高值为 | E|,最低的是-|E|)。
  • 合理的解决方案。但是如何确定子问题的数量呢?
  • @haruhi93:每个不同的(顶点,总重量)对最多有一个子问题。这不是太多(见我之前的评论),所以你可以解决每个这样的对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2017-07-03
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多