匈牙利算法的描述
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(一)、修正矩阵,使每行每列中都有零元素:
1.如果最终目标是求最大效能,那么改变所有元素的符号;
2.每行各元素都减去该行的最小元素;
3.每列各元素都减去该列的最小元素;
(二)、对矩阵进行试分配,对其中的零元素作标记:
4.对所有行和列作无标记处理;
5.从首行开始逐行处理,若该行只有一个0元素没有标记,就对该0元素标记△,并对该0同一列的0元素标记×;重复上述过程直到不能再进行标记为止;
6.从首列开始逐列处理,若该列只有一个0元素没有标记,就对该0元素标记△,并对该0同一行的其它0元素标记×;重复上述过程直到不能再进行标记为止;
7.三种情况的判断:
(1)每行都有一个△,其对应的元素就是最优解,输出△对应的元素,退出;
(2)不是每行都有△,但所有0都已标记,转8;
(3)如有多于2行或2列至少有2个没有标记的0,就对其中任一个0标△,并对同行同列的其他0标记×,转5;
(三)、作覆盖所有零元素的最少直线:
8.对无△的行作标记对号;
9.对标记对号行上的所有有0的列标记对号,无论该0标记什么;
10.对标记对号列上的所有有△的行标记对号;
11.重复9和10直到标记结束;
12.对无标记对号的行划横线,对有标记对号的行划竖线;
(四)、产生新的效能矩阵,使零元素移动:
13.在无直线覆盖的元素中找最小值d;
14.未画横线的行的所有元素减d;
15.已划竖线的列的所有元素加d;
16.转4。