解决分配问题的匈牙利算法

匈牙利方法是为解决所谓“分配问题”,“指派问题”等数学问题的方法。这类问题的一般性叙述为:

 

  有n个问题要分配给n个人去完成。第i个人完成第j项任务的成本为Cij。问:如何分配任务,能使总成本最小?

应用举例

  引入变量Xij,Xij的取值表示:

 

  Xij=1,指派第个人去完成第j项任务;

 

  Xij=0,不指派第个人去完成第j项任务。

 

  假如五个人完成五项任务,“成本矩阵”为:

 

  12     7     9       7     9

 

  8       9     6       6     6

 

  7     17   12     14     9

 

  15   14     6       6   10

 

  4     10     7     10     9

 

  解题过程:

 

  每行减去其最小成本(即每行最小数):

 

  (注意黑体

 

  5 0 2 0 2

 

  2 3 0 0 0

 

  0 10 5 7 2

 

  9 8 0 0 4

 

  0 6 3 6 5

 

  最后一行与第三行的0重在第一列。把第三行,第五行减去这两行最小数2,第一列加上2。得:

 

  7 0 2 0 2

 

  4 3 0 0 0

 

  0 8 3 5 0

 

  11 8 0 0 4

 

  0 4 1 4 3

 

  即:X12=1,X23=1,X35=1,X44=1,X51=1。(其余Xij=0。)

你可能感兴趣的:(算法)