Abstract

A programming language extension, AGILE, for the processing of graphs within an interactive computer graphics environment, is defined. The language is intended to be used for expressing and illustrating graph-theoretic algorithms and applications. However it does not deal with the actual drawing or display of graphs; rather one is able to access an existing general-purpose graphics package. The language then is intended to be used, in conjunction with a graphics package, as a tool for the production of more specialised graphics systems: the language allows one to naturally exploit the underlying graph structure found in a wide class of problems, while a graphics environment permits the elegant display of (and interaction with) such representations. AGILE extends the host language, C, by the addition of a graph database, and operators and control structures to manipulate this database. The graph structure is composed of five basic types: nodes, edges, graphs, sets and bugs (references). A general set of operators and tests are provided, including those for entity creation and deletion, node and edge traversal and tests for equality and containment of sets and graphs. Edges may be treated as being either directed or undirected; also multiple edges between nodes and self-loops are allowed. Arbitrary values and properties may be associated with each of the basic types. In particular, since a node may have a graph as value, a graph hierarchy is possible. Graphics primitives are provided by the GPAC graphics system. Three substantial applications have been programmed in the language: a system for producing diagrams of graphs and a class of data structures, a system for animating four algorithms for finding the maximum flow in a network, and a system for animating and making films of systems dynamics models. Several examples of programmes written in AGILE are included.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call