匈牙利算法又称KM算法,这是一个组合优化算法,
解决分配问题,维基地址:http://en.wikipedia.org/wiki/KM_algorithm
Assumption: There are n “jobs” and n “machines”.
Step 0: If necessary, convert the problem from a maximum assignment into a minimum
assignment. We do this by letting C = maximum value in the assignment matrix.
Replace each cij with C − cij . (see example 2).
Step1: From each row subtract off the row min.
Step 2: From each column subtract off the row column min.
Step 3: Use as few lines as possible to cover all the zeros in the matrix. There is no easy
rule to do this – basically trial and error.
Suppose you use k lines.
• If k < n, let m be the minimum uncovered number. Subtract m from every
uncovered number. Add m to every number covered with two lines. Go back
to the start of step 3.
• If k = n, goto step 4.
Step 4: Starting with the top row, work your way downwards as you make assignments.
An assignment can be (uniquely) made when there is exactly one zero in a row. Once
an assignment it made, delete that row and column from the matrix.
If you cannot make all n assignments and all the remaining rows contain more than
one zero, switch to columns. Starting with the left column, work your way rightwards
as you make assignments.
Iterate between row assignments and column assignments until you’ve made as many
unique assignments as possible. If still haven’t made n assignments and you cannot
make a unique assignment either with rows or columns, make one arbitrarily by
selecting a cell with a zero in it. Then try to make unique row and/or column
assignments. (See the examples below).
分享到:
相关推荐
使用java语言实现匈牙利算法。可实现任务最优分配,以及旅行商问题
Hungarian algorithm匈牙利算法matlab实现1.计算成本矩阵;2.寻找独立零;校验3.打勾划线;调用匈牙利算法主体返回最优分配结果,与最小成本
【标题】"zz.rar_hungarian algorithm_匈牙利_匈牙利算法"涉及的核心知识点是匈牙利算法,这是一门在图论中的优化算法,主要用于解决匹配问题,特别是指二分图的最大匹配问题。在计算机科学和运筹学中,匈牙利算法...
综上所述,"Hungarian algorithm + Kalman filter multitarget tracker implementation"项目巧妙地结合了这两种强大的工具,构建了一个能够在复杂环境中有效地进行多目标跟踪的系统。通过理解和应用这些技术,我们...
标题《The Assignment Problem and The Hungarian Method》和描述《关于匈牙利算法的一个文档,匈牙利算法能解决常见的矩形分配问题。》均指向同一个概念——匈牙利算法及其在解决分配问题中的应用。本文将详细介绍...
Hungarian-algorithm-By-matlab:匈牙利算法 matlab 实现
指派问题是一个经典的优化问题,常见于资源分配、任务调度等领域。在该问题中,我们需要找到一种最优的方式,将n个工人分配到n项任务,每个工人只能完成一项任务,而每项任务也只被一个工人完成。...
著名的匈牙利算法介绍,Hungarian algorithm,用于解决矩形分配问题。该文档是Springer出版图书“50 Years of Integer Programming 1958-2008”的第二章节。
匈牙利算法,又称为Kuhn-Munkres算法或KM算法,是图论中的一个经典算法,主要用于解决分配问题,特别是在匹配理论中寻找完美匹配。它最初由Edmund Kuhn和James Munkres提出,目的是在给定的赋权二分图中找到一个最大...
`Hungarian.m`文件很可能是实现了匈牙利算法的一个MATLAB版本。在MATLAB中,这样的函数通常接受一个二维数组作为输入,该数组代表了二分图的边权重,然后返回一个向量表示最大匹配的结果。具体来说,函数可能会包含...
The algorithm for munkres assignment allocation
7. **API接口**:库通常会提供用户友好的接口,如函数`hungarian()`,用于调用匈牙利算法解决匹配问题。输入可能是一个表示权重的矩阵,返回结果可能是匹配的索引对或者匹配的权重。 8. **性能优化**:Julia的性能...
【标题】"HungarianAlgorithm-src-0.11.zip"是一个与Java编程相关的压缩包,主要包含实现匈牙利算法(Hungarian Algorithm)的源代码和相关资源。这个算法是解决任务分配问题的一种有效方法,尤其在优化二分图匹配...
在二分图中,最大匹配问题(Maximum Matching in Bipartite Graphs)可利用匈牙利算法(The Hungarian Algorithm)解决。而运输网络中的最大流问题(Maximum Flow in a Transport Network)可应用Ford-Fulkerson算法...
在"Algorithm-hungarian.zip"中,我们很可能找到了一个C语言实现的匈牙利算法源代码库,名为"hungarian-master"。这个库可能包含头文件、源文件以及相关的示例程序,帮助开发者理解和应用匈牙利算法。 首先,我们要...
本项目“Hungarian-algorithm-By-matlab-master”着重于利用MATLAB实现匈牙利算法,特别针对异构网络中的信道环境建模。 首先,我们要理解什么是异构网络。异构网络是由不同类型的节点(如宏基站、微基站、Wi-Fi...
hungarian allocation algorithm for you
匈牙利算法是一种在图论中的配对方法,主要用于解决二分图的最大匹配问题。在计算机科学中,尤其是在编译器设计、任务调度和资源分配等领域有着广泛应用。这个算法得名于匈牙利数学家库恩·马尔科什(Kuhn-Munkres)...
【匈牙利算法】 匈牙利算法,也称为Kuhn-Munkres算法或KM算法,是一种在图论中用于解决赋权二分图的最大匹配问题的高效算法。该算法由Eduard Kőnig在1931年首次提出,而其现代形式则由John Kuhn和James Munkres于...
1946 蒙特卡罗方法 1947 单纯形法 1950 Krylov子空间迭代法 1957 优化的Fortran编译器 1959-1961 计算矩阵特征值的QR算法 1962 快速排序算法 1965 快速傅立叶变换 1977 整数关系探测算法 1987 快速多极算法 ...