340 likes | 363 Views
Information and Coding Theory Some important classes of cyclic codes. Bose- Chaudhuri - Hocquenghem (BCH) codes. Reed-Solomon codes. Juris Viksna , 2018. Determinants. Lets start with something we known very well from linear algebra :). Determinants. In general case: where:
E N D
Information and Coding Theory Some important classes of cyclic codes. Bose-Chaudhuri-Hocquenghem (BCH) codes. Reed-Solomon codes. Juris Viksna, 2018
Determinants Lets start with something we known very well from linear algebra :)
Determinants In general case: where: and Mij is obtained from | by deleting the row and column containing aij.
Determinants In general case: where: and Mij is obtained from A by deleting the row and column containing aij. What we will need here is that set of n polynomials of degree nis linearly independent if and only if determinant of matrix formed by their coefficients is non-zero.
Vandermonde matrices and determinants We will consider determinant of special form:
Vandermonde matrices and determinants [Adapted from V.Pless]
BCH codes - we already had an example Let's recall the decoding procedure of Hamming codes: The syndrome of the received vector was either 0 (no errors), or f(i), if error has occured in i-th position. And f(i) here is just a binary representation of i. Can we design something similar for larger number of errors? E.g. a code correcting 2 errors, with an appropriate function f, such that for errors occuring in positions i and j these values (i and j) are easily computable from the sum f(i)+f(j)? As it turns out, the problem is solvable, if for example f(i)=a3i, where a is a primitive root of GF(16).
BCH codes - the idea • How can we specify cyclic codes: • by specifying generator polynomial • Are there other possibilities? • Assume that generator polynomial for code C is f(x)=1+x+x3. It is minimal polynomial in GF(8) with roots a, a2 and a4. • Hence, a polynomial h(x) is in C if and only if it's roots include a, a2 and a4.
BCH codes - the alphabet Until now we generally considered codes consisting of binary vectors. If we consider a BCH code over GF(2m), the codewords still can be represented as binary vectors, however, in general the encoding is done for vectors with elements from GF(2k) for some k < m and correction of t errors means that code can recover the message if up to t subblocks of length k have been corrupted. This is a useful property in case of burst errors , i.e. if in case of an error several consecutive bits tend to be corrupted. For example, consider data endoding on CD - if a CD is scratched, then it is very likely that more than just one consecutive bit will be corrupted.
BCH codes - some examples Let’s consider GF(2r) and let g(x) be a primitive polynomial with coefficients from GF(2). It has degree r and defines a cyclic code over GF(2). Let be a root of g(x). For every codeword c(x) we have c()=g()a() = 0. We also have c() = c0+c11+c22+...+cnn, where n = 2r1. We have that c is orthogonal to H = (1 2 ... n). Notice that we just have defined a code equivalent to Ham(r,2), i.e. Hamming codes can be regarded as cyclic! Notice that c is orthogonal also to H = (1 i 2i ... ni), for i = 1,2,4,...,2r 1.
BCH codes Example: q=2, m=4, =5; we consider minimal polynomials for {, 2, 3, 4}, these will be x4 + x3 + 1 and x4 + x3 + x2 + x + 1. Code has dimension 7 (but we need to have minimal polynomials to know this. H is almost a parity check matrix - i.e. it is orthogonal, but may have some extra rows.
BCH codes Example: q=2, m=4, =5; we consider minimal polynomials for {, 2, 3, 4}, these will be x4 + x3 + 1 and x4 + x3 + x2 + x + 1. H is almost a parity check matrix - i.e. it is orthogonal, but may have some extra rows. However, notice that any 4 columns of H are linearly independent - thus minimal distance will be at least 5.
BCH codes - code length • We always will be able to obtain codes of length n = qr1. What about other sizes? • Lets consider q=2 and r=11, m = 2r1 = 2047. • we can have code of length n = m = 2047. • for other values of n polynomial xn1 should divide xm1. • m = 2047 = 8923. • x20471 is divisible by x891 and x231. • to obtain codes of length n = 89 we should consider roots that are powers of = 23, where is a primitive element of GF(211). • to obtain codes of length n = 23 we should consider roots that are powers of = 89, where is a primitive element of GF(211).
Another useful reminder - Singleton bound Yet another proof: Observe that rank H = nk. Any dependence of s columns in parity check matrix yields a codeword of weight s (any set of non-zero components in codeword dependence relation in H). Thus d 1 n k. Thus to show that minimal distance is d, it suffices to show that any d columns of parity check matrix H are linearly independent.
BCH codes [Adapted from V.Pless]
BCH codes The determinant is non-zero, thus, d. [Adapted from V.Pless]
BCH codes This trivially follows from the fact that H has (1) rows, however this isn’t a particularly good bound. [Adapted from V.Pless]
Reed-Solomon codes The code was invented in 1960 by Irving S. Reed and Gustave Solomon, who were then members of MIT Lincoln Laboratory. Their seminal article was "Polynomial Codes over Certain Finite Fields." When it was written, digital technology was not advanced enough to implement the concept. The key to application of Reed-Solomon codes was the invention of an efficient decoding algorithm by Elwyn Berlekamp, a professor of electrical engineering at the University of California, Berkeley. Today they are used in disk drives, CDs, telecommunication and digital broadcast protocols.
Reed-Solomon codes [Adapted from V.Pless]
RS codes - a geometric interpretation [Adapted from P.Shankar]
Reed-Solomon codes [Adapted from V.Pless]
Some applications of Reed-Solomon codes PDF-417 QR code Information storage on CD, CD-ROM, DVD, hard drives etc [Adapted from wikipedia.org]
Decoding of Reed-Solomon codes Reed-Solomon proposition: Look at all possible subsets of k symbols from n symbols in which errors could have occurred :) The number of subsets is - around 359 billion for (255,249) code that can correct 3 errors. Fortunately there are more practical methods: Peterson-Gorenstein-Zierler algorithm Berlekamp-Massey algorithm [Adapted from wikipedia.org]
Decoding of BCH codes In case of one error correcting code we simply know y1= i, giving us error position. For two error correcting code we have y1= i+ j, y2 = i3 +j3. We managed to solve also this case. In general case we have equation system: where Yi gives error values (just 1 in binary case) and Xi gives error positions. Can we solve this? [Adapted from V.Pless]
Decoding of BCH codes We possess the values Si; (2t of them) and we need to find the values of Xi (r of them) and the values of Yi (r of them, but in binary case all of these will be equal to 1). rt in this case is the number of errors that has occurred. Error-locator polynomial: s(x) = (1 xX1) (1 xX2) (1 xXr) = 1+s1 x+...+ srxr. s(x) has zeros at the inverses from code locations. Can we compute si-s from Si-s? [Adapted from V.Pless]
Decoding of BCH codes s(x) = (1 xX1) (1 xX2) (1 xXr) = 1+s1 x+...+ srxr. Let x=Xi1and let multiply both sides of equation by YiXij+r. We get [Adapted from V.Pless]
Decoding of BCH codes [Adapted from V.Pless]
Decoding of BCH codes [Adapted from V.Pless]
Decoding of BCH codes [Adapted from V.Pless]
Decoding of BCH codes Proof Let and [Adapted from V.Pless]
Decoding of BCH codes Peterson-Gorenstein-Zierler decoding scheme (binary case) [Adapted from V.Pless]