我正在查看从特定节点开始的图表中唯一 x 长度路径的数量。
但是我有一个限制,即在任何路径上都不会多次访问任何节点。
例如,请参考以下图表:
如果我追踪从5开始的3条长度路径的数量。
答案是9。
5 -> 2 -> 1 -> 3
5 -> 2 -> 4 -> 3
5 -> 2 -> 4 -> 7
5 -> 4 -> 2 -> 1
5 -> 4 -> 3 -> 1
5 -> 4 -> 7 -> 6
5 -> 6 -> 7 -> 4
5 -> 7 -> 4 -> 2
5 -> 7 -> 4 -> 3
注意我只与答案一致(9)而非特定路径。
我尝试使用adjacency matrix来获取 x 的强大功能来提供路径数量,但我无法确定如何解释唯一的节点限制。
我也尝试使用depth-first search,但节点数量和 x 的大小使得这种做法变得不可行。
编辑:与BFS混淆的DFS(谢谢Nylon Smile& Nikita Rybak)。
答案 0 :(得分:10)
这是NP-Hard。
从汉密尔顿路径减少。
给定一个哈密顿路径存在的图,我们需要检查......
为每个顶点运行算法,路径长度为n-1。任何非零回报都对应于哈密尔顿路径,反之亦然。
所以基本上,如果你找到一个多项式时间算法来解决你的问题,那么你有一个多项式时间算法来解决哈密顿路径问题,有效证明P = NP!
注意:这假设x是输入。
如果x是固定的(即与图中的顶点数无关),那么你有O(n ^ x)时间算法,它在P中,但对于中等大小的x来说仍然是不切实际的。
答案 1 :(得分:3)
这个问题是#P(解决方案的数量)中的计数问题,而不是NP中的决策问题(是或否)。
Moron的reduction仍然可以证明问题是#P-Complete,因为Hamilton Paths也是#P-complete。