2 research outputs found

    Deterministic and {Las Vegas} Algorithms for Sparse Nonnegative Convolution

    Get PDF
    Computing the convolution ABA\star B of two length-nn integer vectors A,BA,B is a core problem in several disciplines. It frequently comes up in algorithms for Knapsack, kk-SUM, All-Pairs Shortest Paths, and string pattern matching problems. For these applications it typically suffices to compute convolutions of nonnegative vectors. This problem can be classically solved in time O(nlogn)O(n\log n) using the Fast Fourier Transform. However, often the involved vectors are sparse and hence one could hope for output-sensitive algorithms to compute nonnegative convolutions. This question was raised by Muthukrishnan and solved by Cole and Hariharan (STOC '02) by a randomized algorithm running in near-linear time in the (unknown) output-size tt. Chan and Lewenstein (STOC '15) presented a deterministic algorithm with a 2O(logtloglogn)2^{O(\sqrt{\log t\cdot\log\log n})} overhead in running time and the additional assumption that a small superset of the output is given; this assumption was later removed by Bringmann and Nakos (ICALP '21). In this paper we present the first deterministic near-linear-time algorithm for computing sparse nonnegative convolutions. This immediately gives improved deterministic algorithms for the state-of-the-art of output-sensitive Subset Sum, block-mass pattern matching, NN-fold Boolean convolution, and others, matching up to log-factors the fastest known randomized algorithms for these problems. Our algorithm is a blend of algebraic and combinatorial ideas and techniques. Additionally, we provide two fast Las Vegas algorithms for computing sparse nonnegative convolutions. In particular, we present a simple O(tlog2t)O(t\log^2t) time algorithm, which is an accessible alternative to Cole and Hariharan's algorithm. We further refine this new algorithm to run in Las Vegas time O(tlogtloglogt)O(t\log t\cdot\log\log t), matching the running time of the dense case apart from the loglogt\log\log t factor
    corecore