最短路徑的概念與基本資料結構

2021-08-08 02:15:43 字數 1225 閱讀 6087

最短路徑最直接的例子就是導航軟體的,從乙個地方到另乙個地方的路徑。要實現最短路徑演算法,一般使用乙個加權有向圖。即找到乙個頂點到另乙個頂點權重最小的有向路徑。

帶權有向圖的資料結構和帶權無向圖差不多,只是新增邊的時候不新增一條雙向的邊。

/**

* 加權有向圖

*@author yuli

* */

public

class

edgeweighteddigraph

}@suppresswarnings("unchecked")

public

edgeweighteddigraph(file file) throws ioexception

int edge = integer.parseint(br.readline());//讀取邊

for(int i=0;i//獲取頂點對

string vertexs = br.readline().split(" ");

int v = integer.parseint(vertexs[0]);

int m = integer.parseint(vertexs[1]);

double weight = double.parsedouble(vertexs[2]);

//生成加權邊

edge e = new edge(v, m, weight);

//將頂點對新增成一條邊

addedge(e);

}if(br!= null)

}/**

* 獲取邊數

*@return

*/public

intgete()

/*** 獲取頂點數

*@return

*/public

intgetv()

/*** 新增一條有向邊

*@param v

*@param m

*@param e

*/private

void

addedge(edge e)

/*** 獲取鄰接點

*@param v

*@return

*/public iterableadj(int v)

/*** 獲取所有邊

*@return

*/public iterableedges()

return edges;

}}

資料結構 最短路徑 Dijkstra

include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...

資料結構實驗 最短路徑

實驗內容 對於使用者隨機輸入的乙個有向帶權圖,求從某個頂點到其他各頂點的最短路徑。include define maxv 20 define inf 32 若不存在,則設的權為32,表示無窮大 typedef struct vertextype 頂點型別 typedef struct matgrap...

資料結構 最短路徑問題

求解這個問題的時候我們用到dijkstra演算法,演算法的描述如下 1 首先定義乙個陣列用來儲存從源點到每乙個頂點的最短路徑 不可達用無窮表示 使用s集合來儲存已經求得最短路徑的頂點,那麼剩餘頂點就存放在集合t中 2 第一次迭代的時候s只有源點,然後根據s集合中的頂點來更新最短路徑陣列d中的值,每次...