Controlled non uniform random generation of decomposable structures
Abstract
Consider a class of decomposable combinatorial structures, using different types of 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 such that for all and . 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 equals . We address this problem by weighting the atoms with a -tuple 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 arithmetic operations to draw structures from the -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 and . Lastly, we give an algorithm in for the inverse problem, {\it i.e.} computing the frequencies associated with a given -tuple of weights, and an optimized version in 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 (). We give a algorithm for generating structures, which simplifies into a for regular specifications.
Keywords
Cite
@article{arxiv.1006.0423,
title = {Controlled non uniform random generation of decomposable structures},
author = {Alain Denise and Yann Ponty and Michel Termier},
journal= {arXiv preprint arXiv:1006.0423},
year = {2010}
}