Partitioning a polygonal region into trapezoids
Journal of the ACM (JACM)
On decomposing polygons into uniformly monotone parts
Information Processing Letters
An evolution of interval graphs
Discrete Mathematics
New clique and independent set algorithms for circle graphs
Discrete Applied Mathematics
The meeting graph: a new model for loop cyclic register allocation
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
On a graph-theoretical model for cyclic register allocation
Discrete Applied Mathematics
An output sensitive algorithm for computing a maximum independent set of a circle graph
Information Processing Letters
Counting hexagonal patches and independent sets in circle graphs
LATIN'10 Proceedings of the 9th Latin American conference on Theoretical Informatics
Hi-index | 0.00 |
Circle graphs are an important class of graph with applications in a number of areas, including compiler optimization, VLSI design and computational geometry. In this article, we provide an experimental evaluation of the two most efficient algorithms for computing the maximum independent set of a circle graph. We provide details of our implementations of the algorithms of Apostolico et al. and Valiente [2003], together with time, space, and other measurements. We describe optimizations to the algorithm of Apostolico et al. that significantly reduce both its running time and its memory consumption. We also correct an error in this algorithm. In addition, we show how to restructure and simplify Valiente's algorithm, allowing us to remove redundant computations from the algorithm resulting in much improved performance. Moreover, in the case of both algorithms, when the density of the circle graph's associated interval representation is increased beyond a certain point the efficacy of the optimizations we apply increases dramatically and as a function of the density. We provide experimental results over dense and sparse random circle graphs, as well as for circle graphs that arise when performing register allocation of software pipelined loops in a compiler.