【问题标题】:Implementing Dijkstra's algorithm in Java在 Java 中实现 Dijkstra 算法
【发布时间】:2019-04-02 10:41:10
【问题描述】:

我对此进行了相当多的阅读,并且知道在 Java 中有关该算法的讨论是半频繁的。我在 Java 中实现 Dijkstra 算法的问题只是我不确定如何准备我的数据。

我在一个数组中有一组坐标,在一个矩阵中有一组 1 和 0,表示坐标所代表的点之间是否存在路径。我的问题是,如何呈现这些信息以便我可以使用 Dijkstra 搜索最佳路径?我见过很多人创建了一个“节点”类,但他们似乎从未在该节点中存储坐标。是否有一些标准化的方法来创建我只是缺少的这种结构(我想它是一个图表?)?

任何帮助将不胜感激。

【问题讨论】:

  • 节点不需要 Dijkstra 的坐标。它只需要 n 条边,每条边都有一个权重。如果你想给一个节点添加坐标,去吧。
  • 您可以使用坐标来确定节点之间的距离(毕达哥拉斯定理)并将其用作算法的边权重,但如果您希望 Stackoverflow 社区能提供大力帮助,您应该包含您的代码。看看这个页面:stackoverflow.com/help/mcve
  • 维基百科:Graph (abstract data type): Representations。快速的 Google 搜索会找到有关该主题的其他几篇文章。

标签: java graph-theory dijkstra


【解决方案1】:

有两个主要选项: 1. 您可以使用邻接矩阵,其中行和列代表您的节点。值 matrix[x, y] 必须是从 x 到 y 的权重(例如距离/成本等)。您可以使用欧几里得距离从坐标数组中计算这些值; 2. 您可以实现几个类(Node、Edge - 或者只是 Node,内部映射到另一个节点,权重作为映射值) - 它确实是一个图。

【讨论】:

  • 感谢您的帮助,这就是我要找的!
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 2022-01-05
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多