工作分配問題 assignment problem

2021-06-25 18:30:55 字數 670 閱讀 9346

工作分配問題 assignment problem 。匈牙利演算法是眾多用於解決線性任務分配問題的演算法之一,它可以在多項式時間內解決問題。參見:

問題描述: 

設有n件工作分配給n個人。為第i個人分配工作j所需的費用為c[i][j] 。試設計乙個演算法,計算最佳工作分配方案,為每乙個人都分配1 件不同的工作,並使總費用達到最小。 

思路:假定乙個變數count表示工作費用總和,初始為0,變數i表示第i號工人,初始為1。n表示總的工作個數。c[i][j]表示i號工人完成j號工作的費用,x[j]表示j號工作是否被分配。

乙個基於深度遍歷的演算法如下:

void work(int i,int count)   

}

下面給出乙個基於回溯法的演算法,基本思想是:深度遍歷+剪枝。

(1) 構造狀態空間和狀態樹

(2)定義約束條件,用於剪枝

(3)深度遍歷狀態樹,遍歷過程中要根據約束條件剪枝

#includeusing namespace std;

int n,cost=0;

int x[100],c[100][100];

void work(int i,int count)

cost+=c[i][i];

}work(1,0);

cout<

工作分配問題

問題 設有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 接...

工作分配問題

problem description 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為 cij。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。設計乙個演算法,對於給定的工作費用,計算最佳工作分配方案,使總費用達到最小。input 輸入資料的第一行有1 個正整數...