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

2021-10-05 12:19:57 字數 3093 閱讀 9634

思考把工程計畫表示為有向圖,用頂點表示事件,弧表示活動;每個事件表示在它之前的活動已完成,在它之後的活動可以開始。

【例】設乙個工程有11項活動,9個事件事件。v1——表示整個工程開始事件,v9——表示整個工程結束。

問題:(1)完成整項工程至少需要多少時間?

(2)哪些活動是影響工程進度的關鍵?

邊表示活動 activity on edge,aoe

有向邊表示乙個工程中的各項活動,邊上的權值表示活動持續的時間(duration)

頂點表示事件(event),事件的發生說明在它之前的活動已完成,而在它之後的活動可以開始。

源點:沒有入邊的點;匯點:沒有出邊的點。

乙個工程可能有多個源點,但aoe網路中只能有乙個源點和乙個匯點。

從源點到匯點可能有多條有向路徑,路徑上各活動所需時間之和叫該路徑的路徑長度。(路徑上各活動持續時間之和)

具有最大路徑長度的路徑叫做關鍵路徑,上圖的關鍵路徑有a1,a4,a7,a10 和a1,a4,a8,a11,它們的路徑長度均為18。

關鍵路徑上的所有活動都叫做關鍵活動,對上圖的aoe,關鍵活動是a1,a4,a7,a8,a10,a11。

關鍵活動上持續時間的變化可能影響整個工程的工期。任意乙個關鍵活動延遲,整個工期都會延遲;反之,任意乙個關鍵活動縮短,整個工期會縮短。

ve(j)——表示事件vj的最早發生時間,是從源點v0到頂點vj的最長路徑長度。ve[j]決定了以頂點vj為弧尾的弧所代表的活動可以開始的最早時間。

vl(j)——表示事件vj的最遲發生時間,是工程按期完成情況下vj的最遲允許開始時間。

e(i)——表示活動ai的最早開始時間,設ai是在上,e[i]是從源點到vk的最長路徑長度,故e[i]=ve[k]。

l(i)——表示活動ai的最遲開始時間,是工程按期完成情況下ai的最遲允許開始時間。設ai在上,並且aj的持續時間為dur(),l[i]=vl[j]-dur()。

l(i)-e(i)——表示完成活動ai的時間餘量(鬆弛時間)。是活動ai的最遲允許開始時間和最早可能開始時間之差(l[i]-e[i])。

關鍵活動——關鍵路徑上的活動,即*l(i)=e(i)*的活動。

求解aoe頂點的拓撲排序序列

(1)按拓撲序列次序,從v0開始求各事件的ve[ i ]

求ve[i]的遞推公式:從ve[0]-0開始,向前遞推,ve[ j ]=max,j=1,2,……,n-1;其中,t是所有以頂點vj為弧頭的弧的集合。

(2)按逆拓撲序列次序,從vn-1開始求各事件的vl[ i ]

求vl[i]的遞推公式:從vl[n-1]=ve[n-1]開始,反向遞推,vl[ i ]=min,i=0,1,2,……,n-2;其中,t是所有以頂點vi為弧尾的弧的集合。

(3)設活動ak(k=1,2,…,e)對應帶權有向邊,它的持續時間用 dur() 表示,則有:

e[k]=ve[ i ];l[k]=vl[ j ]-dur() 。e[k]=l[k]的活動為關鍵活動

計算關鍵路徑的演算法步驟

(1)輸入n個頂點和e條帶權的有向邊,建立鄰接表結構;

(2)計算每個頂點的入度;

(3)從源點v0出發,令ve[0]=0,按拓撲有序的順序計算每個頂點的ve[ j ](j=1, 2, … n-1)。若拓撲排序中遍歷的頂點數小於n,則說明網路中存在有向環,不能繼續求關鍵路徑。

(4)從匯點vn-1出發,令vl[n-1] = ve[n-1],按逆拓撲有序順序求各頂點的vl[ i ](i=0, 1, …, n-2)

(5)根據各頂點vi的ve[ i ]和vl[ i ]值,求各條弧ak的e[k]和l[k]。

(6)輸出關鍵活動ak(e[k]= =l[k]即為關鍵活動)。

template

<

class

elemtype

>

void

statindegree

(const adjlistdirgraph

&g,int

*indegree)

template

<

class

elemtype

> status topsort

(const adjlistdirgraph

&g)while

(top!=-1

)//棧非空

}delete

indegree;

if(count

return fail;

//圖g有迴路

else

return success;

//拓撲排序成功

}

求各頂點的ve[i]和vi[i],所需時間為o(n+e),求各個活動的*e[k]和l[k]*所需時間也是o(n+e)。因此,整個演算法總共的時間復度為o(n+e)

用入度陣列能解決什麼問題?是否需要建立圖的逆鄰接表?

用入度陣列可得拓撲排序:

(1)使用鄰接鍊錶來判斷aoe網是否有環,以判斷是否能夠繼續求出關鍵活動

(2)求出每個頂點的最早發生時間ve。

逆鄰接表:可得逆拓撲排序,得到每個頂點的最晚發生時間vl。

活動網路 AOE網路

aoe網路 如果在有向無環圖中用有向邊表示乙個工程中的各項活動,用有向邊上的權值表示活動的持續時間,用頂點表示事件,則這種有向圖叫做用邊表示活動的網路,簡稱aoe網路。aoe網路的用途 1 完成整個工程至少需要多長時間 2 為縮短工程所需的時間,應加快哪些活動 關鍵路徑 完成整個工程所需的時間取決於...

網路安全的基石 網路活動可視

孫子 謀攻篇 中說 知己知彼,百戰不殆 不知彼而知己,一勝一負 不知彼,不知己,每戰必殆。意思是說,在軍事紛爭中,既了解敵人,又了解自己,百戰都不會有危險 不了解敵人而只了解自己,勝敗的可能性各半 既不了解敵人,又不了解自己,那只有每戰都有危險。伊朗最近發生的一系列 至少有35個目標 包括彈藥庫,兵...

《雲計算網路珠璣》新書有獎試讀活動

活動規則 閱讀試讀章節 雲計算網路珠璣 第六章參加活動,根據提供的話題參與討論。討論話題 1 sdn與雲計算結合有什麼優勢?2 通過硬體網路裝置提公升雲計算效能需要考慮哪些因素?3 雲計算在安全和監控領域面臨著哪些問題?4 雲計算在iaas 上有哪些商業模式?5 讀了本章節有哪些感想?試讀位址 活動...