Results 1 
5 of
5
Design patterns for the implementation of graph algorithms
 Masterâ€™s thesis, Technische UniversitÃ¤t
, 1996
"... While the theoretical aspects of many graph algorithms are well understood, the practical application of these algorithms imposes some problems: Typically, the implementation is bound to a specific data structure, the results and their representation are predefined etc. On the other hand, since many ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
While the theoretical aspects of many graph algorithms are well understood, the practical application of these algorithms imposes some problems: Typically, the implementation is bound to a specific data structure, the results and their representation are predefined etc. On the other hand, since many graph algorithms use other algorithms to solve subproblems, it is necessary to be able to freely choose the input and the output and/or to modify the behavior of the subalgorithms. Since the necessary freedom is normally missing from the implementation of graph algorithms, a programmer of a complex algorithm is forced to implement algorithms in an appropriated way to use them as subalgorithms. Thus, implementing complex algorithms becomes even harder resulting in relatively erroneous implementations if complex algorithms are implemented at all. It would desirable to have implementation of algorithms available which can be used as subalgorithms in a flexible way and which can be applied to arbitrary graph representations. This work introduces and discusses concepts to implement graph algorithms in a reusable fashion. With reusable it is meant that an algorithm can be used with different graph data structures and/or with modified behavior. To achieve this, components for an abstraction from the data structure are
A Software Engineering Perspective on Algorithmics
 KONSTANZER SCHRIFTEN IN MATHEMATIK UND INFORMATIK NR. 50, UNIVERSITAT KONSTANZ
, 1998
"... An algorithm component is an implementation of an algorithm which is not intended to be a standalone module, but to perform a specific task within a large software package or even within several distinct software packages. Hence, the design of algorithm components must also incorporate software eng ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
An algorithm component is an implementation of an algorithm which is not intended to be a standalone module, but to perform a specific task within a large software package or even within several distinct software packages. Hence, the design of algorithm components must also incorporate software engineering aspects. A key design goal is adaptability: this goal is important for maintenance throughout a project, prototypical development, and reuse in new, unforeseen contextes. However, efficiency must not be sacrificed. The aim of this paper is to identify concrete requirements which must be fulfilled by an algorithm component to meet these general goals. To explore what adaptability of an algorithm component really means, we will discuss an acid test: Dijkstra's algorithm for shortest paths and its application in various realistic scenarios. From this analysis, we will derive general, languageindependent design goals, which are intended to support implementations of efficient, adaptabl...
Efficient, Adaptable Implementations of Graph Algorithms
"... Efficiency, flexibility, and ease of use are desirable goals in library design. However, these goals seem to contradict each other. The Library of Efficient Algorithms and Data Structures (LEDA) focuses on efficiency and ease of use. On the other hand, we have developed concepts for the implementati ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Efficiency, flexibility, and ease of use are desirable goals in library design. However, these goals seem to contradict each other. The Library of Efficient Algorithms and Data Structures (LEDA) focuses on efficiency and ease of use. On the other hand, we have developed concepts for the implementation of algorithms which focus on efficiency and flexibility. In this paper, we present a possible combination of these concepts with LEDA, and we report computational results which estimate the resulting runtime overhead. 1. Introduction This paper systematically summarizes the technical project reports [8, 9, 17] and is in addition based on [10, 20]. All implementations in this project were done in C++ (see http://www.informatik. unikonstanz.de/Research/projects algo.html#projekt5). Many libraries offer efficient data structures and algorithms for various algorithmic problem domains. However, an implementation of an algorithm in a library need not fit seamlessly into every application. H...
Using Design Patterns for Reusable, Efficient Implementations of Graph Algorithms
, 1996
"... Software reusability is an important and difficult problem in general, and this is in particular true for graph algorithms. The usual way to address reusability of graph algorithms is to provide a standardsetting library of data structures (incl. various kinds of graphs), on which graph algorithms ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Software reusability is an important and difficult problem in general, and this is in particular true for graph algorithms. The usual way to address reusability of graph algorithms is to provide a standardsetting library of data structures (incl. various kinds of graphs), on which graph algorithms may be implemented. In this working paper, we discuss the disadvantages to this approach, and we propose a couple of domain design patterns to overcome these disadvantages. To apply design patterns, we shift the focus from data structures as the primary units of reuse to algorithms themselves. So far, our concept is highly immature, and so is this paper. In fact, this paper merely reflects the state of our discussion and is intended to serve as a base for further dicussions. We are currently implementing a case study (maximum flow problem) in C++ to evaluate our ideas empirically. 1 Introduction Efficiency vs. reusability. Besides mere correctness, there are several design criteria for go...