Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
1995
This paper discusses two applications of graph packages. Some of these packages were developed at Rensselaer [6, 10, 2]; others were developed elsewhere [5, 8]. By properly interfacing with other packages, we can solve a rich variety of graph problems. In this paper, we show how these packages can be interfaced, and provide two representative examples. In the first example, we used Nauty to generate all non-isomorphic regular graphs (undirected and unlabeled) of degree 3. We used GraphPack to draw these graphs. We also used the Maple interface to GraphPack to calculate the characteristic polynomials of these graphs. In the second example, we used GraphPack with an object oriented parallelizing compiler called HICOR [2] to display the results of different scheduling disciplines. We have also developed a new graph drawing system called Zgraph, using Motif under X Windows system [10]. Using Zgraph one can draw graphs of up to 10,000 vertices. We were also able to interface Zgraph with ...
1992
This paper describes the improvements that we have carried out on GraphPack, the system that we have developed here. These improvements are speciically four fold. We have incorporated GraphPack to communicate with other systems; speciically, Mathematica, Maple, Matlab and SetPlayer. Further, we have incorporated commands to perform graph algorithms on MasPar,a SIMD machine. A lot of display routines are added for diierent embeddings of graphs. We also incorporated a 3D display of graphs, including rotation and swapping of vertices to get a better embedding. Finally, the language LiLa and the interpreter has been enhanced so as to write application programs easier.
1999
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.
1999
by Lie-Quan Lee In this thesis I 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. I 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 objectoriented paradigm. To my father, my mother in memoriam, and my wife Yun
Software Practice and Experience, 2000
We describe a package of practical tools and libraries for manipulating graphs and their drawings. Our design, which aimed at facilitating the combination of the package components with other tools, includes stream and event interfaces for graph operations, high-quality static and dynamic layout algorithms, and the ability to handle sizable graphs. We conclude with a description of the applications of this package to a variety of software engineering tools. Rowe et al.'s graph editor, Grab[4], was the first interactive system described in the literature. It exemplified first-generation systems with hard-wired layout and display algorithms and very limited programming interfaces. As such, it lacked the degree of extensibility and reusability that were developed in later systems, but proved that a generic graph editor can be an important software engineering tool.
Proceedings of the 1996 ACM symposium on Applied Computing - SAC '96, 1996
In its basic form, a graph consists of a set of vertices and a set of edges. Infinitely many variations, however, can be defined from it. One may associate any set of attributes with the set of vertices and edges (resulting directed and undirected graphs, flow networks, finit e state diagrams, vertex weighted graphs, etc.), or associate any set of restrictions with the set of vertices and edges (resulting acyclic graphs, bipartite graphs, planar graphs, interval graphs, etc.). Various graphs have been implemented and embedded in today's software systems. In this paper, we study the issues of reusable design and propose a design and implementation of reusable graph objects using object-oriented concepts so that graph objects can be adapted to new or revised applications.
2009 IEEE International Symposium on Parallel & Distributed Processing, 2009
IASTED Multiconferences - Proceedings of the IASTED International Conference on Software Engineering, SE 2013, 2013
Internal Domain-Specific Languages (DSL) provide an elegant mechanism to reduce the code complexity of complex systems simulations programming. Many complex systems problems manifest themselves as networks. Graph analysis techniques can be employed to count the number of: separate components; circuits; paths; or distances in the network. Several other properties such as: mean and peak degree; component or community size; adjacency eigen-spectra, and so forth can also be calculated. Calculation of these properties gives a signature that can help classify a network as belonging to a particular category with known behaviours. In practice however, importing applications data into graph analysis software and managing these calculations can be complex. Domainspecific language techniques allow a high-level graph calculations language to be developed that invokes software components in a graph manipulations framework. We describe a prototype graph generation and analysis domainspecific language built using fluent interface techniques and the Java programming language. We report on: attainable code complexity reduction, framework computational performance, and software engineering directions for internals DSLs for this sort of applications problem.
2014
Abstract: This paper details the design and implementation of OCAMLGRAPH, a highly generic graph library for the programming language OCAML. This li-brary features a large set of graph data structures—directed or undirected, with or without labels on vertices and edges, as persistent or mutable data structures, etc.—and a large set of graph algorithms. Algorithms are written independently from graph data structures, which allows combining user data structure (resp. algorithm) with OCAMLGRAPH algorithm (resp. data structure). Genericity is obtained through massive use of the OCAML module system and its functions, the so-called functors. 1.1
Software Visualisation, 1996
We present several elegant methods used in GraphPack, an educational package, for three dimensional embedding of graphs, as well as a two dimensional layout method, namely barycentric embedding. After that, a program for automatic recognition of graphs is introduced. In addition, we show how graphs in GraphPack format can be exported into X g format. Finally, we describe the client/server capabilities of GraphPack designed for providing communication with other tools and application programs written in C and C++.
The focus of traditional scientific computing has been in solving large systems of PDEs (and the corresponding linear algebra problems that they induce). Hardware architectures, computer systems, and software platforms have evolved together to efficiently support solving these kinds of problems. Similar attention has not been devoted to solving large-scale graph problems. Recently this class of applications has seen increased attention. The irregular, nonlocal, and dynamic characteristics of these problems require new programming techniques to adapt them to modern HPC systems offering multiple levels of parallelism. We describe a library for implementing graph algorithms based on asynchronous execution of fine-grained, concurrent operations. Prototype implementations of two graph kernels which combine lightweight graph metadata transactions with generalized active messages demonstrate that it is possible to implement graph applications which efficiently leverage both shared-and distributed-memory parallelism.
ACM SIGPLAN Notices, 2012
ABSTRACT Algorithms in new application areas like machine learning and network analysis use "irregular" data structures such as graphs, trees and sets. Writing efficient parallel code in these problem domains is very challenging because it requires the programmer to make many choices: a given problem can usually be solved by several algorithms, each algorithm may have many implementations, and the best choice of algorithm and implementation can depend not only on the characteristics of the parallel platform but also on properties of the input data such as the structure of the graph. One solution is to permit the application programmer to experiment with different algorithms and implementations without writing every variant from scratch. Auto-tuning to find the best variant is a more ambitious solution. These solutions require a system for automatically producing efficient parallel implementations from high-level specifications. Elixir, the system described in this paper, is the first step towards this ambitious goal. Application programmers write specifications that consist of an operator, which describes the computations to be performed, and a schedule for performing these computations. Elixir uses sophisticated inference techniques to produce efficient parallel code from such specifications. We used Elixir to automatically generate many parallel implementations for three irregular problems: breadth-first search, single source shortest path, and betweenness-centrality computation. Our experiments show that the best generated variants can be competitive with handwritten code for these problems from other research groups; for some inputs, they even outperform the handwritten versions.
Graph algorithms have several important applications in fields such as computer science, software engineering, mathematics, engineering, business, and bioinformatics. Researchers and practitioners in these disciplines often need to experiment with empirical data about graphs to gain deeper insights into their properties, which may lead to general proofs. Students also need to learn and be able to implement graph algorithms for their applications. However, these individuals often have varying backgrounds and training, and they may not have a working knowledge of programming tools to implement graph algorithms. The goal of our research is to create a software system which allows users to easily create and implement graph algorithms through a simple graphical user interface, without any coding. Towards this goal, we have developed several systems that can be used to draw and manipulate graphs as well as to execute graph algorithms. The development of the general system raises a number of interesting research questions that we will discuss. To illustrate the need for experimentation with different graph algorithms, we describe some examples of our research in different areas of graph theory and computational geometry. We also describe some features of our systems that we have found useful in teaching graph theory.
Lecture Notes in Computer Science, 2000
Specification and rapid prototyping of graph manipulation software by means of PROgrammed Graph REwriting Systems (PROGRES) is a paradigm, which attracts more and more interest in various fields of computer science. Nowadays produced specifications for process modeling tools, database query languages, etc. have a typical size of about 100 to 300 printed pages. They suffer severely from the lack of any module concept. This paper introduces a module concept for the graph rewriting (transformation) language PROGRES, which is closely related to the package concept of the standardized OO modeling language UML. It supports a variety of software design patterns including the construction of "Abstract Graph Types" and "Updatable Graph Views".
2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), 2017
The purpose of the GraphBLAS Forum is to standardize linear-algebraic building blocks for graph computations. An important part of this standardization effort is to translate the mathematical specification into an actual Application Programming Interface (API) that (i) is faithful to the mathematics and (ii) enables efficient implementations on modern hardware. This paper documents the approach taken by the C language specification subcommittee and presents the main concepts, constructs, and objects within the GraphBLAS API. Use of the API is illustrated by showing an implementation of the betweenness centrality algorithm. • The domain D, the data type for the vector elements. • The size N > 0.
We describe a system that uses automated planning to synthesize correct and efficient parallel graph programs from high-level algorithmic specifications. Automated planning allows us to use constraints to declaratively encode program transformations such as scheduling, implementation selection, and insertion of synchronization. Each plan emitted by the planner satisfies all constraints simultaneously, and corresponds to a composition of these transformations. In this way, we obtain an integrated compilation approach for a very challenging problem domain. We have used this system to synthesize parallel programs for four graph problems: triangle counting, maximal independent set computation, preflow-push maxflow, and connected components. Experiments on a variety of inputs show that the synthesized implementations perform competitively with handwritten , highly-tuned code.
2008
Graph algorithms have several important applications in fields such as computer science, software engineering, mathematics, engineering, business, and bioinformatics. Researchers and practitioners in these disciplines often need to experiment with empirical data about graphs to gain deeper insights into their properties, which may lead to general proofs. Students also need to learn and be able to implement graph algorithms for their applications. However, these individuals often have varying backgrounds and training, and they may not have a working knowledge of programming tools to implement graph algorithms. The goal of our research is to create a software system which allows users to easily create and implement graph algorithms through a simple graphical user interface, without any coding. Towards this goal, we have developed several systems that can be used to draw and manipulate graphs as well as to execute graph algorithms. The development of the general system raises a number of interesting research questions that we will discuss. To illustrate the need for experimentation with different graph algorithms, we describe some examples of our research in different areas of graph theory and computational geometry. We also describe some features of our systems that we have found useful in teaching graph theory.
Graph Transformation, 2016
We show how to generate efficient C code for a high-level domain-specific language for graphs. The experimental language GP 2 is based on graph transformation rules and aims to facilitate formal reasoning on programs. Implementing graph programs is challenging because rule matching is expensive in general. GP 2 addresses this problem by providing rooted rules which under mild conditions can be matched in constant time. Using a search plan, our compiler generates C code for matching rooted graph transformation rules. We present run-time experiments with our implementation in a case study on checking graphs for two-colourability: on grid graphs of up to 100,000 nodes, the compiled GP 2 program is as fast as the tailor-made C program given by Sedgewick.
2010
Computations on unstructured graphs are challenging to parallelize because dependences in the underlying algorithms are usually complex functions of runtime data values, thwarting static parallelization. One promising general-purpose parallelization strategy for these algorithms is optimistic parallelization.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.