14,399 research outputs found
Boltzmann samplers for random generation of lambda terms
Randomly generating structured objects is important in testing and optimizing
functional programs, whereas generating random -terms is more specifically
needed for testing and optimizing compilers. For that a tool called QuickCheck
has been proposed, but in this tool the control of the random generation is
left to the programmer. Ten years ago, a method called Boltzmann samplers has
been proposed to generate combinatorial structures. In this paper, we show how
Boltzmann samplers can be developed to generate lambda-terms, but also other
data structures like trees. These samplers rely on a critical value which
parameters the main random selector and which is exhibited here with
explanations on how it is computed. Haskell programs are proposed to show how
samplers are actually implemented
Combinatorial and stochastic properties of ranked tree-child networks
Tree-child networks are a recently-described class of directed acyclic graphs
that have risen to prominence in phylogenetics (the study of evolutionary trees
and networks). Although these networks have a number of attractive mathematical
properties, many combinatorial questions concerning them remain intractable. In
this paper, we show that endowing these networks with a biologically relevant
ranking structure yields mathematically tractable objects, which we term ranked
tree-child networks (RTCNs). We explain how to derive exact and explicit
combinatorial results concerning the enumeration and generation of these
networks. We also explore probabilistic questions concerning the properties of
RTCNs when they are sampled uniformly at random. These questions include the
lengths of random walks between the root and leaves (both from the root to the
leaves and from a leaf to the root); the distribution of the number of cherries
in the network; and sampling RTCNs conditional on displaying a given tree. We
also formulate a conjecture regarding the scaling limit of the process that
counts the number of lineages in the ancestry of a leaf. The main idea in this
paper, namely using ranking as a way to achieve combinatorial tractability, may
also extend to other classes of networks
Uniform random sampling of planar graphs in linear time
This article introduces new algorithms for the uniform random generation of
labelled planar graphs. Its principles rely on Boltzmann samplers, as recently
developed by Duchon, Flajolet, Louchard, and Schaeffer. It combines the
Boltzmann framework, a suitable use of rejection, a new combinatorial bijection
found by Fusy, Poulalhon and Schaeffer, as well as a precise analytic
description of the generating functions counting planar graphs, which was
recently obtained by Gim\'enez and Noy. This gives rise to an extremely
efficient algorithm for the random generation of planar graphs. There is a
preprocessing step of some fixed small cost. Then, the expected time complexity
of generation is quadratic for exact-size uniform sampling and linear for
approximate-size sampling. This greatly improves on the best previously known
time complexity for exact-size uniform sampling of planar graphs with
vertices, which was a little over .Comment: 55 page
Random-bit optimal uniform sampling for rooted planar trees with given sequence of degrees and Applications
In this paper, we redesign and simplify an algorithm due to Remy et al. for
the generation of rooted planar trees that satisfies a given partition of
degrees. This new version is now optimal in terms of random bit complexity, up
to a multiplicative constant. We then apply a natural process
"simulate-guess-and-proof" to analyze the height of a random Motzkin in
function of its frequency of unary nodes. When the number of unary nodes
dominates, we prove some unconventional height phenomenon (i.e. outside the
universal square root behaviour.)Comment: 19 page
Polynomial tuning of multiparametric combinatorial samplers
Boltzmann samplers and the recursive method are prominent algorithmic
frameworks for the approximate-size and exact-size random generation of large
combinatorial structures, such as maps, tilings, RNA sequences or various
tree-like structures. In their multiparametric variants, these samplers allow
to control the profile of expected values corresponding to multiple
combinatorial parameters. One can control, for instance, the number of leaves,
profile of node degrees in trees or the number of certain subpatterns in
strings. However, such a flexible control requires an additional non-trivial
tuning procedure. In this paper, we propose an efficient polynomial-time, with
respect to the number of tuned parameters, tuning algorithm based on convex
optimisation techniques. Finally, we illustrate the efficiency of our approach
using several applications of rational, algebraic and P\'olya structures
including polyomino tilings with prescribed tile frequencies, planar trees with
a given specific node degree distribution, and weighted partitions.Comment: Extended abstract, accepted to ANALCO2018. 20 pages, 6 figures,
colours. Implementation and examples are available at [1]
https://github.com/maciej-bendkowski/boltzmann-brain [2]
https://github.com/maciej-bendkowski/multiparametric-combinatorial-sampler
Controlled non uniform random generation of decomposable structures
Consider a class of decomposable combinatorial structures, using different
types of atoms \Atoms = \{\At_1,\ldots ,\At_{|{\Atoms}|}\}. We address the
random generation of such structures with respect to a size and a targeted
distribution in of its \emph{distinguished} atoms. We consider two
variations on this problem. In the first alternative, the targeted distribution
is given by real numbers \TargFreq_1, \ldots, \TargFreq_k such that 0 <
\TargFreq_i < 1 for all and \TargFreq_1+\cdots+\TargFreq_k \leq 1. We
aim to generate random structures among the whole set of structures of a given
size , in such a way that the {\em expected} frequency of any distinguished
atom \At_i equals \TargFreq_i. We address this problem by weighting the
atoms with a -tuple \Weights of real-valued weights, inducing a weighted
distribution over the set of structures of size . We first adapt the
classical recursive random generation scheme into an algorithm taking
\bigO{n^{1+o(1)}+mn\log{n}} arithmetic operations to draw structures from
the \Weights-weighted distribution. Secondly, we address the analytical
computation of weights such that the targeted frequencies are achieved
asymptotically, i. e. for large values of . We derive systems of functional
equations whose resolution gives an explicit relationship between \Weights
and \TargFreq_1, \ldots, \TargFreq_k. Lastly, we give an algorithm in
\bigO{k n^4} for the inverse problem, {\it i.e.} computing the frequencies
associated with a given -tuple \Weights of weights, and an optimized
version in \bigO{k n^2} in the case of context-free languages. This allows
for a heuristic resolution of the weights/frequencies relationship suitable for
complex specifications. In the second alternative, the targeted distribution is
given by a natural numbers such that
where is the number of undistinguished atoms.
The structures must be generated uniformly among the set of structures of size
that contain {\em exactly} atoms \At_i (). We give
a \bigO{r^2\prod_{i=1}^k n_i^2 +m n k \log n} algorithm for generating
structures, which simplifies into a \bigO{r\prod_{i=1}^k n_i +m n} for
regular specifications
An Efficient generic algorithm for the generation of unlabelled cycles
In this report we combine two recent generation algorithms to obtain a
new algorithm for the generation of unlabelled cycles. Sawada's
algorithm lists all k-ary unlabelled cycles with fixed
content, that is, the
number of occurences of each symbol is fixed and given a priori.
The other algorithm, by the authors, generates all
multisets of objects with given total size n from any admissible
unlabelled class A. By admissible
we mean that the class can be specificied using atomic classes,
disjoints unions, products, sequences, (multi)sets, etc.
The resulting algorithm, which is the main contribution of this paper,
generates all cycles of objects with given total size n from any
admissible class A. Given the
generic nature of the algorithm, it is suitable for inclusion in
combinatorial libraries and for rapid prototyping. The new algorithm
incurs constant amortized time per generated cycle, the constant only
depending in the class A to which the objects in the cycle belong.Postprint (published version
Counting and Generating Terms in the Binary Lambda Calculus (Extended version)
In a paper entitled Binary lambda calculus and combinatory logic, John Tromp
presents a simple way of encoding lambda calculus terms as binary sequences. In
what follows, we study the numbers of binary strings of a given size that
represent lambda terms and derive results from their generating functions,
especially that the number of terms of size n grows roughly like 1.963447954.
.. n. In a second part we use this approach to generate random lambda terms
using Boltzmann samplers.Comment: extended version of arXiv:1401.037
- …