在有向图中精确访问所有节点一次

Visit all nodes exactly once in a directed graph

本文关键字:节点 一次 有向图 访问      更新时间:2023-10-16

我有一个有向图,我想找到一个只访问每个节点一次的路径。我想以很好的复杂性来做到这一点。这可能吗?如果是,如何?

您正在寻找哈密顿路径,这是一个简单的开放路径,每个节点只包含一次。

在给定图中找到哈密顿路径是NP完全的。事实上,确定给定的(有向或无向)图是否包含哈密顿路径已经是NP完全的(通过例如顶点覆盖问题的约简来证明)。

如果你仍然想编码它,这里有一个关于github的实现。如果你想要一个快速的解决方案,也许启发式就足够了(例如,受DNA分子的启发,或者在图的子集上快速工作的解决方案。例如,如果您有 DAG,则可以执行拓扑排序,然后检查是否连接了连续的顶点。如果是这样,拓扑排序给出了哈密顿路径。