【发布时间】:2010-03-23 14:56:35
【问题描述】:
我正在写一个推箱子求解器来娱乐和练习,它使用一个简单的算法(有点像 BFS 有点不同)。
现在我想估计它的运行时间(O 和 omega)。但需要知道如何计算网络中从一个顶点到另一个顶点的非循环路径数。 实际上我想要一个计算有效路径计数的表达式,在 m*n 顶点矩阵的两个顶点之间。
有效路径:
- 访问每个顶点 0 次或 1 次。
- 没有电路
例如这是一个有效的路径:
alt text http://megapic.ir/images/f1hgyp5yxcu8887kfvkr.png
但这不是:
alt text http://megapic.ir/images/wnnif13ir5gaqwvnwk9d.png
需要一种方法来计算两个顶点a 和b 之间的所有非循环路径的计数。
欢迎大家学习解决方法和技巧。
【问题讨论】:
-
可能路径的数量将比 BFS 考虑的路径数量大很多,所以我看不出它有什么帮助。 BFS 反复将相似的路径组合在一起,从而降低了复杂性。 BFS 的复杂度为 O(|V|+|E|)。
-
您想要所有路径的列表还是仅路径数?如果你想要路径的数量,你会接受一个近似值吗?
-
我不想列出它们。我想计算它们的数量而不计算它们。
-
没有。但如果您对此有任何想法,请与我们分享?
-
只是想知道,为什么这个社区维基而不是一个普通的问题?
标签: c++ algorithm math graph-theory discrete-mathematics