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

问题描述 投票:0回答:1

所以我有以下布局:

graph representation

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

最初我考虑过像Djikstra和A *这样的路径查找算法,但它们似乎不符合我的目标。我也考虑过哈密尔顿路径,它更接近我想要但仍然似乎没有解决问题。

可以理解关于可以使用何种算法的任何建议。

algorithm graph graph-theory graph-algorithm path-finding
1个回答
1
投票

你的问题在文学中有一个经典的名字,这是最小的哈密尔顿步行问题。小心不要把它误认为最小的汉密尔顿路径问题,它的“堂兄”,因为它更有名,而且更加困难(找到哈密尔顿步行可以在多项式时间内完成,找到哈密顿路径是NP完全的) 。旅行商问题是最小哈密顿路径问题的另一个名称(路径,而不是步行)。

关于这个问题的资源非常少,但是你可以看看Takamizawa,Nishizeki和Saito从1980年开始的一篇名为“用于在图中找到一个短的封闭跨越行走的算法”的文章。他们提供了一个多项式算法来查找这样的道路。

如果论文有点难以阅读,或算法太复杂而无法实现,那么我建议你去christofides algorithm,因为它在多项式时间运行,并且在某种程度上是有效的(如果我是2近似的话)牢记)。

另一种可能的方法是选择一个贪婪的算法,比如最近的未访问的neigbor算法(从某个地方开始,到最近的步行中不在行走的节点,重复直到每个人都在散步)。 实际上,我认为最简单也许最简单的解决方案就是变得贪婪。

© www.soinside.com 2019 - 2024. All rights reserved.