访问图表中所有节点,重复访问次数最少

时间:2009-04-14 00:50:02

标签: search graph-theory path-finding

我有一个基于图块的地图,其中几个图块是墙,其他图块是可步行的。可行走的瓷砖构成了我想在路径规划中使用的图形。我的问题是他们是否有任何好的算法来查找访问图中每个节点的路径,从而最大限度地减少重复访问?

例如:

map example http://img220.imageshack.us/img220/3488/mapq.png

如果底部黄色瓷砖是起点,则访问所有重复次数最少的瓷砖的最佳路径是:

path example http://img222.imageshack.us/img222/7773/mapd.png

此路径中有两次重复访问。更糟糕的路径是在第一个交叉路口左转,然后回溯三个已经访问过的地块。

我不关心终端节点,但起始节点很重要。

感谢。

编辑:

我在我的问题中添加了图片,但在查看时看不到它们。他们在这里:

http://img220.imageshack.us/img220/3488/mapq.png

http://img222.imageshack.us/img222/7773/mapd.png

此外,在图表中我需要这个,因为永远不会出现min重复= 0的情况。也就是说,要踩到地图中的每个图块,玩家必须至少穿过他自己的路径一次。

2 个答案:

答案 0 :(得分:1)

你的措辞很糟糕 - 它可以减少NP完全问题。如果你可以减少重复访问次数,那么你可以将它们推到0然后你会得到Hamiltonian Cycle。哪个是solvable,但很难。

答案 1 :(得分:0)

这听起来好像可以映射到旅行商问题上......因此很可能最终完成NP并且没有有效的确定性算法。

查找路径非常简单 - 找到(或最小)跨越子树,然后执行深度/广度优先遍历。找到最佳路线是非常困难的。

您可以使用其中一种动态优化技术来尝试并聚合一个相当不错的解决方案。

除非最小生成子树的某些属性可用于生成最佳路径......但我不记得足够的图论。