Abstract This paper reports on the experience of implementing Shiloach and Vishkin's parallel Maxflow algorithm [7] in Concurrent PROLOG. The major difficulties in this endeavor were understanding the algorithm, which is intricate, and adapting it to the computational model of Concurrent PROLOG. In spite of the difficulties, we were able to produce a Concurrent PROLOG program that implements the algorithm and achieves the expected complexity bounds. The lack of destructive assignment in the logic program's computation model prevents PROLOG from being an efficient implementation language for many sequential algorithms. Our main conclusion is that, in concurrent algorithms, message passing is a powerful substitute for destructive assignment. It is therefore possible to write efficient Concurrent PROLOG implementations of concurrent algorithms.
[1]
Akikazu Takeuchi,et al.
Interprocess Communication in Concurrent Prolog
,
1983,
Logic Programming Workshop.
[2]
Uzi Vishkin,et al.
An O(n² log n) Parallel MAX-FLOW Algorithm
,
1982,
J. Algorithms.
[3]
Shimon Even,et al.
Graph Algorithms
,
1979
.
[4]
H. T. Kung.
Let's Design Algorithms for VLSI Systems
,
1979
.
[5]
Ehud Shapiro,et al.
Systems programming in concurrent prolog
,
1984,
POPL.
[6]
Ehud Shapiro.
Systolic Programming: A Paradigm of Parallel Processing
,
1984,
FGCS.
[7]
William B. Ackerman,et al.
Data Flow Languages
,
1899,
Computer.