TOPICS
Search

Factor Graph


A factor graph is a bipartite graph representing a factorization of a function

 f(x_1,...,x_n)=product_(a=1)^mf_a(x_(A_a)),

where A_a subset= {1,...,n} and x_(A_a) denotes the arguments with indices in A_a. It has a variable graph vertex for each x_i, a factor graph vertex for each f_a(x_(A_a)), and a graph edge between them iff i in A_a (Kschischang et al. 2001).

For variables with finite domains, the sum-product algorithm seeks to compute a marginal function

 f_i(x_i)=sum_(x_1,...,x_(i-1),x_(i+1),...,x_n)f(x_1,...,x_n)

by passing messages along the graph edges. A variable-to-factor message is the product of the incoming messages from the other adjacent factors. A factor-to-variable message is obtained by multiplying the factor by the incoming messages from its other variables and summing out those variables. On a tree, a pass toward a root followed by a pass away from it gives all marginal functions exactly. Iterating these rules on a graph with cycles is generally approximate and need not converge (Kschischang et al. 2001).

When f(x_1,...,x_n) is nonnegative with positive total sum, normalization gives a probability mass function, and the normalized f_i(x_i) give its marginal distributions. A Tanner graph represents parity-check constraints in this form. A cluster graph permits messages involving several variables jointly.


See also

Bipartite Graph, Cluster Graph, Tanner Graph

Explore with Wolfram|Alpha

References

Kschischang, F. R.; Frey, B. J.; and Loeliger, H.-A. "Factor Graphs and the Sum-Product Algorithm." IEEE Trans. Inform. Th. 47, 498-519, 2001. https://doi.org/10.1109/18.910572.

Cite this as:

Weisstein, Eric W. "Factor Graph." From MathWorld--A Wolfram Resource. https://mathworld.wolfram.com/FactorGraph.html

Subject classifications