Dijkstra演算法java實現

2021-07-03 02:31:47 字數 799 閱讀 4836

看到網上的dijkstra演算法寫的都好複雜,我自己就簡單的寫了乙個,例子為書上的例子。

public class dijkstra ,,,

,,};//存放的為頂點所在陣列的id和頂點名稱

mapv = new hashmap();

//不存放源點

"v0");

v.put(1,"v1");

v.put(2,"v2");

v.put(3,"v3");

v.put(4,"v4");

v.put(5,"v5");

sets = new hashset();

//s中存放尚未找到最短路徑的頂點的id

s.addall(v.keyset());

int minpath;

int id;

int removeid;

iteratorit = null;

for(int i=0; iremoveid = 0;

minpath = integer.max_value;

it = s.iterator();

while(it.hasnext())

}if(minpath == integer.max_value)

s.remove(removeid);

system.out.println("源點v0到頂點" + v.get(removeid) + "的最短距離為:" + arcs[0][removeid]);

it = s.iterator();

while(it.hasnext()) }}

}}

Dijkstra最短路徑演算法的java實現

迪傑斯特拉演算法是由荷蘭計算機科學家狄克斯特拉於1959 年提出的,因此又叫狄克斯特拉演算法。是從乙個頂點到其餘各頂點的最短路徑演算法,解決的是有向圖中最短路徑問題。迪傑斯特拉演算法主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。如下圖 令graph v,e 為乙個帶權無向圖。gr...

單源最短路徑(dijkstra演算法)php實現

做乙個醫學專案,當中在病例評分時會用到單源最短路徑的演算法。單源最短路徑的dijkstra演算法的思路例如以下 如果存在一條從i到j的最短路徑 vi.vk,vj vk是vj前面的一頂點。那麼 vi.vk 也必然是從i到k的最短路徑。dijkstra是以最短路徑長度遞增,逐次生成最短路徑的演算法。比如...

最短路徑之Dijkstra演算法的概念與實現

要找出最短路徑,其實就是從起點遍歷所有能到達的頂點,然後計算他們的權重。dijkstra演算法核心在於邊的鬆弛 relax 可以想象成一根繃緊的橡皮筋,讓它放鬆下來。即是計算源點 s 經過當前點 v 到目標點 w 的權重,如果比目標點 w 之前的權重要小,就替換掉。最終的結果就是生成一顆最小路徑樹。...