最短路徑之Dijkstra演算法

2021-08-20 15:23:42 字數 1438 閱讀 1605

using system;

namespace dijkstra演算法

, ,,,

,};//路徑圖

static int places = (int)math.sqrt(map.length);//獲取地點數;

static int shortest = new int[places]; //存放從start到其他節點的最短路徑

static boolean visited = new boolean[places]; //標記當前該頂點的最短路徑是否已經求出,true表示已經求出

static string path = new string[places];//記錄路徑

static int map2 = new int[places];//記錄a的連線情況

static void main(string args)

for (int i = 0; i < places; i++)

console.readkey();

}/// /// 輸出路徑

///

///

///

public static string displayresult(int index)

/// /// 表示a-e六個地點

///

public enum place

/// /// 將原矩陣顯示

///

public static void displaymap()

console.write("\r\n");

for (int i = 0; i < places; i++)

console.write("\r\n");}}

private static void dijkstra_alg(int start)

// todo auto-generated method stub

// 初始化,第乙個頂點求出

shortest[start] = 0;

visited[start] = true;

for (int count = 0; count != places - 1; count++)

else

path[i] = (place)i + "-";}}

}//正確的圖生成的矩陣不可能出現k== m的情況

if (k == m)

shortest[k] = min;

visited[k] = true;

//以k為中心點,更新start到未訪問點的距離

最短路徑 之Dijkstra演算法

dijkstra演算法dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for in...

最短路徑 之Dijkstra演算法

dijkstra演算法 dijkstra 鄰接矩陣 int n,e maxv maxv int dis maxv pre maxv pre用來標註當前結點的前乙個結點 bool vis maxv void dijkstra int s if u 1 return visit u true for i...

最短路徑之Dijkstra演算法

這裡,我們想要得出節點a 節點1 到節點b 節點5 的最短路徑,就是怎麼走可以使得權重值的和最小,每一條邊都有乙個權重。今天我們介紹的d演算法就是解決這類問題的,這是一種貪心演算法,每次只取權重和最小的點,通過不斷加入節點,來更新源節點a到各個節點的最短路徑,直到所有節點遍歷完。演算法步驟 1 定義...