|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| {{more footnotes|date=March 2013}}
| | My name: Aiden Falconer<br>My age: 30<br>Country: Brazil<br>Home town: Campinas <br>Post code: 13104-002<br>Address: Rua Andre Andrade Macedo 1671<br><br>Also visit my web page :: [http://safedietplansforwomen.com/how-to-lose-weight-fast lose weight fast] |
| A '''binary symmetric channel''' (or BSC) is a common [[communications channel]] model used in [[coding theory]] and [[information theory]]. In this model, a transmitter wishes to send a [[bit]] (a zero or a one), and the receiver receives a bit. It is assumed that the bit is ''usually'' [[data transmission|transmitted]] correctly, but that it will be "flipped" with a small [[probability]] (the "crossover probability"). This channel is used frequently in information theory because it is one of the simplest channels to analyze.
| |
| | |
| == Description ==
| |
| [[Image:Binary symmetric channel (en).svg|600px|center]]
| |
| The BSC is a ''binary channel''; that is, it can transmit only one of two symbols (usually called 0 and 1). (A non-binary channel would be capable of transmitting more than 2 symbols, possibly even an infinite number of choices.) The transmission is not perfect, and occasionally the receiver gets the wrong bit.
| |
| | |
| This channel is often used by theorists because it is one of the simplest [[Signal noise|noisy]] channels to analyze. Many problems in [[communication theory]] can be [[Reduction (complexity)|reduced]] to a BSC. Conversely, being able to transmit effectively over the BSC can give rise to solutions for more complicated channels.
| |
| | |
| == Definition ==
| |
| A '''binary symmetric channel with crossover probability ''p''''' denoted by <math>BSC_{p}</math>, is a channel with binary input and binary output and probability of error ''p''; that is, if ''X'' is the transmitted [[random variable]] and ''Y'' the received variable, then the channel is characterized by the [[conditional probability|conditional probabilities]]
| |
| : Pr( ''Y'' = 0 | ''X'' = 0 ) = 1 − ''p'' | |
| : Pr( ''Y'' = 0 | ''X'' = 1) = ''p''
| |
| : Pr( ''Y'' = 1 | ''X'' = 0 ) = ''p''
| |
| : Pr( ''Y'' = 1 | ''X'' = 1 ) = 1 − ''p''
| |
| | |
| It is assumed that 0 ≤ ''p'' ≤ 1/2. If ''p'' > 1/2, then the receiver can swap the output (interpret 1 when it sees 0, and vice versa) and obtain an equivalent channel with crossover probability 1 − ''p'' ≤ 1/2.
| |
| | |
| === Capacity of BSC<sub>''p''</sub> ===
| |
| The [[channel capacity|capacity of the channel]] is 1 − ''H''(''p''), where ''H''(''p'') is the [[binary entropy function]].
| |
| | |
| The converse can be shown by a [[sphere packing]] argument. Given a codeword, there are roughly 2<sup>''n'' H(''p'')</sup> [[Typical set|typical]] output sequences. There are 2<sup>''n''</sup> total possible outputs, and the input chooses from a [[codebook]] of size 2<sup>''nR''</sup>. Therefore, the receiver would choose to [[Partition of a set|partition]] the space into "spheres" with 2<sup>''n''</sup> / 2<sup>''nR''</sup> = 2<sup>''n''(1 − ''R'')</sup> potential outputs each. If ''R'' > 1 − ''H''(''p''), then the spheres will be packed too tightly [[Asymptotic analysis|asymptotically]] and the receiver will not be able to identify the correct codeword with vanishing probability.
| |
| | |
| == Shannon's channel capacity theorem for BSC<sub>''p''</sub> ==
| |
| Shannon's noisy coding theorem is general for all kinds of channels. We consider a special case of this theorem for a binary symmetric channel with an error probability p.
| |
| | |
| === Noisy coding theorem for BSC<sub>''p''</sub> ===
| |
| We denote (and would continue to denote) noise <math>e</math> from <math>BSC_{p}</math> as "<math>e \in BSC_{p}</math>". The noise <math>e</math> is essentially a [[random variable]] with each of its indexes being a <math>1</math> with probability <math>p</math> and a <math>0</math> with probability <math>1-p</math>.
| |
| | |
| '''Theorem 1'''
| |
| For all <math>p</math> < <math>\frac{1}{2}</math> and all <math>\epsilon</math> such that <math>0 < \epsilon < \frac{1}{2} - p</math>, there exists a pair of [[Code|encoding]] and [[Code|decoding]] functions <math>E</math>: <math>\{0,1\}^k \rightarrow \{0,1\}^n</math> and <math>D</math>: <math>\{0,1\}^n</math> <math>\rightarrow</math> <math>\{0,1\}^{k}</math> respectively, and <math>k</math> <math>\leq</math> <math>\lfloor</math> <math>(1 - H(p + \epsilon))n</math> <math>\rfloor</math> such that every message <math>m</math> <math>\in</math> <math>\{0,1\}^{k}</math> has the following property: <math>\Pr_{e \in BSC_p}[D(E(m) + e) \neq m] \leq 2^{-{\delta}n}</math> for a sufficient large integer <math>n</math>.
| |
| | |
| What this theorem actually implies is, a message when picked from <math>\{0,1\}^k</math>, encoded with a random encoding function <math>E</math>, and send across a noisy <math>BSC_{p}</math>, there is a very high probability of recovering the original message by decoding, if <math>k</math> or in effect the rate of the channel is bounded by the quantity stated in the theorem. The decoding error probability is exponentially small.
| |
| | |
| We shall now prove Theorem 1 .
| |
| | |
| '''Proof'''
| |
| We shall first describe the encoding function <math>E</math> and the decoding function <math>D</math> used in the theorem. Its good to state here that we would be using the [[probabilistic method]] to prove this theorem. Shannon's theorem was one of the earliest applications of this method.
| |
| | |
| '''[[Code|Encoding function]] <math>E</math>:''' The encoding function <math>E</math>: <math>\{0,1\}^k \rightarrow \{0,1\}^n</math> is selected at random. This means, given any message <math>m \in \{0,1\}^k</math>, we choose <math>E(m) \in \{0,1\}^n</math> uniformly and independently at random.
| |
| | |
| '''[[Code|Decoding function]] <math>D</math>:''' The decoding function <math>D</math>: <math>\{0,1\}^n \rightarrow \{0,1\}^k</math> is given any received codeword <math>y</math> <math>\in</math> <math>\{0,1\}^n</math>, we find the message <math>m</math> <math>\in</math> <math>\{0,1\}^{k}</math> such that <math>\Delta(y, E(m))</math> is minimum (with ties broken arbitrarily). This kind of a decoding function is called a ''[[maximum likelihood decoding (MLD)]]'' function.
| |
| | |
| Now first we show, for a fixed <math>m \in \{0,1\}^{k}</math> and <math>E</math> chosen randomly, the probability of failure over <math>BSC_p</math> noise is exponentially small. At this point, the proof works for a fixed message <math>m</math>. Next we extend this result to work for ''all'' <math>m</math>. We achieve this by eliminating half of the codewords from the code with the argument that the proof for the decoding error probability holds for at least half of the codewords. The latter method is called expurgation. This gives the total process the name ''random coding with expurgation''.
| |
| | |
| '''A high level proof:''' Given a fixed message <math>m \in \{0,1\}^{k}</math>, we need to estimate the [[expected value]] of the [[probability]] of the received codeword along with the noise does not give back <math>m</math> on decoding. That is to say, we need to estimate: <math>\mathbb{E}_{E}[\Pr_{e \in BSC_p}[D(E(m) + e) \neq m]]</math>.
| |
| | |
| Let <math>y</math> be the received codeword. In order for the decoded codeword <math>D(y)</math> not to be equal to the message <math>m</math>, one of the following events must occur:
| |
| | |
| * <math>y</math> does not lie within the Hamming ball of radius <math>(p+\epsilon)</math> for any <math>\epsilon</math> greater than <math>0</math>, centered at <math>E(m)</math>. This condition is mainly used to make the calculations easier.
| |
| | |
| * There is another message <math>m^{\prime} \in \{0,1\}^k</math> such that <math>\Delta(y, E(m^{\prime})) \leq \Delta(y, E(m))</math>. In other words the errors due to noise take the transmitted codeword closer to another encoded message.
| |
| | |
| We can apply [[Chernoff bound]] to ensure the non occurrence of the first event. By applying [[Chernoff bound]] we have, <math>Pr_{e \in BSC_p}</math> <math>[\Delta(y, E(m)) > (p+\epsilon)] \leq 2^{-{\epsilon^2}n}</math>. Thus, for any <math>\epsilon > 0</math>, we can pick <math>n</math> to be large enough to make the above probability exponentially small.
| |
| | |
| As for the second event, we note that the probability that <math>E(m^{\prime}) \in B(y,(p+\epsilon)n)</math> is <math>Vol(B(y,(p+\epsilon)n)/2^n</math> where <math>B(x, r)</math> is the Hamming ball of radius <math>r</math> centered at vector <math>x</math> and <math>Vol(B(x, r))</math> is its volume. Using approximation to estimate the number of codewords in the Hamming ball, we have <math>Vol(B(y,(p+\epsilon)n)/2^n \approx 2^{H(p)n}</math>. Hence the above probability amounts to <math>2^{H(p)n}/2^n = 2^{H(p)n-n}</math>. Now using [[union bound]], we can upper bound the existence of such an <math>m^{\prime} \in \{0,1\}^k</math> by <math>\le 2^{k +H(p)n-n}</math> which is <math>2^{-\Omega(n)}</math>, as desired by the choice of <math>k</math>.
| |
| | |
| '''A detailed proof:''' From the above analysis, we calculate the probability of the event that the decoded codeword plus the channel noise is not the same as the original message sent. We shall introduce some symbols here. Let <math>p(y|E(m))</math> denote the probability of receiving codeword <math>y</math> given that codeword <math>E(m)</math> was sent. Denote <math>B(E(m),(p+\epsilon)n)</math> by <math>\text{Ball}</math>.
| |
| <math>\Pr_{e \in BSC_p}[D(E(m) + e) \neq m] = \sum_{y \in \{0,1\}^{n}} p(y|E(m))\cdot 1_{D(y)\neq m} \leq \sum_{y \notin \text{Ball}} p(y|E(m)) \cdot 1_{D(y)\neq m} + \sum_{y \in \text{Ball}} p(y|E(m))\cdot 1_{D(y)\neq m} \leq 2^{-{\epsilon^2}n} + \sum_{y \in \text{Ball}} p(y|E(m)) \cdot 1_{D(y)\neq m}.</math>
| |
| | |
| We get the last inequality by our analysis using the [[Chernoff bound]] above. Now taking expectation on both sides we have,
| |
| <math>\mathbb{E}_E</math>[<math>Pr_{e \in BSC_p}</math>[<math>D(E(m) + e)</math> <math>\neq</math> <math>m]</math>] <math>\leq</math> <math>2^{-{\epsilon^2}n}</math> <math>+</math> <math>\sum_{y \in \text{Ball}}</math> <math>p(y|E(m))</math>.<math>\mathbb{E}[1_{D(y)\neq m}]</math>. | |
|
| |
| Now we have <math>\sum_{y \in \text{Ball}} p(y|E(m)) \leq 1</math>. This just says, that the quantity <math>\mathbb{E}[1_{D(y)\neq m}] \leq 2^{k +H(p + \epsilon)n-n}</math>, again from the analysis in the higher level proof above. Hence, taking everything together we have
| |
| <math>\mathbb{E}_{E}[\Pr_{e \in BSC_p}[D(E(m) + e) \neq m]] \leq 2^{-{\epsilon^2}n} + 2^{k +H(p + \epsilon)n-n} \leq 2^{-\delta n}</math>, by appropriately choosing the value of <math>\delta</math>. Since the above bound holds for '''each''' message, we have <math>\mathbb{E}_m[\mathbb{E}_E[\Pr_{e \in BSC_p}[D(E(m) + e)] \neq m]] \leq 2^{-\delta n}</math>. Now we can change the order of summation in the expectation with respect to the message and the choice of the encoding function <math>E</math>, without loss of generality. Hence we have <math>\mathbb{E}_E[\mathbb{E}_m [\Pr_{e \in BSC_p}[D(E(m) + e)] \neq m]] \leq 2^{-\delta n}</math>. Hence in conclusion, by probabilistic method, we have some encoding function <math>E^{*}</math> and a corresponding decoding function <math>D^{*}</math> such that <math>\mathbb{E}_m[\Pr_{e \in BSC_p}[D^{*}(E^{*}(m) + e)\neq m]] \leq 2^{-\delta n}</math>.
| |
| | |
| At this point, the proof works for a fixed message <math>m</math>. But we need to make sure that the above bound holds for '''all''' the messages <math>m</math> '''simultaneously'''. For that, let us sort the <math>2^k</math> messages by their decoding error probabilities. Now by applying [[Markov's inequality]], we can show the decoding error probability for the first <math>2^{k-1}</math> messages to be at most <math>2.2^{-\delta n}</math>. Thus in order to confirm that the above bound to hold for '''every''' message <math>m</math>, we could just trim off the last <math>2^{k-1}</math> messages from the sorted order. This essentially gives us another encoding function <math>E^{\prime}</math> with a corresponding decoding function <math>D^{\prime}</math> with a decoding error probability of at most <math>2^{-\delta n + 1}</math> with the same rate. Taking <math>\delta^{\prime}</math> to be equal to <math>\delta - \frac{1}{n}</math> we bound the decoding error probability to <math>2^{-\delta^{\prime}n}</math>. This expurgation process completes the proof of Theorem 1.
| |
| | |
| == Converse of Shannon's capacity theorem ==
| |
| | |
| The converse of the capacity theorem essentially states that <math>1 - H(p)</math> is the best rate one can achieve over a binary symmetric channel. Formally the theorem states:
| |
| | |
| '''Theorem 2'''
| |
| If <math>k</math> <math>\geq</math> <math>\lceil</math> <math>(1 - H(p + \epsilon)n)</math> <math>\rceil</math> then the following is true for every [[Code|encoding]] and [[Code|decoding]] function <math>E</math>: <math>\{0,1\}^k</math> <math>\rightarrow</math> <math>\{0,1\}^n</math> and <math>D</math>: <math>\{0,1\}^{n}</math> <math>\rightarrow</math> <math>\{0,1\}^{k}</math> respectively: <math>Pr_{e \in BSC_p}</math>[<math>D(E(m) + e)</math> <math>\neq</math> <math>m]</math> <math>\geq</math> <math>\frac{1}{2}</math>.
| |
| | |
| For a detailed proof of this theorem, the reader is asked to refer to the bibliography. The intuition behind the proof is however showing the number of errors to grow rapidly as the rate grows beyond the channel capacity. The idea is the sender generates messages of dimension <math>k</math>, while the channel <math>BSC_p</math> introduces transmission errors. When the capacity of the channel is <math>H(p)</math>, the number of errors is typically <math>2^{H(p + \epsilon)n}</math> for a code of block length <math>n</math>. The maximum number of messages is <math>2^{k}</math>. The output of the channel on the other hand has <math>2^{n}</math> possible values. If there is any confusion between any two messages, it is likely that <math>2^{k}2^{H(p + \epsilon)n} \ge 2^{n}</math>. Hence we would have <math>k \geq \lceil (1 - H(p + \epsilon)n) \rceil</math>, a case we would like to avoid to keep the decoding error probability exponentially small.
| |
| | |
| == Codes for BSC<sub>''p''</sub> ==
| |
| Very recently, a lot of work has been done and is also being done to design explicit error-correcting codes to achieve the capacities of several standard communication channels. The motivation behind designing such codes is to relate the rate of the code with the fraction of errors which it can correct.
| |
| | |
| The approach behind the design of codes which meet the channel capacities of <math>BSC</math>, <math>BEC</math> have been to correct a lesser number of errors with a high probability, and to achieve the highest possible rate. Shannon’s theorem gives us the best rate which could be achieved over a <math>BSC_{p}</math>, but it does not give us an idea of any explicit codes which achieve that rate. In fact such codes are typically constructed to correct only a small fraction of errors with a high probability, but achieve a very good rate. The first such code was due to George D. Forney in 1966. The code is a concatenated code by concatenating two different kinds of codes. We shall discuss the construction Forney's code for the Binary Symmetric Channel and analyze its rate and decoding error probability briefly here. Various explicit codes for achieving the capacity of the [[binary erasure channel]] have also come up recently.
| |
| | |
| == Forney's code for BSC<sub>''p''</sub> ==
| |
| | |
| Forney constructed a [[concatenated code]] <math>C^{*}</math> <math>=</math> <math>C_\text{out} \circ C_\text{in}</math> to achieve the capacity of Theorem 1 for <math>BSC_p</math>. In his code,
| |
| | |
| * The outer code <math>C_\text{out}</math> is a code of block length <math>N</math> and rate <math>1-\frac{\epsilon}{2}</math> over the field <math>F_{2^k}</math>, and <math>k = O(log N)</math>. Additionally, we have a [[Code|decoding]] algorithm <math>D_\text{out}</math> for <math>C_\text{out}</math> which can correct up to <math>\gamma</math> fraction of worst case errors and runs in <math>t_\text{out}(N)</math> time.
| |
| * The inner code <math>C_\text{in}</math> is a code of block length <math>n</math>, dimension <math>k</math>, and a rate of <math>1 - H(p) - \frac{\epsilon}{2}</math>. Additionally, we have a decoding algorithm <math>D_\text{in}</math> for <math>C_\text{in}</math> with a [[Code|decoding]] error probability of at most <math>\frac{\gamma}{2}</math> over <math>BSC_p</math> and runs in <math>t_\text{in}(N)</math> time.
| |
|
| |
| For the outer code <math>C_\text{out}</math>, a Reed-Solomon code would have been the first code to have come in mind. However, we would see that the construction of such a code cannot be done in polynomial time. This is why a [[binary linear code]] is used for <math>C_\text{out}</math>.
| |
| | |
| For the inner code <math>C_\text{in}</math> we find a [[linear code]] by exhaustively searching from the [[linear code]] of block length <math>n</math> and dimension <math>k</math>, whose rate meets the capacity of <math>BSC_p</math>, by Theorem 1.
| |
| | |
| The rate <math>R(C^{*}) = R(C_\text{in}) \times R(C_\text{out}) = (1-\frac{\epsilon}{2}) ( 1 - H(p) - \frac{\epsilon}{2} ) \geq 1</math> <math>-</math> <math>H(p)</math> <math>-</math> <math>\epsilon</math> which almost meets the <math>BSC_p</math> capacity. We further note that the encoding and decoding of <math>C^{*}</math> can be done in polynomial time with respect to <math>N</math>. As a matter of fact, encoding <math>C^{*}</math> takes time <math>O(N^{2})+O(Nk^{2}) = O(N^{2})</math>. Further, the decoding algorithm described takes time <math>Nt_\text{in}(k) + t_\text{out}(N) = N^{O(1)} </math> as long as <math>t_\text{out}(N) = N^{O(1)}</math>; and <math>t_\text{in}(k) = 2^{O(k)}</math>.
| |
| | |
| === Decoding error probability for ''C''<sup>*</sup> ===
| |
| | |
| A natural decoding algorithm for <math>C^{*}</math> is to:
| |
| | |
| * Assume <math>y_{i}^{\prime} = D_\text{in}(y_i), \quad i \in (0, N)</math>
| |
| * Execute <math>D_\text{out}</math> on <math>y^{\prime} = (y_1^{\prime} \ldots y_N^{\prime})</math>
| |
| | |
| Note that each block of code for <math>C_\text{in}</math> is considered a symbol for <math>C_\text{out}</math>. Now since the probability of error at any index <math>i</math> for <math>D_\text{in}</math> is at most <math>\frac{\gamma}{2}</math> and the errors in <math>BSC_p</math> are independent, the expected number of errors for <math>D_\text{in}</math> is at most <math>\frac{\gamma N}{2}</math> by linearity of expectation. Now applying [[Chernoff bound]], we have bound error probability of more than <math>\gamma N</math> errors occurring to be <math>e^\frac{-\gamma N}{6}</math>. Since the outer code <math>C_\text{out}</math> can correct at most <math>\gamma N</math> errors, this is the [[Code|decoding]] error probability of <math>C^{*}</math>. This when expressed in asymptotic terms, gives us an error probability of <math>2^{-\Omega(\gamma N)}</math>. Thus the achieved decoding error probability of <math>C^{*}</math> is exponentially small as Theorem 1.
| |
| | |
| We have given a general technique to construct <math>C^{*}</math>. For more detailed descriptions on <math>C_\text{in}</math> and <math>C{out}</math> please read the following references. Recently a few other codes have also been constructed for achieving the capacities. [[LDPC]] codes have been considered for this purpose for their faster decoding time.<ref>Richardson and Urbanke</ref>
| |
| | |
| == See also ==
| |
| * [[Z-channel (information theory)|Z channel]]
| |
| | |
| ==Notes==
| |
| {{reflist}}
| |
| | |
| == References ==
| |
| * David J. C. MacKay. ''[http://www.inference.phy.cam.ac.uk/mackay/itila/book.html Information Theory, Inference, and Learning Algorithms]'' Cambridge: Cambridge University Press, 2003. ISBN 0-521-64298-1
| |
| * Thomas M. Cover, Joy A. Thomas. ''Elements of information theory'', 1st Edition. New York: Wiley-Interscience, 1991. ISBN 0-471-06259-6.
| |
| * Atri Rudra's course on Error Correcting Codes: Combinatorics, Algorithms, and Applications (Fall 2007), Lectures [http://www.cse.buffalo.edu/~atri/courses/coding-theory/lectures/lect9.pdf 9], [http://www.cse.buffalo.edu/~atri/courses/coding-theory/lectures/lect10.pdf 10], [http://www.cse.buffalo.edu/~atri/courses/coding-theory/lectures/lect29.pdf 29], and [http://www.cse.buffalo.edu/~atri/courses/coding-theory/lectures/lect30.pdf 30].
| |
| * Madhu Sudan's course on Algorithmic Introduction to Coding Theory (Fall 2001), Lecture [http://people.csail.mit.edu/madhu/FT01/scribe/lect1.ps 1] and [http://people.csail.mit.edu/madhu/FT01/scribe/lect2.ps 2].
| |
| * G. David Forney. [http://dspace.mit.edu/handle/1721.1/4303 Concatenated Codes]. MIT Press, Cambridge, MA, 1966.
| |
| * Venkat Guruswamy's course on [http://www.cs.washington.edu/education/courses/533/06au/ Error-Correcting Codes: Constructions and Algorithms], Autumn 2006.
| |
| * [http://portal.acm.org/citation.cfm?id=584093 A mathematical theory of communication] C. E Shannon, ACM SIGMOBILE Mobile Computing and Communications Review.
| |
| * [http://assets.cambridge.org/97805218/52296/copyright/9780521852296_copyright_info.pdf Modern Coding Theory] by Tom Richardson and Rudiger Urbanke., Cambridge University Press
| |
| | |
| == External links ==
| |
| * [http://oscar.iitb.ac.in/availableProposalsAction1.do?type=av&id=534&language=english A Java applet implementing Binary Symmetric Channel]
| |
| | |
| [[Category:Coding theory]]
| |