Maximum matching algorithms in igraph
Implementation plans for maximum matching algorithms (bipartite and general, weighted and unweighted) in igraph
Blueprint information
- Status:
- Not started
- Approver:
- Tamás Nepusz
- Priority:
- Medium
- Drafter:
- Tamás Nepusz
- Direction:
- Approved
- Assignee:
- Tamás Nepusz
- Definition:
- Drafting
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Whiteboard
Maximum unweighted matching in bipartite graphs: Hopcroft-Karp algorithm (O(|E| * sqrt(|V|) worst case), or push-relabel. Python implementation of the Hopcroft-Karp algorithm: [3]. Some papers suggest that push-relabel is better [4,5]
Maximum unweighted/weighted matching in general graphs: Edmonds' matching algorithm (O(|V|^4)) or the Micali-Vazirani algorithm (O(|E| * sqrt(|V|)) [1]. Kolmogorov's implementation [2].
[1] Micali, Silvio; Vazirani, Vijay (1980), "An O(V1/2E) algorithm for finding maximum matching in general graphs", 21st Annual Symposium on Foundations of Computer Science, (IEEE Computer Society Press, New York): 17–27
[2] Kolmogorov, Vladimir (2009), "Blossom V: A new implementation of a minimum cost perfect matching algorithm", Mathematical Programming Computation 1 (1): 43–67
[3] http://
[4] http://
[5] http://
Proposed interface in the C layer:
int igraph_
int igraph_