Loopless algorithm explained
In computational combinatorics, a loopless algorithm or loopless imperative algorithm is an imperative algorithm that generates successive combinatorial objects, such as partitions, permutations, and combinations, in constant time and the first object in linear time.[1] [2] The objects must be immediately available in simple form without requiring any additional steps.[1]
A loopless functional algorithm is a functional algorithm that takes the form unfoldr step • prolog where step takes constant time and prolog takes linear time in the size of the input.[3] [4] The standard function unfoldr is a right-associative Bird unfold.[3]
Notes and References
- Ehrlich, G.. July 1973. Loopless algorithms for generating permutations, combinations, and other combinatorial configuration. Journal of the ACM. ACM. New York, N.Y.. 20. 3. 500–513. 0004-5411. 10.1145/321765.321781. free.
- Book: Knuth, D.. Donald Knuth. Volume 4, Fascicle 2: Generating All Tuples and Permutations. Addison–Wesley Professional. Upper Saddle River, N.J.. February 2005. The Art of Computer Programming. 0-201-85393-0.
- Bird, R.. Richard Bird (computer scientist). July 2006. Loopless functional algorithms. 10.1007/11783596. International Conference on Mathematics of Program Construction (MPC 06). Springer.. Heidelberg, Germany.
- Book: Snape, J.. Loopless Functional Algorithms. University of Oxford. Oxford, U.K.. September 2005. Master's thesis. 63162239.