關鍵路徑的概念和演算法

2021-08-28 09:10:18 字數 2097 閱讀 9640

aoe網:在乙個表示工程的帶權有向圖中,用頂點表示事件,用有向邊表示活動,邊上的權值表示活動的持續時間,稱這樣的有向圖叫做邊表示活動的網,簡稱aoe網。aoe網中沒有入邊的頂點稱為始點(或源點),沒有出邊的頂點稱為終點(或匯點)。

aoe網的性質

⑴ 只有在某頂點所代表的事件發生後,從該頂點出發的各活動才能開始;

⑵ 只有在進入某頂點的各活動都結束,該頂點所代表的事件才能發生。

關鍵路徑:在aoe網中,從始點到終點具有最大路徑長度(該路徑上的各個活動所持續的時間之和)的路徑稱為關鍵路徑。

關鍵活動:關鍵路徑上的活動稱為關鍵活動。關鍵活動:e[i]=l[i]的活動

由於aoe網中的某些活動能夠同時進行,故完成整個工程所必須花費的時間應該為始點到終點的最大路徑長度。關鍵路徑長度是整個工程所需的最短工期。

與關鍵活動有關的量

⑴ 事件的最早發生時間ve[k]

ve[k]是指從始點開始到頂點vk的最大路徑長度。這個長度決定了所有從頂點vk發出的活動能夠開工的最早時間。

⑵ 事件的最遲發生時間vl[k]

vl[k]是指在不推遲整個工期的前提下,事件vk允許的最晚發生時間。

⑶ 活動的最早開始時間e[i]

若活動ai是由弧表示,則活動ai的最早開始時間應等於事件vk的最早發生時間。因此,有:e[i]=ve[k]

⑷ 活動的最晚開始時間l[i]

活動ai的最晚開始時間是指,在不推遲整個工期的前提下, ai必須開始的最晚時間。若ai由弧表示,則ai的最晚開始時間要保證事件vj的最遲發生時間不拖後。因此,有:l[i]=vl[j]-len

示例:

所以:

**實現:

status topologicalorder(algraph g, stack &t)

//for  *(p->info)=dut()

}

if(countreturnerror;// 該有向網有迴路

else

returnok;

}

status criticalpath(algraph g)

for(j=0; jfor(p=g.vertices[j].firstarc;  p;  p=p->nextarc)

returnok;

}

關鍵路徑 CriticalPath演算法

關鍵路徑 即決定一項工程的完成時間的路徑。如下圖所示,是一輛汽車的生產流程,其中外殼 發動機 輪子等的生產過程都是可以並行進行的,但是傳送機生產需要的時間最長,而只有所有零部件生產完成才才能進行下一步,因此圖中用紅色加粗的那一條路徑即為該工程的關鍵路徑 即決定工程的實際完成時間的路徑 critica...

關鍵路徑 CriticalPath演算法

關鍵路徑 即決定一項工程的完成時間的路徑。如下圖所示,是一輛汽車的生產流程,其中外殼 發動機 輪子等的生產過程都是可以並行進行的,但是傳送機生產需要的時間最長,而只有所有零部件生產完成才才能進行下一步,因此圖中用紅色加粗的那一條路徑即為該工程的關鍵路徑 即決定工程的實際完成時間的路徑 critica...

經典演算法之關鍵路徑

設乙個工程有11項活動,9個事件,事件v1 表示整個工程開始,事件v9 表示整個工程結束。每個事件的開始必須是它之前的活動已完成。例如 事件v2,v3,v4的開始必須是活動a1,a2,a3完成了。這時我們會關注兩個問題 1 完成整個專案需要多少時間?2 哪些活動是影響工程進度的關鍵?關鍵路徑 aoe...