摘
要
介紹求關鍵路經的演算法,對於給出的事件結點網路,要求求出從起點到終點的所有路徑,經分析、比較後找出長讀最大的路徑,從而得出求關鍵路徑的演算法,並給出計算機上機實現的源程式。
關鍵路徑
最少時間
1:引言
通常把計畫、施工過程、生產流程、程式流程的都當成乙個工程。除了很小的工程外、一般都把工程分為若干個叫做「活動」的子工程。完成了這些「活動」的子工程,這個工程就可以完成了。
通常我們用有向圖表示乙個工程。在這種有向圖中,用頂點表示活動,用有向邊
表示活動
vi必須先於活動
vj進行。如果在無有向環的帶權有向圖中用有向邊表示乙個工程中的各項活動(
activity
),用有向邊上的權值表示活動的持續時間(
duration
),用頂點表示事件(
event
),則這種的有向圖叫做用邊表示活動的網路,簡稱
aoe(
active on edges
)網路。
aoe網路在某些工程估算方面非常有用。他可以使人們了解:(1
):研究某個工程至少需要多少時間?(2
):那些活動是影響工程進度的關鍵?
在aoe
網路中,有些活動可以並行的進行。從源點到各個頂點,以至從源點到匯點的有向路徑可能不止一條。這些路徑的長度也可能不同。完成不同路徑的活動所需的時間雖然不同,但只有各條路徑上所有活動都完成了,這個工程才算完成。因此,完成整個工程所需的時間取決於從源點到匯點的最長路徑長度,即在這條路徑上所有活動的持續時間之和。這條路徑長度就叫做關鍵路徑(
critical path
)。2:設計步驟:
1: 以某一工程為藍本,採用圖的結構表示實際的工程計畫的時間。
2:
調查以分析和**這個工程計畫個階段的時間。
3:
用調查的結果建立aoe網(
activity on edge ***work
),即邊表示活動的網路,並用圖的形式表示。
4:
用圖來儲存這些資訊。
5:
用creategraphic();
函式建立
aoe圖。
6:
用函式求出最大路徑,並列印出關鍵路徑。 7:
編寫**
8:
測試3: 設計**:
#include
#include
#include
#include
//#define projectnumber9//10
//#define plannumber 11//13
typedef struct node
edgenode;
typedef struct
vexnode;
//vexnode graphicmap[projectnumber];
void creategraphic(vexnode* graphicmap,int projectnumber,int activenumber)
printf("
某專案的開始到結束在圖中的節點輸入
/n");
printf("
如:3,4,9
回車表示第三節點到第四節點之間的活動用了
9個單位時間
/n");
for(int k=0;k}}
while(front!=rear)
}if(m
totaltime=ve[projectnumber-1];
for(i=0;i
vl[i]=totaltime;
for(i=projectnumber-2;i>=0;i--)
}i=0;
printf("|起點|
終點|
最早開始時間
|最遲完成時間|差值
|備註
|/n");
for(j=0;j
}return 1;
}void seekkeyroot()
int main()
while(ch!='s'&&ch!='e');
switch(ch)}}
4: 總結:
至此,全部的設計過程完畢,上面所有**已經在
vc6.0+win2000
平台下除錯成功。從上面的分析可以看出
,設計結果與**的相符合
. 關鍵路徑在具體的工程中有著重要的作用,當乙個
aoe網路中的關鍵路徑只有一條時,加速關鍵路徑上的任一關鍵活動,能夠加速整個工程的完成。但當乙個
aoe網路中的關鍵路徑不止一條時,加速任一關鍵活動不一定能夠加速整個工程的完成。
如方案
1與方案
2在改變關鍵路徑時整個工程的進度沒有改變。
PTA 資料結構與演算法 關鍵路徑
1.aoe圖的關鍵路徑就是最長的路徑tf 2.aoe圖的權值最大的邊 活動 一定是關鍵活動。tf 3.在aoe 網工程中,減少任一關鍵活動上的權值後,整個工期也就會相應的減小。tf 4.aoe 網工程工期為關鍵活動上的權之和。tf 5.在關鍵路徑上的活動都是關鍵活動,而關鍵活動也必在關鍵路徑上。tf...
資料結構 關鍵路徑
aov aoe都是有權無向圖,aov邊不帶權值,aoe帶權值。關鍵路徑是aoe中,開始頂點到結束頂點的所有路徑中,具有最大路徑長度的路徑成為關鍵路徑,路徑上的點是關鍵活動。1 關鍵路徑如果有多條,至提高一條關鍵路徑上的關鍵活動並不能縮短工期,必須要加快所有關鍵路徑上的關鍵活動才能加快工期。2 關鍵路...
《大話資料結構》之關鍵路徑演算法
關鍵路徑演算法是在aoe網中找出完成所有活動耗時最長的路徑的方法。程式中涉及的結構 typedef char vertextype typedef int edgetype 鄰接節點結構 typedef struct edgenode edgenode 頂點節點列表 typedef struct v...