diff options
author | JJ | 2024-09-29 22:20:09 +0000 |
---|---|---|
committer | JJ | 2024-09-29 22:20:09 +0000 |
commit | bd1f6b5eefe15c8f5fa73da2d1fc4b36705bfe0e (patch) | |
tree | 4ee8742f4094a7faef15a8f105b35a41c26115ce /mathematics/coding-theory.md | |
parent | fb85224768325eecd474a67e335634918966e963 (diff) |
meow
Diffstat (limited to 'mathematics/coding-theory.md')
-rw-r--r-- | mathematics/coding-theory.md | 1049 |
1 files changed, 0 insertions, 1049 deletions
diff --git a/mathematics/coding-theory.md b/mathematics/coding-theory.md deleted file mode 100644 index b080ed6..0000000 --- a/mathematics/coding-theory.md +++ /dev/null @@ -1,1049 +0,0 @@ ---- -layout: algebra -title: mathematics/algebra/coding theory ---- - -# MATH 342: Coding Theory - -<!-- ## Thursday 2023-09-07 --> - -Sections 1-9, 11-12, 14 - -## Things I forget -- $M$ = number of codewords. the sphere packing bound -- $n$ = length of codewords -- $d$ = distance between codewords. or minimal distance of a code -- $k$ = the dimension of the code, number of row vectors in a generator matrix -- $q$ = the alphabet -- $V(n, q) = F_q^n$ -- (n, ?, ?)-code -- [?, ?, ?]-code -- r = ??? -- $C$: a code. -- $G$: the generator matrix. -- $H$: the parity-check matrix. - -## What is coding theory? - -<!-- Chapter 1: Introduction --> -<!-- Chapter 2: The main coding theory problem --> - -Coding theory deals with **codes**: ways to represent data robustly & securely. -MATH 342 will mostly cover the theory behind *detecting & correcting* errors. - -<!-- ## Tuesday 2023-09-12 --> - -Definition: A **code** C is a set of codewords, for example: - -``` -C = { - w1 = 00000 - w2 = 01011 - w3 = 10101 - w4 = 11110 -} -``` - -A goal of codes is to *detect and correct errors*. How can we do this? Coming back to it later. - -Definition: A **q-ary** (n, M, D) code C is a set of codewords such that: -- $q$ = size of alphabet -- $n$ = length of codewords (when consistent) -- $M$ = number of codewords -- $d$ = *minimal distance* of the code - -A *2-ary code* is a **binary code**, a *10-ary code* is a **decimal code**. etc. - -Let $(F_q)^n$ denote the set of all ordered $n$-tuples $a = a_1 a_2 ... a_n$, where each $a_i \in F_q$. -The elements of $(F_q)^n$ are called *vectors* or *words*. -The order of the set $(F_q)^n$ is $q^n$. -A $q$-ary code of length $n$ is a subset of $(F_q)^n$. - -### Distance functions & Hamming distance - -Consider the distance: -- $d(x, y) = \text{# of places where they differ}$ -- $d(C) = min(d(x, y))$ such that $x ≠ y$ - -Definition: The **Hamming distance** of two codes a, b is the number of *places* where a and b differ. - -The **distance function** $dist(x, y)$ on a set $S$ satisfies: -- $dist(x, y) == dist(y, x)$ -- $dist(x, y) ≥ 0$ and $dist(x, y) == 0 ⟺ x == y$ -- $dist(x, z) ≤ dist(x, y) + dist(y, z)$ - -The last one is known as the *triangle inequality*. - -Aside: A set $S$ plus a distance function $dist$ is known as a **metric space**. - -### Error detection & correction - -Definition: The **minimum distance** between distinct codewords is denoted $d(C)$, and given to be $d(C) = min \{dist(x, y) | x, y ∈ C, x ≠ y\}$, for some code $C$. - -Given a code $C$, $d(C) = d$ (where $d(C)$ is the minimum distance in the code) -1. The code can *detect* up to $d-1$ errors. -2. The code can *correct* up to $d-1 / 2$ errors. - -### Nearest neighbour decoding - -Just how should we go about *decoding* these codes? Particularly when there is error correction involved. This is obvious, but... -the **nearest neighbour decoding** is the decoding such that the distance between the received word and a codeword is as *small* as possible. - -This *maximizes* the likelihood of correcting errors given the following assumptions: -- Every symbol is equally likely to have been received in error -- If a symbol is received in error, then each of the $q-1$ possible errors is equally likely. - -This is also known as a $q$-ary **symmetric channel**. - -### What makes a good code? - -**The main coding theory problem.** A good (n, M, D)-code has: -- a small $n$: for compactness & subsequently speed -- a large $M$: to fit many codewords & subsequently a variety of messages -- a large $d$: to correct many errors - -What is known as **the main coding theory problem** is a solution of how to balance these conflicting aims, by the way of *optimizing* one of the parameters for *given values* of the other two. - -The **usual version of the main coding problem** is to find the largest possible $M$, i.e. the code with the most codewords, given a fixed $n, d, q$. - -We denote $A_q(n, d)$ to be the largest M s.t. there exists a $q$-ary $(n, M, d)-code$. -- This is known for $d=1$: $A_q(n, 1) = q^n$ -- This is known for $d=n$: $A_q(n, n) = q$ - -<!-- General problem: Consider a bunch of points in a box of size ???. Each point is a word, and must be at least distance $d$ apart. How many words can you find in $F_q^n$? --> - -<!-- ## Thursday 2023-09-14 --> - -### Equivalence of codes - -**Definition**: Two codes are *equivalent* if we can go from one to the other using elementary operations. Elementary operations are: -1. Permute rows. -2. Permute columns. -3. Permute all the symbols in a column. - -Any $q$-ary $(n,M,d)$-code over an alphabet $\{0,1,...,q-1\}$ is also equivalent to an $(n,M,d)$-code which contains the zero vector. -- Proof: This is trivial by ordering some code at the top and permuting the non-zero symbols to zero. - -### Weight of a vector - -The weight of a vector in $(F_2)^n$ is simply the count of $1$ bits. -- If $x, y \in (F_2)^n$, then $d(x,y) = w(x+y)$. -- If $x, y \in (F_2)^n$, then $d(x,y) = w(x) + w(y) - 2w(x ∩ y)$. - -Some theorems about oddness and evenness: -- If $d$ is odd, then a binary $(n,M,d$-code exists if and only if a binary $(n+1, M, d+1)$-code exists. -- If $d$ is odd, then $A_2(n+1, d+1) = A_2(n,d)$. Equivalently, if $d$ is even, then $A_2(n,d) = A_2(n-1,d-1)$. - -### Binomial coefficients - -Note the definition of the binomial: -$$\binom{n}{m} = \frac{n!}{m!(n-m)!}$$ - -An ordered selection of $m$ distinct objects from a set of $n$ distinct objects can be made in $\frac{n!}{(n-m)!}$ ways. - -An unordered selection of $m$ distinct objects from a set of $n$ distinct objects can be made in $\binom{n}{m} = \frac{n!}{m!(n-m)!}$ ways. - -todo: binomial coeffients -sphere packing bounds -perfect codes -balanced blocks -baby finite fields - -<!-- ## Tuesday --> - -### Sphere Packing Bound - -Consider $(n, M, d)$ for some q-ary code C. -- n: length of words -- M: number of words -- d: minimum distance -- q: alphabet set (??) - -(n, M, d)-codes -[n, k, d]-codes are the same as (n, q^k, d)-codes - linear, so M = q^k and linear -[n, k]-codes leave d implied (also linear) - -Ham(r, q) - -Sphere packing is an application of the main coding theory problem. Fix q, n, d. Then $A_q(n, d) = max(M)$. - -Assume d is odd, and d = 2t + 1. - -$F_q^n$ = all words of length n - -Consider the idea of fitting codewords in a box: we can represent those as spheres, and so the distance does fancy stuff - -$S(w_i, t)$ = all words of distance ≤ t from $w_i$ -- where $w_i$ = the center -- t = radius - -$A_q(n, d)$ = the maximum number of disjoint spheres of radius t that fit into $F_q^n$ - -$N_t$ = the number of points in a sphere of radius t -$F_q^n$ has $q^n$ points - -**Sphere packing bound** -M = number of spheres ≤ (# points in $F_q^n$ / # points in a sphere) = ($q^n/N_t$) - -The **sphere-packing bound** or **Hamming bound** states that a q-ary $(n, M, 2t+1)$-code satisfies $M ≤ q^n$. - - -A code that achieves the sphere-packing bound is called a **perfect code**. Intuitively, for a perfect code, the $M$ speheres of radius $t$ centred on the words "fill" the whole space $(F_q)^n$ without overlapping. - -Example: Binary reptition codes: $n=3$, $d=3$, $q=2$: i.e. $C = \{000, 111\}$. -- $M ≤ 2^3 / N_t = 8/4 = 2$ - - -All binary repitition codes are perfect, i.e. when n = d - -Finding $N_t$ for a general n, q, t: -choose which $n$ symbol to -choose a new symbol: q-1 choices ??? -n(q-1) - - -Example: finding the bound for $q=3$, $n=7$, $d=5$. How big of a code can we find for these parameters? $d=5$, so $t=2$: $d=2t+1$ - -$N_t$ = 1 + (n 1)(q-1) + (n 2)(q-1)^2 = 99$ -$M ≤ 3^7/99 = 81*27/99 = 22.9$ -$A_3(n=7, d=5) ≤ 22$ - -<!-- ## Thursday --> - -## A Taste of Abstract Algebra - -<!-- Chapter 3: Introduction to finite fields --> -<!-- Chapter 4: Vector spaces over finite fields --> - -Recall: sphere packing. in $ℝ^2$, it's easy: points form a lattice. -If you fix the zero point my center is closed under addition -A **lattice** is a set of points closed under addition. - -$ℤ^n ⊆ ℝ^n$ - -We want to do the same for any code C that is closed under addition. -How do we add two vectors? - -$C ⊆ F_q^n =~ ℝ^n$ - -### Rings and Fields - -A **ring** $R$ is a set of elements with *two* operations + (addition) and • (multiplication) satisfying: -- $F$ is *closed* under $+$ and $•$ -- + is commutative, associative, and distributive; • is associative and distributive - - commutative on addition: $a+b = b+a$ - - associative: $(a+b)+c = a+(b+c)$, $a•(b•c) = (a•b)•c$ - - distributive: $a•(b+c) = a•b + a•c$ -- The additive identity element $0$ must exist - - $∀a ∈ R : a + 0 = a$ -- The multiplicative identity element $1$ must exist -- The additive inverse element $(-a)$ must exist - - $∀a ∈ F : a + (-a) = 0$ - -We will take "ring" to refer to **abelian/commutative rings**. This adds commutativity on multiplication (), and the multiplicative identity element $1$ ($∀a ∈ R : a • 1 = a$). -- unital - -- why with an identity????? do rings not normally have both additive and multiplicative identities????????? - -in every ring, 0 times something is 0 -0 + a = b -0b + ab = ab -R = \{0\} is a ring, not a field - -2ℤ has no 1 - -A **field** $F$ is a set of elements with *two* operations + (addition) and • (multiplication) satisfying: -- $F$ is *closed* under + and • -- + and • are commutative, associative, and distributive - - commutative: $a+b = b+a$, $a•b = b•a$ - - associative: $(a+b)+c = a+(b+c)$, $a•(b•c) = (a•b)•c$ - - distributive: $a•(b+c) = a•b + a•c$ -- The additive identity element $0$ must exist - - $∀a ∈ F : a + 0 = a$ -- The multiplicative identity element $1$ must exist - - $∀a ∈ F : a • 1 = a$ -- The additive inverse element $(-a)$ must exist - - $∀a ∈ F : a + (-a) = 0$ -- The multiplicative inverse element $a^{-1}$ must exist, when $a ≠ 0$ - - $∀a ∈ F : a • a^{-1} = 1$ - - is this true for 0???? - -Fields behave as standard operations on the rationals and reals. The only difference between a field and an (abelian) ring is the existence of a *multiplicative inverse*. - -A ring can also be regarded as having *three* operations, with - given by its status as an additive inverse, i.e. $a-b = a+(-b)$. - -A field can also be regarded as having *four* operations, with - and ÷ given by their definitions as inverses, i.e. $a-b = a+(-b)$ and $a÷b = a(b^{-1})$ for $b ≠ 0$. - -The operation $a•b$ can be more succienctly written as $ab$. The operation $a÷b$ can be alternatively writtten as $a/b$. - -### Euclidean Arithmetic - -For a given number $q + r/m$, $r$ is the **principle remainder**. - -$m$ **divides** $n$ $m|n$ if $n/m$ is an integer. - -A number is **prime** if its divisors are $1, n$ only. - -Theorem: $gcd(m, n) = gcd(m, n-q•m)$ - -<!-- ## Tuesday 2023-09-26 --> - -### The modular integers - -Consider $ℤ_m = (\{0,1\}, +, •)$ -For example: $ℤ_2 = \{0,1\}$. -- $0+1=1$ -- $1+1=0$ -- $0•1=0$ -- $1•1=1$ - -Another example: $ℤ_4 = \{0,1,2,3\}$ - -`+` | 0 1 2 3 ------------ -0 | 0 1 2 3 -1 | 1 2 3 0 -2 | 2 3 0 1 -3 | 3 0 1 2 - -`•` | 0 1 2 3 ------------ -0 | 0 0 0 0 -1 | 0 1 2 3 -2 | 0 2 0 2 -3 | 0 3 2 1 - -Note the difference between the integers and the reals. In ℤ, $a/b$ may not exist - ℤ is a *ring*. In ℝ, $a/b$ always exists if $b != 0$ - ℝ is a *field*. - -### Division in $ℤ_m$ - -When does $1/n$ exist in $ℤ_m$? -- $1/n = a ⟺ a•n ≡ 1 (mod m)$ -- $⟺ a•n + b•m = 1$ for some b -- $⟺ gcd(n,m) = 1$ - -Some examples of modular math: -- $a•5 + b•7 = 1$, $3•5 + 2•7 = 1$ - -Ex. $ℤ_4$, $1/2$ does not exist -- gcd(2, 4) != 1 - -Theorem: $ℤ_m$ is a field if and only if $m$ is prime. -Proof: -- Assume $M$ is prime. -- We must show every $n$ in $\{1, 2, 3, ...\}$ is invertible if and only if $gcd(m, n) = 1$. -- If m$m is not prime, then $m = m_1*m_2$, $m_1, m_2 > 1$. Then $0 != m$ has no inverse gcd($m_1, m_1) = m_1 > 1$. -- ???? - -The **invertible elements** of $ℤ_m$ (units of ℤ_m) is expressed as $ℤ_m^x$. It is the **group of units**. -- ex. $ℤ_7^x = \{0, 1, 2, 3, 4, 5, 6\} = ℤ_7$ -- ex. $ℤ_8^x = \{1, 3, 5, 7\} ⊂ ℤ_7$ - -A **finite or Galois field** $𝔽_p, GF(p)$ is a field that, well, is finite. Every $ℤ_p$, $p$ is prime, is a finite field. Every $ℤ_{p^n}$ is also a field! - -$𝔽_4$ is a four element field. It is *not* necessarily $ℤ_4$! -- clarify: what? ℤ_7 counts as 𝔽_7? exact numbers do not matter? does 𝔽_4 exist, then? - -Consider $ℤ_6$. $2•3 = 0$. -A field has *no* zero divisors. Why? -- $a*b=0$, a and b are not zero -- $1/a (a*b = 0)$ and $a != 0$. b = $0/a = 0$ - -The **cancellation property** of a field states that if $a*b = a*c$ and $a != 0$, then $b=c$. - -### Back to coding theory - -We can now bridge our knowledge of fields back to coding theory: consider *alphabets* to be *finite fields*, $𝔽_q^n$ to be a *vector space*, with *codewords* as vectors ($w = (a_1, a_2, ..., a_n))$ - -An example is an ISBN code. -- textbook: $0-19-853803-0$ -- language, publisher, book number, checksum -- codewords: all vectors $(x_1, ..., x_{10})$ that satisfy the linear equation -- $1x_1 + 2x_2 + ... + 10x_{10} = 0$ -- because the checksum changes to satisfy that equation - -checksum: set such that it satisfies the equation - -why is the distance between isbns two? cause you have it 1 normally and 2 with the checksum - -The ISBN code can: -- Detect a single error -- Detect if we switch two numbers -- Can correct a single error *if we know where it is* - -Given an equation $1x_1 + 2x_2 + ... + 10x_{10} = 0$, $x_7 = -\frac{1}{7}(1x_1 + 2x_2 + ... + 10x{10} - 7x_7)$ - -These linear equations are linear, so linear algebra comes in handy... - -... missed a bunch ... - - - -### Vector Spaces on Finite Fields - -Our finite fields can be viewed as **vector spaces**, with the *elements* as **scalars** and the ordered $n$-tuples over $GF(q)$ as **vectors**. We denote the set of all vectors of length $n$ as $V(n,q)$. We must define two additional operations within $V(n,q)$: -- *addition* of vectors: if $x = (x_1, x_2, ..., x_n)$ and $y = (y_1, y_2, ..., y_n)$ and $x,y \in V(n, q)$, then $x+y = (x_1 + y_1, x_2 + y_2, ..., x_n + y_n$. -- *multiplication* of a vector by a scalar: if $x = (x_1, x_2, ..., x_n) \in V(n, q)$, $a \in GF(q)$, then $ax = (ax_1, ax_2, ..., ax_n)$. - -The formal axioms for a vector space are as follows. Given $\textbf{u} = (u_1, u_2, ..., u_n)$, $\textbf{v} = (v_1, v_2, ..., v_n)$, $u,v \in V(n, q)$: -- $\textbf{u}+\textbf{v} \in V(n, q)$ -- $(\textbf{u}+\textbf{v}) + \textbf{w} = \textbf{u} + (\textbf{v}+\textbf{w})$ -- $\textbf{0} = (0, 0, ..., 0) \in V(n, q)$ satisfying $\textbf{u} + \textbf{0} = \textbf{0} + \textbf{u} = \textbf{u}$. -- $-\textbf{u} = (-u_1, -u_2, ..., -u_n) \in V(n, q)$ -- $\textbf{u} + \textbf{v} = \textbf{v} + \textbf{u}$ -- (note that the above show $V(n, q)$ forms a commutative group under addition) -- $a\textbf{v} \in V(n, q)$ -- $a(\textbf{u} + \textbf{v}) = a\textbf{u} + a\textbf{v}$, $(a+b)\textbf{u} = a\textbf{u} + b\textbf{u}$ -- $(ab)\textbf{u} = a(b\textbf{u})$ -- $1\textbf{u} = \textbf{u}$ - -A (non-empty) *subset* $C$ of $V(n,q)$ is called a **subspace** of $V(n,q)$ if and only if $C$ is closed under addition and scalar multiplication. i.e: -- if $x,y \in C$, then $x+y \in C$ -- if $a \in GF(q)$ and $x \in C$, then $ax \in C$. - -The set $\{0\}$ and the set $V(n, q)$ are **trivial subspaces** and present for every vector space. A subspace is *non-trivial* if it contains at least one vector other than 0. -- q: is the subspace that is just the space trivial? - -A **linear combination** of $r$ vectors $\vec{v_1}, \vec{v_2}, ..., \vec{v_r}$ in $V(n, q)$ is a vector of the form $a_1\vec{v_1} + a_2\vec{v_2} + ... + a_r\vec{v_r}$ where $a_i$ are scalars. - -A set of vectors is **linearly dependent** if they can form the zero vector as a linear combination, without all scalars being 0. - -A set of vectors is **linearly independent** if they *cannot* form the zero vector as a linear combination without all scalars 0. - -Let $C$ be a subspace of $V(n,q)$. Then a *subset* of $C$ is called a **generating set** (or spanning set) of $C$ if every vector in $C$ can be expressed as a linear combination of the vectors in the subset. A generating set which is linearly independent is also called a **basis**. - -For a (non-trivial) subspace $C$ of $V(n,q)$, any generating set of $C$ contains a basis of $C$. - -For a basis of a subspace $C$ of $V(n,q)$, every vector of $C$ can be expressed *uniquely* as a linear combination of the basis vectors, and $C$ contains exactly $q^k$ vectors. It follows that any two bases of $C$ contain the same number $k$ vectors: this is called the **dimension** of $C$ and denoted $dim(C)$. - -chapter 4 done - -## Linear Codes - -<!-- Chapter 5: Introduction to linear codes --> -<!-- Chapter 6: Encoding and decoding with a linear code --> -<!-- Chapter 7: The dual code, parity-check matrix, and syndrome decoding --> - -A **linear code** over $GF(q)$ is a subspace of $V(n,q)$ for some positive integer $n$. Thus, a *subset* $C$ of $V(n,q)$ is a linear code if and only if it is: -- closed under addition: $u + v \in C$ for all $u,v \in C$ -- closed under scalar multiplication: $au \in C$, for all $u \in C$, $a \in GF(q)$ -- q: why subset? - -If $C$ is a k-dimensional subspace of $V(n,q)$, then the linear code $C$ is also called an **[n,k]-code** or a **[n,k,d]-code**. -- n: length of codewords -- k: dimension of $C$ -- d: minimum distance of $C$ - - -Note: a q-ary [n,k,d]-code is also a q-ary (n,q^k,d)-code but not every (n,q^k,d)-code is an [n,k,d]-code? do not understand -- also known as group codes - -The **weight** $w(\vec{x})$ of a vector $\vec{x} \in V(n,q)$ is the number of non-zero entries of $\vec{x}$. - -For an $x,y \in V(n,q)$, $d(x,y) = w(x-y)$. From this, the **minimum distance** of a linear code is equal to the smallest non-zero weight of the codewords. - -Linear codes are nice because we can determine the weight by simply examining all $M$ codewords. They're also nice because we can describe them by simply giving a basis. - -A $k×n$ matrix whose rows form a basis of a linear $[n,k]-code$ is called a **generator matrix** of the code. -- ex. the generator matrix $[0 1 1][1 0 1]$ describes a certain $[3,2,2]-code$ - -Linear $q-ary$ codes *cannot* be defined unless $q$ is a prime power. However, it's pretty easy to transform non-prime-power $q-ary$ codes into prime-power $q-ary$ codes. -- q: what's q again? (size of alphabet) what does a prime power entail again? - -### Equivalence of Linear Codes - -Two linear codes over $GF(q)$ are called **equivalent** if one can be obtained from the other by a combination of operations being: -- permutation of positions of the code -- multiplication of the symbols in a fixed position by a (non-zero) scalar -- q: ??? what? - -Two $k×n$ matrices generate equivalent linear $[n,k]-codes$ over $GF(q)$ if one matrix can be obtained from the other by a sequence of operations: -- (R1) Permutation of rows -- (R2) Multiplication of a row by a (non-zero) scalar -- (R3) Addition of a scalar multiple of one row to another -- (C1) Permutation of columns -- (C2) Multiplication of any column by a (non-zero) scalar - -Let $G$ be a generator matrix of an $[n,k]-code$. Then by performing the above operations, $G$ can be transformed to the **standard form** $[I_k | A]$, where $I_k$ is the $k×k$ identity matrix, and $A$ is a $k×(n-k)$ matrix. - -If two generator matrices can be transformed to the same standard form by *row operations* only, they generate the **same** code. If they must use the column operations to reach the same standard form, they are **equivalent**, but not necessarily the *same* code. -- q: not *necessarily* the same? if there is no way without column operations must they be different? - -chapter 5 done - -### Encoding with linear codes - - - -A **coset** of an $[n,k]$-code $C$ over $GF(q)$... - -Suppose that $C$ is an $[n,k]$-code over $GF(q)$ and that $\vec{a}$ is any vector in $V(n, q)$. Then the set $\vec{a} + C$ defined by $\vec{a} + C = \{\vec{a}+\vec{x} | \vec{x} \in C\}$ is called a **coset** of $C$. - - -For an $[n,k]$-code $C$ over $GF(q)$: -- *every vector* of $V(n,q)$ is in some coset of $C$ -- every coset contains *exactly* $q^k$ vectors -- *every coset* is either disjoint or identical (no partial overlap) - - Proof: todo... - -todo: proof - -The **coset leader** is the vector having minimum weight in a coset. (there may be multiple. it is generally fine to pick one randomly.) - -A (Slepian) **standard array** for an $[n,k]$-code $C$ is a $q^{n-k} × q^k$ matrix of *all* of the vectors in $V(n,q)$, with the first row consisting of the code $C$, and the following rows consisting of the cosets of $C$, each arranged with the coset leader first ($\vec{0}$ for $C$) and the codewords in consistent order, so that they line up by columns. - -$$\begin{bmatrix} - 0000 & 1011 & 0101 & 1110\\ - 1000 & 0011 & 1101 & 0110\\ - 0100 & 1111 & 0001 & 1010\\ - 0010 & 1001 & 0111 & 1100\\ -\end{bmatrix}$$ - -Simple decoding of linear codes may be performed with the observation that *cosets correspond to distance* with regard to error correction (rephrase). By choosing coset leaders to be minimum weight vectors, the standard array decoding is a nearest neighbour decoding scheme. An entry may be looked up in the standard array, and the corresponding codeword may be found by looking at the *top entry* of its column. - -### Probability of error correction - - -### Probability of error detection - - -### cosets - -### Parity-check matrices - -... missed a bunch ... - - -## Chapter 7: The dual code etc - -### Dual Codes - -The **inner product** $u ⋅ v$ of vectors $u$ and $v$ is the *dot product*. (todo: learn relation) If $u ⋅ v = 0$, $u$ and $v$ are **orthogonal**. -- $u ⋅ v = v ⋅ u$ -- $(λu + μv) ⋅ w = λ(u ⋅ w) + μ(v ⋅ w)$ - -For some linear $[n,k]$-code $C$, the **dual code** of $C$ (denoted $C^⊥$) is the set of vectors in $V(n,q)$ which are *orthogonal to every codeword of $C$*. We may generalize this to say: a vector $v ∈ V(n,q)$ belongs to $C^⊥$ if and only if $v$ is orthogonal to every row of $G$, the generator matrix for $C$. -- $C^⊥ = \{v ∈ V(n,q) | v ⋅ u = 0\}$, for all $u ∈ C$ - -$C^⊥$ has dimension $n-k$: in other words, if $C$ is an $[n,k]$-code over $GF(q)$, the dual code $C^⊥$ is a linear $[n,n-k]$-code. - -We know that $(C^⊥)^⊥ = C$. - -A **parity-check matrix** $H$ for an $[n,k]$-code $C$ is a generator matrix of $C^⊥$. Note that this means any linear code is completely specified by a parity-check matrix. If $G = [I_k | A]$ is the standard form generator matrix of an $[n,k]$-code $C$, then a parity-check matrix in **standard form** is $H = [-A^T | I_{n-k}]$. - -## Syndrome Decoding - -For a parity-check matrix $H$, a **syndrome** of a given row vector is... - -## Hamming Codes - -<!-- Chapter 8: Hamming Codes --> -<!-- Chapter 9: Perfect Codes --> - -The Hamming codes are an important family of single-error-correcting codes which are easy to encode and decode. They are linear and definable over any finite field $GF(q)$. - -Let $r$ be a positive integer and let $H$ be an $r×(2^r - 1)$ matrix whose columns are the distinct non-zero vectors of $V(r, 2)$. Then the code having $H$ as its parity-check matrix is called a **binary Hamming code** and is denoted by $Ham(r,2)$. - -To find a Hamming code, you start with the parity-check matrix $H$, then find the generator matrix $G$, then find the code $C$. - -$$H = [-A^⊤ | I_{n-k}]$$ -$$G = [I_k | A]$$ - -For a binary Hamming code of $r ≥ 2$: -- it is a $[2^r - 1, 2^r - 1 - r]$-code -- it has minimum distance $d=3$ -- it is a perfect code. - - - -### How to find $dist(C)$ from H -C = Nul(H), codewords = $[a_1 a_2 ... a_n]$ -$H·\begin{bmatrix}a_1\\ a_2\\ ...\\ a_n\end{bmatrix}$ = $\vec{0} \iff [a_1 a_2 ... a_n]·H^t = \vec{0}$ -where $H_i$ are the columns of $H$, $H = \begin{bmatrix}1&1&...&1\\H_1&H_2&...&H_n\\1&1&...&1\end{bmatrix}$ - -$H·\begin{bmatrix}a_1\\ a_2\\ ...\\ a_n\end{bmatrix} = a_1 H_1 + a_2 H_2 + ... a_n H_n = \vec{0}$ - -A codeword = a linear relation among $H_i$ -The smallest weight of a codeword = the shortest linear relation among $H_i$ - -ex. Consider a codeword of weight = 1, i.e. $\vec{w} = [0 ... 0 a_i 0 ... 0]$ -Relation: $a_i H_i = \vec{0} \iff H_i = \vec{0}$ -There is a codeword of weight 1 iff some $H_i = \vec{0}$ - -ex. Consider a codeword of weight 2, i.e. $\vec{w} = [0 a_i a_j 0]$ -Relation: $a_i H_i + a_j H_j _ \vec{0} \iff H_i = -\frac{a_j}{a_i} H_j$ - - -### Theorems about distance - -For an [n, k] q-ary code, any set of $d-1$ columns in the matrix H (parity check matrix) have to be linearly independent. - -A Hamming code has to have distance 3. - - -Suppose $C$ is a linear $[n, k]$-code over $GF(q)$ with parity-check matrix $H$. THen the minimum distance of $C$ is $d$ if and only if $d-1$ columns of $H$ are linearly independent but some $d$ columns are linearly dependent. - -... missed a bunch... - -## Polynomials - -We will denote the field $GF(q)$ by $F_q$, or frequently $F$ (with $q$ implicit). Then, $F[x]$ is the set of polynomials in $x$ with **coefficients** in $F$. - -Polynomials in $F[x]$ form a **ring**. They: -- Contain the zero vector $\vec{0}$ -- Are closed under addition: $(5x^2 + x^1) + (x^3 + 2x^2) = x^3 + 7x^2 + x^1$ -- Are closed under subtraction: $(5x^2 + x^1) - (x^3 + 2x^2) = -x^3 + 3x^2 + x^1$ -- Are closed under multiplication: $(5x^2 + x^1) · (x^3 + 2x^2)$ = 5x^5 + 11x^4 + 2x^3$ -- *Do not* have multiplicative inverses! So they are not a field. - -Just as $Z_m$ is a ring, so also is $F[x] / f(x)$: it is called - - -For some polynomial $f(x) = f_m x^m + f_{m-1} x^{m-1} + ... f_1 x + f_0$, $m$ is called the **degree** of $f(x)$, and $f_m$ is called the **leading coefficient** of $f(x)$. By convention, the degree of the zero polynomial is $-∞$. (why??) A polynomial is called **monic** if its leading coefficient is 1. Note that if $f(x), g(x) \in F[x]$, $deg(f(x)g(x)) = deg(f(x)) + deg(g(x))$. - -The division algorithm exists for polynomials just as it exists for the integers. For any pair of polynomails $a(x), b(x) \in F[x]$, there exists a unique pair of polynomials $a(x)$ and $b(x)$ - - -### The division algorithm for polynomials - -Some polynomial $a$ in $Z_p$ is a **root* of $f(x)$ ($\in Z_p [x]$) if $f(a) = 0$. -A polynomial $a$ is a root of $f(x)$ if and only if $x-a$ divides $f(x)$. - -A polynomial $f(x) \in F[x]$ is said to be **reducible** if $f(x) = a(x)b(x)$, where $a(x), b(x) \in F[x]$ and $deg(a(x)) < deg(f(x))$ and $deg(b(x)) < deg(f(x))$, i.e. it is a product of smaller degree polynomials. If $f(x)$ is not reducible, it is called **irreducible**. Just as any positive integer can be factorized uniquely into a product of prime numbers, any *monic* polynomial in $F[x]$ can be factorized uniquely into a product of irreducible monic polynomials. Some useful lemmas: -- A polynomial $f(x)$ has a linear factor $x-a$ if and only if $f(a) = 0$. -- A polynomial $f(x) \in F[x]$ of degree 2 or 3 is irreducible if and only if $f(a) ≠ 0$ for all $a \in F$. -- Over any field, $x^n - 1 = (x-1)(x^n-1 + x^n-2 + ... + x + 1)$. - -Proof for a polynomial of degree 2 or 3 being irreducible: ... - -The property of a polynomial being irreducible corresponds directly to the property in $ℤ$ of a number being prime. -- The ring $Z_m$ is a field if and only if $m$ is prime. -- The ring $F[x]/f(x)$ is a field if and only if $f(x)$ is irreducible in $F[x]$. -- For any prime number $p$ and any positive integer $h$, there exists an irreducible polynomial over $GF(p)$ of degree $h$. This corresponds to the existence of fields $GF(p^h)$ for all integers $h ≥ 1$. - ---- - -Factoring polynomials - -$f(x) \in Z_p [x]$ -$f(x) = C·p_1(x) p_2(x) ... p_m(x)$, $p_1 (x)$ implies it is monic, and irreducible - -$n \in ℤ$ -$n = \pm p_1 p_2 ... p_m$ - -4 | -irreducible polynomials: -x, x+1 -0b10 = 2 -0b11 = 3 -x^2 + x + 1 -0b111 = 7 -x^3 + x + 1 -0b1011 = 11 -x^3 + x^2 + 1 -0b1101 = 13 - -but no 5???? huh x^2 + 1 - -### Factorization of polynomials - -Factorization: a polynomial is fully reduced if it is fully a product of irreducible polynomials. -How to factor: just, kinda do it... try dividing by every irreducible polynomial - -All (monic) irreducible polynomials in $Z_2 [x]$: - -deg. | all. | reducible. | irreducible ------|------|------------|------------ -1 | $x$, $x+1$ | - | $x$, $x+1$ -2 | $x^2$, $x^2 + 1$, $x^2 + x$, $x^2 + x + 1$ | $x^2 = x·x$, $x^2 + x = x(x+1)$, $x^2 + 1 = x^2 + 2x + 1 = (x+1) (x+1)$ | $x^2 + x + 1$ -3 | 8 poly | 6 poly | $x^3 + x + 1$, $x^3 + x^2 + 1$ - -Note: while these irreducible polynomials can be written as binary numbers, ex. $x+1 ~ 11_2 = 3$, and all of the above examples are prime, there is *not* a correspondence with primes. See $x^2 + 1$: $101_2 = 5$, but $x^2 + 1 ≡ (x+1)(x+1)$ (in $Z_2 [x]$). - -ex. Factor -$$f(x) = x^6 + x^5 + x^4 + x^3 + x^2 + x$$ - -1. Check whether an irreducible polynomial divides $f(x)$. - - Does $f$ have roots? Yes, $f(0) = 0$. So $x-0$ divides $f$. - - $f(x) = x g(x) = x(x^5 + x^4 + x^3 + x^2 + x + 1)$ - - $g(x) = (x^5 + x^4 + x^3 + x^2 + x + 1)$ - -2. Keep checking whether a linear? polynomial divides $f(x)$. - - Does $f$ have roots? Yes, $f(1) = 0$. So $x-1$ divides $f$. - - Note that $x-1 ≡ x+1$ mod $2$. - - $f(x) = x (x+1) h(x) = x(x+1)(x^4 + x^2 + 1)$ - - $h(x) = (x^4 + x^2 + 1)$ - -3. Now no linear? polynomials divide $f(x)$. What to do? - - $h(x)$ may still be factored... - - By an identity in $Z_2$, $(a + b + c)^2 ≡ (a^2 + b^2 + c^2)$ (in $Z_2$) - - Verify by long division on $(x^4 + x^2 + 1)$: $(x^2 + x + 1)^2$ - - $f(x) = x(x+1)(x^2+x+1)^2$ - -### Modular polynomials - -The idea behind modular polynomials: just modular arithmetic! $Z_p [x] / f(x)$ denotes the set of polynomials in $Z_p [x]$ that are congruent mod $f(x)$, i.e. $f(x) ≡ 0$. - -Definition: $g(x), f(x) \in Z_p [x]$ are congruent (mod $f(x)$), i.e. -$$g ≡ h (\mod f)$$ -if $g(x) = h(x) + t(x) f(x)$ for some $t(x)$. - -Every $g(x)$ is congruent to a unique polynomial $r(x)$ when $\deg r(x) < \deg f(x)$. -- Proof: just divide $g(x)$ by $f(x)$! -- $\frac{g}{f} = q(x) + \frac{r(x)}{f(x)}$ -- $g = f·q + r$ -- $f·q ≡ 0$ - - -Note: for $ℤ/(m)$, every $n$ is congruent to an element in $\{0, 1, ..., m-1\}$. -i.e. $Z_m = ℤ/(m)$. ??? what is this? - -Definition: Let $f(x) \in Z_p [x]$, $\deg f = n > 0$. -Then $Z_p [x] / f(x)$ = the set of all polynomials $r(x)$ with deg. r < n. - -Operations `+`, `*`: -- Do the usual operations with polynomials -- If the result has degree ≥ n, then take its residue mod $f(x)$. -- This is a *ring*! We have addition, subtraction (additive inverse), multiplication... no division -- *also* a vector space! isomorphic to $Z_p^n$ - - In a vector space: need addition and *scalar multiplication* - -ex. $Z_2 [x] / (x^3 + x)$ -(we'll consider $f(x) = x^3 + x$) - -Addition: polynomial addition -- $(1+x^2) + (x+x^2) = 1+x$ (as $2??? ≡ 0$ in $Z_2$) - -Multiplication: -- $(1+x^2)(x+x^2) = x+x^2+x^3+x^4 ≡ r(x)$ (mod $f$) -- $x^4 + x^3 + x^2 + x ÷ x^3 + x = x+1$ -- by long division -- So $(1+x^2)(x+x^2) ≡ x+1$ - - -### Quotient polynomial rings - -We've previously? defined quotient rings: $Z_m = ℤ/(m)$, where: -- $m ≡ 0$ -- $n ≡ r$ (mod $m$) -- $r =$ the principle residue -- $n/m = q + r/m$, for $0 <= r <= m$ -- $Z_m$ then equals the set of *prime residues*, i.e. $\{0, 1, 2, ..., m-1\}$ for $m$ - -We can also have quotient polynomial rings: $Z_p [x] / f(x)$, where -- $f(x) ≡ 0$ -- $g(x) ≡ r(x)$ (mod $f$) -- $r(x) =$ the prime residue -- $g(x)/f(x) = q(x) + r(x)/f(x)$ for some $deg(r) < deg(f)$ -- $Z_p [x] / f(x)$ then equals the set of *prime residues*, i.e. $r(x)$ st. $deg(r) < deg(f)$ (???) - -Operations on quotient rings are the usual: `+`, `·`. But when can we divide? -- We can divide when $1/n$ exists, which is equivalent to $\gcd(n, m) = 1$ -- To have a field: $m = p$ prime - -Ex. $Z_2 [x] / (x^3 + x + 1)$ -- Note: this is a field! $(x^3 + x + 1)$ is irreducible -- Goal: find $1/(x+1)$ -- $gcd(x^3 + x + 1, x+1)$ -- $gcd(x^3 + x + 1 - (x+1)(x^2 + x), x+1) = gcd(1, x+1)$ -- $gcd(1, x+1 - 1·(x+1)) = gcd(1, 0)$ -- $gcd(f, g)$ -- $gcd(f - g(x^2 + x), g)$ -- $1 = f-g(x^2 + x)$ -- $1 = -(x^2 + x) g$ (mod $f$) -- $1/g = x^2 + x$ - -Ex. $Z_3 [x] / (x^2 + x + 2)$ -- Goal: find $1/x$ -- $gcd(x^2 + x + 2, x)$ -- $gcd(x^2 + x + 2 - (x+1)·x, x)$ -- $gcd(2, x)$ -- $gcd(f, g)$ -- $gcd(f - (x+1)·g, g)$ -- $2 = f - (x+1)·g$ -- $1 = 2(f - (x+1)·g)$ -- $1/g = -2(x+1) = x+1$ - -So what about fields? $Z_p [x] / f(x)$, where: -- The characteristic $p$ is prime -- $f(x)$ (of degree n) is irreducible -- $\{a_0 + a_1 x + a_2 x^2 + ... + a_n-1 x^n-1 | a_i \in Z_p\}$ $\simeq$ $Z_p^n$ -- The field has $q = p^n$ elements -- Fact: every finite field is of this type, $𝔽_q$ -+ Two fields with the same number of elements turn out to be the same field! They're *isomorphic*. - -Ex. $Z_2 [x] / (x^3 + x + 1) = 𝔽_8$ -> $Z_2 [x] / (x^3 + x^2 + 1) = 𝔽_8$ -- x -> x+1 - -Ex. $F_4 = Z_2 [x] / (x^2 + x + 1) \neq Z_4$ -- $\{0, 1, x, x+1\} \neq \{0, 1, 2, 3\}$ - -𝔽_4 | 0 | 1 | x | x+1 -----|---|---|---|---- -0 | 0 | 0 | 0 | 0 -1 | 0 | **1** | x | x+1 -x | 0 | x | x+1 | **1** -x+1 | 0 | x+1 | **1** | x - -Z_4 | 0 | 1 | 2 | 3 -----|---|---|---|--- -0 | 0 | 0 | 0 | 0 -1 | 0 | **1** | 2 | 3 -2 | 0 | 2 | 0 | 2 -3 | 0 | 3 | 2 | **1** - -Every $𝔽_q$ has a primitive element $a(x)$: -$$a(x), a^2(x), ..., a^{q-1}(x)$$ -are all distinct nonzero elements of $𝔽_q$ - -Ex. In $𝔽_4$, is $x$ primtive? -- $x x^2 = x+1$, $x^3 = x(x+1) = 1$ -- $b^q-1 = 1$ for any $0 \neq b \in 𝔽_q$ - -Little Fermat's theorem -- $b = [a(x)]^i$, $b^q-1 = [a(x)^q-1]^i = 1^i = 1$ - -Example from first midterm: -- In $Z_m$, $b^m-1 = 1$ holds iff $m=p$ is prime -- ex. Z_123$, $b^122 = 1$ -- $Z_m^x = \{n \in Z_m | 1/n exists\}$ -- $b^{|Z_m^x|} = 1$ if $b \in Z_m^x$ -- $Z_4^x = \{1,3\}$, $b^2 = 1$, $3^3 \neq 1$ - -## Cyclic codes - -<!-- Chapter 12: Cyclic codes --> - -A code $C$ is **cyclic** if $C$ is a linear code, and any cyclic shift of a codeword is also a codeword. In other words, whenever $a_0 a_1 ... a_n-1 \in C$, $a_n-1 a_0 a_1 ... a_n-2 \in C$. -- ex. the binary code $\{0000, 0101, 1010, 1111\}$ is cyclic. - -Consider the *ring* $R_n = 𝔽_q [x] / (x^n - 1)$: as as a vector space, $\simeq 𝔽_q^n$ - -A cyclic code $C$ is a (nonempty) $C \subseteq R_n$, where: -- $C$ is a subspace closed under `+` -- $C$ is closed under scalar multiplication -- $C$ is closed under `·` -- This is a *linear code* (??) - -We can consider a cyclic shift to be a *multiplication* by $x$. -- ex. $a_0 + a_1 x + a_2 x^2 + ... + a_n-1 x^n-1$ = $(a_0, a_1, ..., a_n-1)$ -- $x·(a_0 + a_1 x + a_2 x^2 + ... + a_n-1 x^n-1)$ -- $a_0 x + a_1 x^2 + a_2 x^3 + ... + a_n-1 x^n$ -- $x^n ≡ 1$, so... -- $a_n-1 + a_0 x + a_1 x^2 + ... + a_n-2 x^n-1$ - -$C$ is a **module** on the ring $R_n$, where a **module** is a vector space working over a ring, not a field -... - -missed some stuff... - -Every cyclic code is of the form $<g(x)>$. The polynomial $g(x)$ is uniquely determined by: -- $g(x)$ is monic -- $g(x)$ divides $x^n - 1$ in $𝔽_q [x]$ - -As a corollary, cyclic codes correspond with monic divisors of $x^n - 1$. - -Ex. find all binary cyclic codes of length $n=3$. -$$x^3 - 1 = (x+1)(x^2 + x + 1)$$ -So our two codes are: -- $<x+1> = \{\text{all even words}\}$ -- $<x^2 + x + 1> = \{000, 111\}$ - -Ex. find all binary cyclic codes of length 4 -- $x^4 - 1 = (x-1)^4$ -So our codes are: -- $<1> = R_n$ -- $<x-1> = \{\text{even words}\}$ -- $(x-1)^2 = ?$ -- $(x-1)^3 = \{000, 111\}$ -- $(x-1)^4 = 0$ - -Let $C \subseteq R_n$ be a cyclic code. Let $g(x) \in C$ be the lowest degree polynomial. -Then, $<g(x)> = C$. Proof: -- To show $<g(x)> \subseteq C$: $g(x) \in C \implies f·g \in C$ -- To show $<g(x)> \supseteq C$: we must show that $h(x) = f(x)·g(x)$ for some unknown $h(x) \in C$. - - $\frac{h}{g} = f + {r}{g}$, $h = f·g + r$, $r = h-fg \in C$. - - $deg(r) < deg(g)$ by the definition of division. - - $r=0$ as the degree of $r$ is less than the lowest degree polynomial. - -Ex. $R_3 = 𝔽_2 [x] / (x^3 - 1)$ -- $g(x) = (x^2 + 1) = (x+1)^2$ -- $g(x) = (x^3 - 1) = (x+1)(x^2 + x + 1)$ -- $<g(x)> =$ a cyclic code -- 0, $1·(x^2 + 1) = x^2 + 1$ -- $x(x^2 + 1) = x^3 + x \equiv 1+x$ -- $(x+1)(x^2 + 1) = x^3 + x^2 + x + 1 \equiv x^2 + x$ -- $x^2 (x^2 + 1) = x^4 + x^2 = x + x^2$ -- $(x^2 + 1)(x^2 + 1) = x^4 + 1 = x + 1$ -- $(x^2 + x + 1) (x^2 + 1) = x^3 + 1 + x^3 + x \equiv x + 1 + 1 + x \equiv 0$ -- $C = \{0, 1+x, x^2 + 1, x^2 + x\} = <1+x>$ - -Let $g(x)$ divide $x^n - 1$ in $𝔽_q (x)$. Then $dim<g(x)> = dim(C) = n-deg(g)$. -- Matrix: $g(x) = a_0 + a_1 x + a_2 x^2 + ... + a_m x^m$ -- i.e. $g(x), x·g(x), x^2 g(x), ..., x^{n-m-1} g(x)$ form a basis for the vector space $C \subseteq R_n$. - - -ideal - ---- - -### Vandermonde matrix - -$𝔽$: field, $ - -V = [1, 1, 1, ...; x_1, x_2, ..., x_n; x_1^2, x_2^2, ..., x_n^2; x_1^n-1, x_2^n-2, ..., x_n^n-1] - -If $x_i$ are distinct, then $V$ is invertible (i.e. the determinant is nonzero). - -The determinant: $dev V = Π_{i>j} (x_i - x_j)$ -examples... -the determinant of a vandermonde matrix equals its transpose - -### Lagrange interpolation - -ex. a continuous *function*: distinct x, not necessarily distinct y - -Theorem: If $x_i$ are distinct (for any numbers y_i), then there is a unique $p(x)$ of degree ≤ $n-1$ that interpolates the points (x_i, y_i). - -Proof: $P_n-1 = \{a_6 + a_1x + ... + a_n x^n-1 | a_i ∈ 𝔽\}$ -$P_n-1 kindaeq 𝔽^n$ -$p(x) <--> (a_0, a_1, ... a_n-1)$ - -find a $p(x)$ such that when evaluated at $x_1, x_2, ...$ it equals $y_1, y_2, ...$ - -theorem is equivalent to saying that T is invertible: for $T : P_n-1 --> 𝔽^n$ - -invertible means 1-1 and onto (equivalent, if you have one property you have the other) - -Rank-Nullity theorem: $dim P_n-1 = dim N(T) + dim R(T)$ - -1-1 means that the null space is zero -- why? - -onto means that the dimension of the range is all of $dim 𝔽^n = n$ - -The matrix of T: $P_n-1 -> 𝔽^n$ - -T = [T(1), T(x), T(x^2)...] - -### BCH codes - -Fix $x_1 x_2... x_n$ in 𝔽_q distinct -Fix some $r = redundancy ≤ n$ - -H = [1, 1, ..., 1; x_1, x_2, ... x_n; ...; x_1^n-1, x_2^n-1, ..., x_n^n-1] -dim C^⟂ = r, dim C = n - r - -the data of the codeword: n - r, the redundancy of the codeword: r \ -distance of C: any r columsn of H are independent (r columns form a rxr Vandermonde matrix) - -ex. construct a length 10 (n) code, distance 5 (r + 1) (can correct 2 errors) -Choose 𝔽_q, x_1, ..., x_10 in 𝔽_q -Take 𝔽_11 = Z_11, x_1 = 1, x_2 = 2, ..., x_10 = 10 - -H = [1, 1, ..., 1; 1, 2, ..., 10; 1, 2^2, ... 10^2, 1, 2^3, ..., 10^3] (# of rows: 4) - -BCH codes are not perfect, usually? but they do achieve the singleton bound - -## Singleton bound - -C: length n, distance d, q-ary, then: -M ≤ q^n-d+1 which (if C is linear): <=> dim C ≤ n-d - -BCH code: d = r+1 -singleton bound -dim C ≤ n-(d-1) = n-r - -M ≤ Singleton bound ≤ Sphere packing bound -M ≤ ex. 10-5+1 = 11^6 ≤ 11^10 - -next time: how to decode BCH codes - - -<!-- Chapter 11: BCH codes and double-error correcting --> -<!-- Chapter 14: The main linear coding theory problem --> - - -## The main linear coding theory problem - -The main linear coding theory problem: What is the "best" linear code? - - -Question: What is the "best" linear code? - -Answer: we construct H in 𝔽_q such that - -$$H = [H_1 H_2 \ldots H_4]$$ - -as n goes to the maximum for some fixed r. - -How many vectors $H_1 ... H_n$ in 𝔽_q^n, such that any d-1 are linearly independent, n = max(q, r) <--- ???? - -Last time: for $d=3$: the best codes are $Ham(q, r)$ - -Today: for $d=4$: we need to think about algebraic geometry?? - -How many vectors $H_1, ... H_n$ in 𝔽_q^n such that no 3 vectors lie on a planes - - - -### Projective spaces - -$$ℙ^{n-1} = \{\text{all lines through 0 in 𝔽_q^n}\}\}$$ - -For r=3: - -Ex. for $r=3$, $q=2$: we have a cube with its corners as $000, 010, 100, 110, 001, 011, 101, 111$ - - -``` -010 -| -| 110 -| -| -011------111 -| | -| | -| | -| | -011------101-----------100 -``` - - -A projective space reduces the dimension by 1. -- ex. a line $L$ in $𝔽_q^n$ = point in $ℙ^{n-1}$ -- ex. a plane $W$ in $𝔽_q^n$ = a line in $ℙ^{n-1}$ -- ex. a 3d subspace in $𝔽_q^n$ = a plane in $ℙ_q^n$ - -In ℙ^2, any two different lines intersect at a point. - -Ex. ℙ_2 over 𝔽_2 -``` - 010 - - 011 111 110 - -001 101 100 -``` -(the triangle with points intersecting) - - -### MLCT problem d=4 -Find the maximum number of lines L_1, L_2, ..., L_n in 𝔽_q^n such that no 3 lines lie on a plane. -This is the same as our earlier problem! -This is also the same as finding the maximum number of points in the projective space ℙ^r-1 such that 3 points are on a line. - -Ex. for r=3, 𝔽_q = 𝔽_2 -- Take all 4 finite points r > 3, 𝔽_q = 𝔽_2 -- Take all 2^r-1 finite points -- Ham(2, r) + parity bit = 2^r - 1 + 1 = 2^r = HamHat(2, r) -- for redundancy r+1 - -Ex. for the case q ≠ 2 -q = 3 -Cannot take all the finite points -We consider a parabola intersecting a line M in a plane, and consider the points intersected with it -For q > 2, r = 3, the maximum n is q+1 if q is odd, and q+2 if q is even. - - |