「抽象」《大話資料結構》第七章 關鍵路徑

2021-10-06 21:50:00 字數 1292 閱讀 1835

aoe網:在乙個表示工程的帶權有向圖中,用頂點表示事件(比如:發動機造好啦),用有向邊表示活動(比如:我正在造發動機),用邊上的權值表示活動的持續時間(比如:造發動機需要3天),這種有向圖的邊表示的活動的往,就是aoe網。

這個網有乙個源點和乙個匯點,源點到匯點的最長路徑稱作關鍵路徑,關鍵路徑上的活動稱為關鍵活動。

首先需要對拓撲排序進行改進,用於求出etv陣列。

int

*etv;

int top2;

int*stack2;

inttopologicalsortloth

(graphverter g)

top2 =0;

etv =

(int*)

malloc

(g.numvertexes *

sizeof

(int))

;for

(i =

0; i < g.numvertexes; i++

) etv[i]=0

; stack2 =

(int*)

malloc

(g.numvertexes *

sizeof

(int))

;while

(top !=0)

}if(count < g.numvertexes)

return0;

else

return1;

}

關鍵路徑演算法:

1 首先呼叫topologicalsortloth(graphverter g)函式,得到etv陣列,以及stack2棧。

2 初始化ltv陣列,全部賦值為最後乙個頂點的最早發生時間。

3 在top2不為0的情況下開始迴圈,後乙個活動最晚開始時間減去它的權值weight,得到前乙個活動的最晚開始時間(注意最後乙個頂點是一定在關鍵路徑上的,所以最早開始時間和最晚開始時間是必然相等的),都存在ltv陣列裡面。

4 開始對每乙個頂點的鄰接表進行訪問,頂點表是鄰接表的前繼頂點所在地,前繼頂點發生的時間在etv,後接頂點發生的時間點在ltv,後接頂點減去weight,可能會等於etv,如果相等,則這條邊在關鍵路徑上。

**如下

void

criticalpath

(graphverter g)

while

(top2 !=0)

}for

(j =

0; j < g.numvertexes; j++)}

}

「抽象」《大話資料結構》第七章 最短路徑

對於網圖 最短路徑是指兩頂點之間經過的邊上權值之和最小的路徑 對於非網圖 最短路徑是指兩頂點之間邊數最小的路徑,因為邊的權值都為1 演算法思想 1 首先定義兩個陣列pathmatirx i shortpathtable k pathmatirx陣列它的序號 i 代表頂點序號,而對應的元素則是最短路徑...

「抽象」《大話資料結構》第七章 拓撲排序

拓撲序列 設g v,e 是乙個具有n個頂點的有向圖,v中的頂點序列 v1,v2,v3,vn,滿足若從頂點vi到vj有一條路徑,則在頂點序列中頂點vi比在頂點vj之前。我們稱這樣的頂點序列為乙個拓撲序列。拓撲排序 就是對乙個有向圖構造拓撲序列的過程。演算法的實現是基於鄰接表的儲存結構。思想 1 定義乙...

資料結構第七章

平衡二叉樹 基本思想 在構造二叉排序樹的過程中,每插入乙個 結點時,首先檢查是否因插入而破壞了樹的平衡性,若是,則找出最小不平衡子樹,在保持二叉排序樹特 性的前提下,調整最小不平衡子樹中各結點之間的鏈 接關係,進行相應的旋轉,使之成為新的平衡子樹 平衡二叉樹 或者是一棵空的二叉排序樹,或者是具 有下...