非加权图中邻接列表中的最短路径

时间:2011-12-17 19:45:17

标签: java algorithm shortest-path adjacency-list

首先,我想确保我的结构正确。 据我所知,表示图形的邻接列表如下所示:

an adjacent list

AdjList是一个ArrayList,其中每个元素都是一个对象。每个对象都包含一个ArrayList,用于表示连接的顶点。因此,例如,在上图中,Vertext 1(AdjList中的第一个索引)连接到AdjList的索引2,4和5处的顶点。这种邻接表的表示是否正确? (ps:我知道索引从0开始,为了简单/轻松,我把1放在这里。)

如果正确,我应该使用哪种算法来找到两个顶点之间的最短路径?

3 个答案:

答案 0 :(得分:4)

没有算法可以为您提供两个顶点之间的最短路径。您可以使用:

  1. Dijkstra's algorithm找到一个顶点和所有其他顶点之间的最短路径(然后选择你需要的那个)。
  2. Roy-Floyd algorithm找到所有可能的顶点对之间的最短路径。
  3. 链接还包括伪代码。

答案 1 :(得分:2)

以下是java中Dijkstra's shortest path算法的示例以及解释

答案 2 :(得分:1)

你可以使用Dijkstra和Floyd Warshall。对于未加权的图,假设每条边的权重为1并应用算法。