Error Correcting Codes 3
Error Correcting Codes 3
0 1 2 3
1 𝑥 + 0 𝑥 +1 𝑥 +1 𝑥
Cyclic Codes
Polynomial Properties
100100
010010
001001
Cyclic Codes
Generator Polynomial
(𝑛 −𝑘 )
𝑥 𝑚 ( 𝑥 )=𝑞 ( 𝑥 ) 𝑔 ( 𝑥 ) +𝑟 ( 𝑥
(𝑛 − 𝑘)
𝑐 ( 𝑥 )=𝑥 𝑚 ( 𝑥 ) +𝑟 ( 𝑥 )
Cyclic Codes
Systematic Encoding
Cyclic Polynomial Codes
0 1 2 𝑛
𝑏 0 𝑥 +𝑏1 𝑥 +𝑏2 𝑥 + …+𝑏𝑛 𝑥
1 0 11
0 1 2 3
1 𝑥 + 0 𝑥 +1 𝑥 +1 𝑥
2 3
1+ 𝑥 + 𝑥
0110 1110
0100 1100
Generator
Matrix
0010 1010 0111 1111
[ ]
0011 1011 1 0 0 0 1 1 0
0001 1001 0 1 0 0 1 0 1
0 0 1 0 0 1 1
0 0 0 1 1 1 1
[ 11 0 1] [ 11 0 1 1 0 0]
0110 1110
0100 1100
Generator
0000
0010
1000
1010 0111 1111
Polynomial
0101 1101
0011 1011
2
0001 1001
1+ 𝑥
Message Space Codeword Space
3 2 5
1+ 𝑥+ 𝑥 1+ 𝑥+ 𝑥 + 𝑥
10 11 𝑥 1+ 𝑥
𝑥
00 01 0 1
1 1] 1 1+ 𝑥
Message Codeword Message Codeword
0 00 0 0
1 11 1
110 111 𝑥+ 𝑥
2
1+ 𝑥+ 𝑥
2
010 011 𝑥 1+ 𝑥
100 101 𝑥
2
1+ 𝑥
2
000 001 𝑥 0 1
[ 1 1 1] 1+ 𝑥+ 𝑥
2
Message Codeword Message Codeword
0
1
000
111
1 0
1
0
Polynomials are like Integers
Integer Division Polynomial Division
𝑎= 𝑏⋅ 𝑞 +𝑟
11 5625
5625=11 ⋅ 511+ 4
5 4 2
𝑥 +1 𝑥 + 𝑥 + 𝑥 +1
2
Polynomials are like Integers: Modular
Arithmetic
ℤ /12 ℤ ℤ12
12 ℤ={… ,− 24 , −12 , 0 ,+12 ,+24 , …}
Polynomials are like Integers: Modular
Arithmetic
ℤ /5 ℤ ℤ [ 𝑥 ] / ( 𝑥 − 𝑥)
3
8=5+ 3 ≡3
17=5+ 5+5+ 2≡ 2
ℤ /2 ℤ
6=2+ 2+2 ≡0
−1=−(2)+1≡ 1
Polynomials are like Integers:
Irreducibles
Composites: Reducibles :
Primes: Irreducibles :
2,3,5,7,11,13,…
𝑏 0 𝑏 1 𝑏2 … 𝑏𝑛 −1
𝑏 0 𝑏 1 𝑏2 𝑏3 𝑏 4 ℤ2 [ 𝑥 ] / ( 𝑥 − 1)
5
2 3 4
𝑐 ( 𝑥 )= 𝑏0 +𝑏1 𝑥+ 𝑏2 𝑥 +𝑏3 𝑥 + 𝑏4 𝑥
𝑏 4 𝑏0 𝑏1 𝑏2 𝑏3
𝑏 0 𝑏 1 𝑏2 … 𝑏𝑛 −1 ℤ2 [ 𝑥 ] / ( 𝑥 𝑛
−1)
2 𝑛− 1
𝑐 ( 𝑥 )= 𝑏0 +𝑏1 𝑥+ 𝑏2 𝑥 +…+ 𝑏𝑛 −1 𝑥
ℤ2 [ 𝑥 ] / ( 𝑥 −1)
𝑛
Cyclic Codes
2 3
𝑐 ( 𝑥 ) ⇒ 𝑥 𝑐 ( 𝑥 ) ⇒ 𝑥 𝑐 ( 𝑥) ⇒ 𝑥 𝑐 ( 𝑥) ⇒ …
Linear Codes
ℤ2 [ 𝑥 ] / ( 𝑥 − 1)
6
ℤ2 [ 𝑥 ] / ( 𝑥 − 1)
6
ℤ2 [ 𝑥 ] / ( 𝑥 − 1)
6
ℤ2 [ 𝑥 ] / ( 𝑥 − 1)
6
Messages (k=3)
2 2
𝑥 +𝑥 𝑥 + 𝑥 +1
𝑥 𝑥+ 1
2
𝑥
2
𝑥 +1
0 1
Messages (k=3) Codewords (n=6)
𝑐 ( 𝑥 )=𝑚 (𝑥) 𝑔 ( 𝑥 )
⃗ =111110
𝑐 𝑐 ( 𝑥 )=𝑚 (𝑥) 𝑔 ( 𝑥 )
2 3 4
𝑐 ( 𝑥 )=1+ 𝑥 + 𝑥 + 𝑥 + 𝑥 𝑔 ( 𝑥 )=1+ 𝑥 3
4 3 2
𝑥 + 1 𝑥 + 𝑥 + 𝑥 + 𝑥 +1
3
⃗ =111110
𝑐 𝑐 ( 𝑥 )=𝑚 (𝑥) 𝑔 ( 𝑥 )
2 3 4
𝑐 ( 𝑥 )=1+ 𝑥 + 𝑥 + 𝑥 + 𝑥 𝑔 ( 𝑥 )=1+ 𝑥 3
1+ 𝑥+ 𝑥 + 𝑥 + 𝑥 = (1+ 𝑥 ) ( 1+ 𝑥 ) + 𝑥
2 3 4 3 2
⃗ =111110
𝑐 ⃗ =00 1 000
𝑒
⃗ =00 1 000
+𝑒
11 0 110
Cyclic (Linear) Polynomial Codes
All valid codewords must be divisible by the
generator polynomial .
𝑐 ( 𝑥 )=𝑚 ( 𝑥 ) 𝑔 ( 𝑥 ) +𝑒 ( 𝑥)
Parity-Check Generator Matrix View Polynomial View
⃗ =𝑚
𝑐 ⃗ 𝐺 𝑐 ( 𝑥 )=𝑚 ( 𝑥 ) 𝑔 ( 𝑥 )
⃗ ⃗
𝑇
𝐻 𝑐 =0 h ( 𝑥 ) 𝑐 ( 𝑥 )=0
Parity-Check ℤ2 [ 𝑥 ] / ( 𝑥 −1)
𝑛
Polynomial
Definition: 𝑔 ( 𝑥 ) h ( 𝑥 )= ( 𝑥 − 1 ) ≡ 0
𝑛
ℤ2 [ 𝑥 ] / ( 𝑥 − 1) 𝑔 ( 𝑥 )=1+ 𝑥
6 3
𝑔 ( 𝑥 ) h ( 𝑥 )= ( 𝑥 − 1 ) ≡ 0
6
6
𝑥 +1 𝑥 −1
3
ℤ2 [ 𝑥 ] / ( 𝑥 − 1) 𝑔 ( 𝑥 )=1+ 𝑥
6 3
𝑔 ( 𝑥 ) h ( 𝑥 )= ( 𝑥 + 1 ) ≡ 0
6
3
𝑥 +1
6
𝑥 + 1 𝑥 +1
3
3
h ( 𝑥 )=1+ 𝑥
⃗
𝑚 𝐺=𝑐⃗
⃗ ⃗ =1101
𝑚 =101001𝑔
2 5 3
𝑚 ( 𝑥 ) =1+ 𝑥 + 𝑥 𝑔 ( 𝑥)= 1+ 𝑥+ 𝑥
𝑐=111000101
Word
Length
Word
Length
Word
Length
Simple Encoding:
𝑐 ( 𝑥 )=𝑚 ( 𝑥 ) 𝑔 ( 𝑥 )
Systematic Encoding
deg (𝑔 )
𝑥 𝑚 ( 𝑥 )=𝑞 ( 𝑥 ) 𝑔 ( 𝑥 ) +𝑟 ( 𝑥
deg (𝑔)
𝑐 ( 𝑥 )= 𝑥 𝑚 ( 𝑥 ) +𝑟 ( 𝑥)
Simple Encoding:
𝑐 ( 𝑥 )=𝑚 ( 𝑥 ) 𝑔 ( 𝑥 )
Systematic Encoding (common with CRCs)
(𝑛 −𝑘 )
𝑥 𝑚 ( 𝑥 )=𝑞 ( 𝑥 ) 𝑔 ( 𝑥 ) +𝑟 ( 𝑥
(𝑛 − 𝑘)
𝑐 ( 𝑥 )= 𝑥 𝑚 ( 𝑥 ) +𝑟 ( 𝑥 )
Polynomials are like Integers
Integer Division Polynomial Division
Codewords of length
Cyclic (Linear) Codes
• Any circular shift of a valid codeword is another valid codeword
• We normally only care about cyclic codes that are also linear
𝑔 ( 𝑥 ) h ( 𝑥 )= ( 𝑥 − 1 ) ≡ 0
𝑛
Next: (Cyclic) Reed-Solomon Codes