도입
BCH 코드는 순회부호(Cyclic codes)의 하위 분야이며, 다중 에러 검출 능력과 인코딩, 디코딩 과정의 편의성으로 잘 알려져있다. BCH 코드는 먼저 정정하고자하는 오류의 개수를 지정한 뒤, 해당 코드의 생성 다항식을 구성한다.
원시 원소(Primitive Element)
GF(q)에서 원시 원소 α란 0을 제외한 GF(q)의 모든 원소가 α의 거듭제곱 형태로 표현될 수 있는 것을 의미한다.
예를 들어 GF(5) = {0,1,2,3,4}에서
20=1(mod5)=1
21=2(mod5)=2
22=4(mod5)=4
23=8(mod5)=3
GF(5)의 0을 제외한 모든 원소가 2의 거듭제곱 형태로 표현되므로, GF(5)의 2는 원시원소이다.
30=1(mod5)=1
31=3(mod5)=3
32=9(mod5)=4
33=27(mod5)=2
마찬가지로 GF(5)의 0을 제외한 모든 원소가 3의 거듭제곱 형태로 표현되므로, 3도 원시원소이다.
원시 다항식(Primitive Polynomial)
GF(q)상의 원시 다항식 p(x)은 GF(q)상의 기약 다항식이다. 이 다항식은 확장체(extension field)를 구성하는데 사용된다.
- 기약 다항식(Prime polynomial):더이상 인수분해 되지 않는 즉, 1과 자기 자신 외에는 나눌 수 없는 다항식.
- 확장체(extension field): 갈루아 체에서 위수가 소수가 아닌, 소수의 거듭제곱 형태인 갈루아 체.
또한 GF(q)상에서 모든 차수에 대하여 원시 다항식이 존재한다. 즉 차수를 m이라 할때, GF(qm)을 구성할 수 있는 원시다항식이 모든 m에 대하여 존재한다는 것을 의미한다.
예를 들어 원시다항식을 이용해 GF(8) = GF(23)을 생성할 수 있다.
차수가 3인 원시 다항식 p(x)=x3+x+1 일 때, GF(8)의 원시 원소를 α라 한다면,
GF(8)상의 모든 원소를 α의 거듭제곱 형태로 표현할 수 있다.
| α의 거듭제곱 | GF(8)의 원소 |
|---|
| α1 | z |
| α2 | z2 |
| α3 | z+1 |
| α4 | z2+z |
| α5 | z2+z+1 |
| α6 | z2+1 |
| α7 | 1 |
ex)
α3 일 때, α3= z3이지만, mod p(x)를 하면 z+1이 된다.
α5 일 때, α5 = α4×z이고 α4=z2+z 이므로 α5=z3+z2이며, (z3+z2)modp(x)=z2+z+1이다.
원시 원소 α와 모듈러 연산으로 GF(8)의 모든 원소를 구성하였다. 즉 확장체 GF(8)을 생성하였다. 위의 연산에서 α7의 값은 1로 순환한 것을 확인할 수 있다.
xq−1−1의 인수분해
β를 GF(q)의 비영 원소라 할때, GF(q)에서 xq−1−1의 인수분해는 다음과 같다.
xq−1−1 = (x−β1)(x−β2)...(x−βq−1)
증명:
β는 비영 원소이므로 앞서 말했듯이, 원시 원소α의 거듭제곱 형태로 표현될 수 있다.
β = αr이라고 하면,
βq−1=((α)r)q−1=((α)q−1)r=1r=1이다.
따라서 모든 비영 원소인 β는 xq−1−1=0의 근이다.
예를 들어 GF(5) = {0,1,2,3,4}라고 할 때, 비영 원소는 {1,2,3,4}이므로
x4−1=(x−1)(x−2)(x−3)(x−4)이다.
원시 블록의 길이(Primitive Blocklength)
원시 블록의 길이는 유한체에서 원시 원소의 주기(Period)를 뜻한다. 원시 원소의 거듭제곱이 다시 1이 되기까지 필요한 거듭제곱의 수를 의미한다. 즉 유한체에서 비영 원소의 개수와 같다.
원시 블록 길이를 n이라 할때, n = qm−1 이다. (q: 위수, m: 차수)
ex)GF(8) = GF(23)이므로 n = 23−1=7이며 앞서 α7=1 임을 확인하였다.
확장체(Extension Field)
유한체 GF(qm)은 GF(q)의 확장체이다.
원시 블록 길이를 n이라 할때, n = qm−1 이다. (q: 위수, m: 차수)
이때 xn−1 을 인수분해하면,
xn−1=xqm−1−1=f1(x)f2(x)..fp(x) 이다.
예를들어, GF(2)와 그 확장체인 GF(8)을 생각해보자.
q = 2이고, m = 3이다.
xqm−1−1=x7−1의 인수분해는
x7−1=(x−1)(x3+x+1)(x3+x2+1)이다.
다음으로 GF(8)의 원소들은 아래 표에 따라

GF(8) = {0,1,z,z+1,z2,z2+1,z2+z,z2+z+1}이다.

그러므로
xqm−1−1=x7−1
= (x−1)(x−z)(x−z−1)(x−z2)(x−z2−1)(x−zz−z)(x−z2−z−1)
= (x−1)[(x−z)(x−z2)(x−z2−z)]×[(x−z−1)(x−z2−1)(x−z2−z−1)] 이다.
(x3+x+1)=(x−z)(x−z2)(x−z2−z)
(x3+x2+1)=(x−z−1)(x−z2−1)(x−z2−z−1)
위의 다항식을 계산하는 방법..
(x3+x+1)=(x−z)(x−z2)(x−z2−z)
(x−z)(x−z2)(x−z2−z)을 전개하면
x3−2x2z2−2x2z+xz4+3xz3+xz2−z5−z4 이다.
여기서
- xz4=x(z2+z)
- 3xz3=3x(z+1)
- z5=z2+z+1
- z4=z2+z
이다. (위의 변환 표 참고)
이를 대입하여 식을 다시 써보면
x3−2x2z2−2x2z+xz4+3xz3+xz2−z5−z4=
x3−2x2z2−2x2z+xz2+xz+3xz+3x+xz2−z2−z−1−z2−z이다.
GF(8)은 GF(2)의 확장체이므로 기본적으로 modulo-2연산을 적용한다.
즉 같은 원소를 짝수 번 더하면 0, 홀수 번 더하면 자기 자신이며, 덧셈과 뺄셈 연산은 동일하다.
예를 들어
또한 −1은 +1과 같다.
이를 바탕으로 식을 정리하면
x3+x+1을 구할 수 있다.