Using linear programming to decode binary linear codes
A new method is given for performing approximate maximum-likelihood (ML) decoding of an arbitrary binary linear code based on observations received from any discrete memoryless symmetric channel. The decoding algorithm is based on a linear programming (LP) relaxation that is defined by a factor graph or parity-check representation of the code. The resulting "LP decoder" generalizes our previous work on turbo-like codes. A precise combinatorial characterization of when the LP decoder succeeds is provided, based on pseudocodewords associated with the factor graph. Our definition of a pseudocodeword unifies other such notions known for iterative algorithms, including "stopping sets," "irreducible closed walks," "trellis cycles," "deviation sets," and "graph covers." The fractional distance d(frac) of a code is introduced, which is a lower bound on the classical distance. It is shown that the efficient LP decoder will correct up to [d(frac)/2] - 1 errors and that there are codes with d(frac) = Omega(n(1-epsilon)). An efficient algorithm to compute the fractional distance is presented. Experimental evidence shows a similar performance on low-density parity-check (LDPC) codes between LP decoding and the min-sum and sum-product algorithms. Methods for tightening the LP relaxation to improve performance are also provided.
linear codes linear programming (lp) lp decoding pseudocodewords low-density parity-check (ldpc) codes belief propagation (bp) iterative decoding minimum distance