Credit: Getty Images
It is rare and rewarding to connect two vastly different areas of computer science. Fast randomized algorithms in model counting were discovered in the early 1980s, while the area of streaming algorithms did not take off in the theory community until the late 1990s. Only recently were these disparate areas connected in the accompanying paper, where it was observed that the algorithmic techniques developed in the two areas were strikingly similar. This connection has given us exciting streaming algorithms used in database design and in network monitoring, as well as a unified perspective on existing algorithms.
What exactly is model counting? Given a function ϕ, which might be specified as a formula on variables, a circuit, a neural network, among others, we can think of ϕ as a mapping from inputs to TRUE or FALSE. What model counting asks for is the number of inputs that ϕ maps to TRUE; each such input is called a model. From the applications side, various probabilistic inference problems, such as Bayesian net reasoning, can be translated into model counting problems. From the theoretical side, the number of solutions to a hard combinatorial problem often provides further insight into the problem. In general, model counting is what is known as #P-hard, and even checking if there is any input which satisfies ϕ is NP-hard. One is often interested in randomized approximation algorithms that approximate the number of models for a given 9. Obtaining such approximations can sometimes be done efficiently in practice with the aid of fast solvers for the Satisfiability problem (SAT).
No entries found