Cryptology and Coding Theory Homework #3 Due Thursday 5 October 2006 Note: This is an important homework assignment because it brings together many ideas and uses them to further your knowledge. It is also the last homework before your test on the coding theory portion of the course. You can discuss the problems with your classmates, but you must write up solutions on your own. Indicate any collaboration on your homework. In Group Homework #2, you showed that the extended code of a linear code is linear. Problem 1 below continues along this theme. 1. Suppose that C is a binary code with parity check matrix H. Write down the parity check matrix for the extended code of C. (Your new parity check matrix will involve the matrix H.) Explain why your answer is correct. Problem 2 below asks you to design a linear code for a special channel. 2. Suppose that a special binary channel accepts codewords of length 7 and that the only errors ever observed are 0000000 (no error), 0000001, 0000011, 0000111, 0001111, 0011111, 0111111, 1111111. Your job is to design a linear code of length 7 that will correct all such errors, and your code has to have the largest rate possible. Begin by determining and explaining the maximum rate. Then, find such a code with this maximum rate. Be sure to explain your reasoning! Problems 3, 4, 5, and 6 below further your knowledge about the connections among parity check matrices, syndromes, error-correction, and decoding. You know that given a linear code C, you can find a parity check matrix H such that c is a codeword in C if and only if cHT = 0. Problem 3 says that the opposite is also true: If you start with a matrix A and find all vectors such that cAT = 0, then those vectors form a linear code. 3. Let A be any r x n binary matrix. Consider the set D of all binary vectors c of length n such that cAT = 0. Prove that D is a linear code. Given a linear code C and its parity check matrix H, we know how to define the syndrome of any received vector r: The syndrome of r is rHT. We know that if the syndrome of r is equal to 0, then we assume no errors occurred. We also discussed that it would be nice if nonzero syndromes could actually tell us which errors occur. The next problems will further investigate this idea. 4. Prove that if two q-ary vectors u and v of length n lie within the same coset of a q-ary linear code C of length n, then u and v have the same syndrome (using the parity check matrix of C). For bonus points (not required), prove that the opposite is also true: Prove that if two received vectors u and v have the same syndrome, then they lie in the same coset of the linear code being used. From Problem 4, we see that if we make a standard array by using cosets of C as the rows in the standard array, all vectors within a row will have the same syndrome. 5. In class, we have been working with the example C = {00000, 10110, 01011, 11101}. You were given a generator matrix and parity check matrix for C. Recall these or derive them using the method in Chapter 2. Write out the “top part” of the standard array. To the right of each row, write down the syndrome associated with the vectors in that given row. This forms a new column, we’ll call it the syndrome column. Problems 4 and 5 suggest a short-cut in decoding. We receive a vector r. Compute its syndrome. If the syndrome is equal to 0, then we conclude no errors occurred. If the syndrome does not equal 0, then find the syndrome in the syndrome column of the standard array. Then, the received vector must be in the row corresponding to this syndrome, so now we can determine which error occurred. At the very least, using the syndrome column helps us find the received vector within the standard array. (We only need to look through one column to find the correct row, rather than looking through the entire table.) If you read more in Chapter 2, you will learn that the syndrome column can be used to save even more time! (This is really cool, so you should read about it!) We discussed in class that the syndrome of a received vector is equal to the syndrome of the error that occurred. (Be sure that you can do this proof – it is an important one!) This suggested that we should hope that the syndromes of different errors would be different. In turn, this gave us some information about how we should construct parity check matrices for binary linear codes. The next problem extends this idea to ternary linear codes. 6. Prove that any linear ternary code with a check matrix H can correct all single errors if and only if no two columns of H are linearly dependent (in other words, no two columns of H sum to 0 or subtract to 0). 7. ONE MORE PROBLEM MAY BE ADDED AFTER CLASS ON MONDAY OCT 2!