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