匈牙利算法 >> NoAlGo博客



匈牙利算法 » NoAlGo博客

匈牙利算法是解决二分图最大匹配的经典算法,由匈牙利数学家Edmonds提出,核心是通过寻找增广路径以求得最大匹配。
本文将介绍匈牙利算法的思想及原理解释,最后提供一个C++代码实现。

算法原理

无向图G=(V, E)中,如果顶点V可以分成不相交的子集(X, Y),使得图中每一条边所关联的两个顶点分别属于两个不同的顶点集,称G为一个二分图(二部图或偶图)。

给定二分图G,如果G的一个子图中M,M中任意两条边都不依附于同一个顶点(不相邻),则称M为一个匹配。
所有匹配中边数最大的称为最大匹配。
如果原图的所有顶点都和M中的某条边关联,称M为完备匹配,也称完美、完全匹配。

Note:
图G=(V,E)的子图是指图G1=(V1,E1),其中V1⊆V,E1⊆E。
图G=(V,E)的生成子图是指图G2=(V2,E2),其中V2=V,E2⊆E。
生成子图的顶点一定跟原图一样,而子图可以不一样。

给定一个二分图G,怎么求其最大匹配?这就是匈牙利算法解决的问题。
从一个未匹配顶点出发,交替经过非匹配边和匹配边的路径,称为交错路。
起点和终点都是未匹配顶点的交错路称为增广路。


Read full article from 匈牙利算法 » NoAlGo博客


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts