Jump to content

Loopless algorithm

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Aubergine (talk | contribs) at 23:55, 23 July 2009 (created page). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

In combinatorics, a loopless algorithm or loopless imperative algorithm is an imperative algorithm which 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 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]

References

  1. ^ a b Ehrlich, G. (1973). "Loopless algorithms for generating permutations, combinations, and other combinatorial configuration". Journal of the ACM. 20 (3). New York, N.Y.: ACM: 500–513. ISSN 0004-5411. {{cite journal}}: Unknown parameter |month= ignored (help)
  2. ^ Knuth, D. (2005). Volume 4, Fascicle 2: Generating All Tuples and Permutations. The Art of Computer Programming. Upper Saddle River, N.J.: Addison–Wesley Professional. ISBN 0-201-85393-0. {{cite book}}: Unknown parameter |month= ignored (help)
  3. ^ a b Bird, R. (2006). Loopless functional algorithms. International Conference on Mathematics of Program Construction (MPC 06). Heidelberg, Germany: Springer. {{cite conference}}: Unknown parameter |month= ignored (help)
  4. ^ Snape, J. (2005). Loopless Functional Algorithms. Master's thesis. Oxford, U.K.: University of Oxford. OCLC 63162239. {{cite book}}: Unknown parameter |month= ignored (help)