Published April 5, 2020 | Version v1

Bidirectional leveled enumerators

Authors/Creators

  • 1. University of Bordeaux

Description

An enumerator $E$ outputs the elements of a sequence E = e_0, e_1, ..., one at a time. The sequence E may be finite (e_n)_{n in [0, c[} or infinite (e_n)_{n in N}.

The Enum package is part of the TRAG system which is written in Common Lisp.
The code can be found at https://idurand@bitbucket.org/idurand/trag.git and a web interface
at trag.labri.fr. The first version of the Enum package was presented at ELS2012 in Zadar (Croatia).

The first version of the package offered the possibility of creating basic enumerators (inductive or from a list) and combining them using operations like products, sequences, filters, mapping.

The topic of this paper is the enumeration of the tuples of the general cartesian product T^p = E^1 X E^2 ... X E^p of the sequences associated with p enumerators E^1, ..., E^p.
The first property that one would want is fairness: each one of the enumerators will regularly move forward. The fairness property was already achieved by the diagonal product enumerator of the 2012 version.
In this paper we address an additional property which concerns the distance between two enumerated tuples.
A 2-ordering of T^p is such that the distance between two consecutive enumerated tuples is at most 2.
The binary diagonal product of the 2012 version had the 2-ordering property.
But recursive application of this binary product to obtain T^p does not give a 2-ordering for p >= 3.
In this paper, we define bidirectional leveled enumerators and a binary product with these enumerators
such that recursive application of the binary product gives a leveled 2-ordering
which is as desired a 2-ordering.

 

Files

algo-recursif.pdf

Files (750.0 kB)

Name Size
md5:0b4cdc34cd2160e8097ae07c7488cff3
750.0 kB Preview Download