Python遞迴解決AOE網路最長路關鍵路徑的問題

2021-07-01 20:31:50 字數 1759 閱讀 8441

一鼓作氣,再來一發

這是某同學在某公司的宣講會中筆試部分的一題,如下圖:

如圖:每乙個專案都有完成時間和若干個前置條件,求總專案(或每乙個專案)的最短完成時間。

上**:

class pro:

def __init__(self,pro_id,require_time,previous,pro_list):

self.pro_id = pro_id

self.require_time = require_time

self.previous = previous

#self.status = false

# def test(self):

# for item in self.previous:

# if pro_list[item].status == false:

# return false

# return true

def showself(self):

print self.id,self.require_time,self.previous,#self.status,

# def pro_finish(self):

# self.status = true

def run(self):

total = 0

tmp =

if self.pro_id == 0:

return 0

a = len(self.previous)

for x in range(a):

print tmp

total = max(tmp)

print total

return total

pro_list =

pro_0 = pro(0, 0, [0], pro_list)

# pro_0.status = true

#init the pro_list

pro_1 = pro(1, 4, [0], pro_list)

pro_2 = pro(2, 3, [1], pro_list)

pro_3 = pro(3, 2, [1], pro_list)

pro_4 = pro(4, 5, [2], pro_list)

pro_5 = pro(5, 3, [3,4,8], pro_list)

pro_6 = pro(6, 1, [4], pro_list)

pro_7 = pro(7, 3, [5,6], pro_list)

pro_8 = pro(8, 5, [1], pro_list)

pro_9 = pro(9, 4, [7], pro_list)

total_time = pro_9.run() #此處為總專案,也可以是單個專案

print "total_time:",total_time

執行結果:

[4]4

[6]6

[4]4

[7]7

[12]

12[4]

4[9]

9[9, 15, 12]

15[4]

4[7]

7[12]

12[13]

13[18, 16]

18[22]

22total_time: 22

活動網路 AOE網路

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

AOE網路和關鍵路徑

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

AOE網路的關鍵路徑問題

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