5 2 工作分配問題

2021-10-01 18:25:32 字數 960 閱讀 5074

解決工作分配問題

有n份作業分配給n個人去完成,每人完成乙份作業。假定第i個人完成第j份作業需要花費cij時間,cij>0,1≦i,j≦n。試設計乙個回溯演算法,將n份作業分配給n個人完成,使得總花費時間最短。

首先,計算工人和任務的所有組合方式,然後對於每一種組合方式,挑選出時間最短的一種,這裡呼叫了python函式中的permutations全排列函式,返回工人和人物的所有可能的排列。

cost =

[[1,2,3,4,5],

[3,2,5,4,1],

[9,6,5,4,2],

[2,8,4,6,7],

[4,8,6,5,3]

]

矩陣元素表示第i個工人完成第j個任務需要的時間

def gettime(n,cij=cost):

index = pt(range(n),n)

task = 100

for c in index:

temp = 0

for i in range(n):

temp += cij[i]

[c[i]

]if temp < task:

task = temp

real_task = c

return task, real_task

task, real_task=gettime(len(cost))

為每個工人分配任務

print(

for i in range(len(real_task)):

print(

"第{}個工人對應的任務為第{}個".format(i+1,real_task[i]+1))

5 2 工作分配問題 30分

設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入格式 輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。輸出格式 將計算出的最小總費用輸出到螢幕。輸...

工作分配問題

問題 設有n件工作分配給n個人,將工作i分配給第j個人所需的菲傭為cij,試設計乙個演算法,為每乙個人分配一件不同的工作,並使總費用達到最小。輸入 第一行有乙個正整數n,接下來n行,每行n個數,表示工作費用。輸入 最小總費用 例子 輸入 3 10 2 3 2 3 4 3 4 5 輸出 9 inclu...

工作分配問題

時間限制 1 sec 記憶體限制 128 mb 提交 10 解決 7 您該題的狀態 已完成 提交 狀態 討論版 設有n件工作分配給n個人,將工作i分配給第j個人費用為cij,為每個人分配一件不同的工作,對於給定的工作費用,計算最佳工作分配方案,使得中費用達到最小。第一行有1個正整數 1 n 20 接...