Capacity and Shannon's Theorem
November 14, 202654 min readbeginner
Capacity is the largest rate a channel carries with vanishing error. The chapter derives it for the binary symmetric, erasure and Gaussian channels, reaches the −1.59 dB limit and proves Shannon's theorem both ways.
The previous chapter, Compression in Practice, ended on a comparison. A binary source that emits a 1 with probability 0.1 compresses to bits per letter, and a binary symmetric channel that flips each bit with probability 0.1 was said to carry bits per use with an error probability as small as desired. Since , the source can cross that channel at one use per letter. The first number was earned in Source Coding and Prefix Codes, and this chapter earns the second.
Two earlier chapters supply the tools. Channels, Signals and Likelihoods built the binary symmetric channel , the binary erasure channel and the Z-channel in Three Discrete Channels, and the Gaussian channel in The Gaussian Channel and BPSK. Information and Entropy supplied the mutual information , the number of bits one channel use conveys about its input, and its section Mutual Information of the Binary Symmetric Channel showed that a uniform input conveys the most over that channel.
The chapter counts noise patterns to see where comes from, computes capacity for the binary symmetric, erasure and Gaussian channels, and follows the trade of bandwidth against power to the Shannon limit of dB. Typical sequences, random coding and Fano's inequality then prove the theorem in both directions.
Every number in the chapter is recomputed by ch07_capacity_and_shannons_theorem.py in the python/ folder of the companion repository ecc-book-lab, and the charts are drawn by ch07_charts.py in the same folder.
01.Counting Noise Patterns
Send a block of bits through . Each bit flips independently with probability 0.1, so about 100 bits flip, as the binomial count of Counting Errors with the Binomial Distribution predicts, but which 100 is unknown. There are ways to choose them, whose base-2 logarithm is 464.42, and a receiver that undoes the noise must in effect learn which of these patterns occurred. Table 1 repeats the count for three block lengths.
Table 1. The number of noise patterns of weight for , against
| Per symbol | Shortfall | |||
|---|---|---|---|---|
| 100 | 43.98 | 0.4398 | 46.90 | 2.92 |
| 1000 | 464.42 | 0.4644 | 469.00 | 4.57 |
| 10000 | 4683.72 | 0.4684 | 4689.96 | 6.23 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
Per symbol, the count climbs toward and never passes it. To see why, write and take the single term of the binomial expansion for that . Every term of the expansion is positive and the terms add to , so
The power of and is , so the inequality says . The shortfall grows far more slowly than , so per symbol it vanishes. Typical Sequences shows that the patterns the noise is likely to produce, of any weight, number about as well.
Now turn the count around. A code for this channel is a list of codewords, each a string of bits. When codeword is sent, the received word lies, with high probability, in a cloud of about words around , one for each likely noise pattern. For the receiver to name the codeword without confusion, the clouds of different codewords must not overlap, as Figure 1 draws. There are only binary words of length to share, so
For and this is , so at most 531 bits of message fit in 1000 uses, or bits per use. The argument is a heuristic, since clouds could overlap a little, and Fano's Inequality and the Converse turns it into a proof. The surprise, proved in The Random Coding Argument, is that the bound can be reached.
Figure 2 names the pieces of the argument. A message is one of equally likely values. The encoder maps it to a codeword , the channel is used times and delivers , and the decoder forms an estimate from . The rate is
and the error probability is averaged over the messages, or replaced by its maximum over messages when the worst case matters. The source of the previous chapter, at 0.4690 bits per letter, needs only uses of this channel per letter.
02.Channel Capacity
The general definition replaces the count with the mutual information of Information and Entropy.
The definition is a formula about one use of the channel, with no codes in it. Its operational counterpart is the achievable rate. A rate is achievable if, for every and every large enough , some code of length with at least codewords has error probability below . The coding theorem says the largest achievable rate is .
Shannon stated the theorem in 1948 [1] and treated the Gaussian channel geometrically the following year [2]. Feinstein gave an early rigorous proof of the direct half [3], and Gallager derived bounds on how fast the error falls with [4]. The proofs in this chapter follow the typical-sequence route of Cover and Thomas [5], specialized to the binary symmetric channel so that every step can be checked with numbers.
03.The Binary Symmetric Channel
Start with a channel whose capacity should come out close to one half, , and with an input that is not uniform.
The example generalizes at once. With , the probability of a received 1 is
and , because each input meets the same flip probability. The mutual information is therefore . Only the first term depends on the input, and the binary entropy function is at most 1, reached only at . Setting gives , so the uniform input reaches the maximum, as Information and Entropy found. Hence
For , and , and the flip probability whose capacity is exactly one half is 0.110028. For the capacity is the 0.5310 promised at the start. Table 2 lists the mutual information for several inputs, beside the same quantity for the erasure channel of the next section.
Table 2. Mutual information against the input probability for and
| for | , | , | ||
|---|---|---|---|---|
| 0.1 | 0.188 | 0.6973 | 0.1974 | 0.2345 |
| 0.2 | 0.266 | 0.8357 | 0.3358 | 0.3610 |
| 0.3 | 0.344 | 0.9286 | 0.4287 | 0.4406 |
| 0.4 | 0.422 | 0.9824 | 0.4825 | 0.4855 |
| 0.5 | 0.500 | 1.0000 | 0.5001 | 0.5000 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
Both channels peak at . Figure 3 plots each capacity against the noise parameter. The binary symmetric curve is symmetric about , because a receiver facing a channel that flips almost every bit simply inverts what it sees, and at the output is independent of the input and the capacity is zero.
04.The Binary Erasure Channel
The erasure channel delivers each bit intact with probability and otherwise delivers an erasure mark, written , which tells the receiver that the bit was lost but not what it was. Here the easier route to the mutual information runs through the input, , the other form from Mutual Information.
With , the input entropy is . An output of 0 or 1 leaves no uncertainty. An output of , which happens with probability whatever was sent, says nothing about the input, which keeps its entropy . Averaging over the outputs gives , and
The largest value of is 1, at , so
The last column of Table 2 is , for instance at . A fraction of the uses are lost, and the theorem promises that the rest can be used in full, as if the transmitter had known in advance which uses would be erased.
Figure 3 shows that and have the same capacity, although the first damages 11 bits in a hundred and the second 50. Each flipped bit costs bits of capacity against exactly 1 for each erased bit, because a flip must also be located.
05.The Gaussian Channel
The Gaussian channel of The Gaussian Channel and BPSK adds to each real input an independent Gaussian noise with mean 0 and variance , so . Inputs spaced far enough apart could always be told apart, so the input power is limited to , and the ratio is the signal-to-noise ratio per real dimension.
The output is continuous, so the entropies become the differential entropies of The Rate–Distortion Trade in the previous chapter, for a density . With a capital letter inside, is a differential entropy, while stays the binary entropy function. Table 3 compares three densities of variance 1.
Table 3. Differential entropy of three densities with variance 1
| Density | Shape at variance 1 | in bits |
|---|---|---|
| Uniform | flat on an interval of width | 1.7925 |
| Laplace | 1.9427 | |
| Gaussian | 2.0471 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
The three values are , and . The Gaussian leads the uniform density by bits, the gap that separated entropy-coded quantizer indices from the rate-distortion bound in The Rate–Distortion Trade, and the lemma says no density of the same variance does better.
Proof. Let be any density with mean and variance , and let be the Gaussian density with the same mean and variance. Gibbs' inequality, from Relative Entropy and Gibbs' Inequality, holds for densities as it does for probability lists, so , which rearranges to
The logarithm of the Gaussian density is a quadratic,
Averaging it under uses only the variance of , since , so the right side equals for every such . For the inequality holds with equality, so this value is , and .
The capacity follows in three steps. First, . Given , the output is , a shifted copy of the noise, and shifting a density does not change its differential entropy, so . Second, and are independent, so the variance of is at most , and the lemma gives . Third, a Gaussian input with variance makes Gaussian with variance exactly and reaches that bound. Subtracting,
A signal-to-noise ratio of 3 buys 1 bit per use and 15 buys 2, which are 4.77 and 11.76 dB.
Figure 4 gives Shannon's geometric reading of the formula [2]. Over uses the received vector has squared length close to , by the law of large numbers, so it lies near a sphere of radius . The noise moves each codeword to a point near a sphere of radius around it. In dimensions volume grows as the th power of the radius, so at most noise spheres fit without overlapping, and the rate is at most . It is the noise-cloud count of Equation 1 again, with volume in place of number.
BPSK Against the Gaussian Input
The capacity formula assumes a Gaussian input, which can take any real value. BPSK, from The Gaussian Channel and BPSK, sends only or with . Scale the amplitude to , so the noise variance becomes , the reciprocal of the signal-to-noise ratio. With equally likely inputs the output density is , and the mutual information is the average of . For ,
because the ratio of the two Gaussian densities is . Its exponent is minus the log-likelihood ratio of Likelihoods and Log-Likelihood Ratios. Taking and averaging over given , and noting that gives the same average by symmetry,
The expectation has no closed form, and the companion script evaluates it by Simpson's rule. A receiver that keeps only the sign of makes hard decisions, in the language of Hard and Soft Decisions, and turns the channel into a binary symmetric channel with flip probability , so
Table 4. Capacity per real dimension of the Gaussian input, BPSK with soft decisions and BPSK with hard decisions
| in dB | Gaussian input | BPSK, soft | BPSK, hard |
|---|---|---|---|
| 0.0688 | 0.0687 | 0.0449 | |
| 0.1982 | 0.1977 | 0.1353 | |
| 0 | 0.5000 | 0.4859 | 0.3689 |
| 5 | 1.0287 | 0.8592 | 0.7685 |
| 10 | 1.7297 | 0.9968 | 0.9908 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
Table 4 and Figure 5 show two regimes. At low signal-to-noise ratio, BPSK with soft decisions loses almost nothing to the Gaussian input, 0.0687 against 0.0688 at dB, while hard decisions keep only about two thirds. At high signal-to-noise ratio, two input levels can never carry more than 1 bit, and BPSK saturates while the Gaussian input keeps climbing. Signal sets with many levels exist to follow the Gaussian curve upward.
The low-ratio loss of hard decisions has a clean limit. Write . For small , the Gaussian capacity is , and soft BPSK matches it. For hard decisions the flip probability is , and near one half the binary entropy function behaves as , so . The ratio is , and at dB the table already gives . To make up the difference, a hard-decision receiver needs times the power, or 1.96 dB.
06.Bandwidth and Power
Real links are specified by bandwidth in hertz and signal power in watts, not by uses of a channel. A signal confined to bandwidth is fixed by real samples per second, the Nyquist rate, so the band offers channel uses per second. If the noise has power spectral density per real dimension, its power in the band is . Each sample then carries energy against noise variance , a signal-to-noise ratio of per sample. Multiplying the capacity per sample by samples per second gives the Shannon–Hartley formula.
Power sits inside the logarithm, so doubling it adds at most one bit per second per hertz, while bandwidth multiplies the logarithm but also admits more noise. The worked example A 20 MHz Link puts numbers on the trade. At the other extreme, hold Hz fixed and widen the band. The capacity is 0.3459 Mbit/s at Hz, 1.0000 at , 1.3750 at and 1.4355 at , and it never passes a ceiling. Since for small ,
which here is 1.4427 Mbit/s, so unlimited bandwidth buys only a bounded rate.
The trade is usually drawn in terms of the spectral efficiency , the bit rate per hertz, and the energy per bit of Energy per Bit and the Decibel. A rate at power spends joules per bit, so . Reliable transmission needs , that is , and solving for the energy per bit,
Table 5. The least for reliable transmission at spectral efficiency , from
| in bit/s/Hz | In dB | |
|---|---|---|
| 8 | 31.875 | 15.03 |
| 6 | 10.500 | 10.21 |
| 4 | 3.750 | 5.74 |
| 2 | 1.500 | 1.76 |
| 1 | 1.000 | 0.00 |
| 0.5 | 0.828 | |
| 0.25 | 0.757 | |
| 0.1 | 0.718 | |
| 0.01 | 0.696 | |
| 0.001 | 0.693 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
Table 5 and Figure 6 trace the boundary. Spectrally efficient links pay steeply in energy, 15.03 dB at 8 bit/s/Hz, while slow links approach a floor near dB. Uncoded BPSK sends one bit per real sample, so in this counting, and Energy per Bit and the Decibel found that it needs 9.59 dB for a bit error probability of . The bound at is 1.76 dB, so 7.83 dB separates uncoded BPSK from what the theorem allows at the same spectral efficiency, and that gap is what the codes of the rest of this book compete for.
07.The Shannon Limit
The floor in Table 5 is a limit, and it can be taken one step at a time. Write and expand the exponential as a power series,
Subtracting 1 removes the constant term, and dividing by lowers every remaining power by one,
As every term but the first vanishes, and the boundary tends to . Every coefficient is positive, so the boundary falls steadily with and never goes below . The slope of the series at zero is , so at the first two terms give , against the exact 0.7177. Converting to decibels takes one logarithm, , so
The wideband limit reaches the same number by another road. With unlimited bandwidth the capacity is , and a rate at that capacity spends per bit. Uncoded BPSK at sits 11.18 dB above the Shannon limit, 7.83 dB for having no code and the rest for running at .
A code of rate bits per real dimension has , and with BPSK as the signal set the boundary comes from Equation 6 and Equation 7 instead of the Gaussian capacity. A channel use spends energy to carry bits, so , and with , . The least signal-to-noise ratio whose capacity reaches fixes the least , collected in Table 6.
Table 6. The least in dB for reliable transmission at code rate , for three signaling choices
| Code rate | Gaussian input | BPSK, soft | BPSK, hard |
|---|---|---|---|
| 1/2 | 0.00 | 0.19 | 1.77 |
| 1/3 | 1.21 | ||
| 0.1 | 0.59 | ||
| 0.01 | 0.39 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
These are the targets a code designer quotes. A rate one half code with BPSK cannot work below 0.19 dB with soft decisions, or 1.77 dB with hard ones. As the rate falls, soft BPSK approaches the Shannon limit, while hard decisions settle about 1.96 dB above it, the penalty found above.
08.Typical Sequences
The noise-cloud count needs a precise statement of which noise patterns are likely. Take the source of the previous chapter, which emits a 1 with probability , and look at blocks of symbols, where everything can be counted exactly. A block with ones has probability , and there are such blocks. Table 7 lists the first few weights.
Table 7. Blocks of 20 symbols from a source with , grouped by the number of ones
| Blocks | Probability of each | Total probability | ||
|---|---|---|---|---|
| 0 | 1 | 0.12158 | 0.12158 | 0.1520 |
| 1 | 20 | 0.013509 | 0.27017 | 0.3105 |
| 2 | 190 | 0.0015009 | 0.28518 | 0.4690 |
| 3 | 1140 | 0.00016677 | 0.19012 | 0.6275 |
| 4 | 4845 | 0.000018530 | 0.08978 | 0.7860 |
| 5 | 15504 | 0.0000020589 | 0.03192 | 0.9445 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
The most likely block is all zeros, yet the most likely weight is , because its 190 blocks outweigh the single block of zeros. The last column, the surprise per symbol, equals the entropy exactly when . In general,
where the last step adds and subtracts . With and , each extra one raises the surprise per symbol by bits.
For the binary source, the identity above turns the condition into . A window of 0.05 in the fraction of ones is . At the typical weights are , 2 and 3, so the typical set holds blocks, about , with total probability 0.74547. Their surprises lie between and bits per symbol, so each has probability between and , and their number lies between and , around . Table 8 follows the typical set as the block grows.
Table 8. The typical set for a source with and a window of 0.05 in the fraction of ones
| Typical | |||||
|---|---|---|---|---|---|
| 20 | 1 to 3 | 0.74547 | 10.399 | 6.21 | 12.55 |
| 100 | 5 to 15 | 0.93640 | 58.086 | 31.05 | 62.75 |
| 1000 | 50 to 150 | 0.99999972 | 605.30 | 310.50 | 627.49 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
The probability rushes toward 1 while the size stays between the bounds, and the asymptotic equipartition property says this always happens.
Proof. The probability of a block of independent symbols is a product, so its surprise per symbol is an average, , of independent terms whose mean is . The weak law of large numbers, from The Law of Large Numbers, says such an average falls within of its mean with probability tending to 1, which is . For the upper bound on the size, every typical block has probability at least , and the probabilities of all blocks add to at most 1, so there are at most of them. For the lower bound, every typical block has probability at most , and once there must be at least of them to hold that much probability.
Chebyshev's inequality makes the first step quantitative, though loosely. The fraction of ones has variance , so the probability of a fraction more than 0.05 from is at most , which is 0.036 at . The exact value there is , because the true probability falls exponentially in , as the Chernoff Bound of Probability for Coding shows. Figure 7 plots for two windows. A narrower window pins the size closer to but needs longer blocks before it holds most of the probability.
Numbering the typical blocks takes about bits, which recovers the compression rate of Source Coding and Prefix Codes. The noise pattern of is a block from exactly this source, so it is very likely one of about typical patterns, the cloud size of Equation 1.
09.The Random Coding Argument
The bound of Equation 1 says no code beats . Shannon reached it without building a code. He chose the codebook at random and showed that the error averaged over all codebooks is small, so some codebook does at least as well.
Walk through it with numbers. Take uses of and rate , below the capacity 0.5310. The codebook has codewords, and every bit of every codeword is chosen by a fair coin flip, independently. The decoder uses the Hamming distance, the number of positions in which two words differ. Given the received word , it lists the codewords within distance of . If there is exactly one, it outputs that codeword's message, and otherwise it declares an error. It is not the best decoder, but whatever it achieves the best decoder achieves too.
Suppose message is sent. Two things can go wrong. The first is that the noise flips more than 140 bits, so the sent codeword is not on the list. The number of flips is binomial with and , and the exact tail is . The second is that some other codeword also lies within 140 of . Here the randomness of the code does the work. Each other codeword was drawn independently of 's codeword and of the noise, so it is uniform over all words whatever is, and the chance that it lands within 140 of is the size of that ball divided by ,
There are fewer than other codewords, and by the union bound of The Union Bound the chance that any of them intrudes is at most , about . Adding the two failures, the error probability averaged over messages and codebooks is at most .
The radius balances the two failures. At the tail grows to while the intruder term shrinks to , and minimized over every radius the bound is . Figure 8 repeats the calculation for three rates and many block lengths.
To pass from one example to every rate below capacity, the ball needs a bound that shows its exponent.
Proof. Expand and keep only the terms with , which gives . Write each term's probability factor as . Because , the ratio is at most 1, so its power can only shrink as grows, and for it is at least its value at . Every kept term is therefore at least . Summing and multiplying through by gives the lemma.
For the example, gives , so the lemma bounds the intruder chance by against the exact , and the union term by , about . The lemma loses a few bits and keeps the exponent, which is all the general argument needs.
Proof. Since is continuous and increasing on , there is a with and . Decode with radius . The flips exceed with probability tending to zero by the weak law of large numbers, since their average fraction is , and the Chernoff bound of Chernoff [6] shows the fall is exponential. By the lemma and the union bound, an intruder appears with probability at most , and the exponent is negative. Both terms vanish.
Three refinements complete the direct half. A codebook average below means some codebook has average error below . At most half of its codewords can have error above , so discarding the worse half leaves rate with every message's error at most , which in the example is rate 0.399 and . And a general discrete memoryless channel needs only a new decoder. The codewords are drawn from the input distribution that achieves capacity, and the decoder picks the unique codeword jointly typical with , meaning that the pair looks like a typical input and output of the channel. A wrong codeword, independent of , passes with probability about , so the union over codewords vanishes when [5]. Gaussian codebooks do the same for the Gaussian channel [2].
10.Fano's Inequality and the Converse
The converse needs a link between error and entropy. If a decoder rarely errs, its input must leave little uncertainty about the message, and Fano's inequality [7] makes that precise.
Take numbers first. A message takes one of values, and a decoder guesses it from with error probability 0.1. Fano's inequality says the remaining uncertainty is at most bits, out of the 2 bits the message held. The first term pays for not knowing whether the guess is right, and the second, when it is wrong, for not knowing which of the other 3 values is correct.
Proof. Let be 1 when and 0 otherwise. Expand the uncertainty of the pair given by The chain rule from Information and Entropy in two orders. In the first, , and the last term is zero, because and fix both and , hence . In the second, . By the theorem Conditioning reduces entropy, . The term averages two cases. When , is known and the uncertainty is zero. When , which has probability , is one of the values other than , and How Large Entropy Can Be caps its uncertainty at . Equating the two expansions gives the inequality.
Now the converse. Let be uniform over messages, so . Split it into what the output reveals and what it leaves,
Fano bounds the first part. Since and , . For the second part, the encoder fixes once is known, and the channel output depends on only through , so and . The chain rule and the memoryless channel give , while the chain rule and Conditioning reduces entropy give . Together,
Combining, , and dividing by ,
For at rate 0.6, above the capacity 0.5310, the bound is 0.0983 at and 0.1133 at , approaching . So no code of rate 0.6 and length at least 1000 has block error below 0.1133. This is the weak converse, which only keeps the error away from zero. The finite-length bounds of Polyanskiy, Poor and Verdú imply the stronger statement that above capacity the error probability of a discrete memoryless channel tends to 1 [8]. With the converse gives , the cloud count of Counting Noise Patterns made rigorous.
Sources over Channels
The opening comparison of the chapter can now be made exact. A source of independent letters with entropy bits per letter is to be sent over a channel of capacity , using channel uses per letter.
Proof sketch. For the first half, compress blocks of letters to about bits, as in Source Coding and Prefix Codes, and send them with a channel code of rate between and . For the second half, Fano's inequality on a block of letters from an alphabet of size , with the argument of the converse, gives , which forces as and .
Compression and protection can therefore be designed separately without loss, which is why this book treats source codes and channel codes in different Parts. For the source with over , 0.8832 uses per letter is the least. Without exact reproduction the condition becomes , with the rate-distortion function of The Rate–Distortion Trade [5], and the worked example Sending a Gaussian Source Without a Code meets that bound with no code at all.
11.What the Theorem Promises and What It Leaves Open
The theorem promises that codes exist at every rate below capacity with error probability as small as desired, and that a code chosen at random is good with high probability. It gives no way to find one. Four gaps separate the promise from a working system.
The first is construction. The random code of the walk-through is a table of codewords of 1000 bits, about bits with no shorter description, and a practical code needs structure that generates its codewords from a short one.
The second is decoding. The radius decoder and the maximum-likelihood decoder both compare the received word with every codeword, comparisons per block, so the structure must also be one a decoder can exploit.
The third is block length. The proof makes the error small by making large, and the curves of Figure 8 fall slowly near capacity. Long blocks mean delay, since a decoder waits for the whole block, and memory to hold it.
The fourth is the finite-length penalty, which says how far below capacity a code of a given length must stay. Polyanskiy, Poor and Verdú showed that the best rate at block length and block error is close to
where inverts the Q-function of The Gaussian and the Q-Function, and is the channel dispersion [8]. For the binary symmetric channel,
which is the variance of the surprise of one noise symbol. It is the same fluctuation that blurred the edges of the typical set. For , and , and with and the approximation gives Table 9.
Table 9. The normal approximation to the best rate for , whose capacity is 0.5310
| Rate at | Rate at | |
|---|---|---|
| 100 | 0.2371 | 0.0790 |
| 1000 | 0.4381 | 0.3881 |
| 10000 | 0.5016 | 0.4858 |
Source: reproduced by ch07_capacity_and_shannons_theorem.py.
At and , the best code reaches only 0.825 of capacity, and a block of 100 symbols reaches less than half. The full expansion adds a term near , 0.0050 at , small beside the square-root term. Figure 9 plots the approach to capacity. The rest of this book is the search for codes with enough structure to be built and decoded, and good enough to sit near these curves.
12.Looking Ahead
A random code is good on average and can still be bad in detail. In the worked example A Small Random Code Decoded Exactly, 16 random codewords of 12 bits include two pairs that differ in only 2 positions, and the code barely beats sending each of its 4 message bits three times. The weakness is the distance between codewords, which a random choice leaves to chance.
The next chapter, Distance, Detection and Correction, makes distance the design target. It defines the Hamming distance between words and the weight of a word, and shows that a code whose codewords all differ in at least positions detects any errors and corrects any , the counting behind Hamming's first codes [9]. The theorem of this chapter proves that good codes exist but builds none, and minimum distance is the first handle by which a code can be built and checked. MacKay [10] and Cover and Thomas [5] give further proofs of the coding theorem, and Lin and Costello [11] begin the constructions there.
13.Worked Examples
14.Exercises
References
- [1]Shannon, Claude E. (1948). “A Mathematical Theory of Communication.” Bell System Technical Journal, 27(3), pp. 379–423. The paper concludes in the October issue, volume 27, number 4, pages 623 to 656. doi:10.1002/j.1538-7305.1948.tb01338.x
- [2]Shannon, Claude E. (1949). “Communication in the Presence of Noise.” Proceedings of the IRE, 37(1), pp. 10–21. doi:10.1109/JRPROC.1949.232969
- [3]Feinstein, Amiel (1954). “A New Basic Theorem of Information Theory.” Transactions of the IRE Professional Group on Information Theory, 4(4), pp. 2–22. doi:10.1109/TIT.1954.1057459
- [4]Gallager, Robert G. (1965). “A Simple Derivation of the Coding Theorem and Some Applications.” IEEE Transactions on Information Theory, 11(1), pp. 3–18. doi:10.1109/TIT.1965.1053730
- [5]Cover, Thomas M. and Thomas, Joy A. (2006). “Elements of Information Theory.” 2nd edition. Wiley-Interscience. doi:10.1002/047174882X
- [6]Chernoff, Herman (1952). “A Measure of Asymptotic Efficiency for Tests of a Hypothesis Based on the Sum of Observations.” The Annals of Mathematical Statistics, 23(4), pp. 493–507. doi:10.1214/aoms/1177729330
- [7]Fano, Robert M. (1961). “Transmission of Information: A Statistical Theory of Communications.” M.I.T. Press. https://archive.org/details/transmissionofin0000fano
- [8]Polyanskiy, Yury and Poor, H. Vincent and Verdú, Sergio (2010). “Channel Coding Rate in the Finite Blocklength Regime.” IEEE Transactions on Information Theory, 56(5), pp. 2307–2359. doi:10.1109/TIT.2010.2043769
- [9]Hamming, Richard W. (1950). “Error Detecting and Error Correcting Codes.” Bell System Technical Journal, 29(2), pp. 147–160. doi:10.1002/j.1538-7305.1950.tb00463.x
- [10]MacKay, David J. C. (2003). “Information Theory, Inference, and Learning Algorithms.” Cambridge University Press. The author's site offers the whole book free to read on screen. https://www.inference.org.uk/itila/book.html
- [11]Lin, Shu and Costello, Jr., Daniel J. (2004). “Error Control Coding: Fundamentals and Applications.” 2nd edition. Pearson Prentice Hall.
— Anirban
Hardware–software at the seam where compilers meet microcode.