是否有可能在多项式时间内找到从s到t(s,t是顶点)的所有可能路径?如果它是一个可能的算法呢?
答案 0 :(得分:0)
在多项式时间内,可以枚举图中所有那些可以成为从s到t的路径的一部分的节点和边。例如,在图表中
s --> a --> t
\
\--> b
这些节点是{a},因为没有从s到t的路径经过b。
还可以枚举必须在任何上的那些节点和边缘 在多项式时间内从s到t的路径。
只要在多项式时间内不允许循环,您也可以计算从s到t的路径数;例如,当图形是非循环的或者放入限制时,您只计算不包含循环的路径,在多项式时间内。
但是你不能在多项式时间内明确地枚举从s到t的所有非循环路径,因为它们可以指数多个。即使在非循环图中,例如
o o o o
/ \ / \ / \ / \
s o o o ... o t
\ / \ / \ / \ /
o o o o
假设图形从左到右是方向性的;如果其中有n个钻石,则从s到t有2个 n 路径。
从s到t找到最长的路径是NP-hard,即没有多项式算法。
从s到t计算非相交路径的最大数量也是NP难的,也就是说,如果要枚举从s到t的一组路径,那么就没有了集合中任意两条路径之间的公共边缘。