Today we will explore some key bounds on the parameters of error-correcting codes to help us quantify the trade-offs between code length, dimension, and minimum distance.
Explain why the general \(q\)-ary Hamming code is a perfect code. Remember that this code has parameters \([n, n - r, 3]_q\) where \(n = (q^r - 1)/(q - 1)\text{.}\)
The next exercises walk you through three ways of understanding the Singleton bound for codes. Throughout them, let \(C\) be an \((n,M,d)_q\) code (not necessarily linear).
Does this code have the same number of codewords as \(C\text{?}\) Why or why not? What is the maximum possible number of codewords in \(C'\text{?}\) Use this to give a bound on \(M\) in terms of \(n,q\text{,}\) and \(d\text{.}\)
Consider the integer \(\ell=\lceil \log_q M \rceil-1\text{.}\) Explain why there must be two codewords in \(C\) that agree on the first \(\ell\) symbols. Use this to give a bound on \(d\) in terms of \(n,q\text{,}\) and \(M\text{.}\)
For linear codes, things are nicer. Now suppose \(C\) is a linear \([n,k,d]_q\) code with parity-check matrix \(H\text{.}\) What can you say about any set of \(n-k+1\) columns of \(H\text{?}\) Use this with Proposition 2.3.7 to give a bound on \(d\) in terms of \(n,q\) and \(k\text{.}\)
Think about the form of the square matrix formed by selecting any 4 columns of \(H\) and calculating its determinant. I do not recommend doing this manually for all 15 possible choices.