Introduction to algorithms
Implementing discrete mathematics: combinatorics and graph theory with Mathematica
Implementing discrete mathematics: combinatorics and graph theory with Mathematica
The Stanford GraphBase: a platform for combinatorial computing
The Stanford GraphBase: a platform for combinatorial computing
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Modification of the minimum-degree algorithm by multiple elimination
ACM Transactions on Mathematical Software (TOMS)
C++ gems
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
The algorithm design manual
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
The unified software development process
The unified software development process
Computer Solution of Large Sparse Positive Definite
Computer Solution of Large Sparse Positive Definite
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Iterative Methods for Sparse Linear Systems
Iterative Methods for Sparse Linear Systems
OoLALA: an object oriented analysis and design of numerical linear algebra
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Calculating in an object-oriented iterator-view-generator framework
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
The Matrix Template Library: Generic Components for High-Performance Scientific Computing
Computing in Science and Engineering
Concept-Based Component Libraries and Optimizing Compilers
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Designing and Implementing a General Purpose Halfedge Data Structure
WAE '01 Proceedings of the 5th International Workshop on Algorithm Engineering
User-Extensible SimplificationType-Based Optimizer Generators
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Selected Papers from the International Seminar on Generic Programming
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A flexible, low-level scene graph traversal with explorers
Proceedings of the 21st spring conference on Computer graphics
Lifting sequential graph algorithms for distributed-memory parallel computation
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An extended comparative study of language support for generic programming
Journal of Functional Programming
Algorithm library based on algorithmic cyberFilms
Knowledge-Based Systems
Algorithm Library based on Algorithmic CyberFilms
Proceedings of the 2007 conference on New Trends in Software Methodologies, Tools and Techniques: Proceedings of the sixth SoMeT_07
Motion planning for high DOF anthropomorphic hands
ICRA'09 Proceedings of the 2009 IEEE international conference on Robotics and Automation
Introducing ScaleGraph: an X10 library for billion scale graph analytics
Proceedings of the 2012 ACM SIGPLAN X10 Workshop
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Evaluation of embeddable graph manipulation libraries in memory constrained environments
Proceedings of the 2012 ACM Research in Applied Computation Symposium
Hi-index | 0.00 |
In this paper we present the Generic Graph Component Library (GGCL), a generic programming framework for graph data structures and graph algorithms. Following the theme of the Standard Template Library (STL), the graph algorithms in GGCL do not depend on the particular data structures upon which they operate, meaning a single algorithm can operate on arbitrary concrete representations of graphs. To attain this type of flexibility for graph data structures, which are more complicated than the containers in STL, we introduce several concepts to form the generic interface between the algorithms and the data structures, namely, Vertex, Edge, Visitor, and Decorator. We describe the principal abstractions comprising the GGCL, the algorithms and data structures that it provides, and provide examples that demonstrate the use of GGCL to implement some common graph algorithms. Performance results are presented which demonstrate that the use of novel lightweight implementation techniques and static polymorphism in GGCL results in code which is significantly more efficient than similar libraries written using the object-oriented paradigm.