I will show that there is a deep relation between error-correction codes and certain mathematical models of spin glasses. In particular minimum error probability decoding is equivalent to finding the ground state of the corresponding spin system. The most probable value of a symbol is related to the magnetization at a different temperature. Convolutional codes correspond to one-dimensional spin systems and Viterbi's decoding algorithm to the transfer matrix algorithm of Statistical Mechanics.I will also show how the recently discovered (or rediscovered) capacity approaching codes (turbo codes and low density parity check codes) can be analysed using statistical mechanics. It is possible to show, using statistical mechanics, that these codes allow error-free communication for signal to noise ratio above a certain threshold. This threshold depends on the particular code, and can be computed analytically in many cases.
LPTENS 01/ 31It has been known[1 − 4] that error-correcting codes are mathematically equivalent to some theoretical spin-glass models. As it is explained in Forney's paper in this volume, there have been recently very interesting new developments in error-correcting codes. It is now possible to approach practically very close to Shannon's channel capacity. First came the discovery of turbo codes by Berrou and Glavieux [5] and later the rediscovery of low density parity check codes [6], first discovered by Gallager [7,8], in his thesis, in 1962. Both turbo codes and low density parity check (LPDC) codes are based on random structures. It turns out, as I will explain later, that it is possible to use their equivalence with spin glasses, to analyse them using the methods of statistical mechanics.Let me start by fixing the notations. Each information message consists of a sequence of K bits u = {u 1 , · · · , u K }, u i = 0 or 1. The binary vector u is called the source-word. Encoding introduces redundancy into the message. One maps u → x by encoding. u → x has to be a one to one map for the code to be meaningful. The binary vector x has N > K components. It is called a code-word. The ratio R = K/N which specifies the redundancy of the code, is called the rate of the code. One particularly important family of codes are the so-called linear codes. Linear codes are defined by x = G u G is a binary (i.e; its elements are zero or one) (N × K) matrix and the multiplication is modulo two. G is called the generating matrix of the code. Obviously by construction all the components x i of a code-word x are not independent. Of all the 2 N binary vectors only 2 K = 2 N R , those corresponding to a vector u, are code-words. Codewords satisfy the linear constraints (called parity check constraints) H x = 0 (modulo two), where H is a (K ×N ) binary matrix, called the parity check