【问题标题】:Dijsktra Graph, Shortest PathDijkstra 图,最短路径
【发布时间】:2014-08-07 11:37:51
【问题描述】:

我对图表有疑问。我的图表如下所示:

真正的问题是:我想找到两点之间“转弯”最少的路径。这是一个例子:

在这张图片中,我画了一个简单的 3x3 图形,红点和蓝点之间最短的路径是绿线,因为它只有一圈,而粉线有 3 圈。

我想相应地权衡图形的边缘,然后使用 Dijsktra 的算法找到合适的路径

【问题讨论】:

  • 你有什么代码可以展示吗?
  • 如果您将水平边称重为 1,将垂直边称重为 0.999,我认为您只需“转一圈”即可获得路径。但这只是我的直觉
  • 类似于 vivoconunxino 的想法,用A* search 启发式 h1(x,y) = ax + y 和/或 h2(x,y) = x + ay。其中一个
  • 使用基于边缘的算法并引入转弯成本函数
  • 我找到了解决方案。简单边的成本为 1,转弯边的成本为 2*(H+W) ,其中 H 是图形的高度,w 是宽度。谢谢大家;)

标签: algorithm graph language-agnostic dijkstra


【解决方案1】:

解决方案的关键是权衡“转”操作的高成本。事实上,任何大于 W + H 的值都是可用的。 虽然,我猜你是否需要修改你的问题?如果您的图表的所有单元格都可用,那么两个点之间的最短路径显然是唯一的,不需要调用像 Dijsktra 这样的最短路径算法。如果他们在同一条线上,就直走,如果不在,只需要转一圈。所以我建议你添加一些条件,比如有些点不可达,那么这个问题就变得有趣了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多