Abstract
We encourage a specific view of graph algorithms, which can be paraphrased by “iterate over the graph elements in a specific order and perform computations in each step”. Data structures will be used to define the processing order, and we will introduce recursive mapping/array definitions as a vehicle for specifying the desired computations. Being concerned with the problem of implementing graph algorithms, we outline the extension of a functional programming language by graph types and operations. In particular, we explicate an exploration operator that essentially embodies the proposed view of algorithms. Fortunately, the resulting specifications of algorithms, in addition to being compact and declarative, are expected to have an almost as efficient implementation as their imperative counterparts.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Barth, P.S., Nikhil, R.S., Arvind: M-Structures: Extending a Parallel, Non-strict, Functional Language with State, Functional Programming and Computer Architecture, LNCS 523, Springer-Verlag 1991, 538–566.
Buckley, F., Harary, F.: Distance in Graphs, Addison-Wesley, 1989.
Cruz, I.F., Mendelzon, A.O., Wood, P.T.: G+: Recursive Queries Without Recursion, Proc. 2nd Int. Conf. on Expert Database Systems, 1988, 645–666.
Ebert, J.: Effiziente Graphenalgorithmen, Akademische Verlagsgesellschaft, 1981.
Bird, R., Wadler, P.: Introduction to Functional Programming, Prentice Hall, 1988.
Hudak, P.: Arrays, Non-Determinism, Side-Effects, and Parallelism: A Functional Perspective, Proc. Workshop on Graph Reduction, LNCS 279, Springer-Verlag 1986, 312–327.
Hudak, P.: Conceptions, Evolution, and Application of Functional Programming Languages, ACM Computing Surveys, Vol. 21, No. 3, 1989, 359–411.
Kashiwagi, Y., Wise, D.S.: Graph Algorithms in a Lazy Functional Programming Language, Proc. 4th Int. Symp. on Lucid and Intensional Programming, 1991, 35–46.
Mehlhorn, K.: Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness, Springer-Verlag 1984.
Nagl, M.: GRAPL-A Programming Language for Handling Dynamic Problems on Graphs, Proc. 5th Int. Workshop on Graph Theoretic Concepts in Computer Science, Hanser Verlag 1979, 25–45.
Pape, U.: Graphen-Sprachen — Eine Übersicht, Proc. 1st Int. Workshop on Graph Theoretic Concepts in Computer Science, Hanser Verlag 1975, 11–27.
Pape, U.: GRAMAS — A Graph Manipulation System, Proc. 5th Int. Workshop on Graph Theoretic Concepts in Computer Science, Hanser Verlag 1979, 47–63.
Schwartz, J.T., Dewar, R.B.K., Dubinsky, E., Schonberg, E.: Programming with Sets — An Introduction to SETL, Springer-Verlag, 1986.
Sharir, M.: A Strong-Connectivity Algorithm and its Application in Data Flow Analysis, Computers and Mathematics with Applications 7, No. 1, 1981, 67–72.
Steele, G.L. Jr. and Hillis, D.W.: Connection Machine Lisp: Fine-Grained Parallel Symbolic Processing, ACM Conf. on Lisp and Functional Programming, 1986, 279–297.
Tarjan, R.E.: Data Structures and Network Algorithms, SIAM, 1983.
Turner, D. A.: Miranda: A Non-strict Functional Language with Polymorphic Types, Functional Programming and Computer Architecture, LNCS 201, Springer-Verlag 1985, 1–16.
Wadler, P.: A New Array Operation, Proc. Workshop on Graph Reduction, LNCS 279, Springer-Verlag 1986, 328–335.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Erwig, M. (1993). Graph algorithms = iteration + data structures?. In: Mayr, E.W. (eds) Graph-Theoretic Concepts in Computer Science. WG 1992. Lecture Notes in Computer Science, vol 657. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-56402-0_54
Download citation
DOI: https://doi.org/10.1007/3-540-56402-0_54
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-56402-7
Online ISBN: 978-3-540-47554-5
eBook Packages: Springer Book Archive