繁体   English   中英

访问有向循环图中每个节点的算法

[英]Algorithm to visit every node in a directed cyclic graph

正如标题所说,我有一个包含循环且有向的图。 它紧密相连,因此没有“卡住”的危险。 给定一个起始节点,我想找到访问每个节点的路径(理想情况下是最短的,但这不是我要优化的路径)。

值得一提的是,该图中的许多节点经常双向连接 - 即它几乎是无向的。 我想知道是否有修改后的 DFS 可能适用于这个特定用例?

如果没有,我应该查看 Held-Karp 算法吗? 访问一次和返回起点限制不适用于我。

最简单的方法可能是任意选择一个根并计算 G 上的 BFS 树(即从根到其他顶点的路径)和 G 转置上的 BFS 树(即从其他顶点到根的路径) )。 然后对于每个其他顶点,您可以通过交替树路径导航到根和从根导航。 这种方法有各种快速优化。

另一种可能性是在由状态当前节点 × 访问节点集组成的搜索空间上使用 A*,启发式等于尚未访问的节点数。 最坏情况下的运行时间与 Held-Karp 相当(您也可以在运行 Floyd-Warshall 以形成完整的非对称距离矩阵后应用它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM