The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Data Structures and Correctness of Programs
Journal of the ACM (JACM)
Combining Algebraic and Algorithmic Reasoning: An Approach to the Schorr-Waite Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
A bounded storage algorithm for copying cyclic structures
Communications of the ACM
Copying list structures using bounded workspace
Communications of the ACM
An efficient machine-independent procedure for garbage collection in various list structures
Communications of the ACM
Correctness-preserving program transformations
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Data Structure Techniques
The evolution of list-copying algorithms and the need for structured program verification
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On Backtracking and Greatest Fixpoints
Proceedings of the Fourth Colloquium on Automata, Languages and Programming
Development of the Schorr-Waite Algorithm
Program Construction, International Summer Schoo
Abstractions, instantiations, and proofs of marking algorithms
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Program abstraction and instantiation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
The best known linear-time list marking algorithms also require a linear amount of workspace. Algorithms working in bounded workspace have been obtained only by allowing quadratic execution time or by restricting the list structures to trees. We improve on this here by deriving a new linear-time, bounded workspace marking algorithm that works for dags. The algorithm is derived using correctness-preserving program transformations, which prove the correctness of the algorithm. Our derivation of the marking algorithm provides an example where this method has actually been used to derive a new, more efficient algorithm, rather than just to establish the correctness of a previously known algorithm.