活動網路 AOE網路

2021-07-27 02:13:31 字數 2430 閱讀 9364

aoe網路:如果在有向無環圖中用有向邊表示乙個工程中的各項活動,用有向邊上的權值表示活動的持續時間,用頂點表示事件,則這種有向圖叫做用邊表示活動的網路,簡稱aoe網路。

aoe網路的用途

(1)完成整個工程至少需要多長時間

(2)為縮短工程所需的時間,應加快哪些活動

關鍵路徑:完成整個工程所需的時間取決於從源點到匯點的最長路徑長度,這條路徑最長的路徑就稱為關鍵路徑。(critical path);

常用的量:(1)事件ei的最早可能開始時間,記為ee[i].是從源點到頂點ei的最長路徑長度

(2)事件ei的最遲可能開始時間,記為el[i].el[i]是在保證匯點en-1在ee[n-1]時刻完成的前提下,事件ei允許開始的最遲時間,它等於ee[n-1]減去從ei到en-1的最長路徑長度。

(3)活動ak的最早可能開始時間,記為e[k]。設活動在有向邊上,e[k]=ee[i].

(4)活動ak最遲允許開始的時間,記為l[l].   l[k]=el[j]-dur的值。

求ee[i]的遞推公式,從ee[0]=0開始,向前遞推:

ee[i]=max.

求el[i]的遞推公式。從el[n-1]=ee[n-1]開始,反向遞推

el[i]=min.

這兩個遞推公式必須在拓撲有序及逆拓撲有序的前提下進行。所謂逆拓撲有序,就是首先輸出出度為0的頂點,以相反的次序輸出拓撲排序序列,這種排序稱為逆拓撲排序。

也就是說,在計算ee[i]時,ei的所有前驅頂點ej的ee[j]都已經求出。反之,在計算el[i]時,ei的所有後繼頂點el[j]都已經求出

例題:求如圖所示的aoe網路的關鍵路徑並輸出。首先輸入頂點個數n和邊個數m,然後依次輸入每條邊

#define maxn 100///頂點數目的最大值

#define maxm 200///邊的數目的最大值

struct arcnode

;int n,m;

arcnode *list1[maxn];///出邊表的表頭指標

arcnode *list2[maxn];///入邊表的表頭指標

int count1[maxn];///各頂點的入度

int count2[maxn];///各頂點的出度

int ee[maxn];///各事件最早可能開始的時間

int el[maxn];///各事件允許開始的最遲時間

int e[maxm];///各活動最早可能開始的時間

int l[maxm];///各活動允許最晚可以開始的時間

void criticalpath();

int main()

count2[u]++;

temp2=new arcnode;///構造逆鄰接表

temp2->to=u;

temp2->dur=w;

temp2->no=i+1;

temp2->next=null;

if(list2[v]==null)

list2[v]=temp2;

else

}criticalpath();

///釋放邊煉表上各邊結點所占用的空間

for(i=0;inext;

delete temp1;

temp1=list1[i];

}while(temp2!=null)}}

return 0;

}void criticalpath()

if(ee[j]+temp1->dur>ee[k])

ee[k]=ee[j]+temp1->dur;

temp1=temp1->next;}}

}///逆拓撲排序求el;

int top2=-1;

arcnode *temp2;

for(i=0;ito;

count2[k]--;

if(count2[k]==0)

if(el[j]-temp2->durdur;

temp2=temp2->next;}}

///輸出ee[i]和el[i]

for(i=0;ito;///有向邊;

k=temp1->no;

e[k]=ee[i];

l[k]=el[j]-temp1->dur;

if(e[k]==l[k])

temp1=temp1->next;}}

///輸出e[i]和l[i]的值

***書上的測試資料竟然給錯,還好有超哥相助,多謝超哥

活動網路 用邊表示活動的網路AOE

思考把工程計畫表示為有向圖,用頂點表示事件,弧表示活動 每個事件表示在它之前的活動已完成,在它之後的活動可以開始。例 設乙個工程有11項活動,9個事件事件。v1 表示整個工程開始事件,v9 表示整個工程結束。問題 1 完成整項工程至少需要多少時間?2 哪些活動是影響工程進度的關鍵?邊表示活動 act...

AOE網路和關鍵路徑

include define inf 99999999 using namespace std aoe 在現代化管理中,人們常用有向圖來描述和分析一項工程的計畫和實施過程,乙個工程常被分為多個 小的子工程,這些子工程被稱為活動 activity 在帶權有向圖中若以頂點表示事件,有向邊表示 活動,邊上...

AOE網路的關鍵路徑問題

關於aoe網路的基本概念可以參考 資料結構 或者search一下就能找到,這裡不做贅述。尋找aoe網路的關鍵路徑目的是 發現該活動網路中能夠縮短工程時長的活動,縮短這些活動的時長,就可以縮短整個工程的時長。因此,尋找關鍵路徑就是尋找關鍵活動。接下來開始尋找乙個工程中的關鍵路徑 關鍵活動 尋找關鍵路徑...