English

Combinatorial decomposition approaches for efficient counting and random generation FPTASes

Data Structures and Algorithms 2013-11-19 v2 Discrete Mathematics Combinatorics

Abstract

Given a combinatorial decomposition for a counting problem, we resort to the simple scheme of approximating large numbers by floating-point representations in order to obtain efficient Fully Polynomial Time Approximation Schemes (FPTASes) for it. The number of bits employed for the exponent and the mantissa will depend on the error parameter 0<ε10 < \varepsilon \leq 1 and on the characteristics of the problem. Accordingly, we propose the first FPTASes with 1±ε1 \pm \varepsilon relative error for counting and generating uniformly at random a labeled DAG with a given number of vertices. This is accomplished starting from a classical recurrence for counting DAGs, whose values we approximate by floating-point numbers. After extending these results to other families of DAGs, we show how the same approach works also with problems where we are given a compact representation of a combinatorial ensemble and we are asked to count and sample elements from it. We employ here the floating-point approximation method to transform the classic pseudo-polynomial algorithm for counting 0/1 Knapsack solutions into a very simple FPTAS with 1ε1 - \varepsilon relative error. Its complexity improves upon the recent result (\v{S}tefankovi\v{c} et al., SIAM J. Comput., 2012), and, when ε1=Ω(n)\varepsilon^{-1} = \Omega(n), also upon the best-known randomized algorithm (Dyer, STOC, 2003). To show the versatility of this technique, we also apply it to a recent generalization of the problem of counting 0/1 Knapsack solutions in an arc-weighted DAG, obtaining a faster and simpler FPTAS than the existing one.

Keywords

Cite

@article{arxiv.1307.2347,
  title  = {Combinatorial decomposition approaches for efficient counting and random generation FPTASes},
  author = {Romeo Rizzi and Alexandru I. Tomescu},
  journal= {arXiv preprint arXiv:1307.2347},
  year   = {2013}
}
R2 v1 2026-06-22T00:48:00.479Z