以最大效率访问无向图中的所有节点的算法?

时间:2019-04-16 03:42:16

标签: algorithm graph graph-theory graph-algorithm path-finding

所以我有以下布局:

graph representation

目标是通过移动白球来收集所有黄色块。我正在尝试提出一种算法,该算法可以计算出一条有效的路径,但是我不太确定从哪里开始。

最初,我想到了Djikstra和A *之类的路径查找算法,但它们似乎与我的目标不符。我还考虑过汉密尔顿路径,该路径更接近我想要的路径,但似乎仍无法解决问题。

对于可以使用哪种算法的任何建议,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的问题在文学上有一个经典名称,它是最小汉密尔顿行走问题。当心不要将其与最小的哈密顿路径问题(“表兄弟”)相混淆,因为它更出名,而且难度更大(发现哈密顿行走可以在多项式时间内完成,找到哈密顿路径是NP完全的)。 。旅行商问题是最小哈密顿路径问题(路径而不是步行)的别称。

关于此问题的资源很少,但是您可以看看1980年由Takamizawa,Nishizeki和Saito撰写的名为“一种用于在图中找到短的封闭式跨步走的算法”的文章。它们提供了多项式找到这样一条路径的算法。

如果论文有点难以理解,或者算法太复杂而难以实现,那么我建议您选择christofides algorithm,因为它运行在多项式时间内,并且效率很高(如果我还记得的话,是2的近似值。

另一种可能的方法是采用贪婪算法,例如最近的未访问的neigbor算法(从某处开始,转到尚未走过的最近节点,重复直到每个人都走过为止)。
从根本上说,我认为最简单,也许最好的简单方法就是贪婪。