【问题标题】:Searching in grid. How to choose BFS paths when cost are the same在网格中搜索。成本相同时如何选择 BFS 路径
【发布时间】:2018-03-21 03:19:15
【问题描述】:

所以我有一个类似网格的图表。假设我想从 (1,1) 转到 (3,3)。假设所有边的权重相同,BFS 将清楚地返回多条路径(总成本相同)。有没有办法选择最大化转弯的路径(在最短的路径中)?

所以在示例中 (1,1) -> (1,2) -> (1,3) -> (2,3) -> (3,3) 和 (1,1) -> (1,2) -> (2,2) -> (2,3) -> (3,3) 具有相同的长度,但第二个将是更理想的路径。

我知道我可以生成所有路径然后过滤结果。但我想知道是否有办法在搜索中做到这一点。我正在考虑更改将邻居节点推入队列的顺序。但是我无法证明它会起作用。

感谢任何帮助、提示或指导!

【问题讨论】:

  • 请参考 wiki 中的代码示例:en.wikipedia.org/wiki/Breadth-first_search
  • @FisNaN 感谢您的回复。我检查了您链接的页面。在我看来,唯一的代码示例只是一个常规的 BFS。它返回“最浅的目标”。我不明白它如何解决我的问题。我会尝试改写帖子。请澄清。
  • 我想知道是否有办法调整权重以考虑转弯?我也喜欢你对队列排序的想法。我实际上不认为你可以用香草 BFS 做到这一点。
  • @BrianStinar 感谢您的意见!如果我们调整权重,是否可以保持原来的总成本?我想要的路径仍然必须是“最短的”。我希望我们可以在 BFS 内做些什么来实现这一目标。
  • 一个。使用测试数据发布minimal reproducible example b。定量定义一个转弯(x 和 y 的变化?)

标签: graph-theory breadth-first-search


【解决方案1】:

我认为 BFS 不是在这里用于寻路的正确算法。 Vanilla BFS 不关心重量。您应该调整边缘权重以考虑转弯,然后使用Dijkstra's algorithm 之类的方法来查找最短路径,或使用Floyd–Warshall 来查找多条最短路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2023-03-09
    • 2012-11-23
    相关资源
    最近更新 更多