Hostname: page-component-8448b6f56d-sxzjt Total loading time: 0 Render date: 2024-04-23T10:14:04.061Z Has data issue: false hasContentIssue false

The resource constrained shortest path problem implemented in a lazy functional language

Published online by Cambridge University Press:  07 November 2008

Pieter H. Hartel
Affiliation:
Department of Computer Systems, University of Amsterdam, The Netherlands(Email: pieter@fwi.uva.nl)
Hugh Glaser
Affiliation:
Department of Electronics and Computer Science, University of Southampton, UK (Email: hg@ecs.soton.ac.uk)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

The resource constrained shortest path problem is an NP-hard problem for which many ingenious algorithms have been developed. These algorithms are usually implemented in Fortran or another imperative programming language. We have implemented some of the simpler algorithms in a lazy functional language. Benefits accrue in the software engineering of the implementations. Our implementations have been applied to a standard benchmark of data files, which is available from the Operational Research Library of Imperial College, London. The performance of the lazy functional implementations, even with the comparatively simple algorithms that we have used, is competitive with a reference Fortran implementation.

Type
Articles
Copyright
Copyright © Cambridge University Press 1996

References

Aneja, Y. P., Aggarwal, V. and Nair, L. P. K. (1983) Shortest chain subject to side constraints. Networks, 13(2): 295302.CrossRefGoogle Scholar
Beasley, J. E. and Christofides, N. (1989) An algorithm for the resource constrained shortest path problem. Networks, 19(4): 379394.CrossRefGoogle Scholar
Bird, R. S. (1984) Using circular programs to eliminate multiple traversals of data. Acta informatica, 21(3): 239250.CrossRefGoogle Scholar
Christofides, N. (1975) Graph Theory: An algorithmic approach. Academic Press.Google Scholar
Dongarra, J. J. (1994) Performance of various computers using standard linear equations software. Technical report CS-89-85, Computer Science Department, University of Tennessee, February.Google Scholar
>Reeves, C. R. (ed.) (1993) Modern Heuristic Techniques for Combinatorial Problems. Blackwell Scientific.Google Scholar
Hammond, K., Burn, G. L. and Howe, D. B. (1993) Spiking your caches. In: Hammond, K. and O'Donnell, J. T., editors, Functional Programming pp. 5868.Springer-Verlag.Google Scholar
Handler, G. Y. and Zang, I. (1980) A dual algorithm for the constrained shortest path problem. Networks, 10(4): 293310.CrossRefGoogle Scholar
Harrison, R. (1993) Abstract Data Types in Standard ML. Wiley.Google Scholar
Harrison, R. and Glass, C. A. (1992) Dynamic programming in a pure functional language. Technical report CSTR 92-02, Department of Electrical and Computer Science, University of Southampton.Google Scholar
Hartel, P. H., Glaser, H. W. and Wild, J. M. (1994) Compilation of functional languages using flow graph analysis. Software—Practice and Experience 24(2): 127173, February.CrossRefGoogle Scholar
Hudak, P., Peyton Jones, S. L. and Wadler, P. L. (eds.) (1992) Report on the programming language Haskell – a non-strict purely functional language, version 1.2. ACM SIGPLAN Notices, 27(5): R1R162, May.Google Scholar
Hughes, R. J. M. (1985) Lazy memo-functions. In: Jouannaud, J.-P., editor, 2nd Functional Programming Languages and Computer Architecture: Lecture Notes in Computer Science 201, pp. 129146. Nancy, France, September. Springer-Verlag.CrossRefGoogle Scholar
Kashiwagi, Y. and Wise, D. S. (1991) Graph algorithms in a lazy functional programming language. Technical report 330, Computer Science Department, Indiana University, Bloomington, Indiana, April.Google Scholar
King, D. J. and Launchbury, J. (1993) Functional graph algorithms with depth first search (preliminary summary). In: Hammond, K. and O'Donnell, J. T., editors, Functional Programming, pp. 145155. Springer-Verlag.Google Scholar
Turner, D. A. (1985) Miranda: A non-strict functional language with polymorphic types. In: Jouannaud, J.-P., editor, 2nd Functional Programming Languages and Computer Architecture: Lecture Notes in Computer Science 201, pp. 116, Nancy, France, September. Springer-Verlag.Google Scholar
Wadler, P. L. (1990) Comprehending monads. In: Lisp and Functional Programming, pp. 6178., Nice, France, July. ACM.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.