获取图中两个节点之间的随机简单路径



给定图中的起始节点和目标节点,我想在这两个节点之间找到一条简单路径。我不想要最短的路径,但需要任何随机的简单路径。我尝试使用networkx中的all_simple_paths,但这个模块似乎在返回任何内容之前计算了所有简单的路径。这需要很长时间才能运行。有没有办法只找到一条简单的路?

此外,理想情况下,我希望确保这条路径不会与任何";障碍物";。这些障碍物是来自同一个图的一组预定义的节点。有没有办法添加这个约束?

附言:我不一定需要使用networkx。我正在写的代码是用Python编写的。

您可以将其视为最小成本网络流量问题,其中您的起始节点希望将流量单位(需求=-1(发送到目标节点(需求=1(。您可以将边容量设置为1,并且您可以将所有边权重设置为0;障碍物";节点。对于这些障碍物节点,可以将所有进入或离开它们的边设置为权重为1。该算法将尝试仅使用权重为0的边来找到任何任意路径,但如果不存在仅具有权重为0边的路径,则将使用权重为1的边。

请参阅nx.min_cost_flow函数。此函数要求您将图设为有向图nx.DiGraph(如果它还没有(。

我使用RRT算法解决了这个问题。它提供了源节点和目标节点之间的随机路径,还避免了障碍。

最新更新