如何查找並保存從特定節點到圖中所有其他節點的距離。請注意,圖是非循環的。
在加權圖中找到從節點到所有其他節點的距離
這是我開始使用的代碼。我傳遞一個頂點,訪問數組,兩個節點之間的距離矩陣,它最初設置爲0,
,並且dist應該跟蹤當前節點距離根節點多遠,我給出了作爲目標的
。
我使用DFS,每次我到下一個節點時,我將它們之間的距離與前面的
之間的距離相加,並將它作爲參數傳遞給下一個連接(如果存在)。
請幫我完成它。
void DFSUtil(int v,boolean visited[],ArrayList<ArrayList<Integer>> distanceMatrix,int dist,int targ)
{
// Mark the current node as visited and print it
visited[v]=true;
System.out.print(v+" ");
// Recur for all the vertices adjacent to this vertex
Iterator<Integer> i = adj[v].listIterator();
while (i.hasNext())
{
int n = i.next();
if (!visited[n]){
/* dist += distanceMatrix.get(v).get(n);
System.out.println("cur:"+v+" next:"+n+"\ndistMatrix:"+distanceMatrix.get(v).get(n)+"dist:"+dist);
distanceMatrix.get(targ).set(n,dist);
distanceMatrix.get(n).set(targ,dist);
System.out.println(distanceMatrix);
System.out.println();*/
DFSUtil(n, visited,distanceMatrix,dist,targ);
}
}
//remove dist from root to this node
}
爲什麼你不只是使用Dijkstra算法? – beaker
Bellman Ford https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm適合一個來源和所有目的地。如果圖形密集,Floyd-Warshall具有相同的效率,否則BF漸近地更快。 – Gene