java實(shí)現(xiàn)關(guān)鍵路徑算法 java十大算法
Dijkstra(Dijkstra)算法是一種典型的最短路徑路由算法,用于計(jì)算從一個(gè)節(jié)點(diǎn)到所有其他節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是從頭到尾展開。Dijkstra一般有兩種表達(dá)方式,一種是永久和臨時(shí)標(biāo)記,另一
Dijkstra(Dijkstra)算法是一種典型的最短路徑路由算法,用于計(jì)算從一個(gè)節(jié)點(diǎn)到所有其他節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是從頭到尾展開。Dijkstra一般有兩種表達(dá)方式,一種是永久和臨時(shí)標(biāo)記,另一種是開放的,閉表模式采用開閉表模式,采用貪心法的算法策略,一般過程如下:
1。聲明兩個(gè)集合,open和close,open用于存儲(chǔ)尚未遍歷的節(jié)點(diǎn),close用于存儲(chǔ)已遍歷的節(jié)點(diǎn)
2。在初始階段,將初始節(jié)點(diǎn)置于關(guān)閉狀態(tài),將所有其他節(jié)點(diǎn)置于打開狀態(tài)
3。以初始節(jié)點(diǎn)為中心逐層遍歷,得到離指定節(jié)點(diǎn)最近的子節(jié)點(diǎn),將其放入閉合點(diǎn),計(jì)算路徑,直到閉合點(diǎn)包含所有子節(jié)點(diǎn)。代碼示例如下:node對(duì)象用于封裝節(jié)點(diǎn)信息,包括名稱和子節(jié)點(diǎn)[Java]view plain copy public class node{private string name private Map
我將告訴您如何從過去的經(jīng)驗(yàn)中系統(tǒng)地學(xué)習(xí)Java
!1. 我們必須堅(jiān)持不懈地忍受孤獨(dú)。如果我們做不到這一點(diǎn),我們最好不要學(xué)
!2. 為了有豐富的資源,我有一套完整的java學(xué)習(xí)視頻和文檔。我想注意我的私人信息獲取。
3. 有一個(gè)能隨時(shí)解決你問題的朋友,白點(diǎn)就是把你引向起點(diǎn)!如果你有任何問題,如果有人長(zhǎng)時(shí)間回答,你將無法快速學(xué)習(xí)
!如果你想學(xué)Java,看看你能不能做到以上三點(diǎn)
拓?fù)渑判虻膶?shí)現(xiàn)步驟:AOV網(wǎng)構(gòu)造拓?fù)湫蛄械耐負(fù)渑判蛩惴ㄖ饕茄h(huán)執(zhí)行以下三個(gè)步驟,直到?jīng)]有度為0的頂點(diǎn)為止;(1) 選擇度為0的頂點(diǎn)并輸出;(2)從網(wǎng)絡(luò)中刪除該頂點(diǎn)和所有輸出邊;(3)循環(huán)后,如果輸出頂點(diǎn)數(shù)較少,如果網(wǎng)絡(luò)中的頂點(diǎn)數(shù)等于網(wǎng)絡(luò)中的頂點(diǎn)數(shù),則輸出循環(huán)信息;否則,輸出頂點(diǎn)序列是一個(gè)拓?fù)湫蛄?。尋找關(guān)鍵路徑的算法:(1)輸入e弧<J,K>建立AOE網(wǎng)絡(luò)的存儲(chǔ)結(jié)構(gòu)。(2) 從震源點(diǎn)V1開始,設(shè)ve(1)=0,求ve(J)2<=J<=n。(3)從交匯點(diǎn)VN開始,設(shè)VL(n)=ve(n),求VL(I)1<=I<=n-1。(4) 根據(jù)每個(gè)頂點(diǎn)的VE和VL值,計(jì)算每個(gè)弧s(activity)的最早開始時(shí)間e(s)和最晚開始時(shí)間l(s),其中e(s)=l(s)是關(guān)鍵activity。