0

我想建立一个地图算法并做以下事情:

首先,在地图上创建所有点。

已经给出了哪些点是连接的以及它们之间的长度(作为整数)。

现在的问题是找到它们之间的最短连接。

因此,我要做的是为每个点创建一个对象,其中包含该特定点连接到的所有点的列表以及从原始点到该点的长度。

一个例子是:

从 A 到 g 的距离为 7

从 A 到 c 的距离为 3

其中 A 连接到 c 并且 A 连接到 g

我的问题是,如果我使用 HashMap,我在找出点是否连接时会遇到一些问题,因为 HashMap 不容易循环,有没有更简单的方法可以做到这一点,或者是否有 HashMap 的替代方法?

4

3 回答 3

3

请参阅Prim 算法Dijkstra 算法最小生成树

如果您有一组顶点(在您的情况下为一个点),并且它们之间的路径权重(在您的情况下为距离),则其 MST 仅给出连接所有顶点且距离总和最小的路径。

Prim 算法和 Dijkstra 算法可用于查找 MST。

于 2012-10-25T07:42:28.833 回答
1

我相信您正在寻找Djikstra 算法的实现(在加权图上找到最短路径)。

我认为这里的解决方案符合要求

于 2012-10-25T07:45:46.530 回答
0

既然您询问了遍历 HashMap:您应该使用迭代器来为您执行此操作:

HashMap hmap = new HashMap();
hmap.put("a", "hello world!");
hmap.put("b", "goodbye!");
hmap.put("c", 42);
Set s = hmap.entrySet();
Iterator i = s.iterator();
while (i.hasNext()) {
    System.out.println(i.next());
}
于 2012-10-25T07:48:31.220 回答