数据结构表示节点之间的路径长度?

时间:2012-06-08 04:14:04

标签: java graph artificial-intelligence

好吧我是Java的新手,我问的是这个问题,因为我确信有一个更好的简单方法可以解决这个问题,那些经验丰富的人可能会给我一些指示。

我有一张城市图表,它们之间有路径长度。我正在尝试使用Java构建一个算法,从起始城市到目的地城市,寻找最短路径。每个城市都有一个名称和地图坐标。更具体地说,我将使用A *算法,但这对我的问题(可能)并不重要。

我的问题是我试图想出一个很好的方法来表示节点以及它们之间的长度路径。

我能想到的最简单的方法是创建一个巨大的二维方阵,每个城市由一个索引表示,连接城市可以用它们在数组中相交的位置来表示。我为每个城市分配了一个索引#。在数组值中,0将在没有连接的地方进行,距离将在有连接的地方。

我还将有一个带有“index”属性的city子类,其索引值在数组中。这样做的缺点是要弄清楚哪些城市有连接,必须有额外的步骤来查找城市索引在数组中的内容,还必须查找哪个连接城市具有连接索引。

有没有更好的方式来代表这个?

2 个答案:

答案 0 :(得分:2)

另一种方法是使用Node结构存储指向相邻节点的所有指针。

E.g。

如果您的数据结构中有这样的内容

   A   B   C

A  /   0   1

B  0   /   1

C  1   1   /

在新结构中它将是

A: [C]
B: [C]
C: [AB]

与2D阵列方法相比,这种方式需要更长的时间来检查两个节点是否已连接,但使用的空间更小

答案 1 :(得分:1)

考虑...

class Node {
  List<Link> link;
  String cityName;
}
class Link {
  Node destinationCity;
  Long distance;
}