This package implements a generic version of the Belief Propagation (BP) algorithm for the approximation of probability distributions factorized on a graph
where
import Pkg; Pkg.add("BeliefPropagation")
Check out the examples folder.
The goal of this package is to provide a simple, flexible, and ready-to-use interface to the BP algorithm. It is enough for the user to provide the factor graph (encoded in an adjacency matrix or as a Graphs.jl graph) and the factors, everything else is taken care of.
At the same time, the idea is that refinements can be made to improve performance on a case-by-case basis. For example, messages are stored as Vector
s by default, but when working with binary variables, one real number is enough, allowing for considerable speed-ups (see the Ising example).
Also, a version of BP for continuous variables such as Gaussian BP can be introduced in the framework, although it is not yet implemented.
- BeliefPropagation.jl: implements BP for the Ising model and the matching problem.
- FactorGraph.jl: implements Gaussian BP and other message-passing algorithms.
- ITensorNetworks.jl: implements BP as a technique for approximate tensor network contraction.
- ReactiveMP.jl: allows to solve Bayesian inference problems using message-passing.
- CodingTheory: has a specialized implementation of BP for the coding problem