【问题标题】:Visit all nodes in a graph with least repeat visits访问图中重复访问最少的所有节点
【发布时间】:2009-04-14 00:50:02
【问题描述】:

我有一个基于图块的地图,其中几个图块是墙壁,而其他图块是可步行的。可步行的瓷砖构成了我想在路径规划中使用的图表。我的问题是他们有什么好的算法可以找到访问图中每个节点的路径,最大限度地减少重复访问?

例如:

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

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

【问题讨论】:

标签: search graph-theory path-finding


【解决方案1】:

你的措辞很糟糕——它可以简化为一个 NP 完全问题。如果您可以最大限度地减少重复访问,那么您可以将它们推到 0,然后您将拥有一个 Hamiltonian Cycle。这是solvable,但很难。

【讨论】:

    【解决方案2】:

    这听起来像是可以映射到旅行推销员问题上......因此很可能最终是 NP 完全的,并且没有已知的有效确定性算法。

    查找路径相当简单——找到一个(或最小的)跨度子树,然后进行深度/广度优先遍历。找到最佳路线真的很困难。

    您可以使用其中一种动态优化技术来尝试收敛到一个相当好的解决方案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 2010-11-25
      • 2021-05-17
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多