A polynomial algorithm for b-matchings: an alternative approach
Information Processing Letters
A faster strongly polynomial minimum cost flow algorithm
STOC '88 Proceedings of the twentieth annual ACM symposium on Theory of computing
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Handbook of combinatorics (vol. 1)
Mesh refinement via bidirected flows: modeling, complexity, and computational results
Journal of the ACM (JACM)
Complexity and Modeling Aspects of Mesh Refinement into Quadrilaterals
ISAAC '97 Proceedings of the 8th International Symposium on Algorithms and Computation
STOC '83 Proceedings of the fifteenth annual ACM symposium on Theory of computing
Matching algorithms.
Implementing weighted b-matching algorithms: insights from a computational study
Journal of Experimental Algorithmics (JEA)
Hi-index | 0.00 |
We present a case study on the design of an implementation of a fundamental combinatorial optimization problem: weighted b-matching. Although this problem is well-understood in theory and efficient algorithms are known, only little experience with implementations is available. This study was motivated by the practical need for an efficient b-matching solver as a subroutine in our approach to a mesh refinement problem in computer-aided design (CAD).The intent of this paper is to demonstrate the importance of flexibility and adaptability in the design of complex algorithms, but also to discuss how such goals can be achieved for matching algorithms by the use of design patterns. Starting from the basis of the famous blossom algorithm we explain how to exploit in different ways the flexibility of our software design which allows an incremental improvement of efficiency by exchanging subalgorithms and data structures.In a comparison with a code by Miller and Pekny we also demonstrate that our implementation is even without fine-tuning very competitive. Our code is significantly faster, with improvement factors ranging between 15 and 466 on TSPLIB instances.