第一章 绪 论 1 、指派问题的背景及意义 指派问题又称分配问题,其用途非常广泛,比如某公司指派 n 个人去做 n件事,各人做不同的一件事,如何安排人员使得总费用最少
若考虑每个职工对工作的效率(如熟练程度等),怎样安排会使总效率达到最大
这些都是一个企业经营管理者必须考虑的问题,所以该问题有重要的应用价值
虽然指派问题可以用 0-1 规划问题来解,设 X(I,J)是 0-1 变量, 用 X(I,J)=1表示第I 个人做第J 件事, X(I,J)=0 表示第I 个人不做第J 件事
设非负矩阵 C(I,J)表示第I 个人做第J 件事的费用, 则问题可以写成 LINGO 程序 SETS: PERSON/1
N/; WORK/1
N/; WEIGHT(PERSON, WORK): C, X ; ENDSETS DATA: W=… ENDDATA MIN=@ SUM(WEIGHT: C*X); @FOR(PERSON(I): @SUM(WORK(J):X(I,J))=1); @FOR(WORK(J): @SUM(PERSONM(I):X(I,J))=1); @FOR(WEIGHT: @BIN(X)); 其中 2*N 个约束条件是线性相关的, 可以去掉任意一个而得到线性无关条件
但是由于有 N^2 个 0-1 变量, 当 N 很大时,用完全枚举法解题几乎是不可能 1 的
而已有的0-1 规划都是用隐枚举法做的,计算量较大
对于指派问题这种特殊的0-1 规划,有一个有效的方法——匈牙利算法,是1955 年W
Kuhn利用匈牙利数学家D
König 的二部图G 的最大匹配的大小等于G 的最小顶点覆盖的大小的定理提出的一种算法,这种算法是多项式算法,计算量为O(N3)
匈牙利算法的基本原理是基于以下两个定理
定理1 设C=(Cij)n×n是指派问题的效益矩阵,若将