算法题解:计算两个顶点之间的所有可能路径(JAVA代码)
计算有向图中两个顶点之间存在的路径总数。这些路径不包含循环路径。
例如在上图中,计算从顶点A到顶点E的所有可能路径。
结果为:从A点到E点存在4条路径。分别为:
- A -> E
- A -> B -> E
- A -> C -> E
- A -> B -> D -> C -> E
算法分析
这个问题可以通过回溯来解决,也就是说,我们选择一条路径并开始沿着它走,如果它能够引导我们到达目的地顶点,那么我们计算路径并回溯到另一条路径。如果路径不能引导我们到达目标顶点,我们就放弃路径。
回溯如下所示:
红色顶点是源顶点,浅蓝色顶点是目标,其余路径是中间路径或废弃路径。
与此相关的问题:现在如果我们在C和B之间再加一个边,它将形成一个循环(B->D->C->B)。因此,我们可以循环任意次数,得到一条新的路径,因为这个循环,会有无限多的路径。