枚举两个顶点之间所有简单路径在一般情况下需要指数级的时间,因为在这些顶点之间可能存在指数级数量的简单路径。但是,如果我们只关心那些出现在两个端点间至少一个简单路径上的顶点呢?
也就是说:给定一个无向图和两个不同的顶点,是否存在一个多项式时间算法来找到连接它们之间至少一个简单路径的每个顶点? 这并不是连通性;死胡同和盲路是被排除在外的,但支路和汇流路径可以被考虑。
我发现编写一个看起来能解决此问题的算法非常容易,但在某些情况下会失败或者在病态情况下需要指数运行时间。
更一般地说:在一个图中给定两个不相交的顶点集,是否存在一个多项式时间算法来找到所有从第一个集合中的一个顶点到第二个集合中的一个顶点之间的简单路径上的顶点?
(如果有一个非常明显的解决方案,请原谅我的孤陋寡闻。这当然应该存在。)