순환 코드

Cyclic code

코딩 이론에서 순환 코드블록 코드로, 각 코드 워드의 순환 이동은 코드에 속하는 다른 단어를 준다.그것들은 효율적인 오류 감지보정에 편리한 대수적 특성을 가진 오류 수정 코드들이다.

00010111이 유효한 암호어인 경우, 오른쪽 원형 교대조 적용 시 문자열 10001011이 주어진다.만약 그 코드가 순환이라면, 10001011은 다시 유효한 코드 워드다.일반적으로 오른쪽 원형 시프트를 적용하면 가장 낮은 비트(LSB)가 가장 왼쪽 위치로 이동하므로 가장 중요한 비트(MSB)가 되고 다른 위치는 오른쪽으로 1만큼 이동한다.

정의

Let be a linear code over a finite field (also called Galois field) of block length . is called a cyclic code if, for every codeword from , the word in obtained by a cyclic right shift of components is again a codeword.하나의 순환 오른쪽 이동은 - 1 주기 왼쪽 이동과 같기 때문에 주기 왼쪽 이동을 통해서도 주기 코드를 정의할 수 있다.따라서 선형 코드 은(는) 모든 주기 이동에서 불변일 때 정확하게 순환된다.

순환 코드는 코드에 몇 가지 추가적인 구조적 제약이 있다.그것들은 갈루아 필드를 기반으로 하며 구조적 특성 때문에 오류 제어에 매우 유용하다.그들의 구조는 주기 코드에 대한 인코딩과 디코딩 알고리즘이 계산적으로 효율적이기 때문에 갈루아 분야와 강하게 관련되어 있다.

대수구조

순환 코드는 특정 링에서 이상과 연결될 수 있다.Let be a polynomial ring over the finite field . Identify the elements of the cyclic code with polynomials in such that }) 다항식 0+ 1 + + - n - 1 xn - 에 대한: 따라서 에 의한 곱셈은 순환 이동에 해당한다.그러면 이(가) 에서 이상적이며, R (가) 주요 이상 링이기 때문에 주체가 된다.이상은 최소 도인 의 고유한 모닉 요소인 제너레이터 g 에 의해 생성된다[1]이것은 -1 x의 구분자여야 한다 모든 주기 코드는 다항식 코드라는 것을 따른다.제너레이터 다항식 가 {\ 경우 코드의 순위는 n- d 이다

The idempotent of is a codeword such that (that is, is an idempotent element of ) and is an identity for the code, that is 코드 c n n}과 (가) 같은 단어가 항상 존재하고 고유하며,[2] 코드의 생성자임.

unreducable code는 이상으로서 unreducable, 즉 에서 최소한의 코드를 갖는 순환 코드로서, 그것의 체크 다항식이 unreducable 다항식이다

예를 들어, = {\ A2 n = {\= 생성하는 순환 코드에 포함된 코드 워드의 집합이 정확하다

),(1,1, 0),( 1, ), ( 1,0 ) 0,(1, (1

그것은 (+ ) 에서 생성되는 ( + ) 의 이상에 해당한다

다항식+ ) 은 다항식 링에서 수정할 수 없으며, 따라서 코드는 수정할 수 없는 코드다.

이 코드의 IDempotent는 다항식 + x 코드워드( ,)에 해당한다

사소한 예

주기 코드의 사소한 예로는 그 자체와 제로 코드 워드만 포함된 코드가 있다.이는 각각 1 x - x에 해당하며, 이 두 다항식은 항상 - 1{\의 요인이어야 한다

( ) 이상에서 균등 중량의 모든 단어로 구성된 패리티 비트 코드는 제너레이터 + 1 x에 해당한다 G ( ) 대해 이것은 항상 x - 의 인수여야 한다

준순환코드 및 단축코드

먼저 주기 코드의 세부사항을 조사하기 전에 우리는 주기 코드에 밀접하게 관련되어 있고 그것들 모두가 서로로 변환될 수 있는 준 주기 코드와 단축 코드에 대해 논의할 것이다.

정의

유사 주기 코드:[citation needed]

An quasi-cyclic code is a linear block code such that, for some which is coprime to , the polynomial is a codeword polynomial whenever 코드 단어 다항식이다.

여기서 코드 워드 다항식코드 워드발전기 다항식이라고 불리는 짧은 길이의 다항식으로 구분되는 다항식인 선형 코드의 요소다.모든 코드 워드 다항식은 x) = a( ) ( ) 형식으로 표현할 수 있으며 서 g( ) g 제너레이터 다항식이다.Any codeword of a cyclic code can be associated with a codeword polynomial, namely, . A quasi-cyclic code with equal to (는) 순환 코드다.

정의

단축 코드:

- , ]{\ 선형 코드는 a( n- b, - ){\ b 위치를 삭제하여 얻을 수 있다면 적절한 단축 주기 코드라고 한다.

단축 코드에서는 설계 블록 길이보다 작은 원하는 블록 길이를 얻기 위해 정보 기호를 삭제한다.누락된 정보 기호는 보통 코드 워드의 시작 부분에 있는 것으로 상상되며 0으로 간주된다. - k (가) 고정된 k (가) 감소하여 결국 가) 감소하므로 시작 기호를 삭제할 필요는 없다.어플리케이션에 따라 연속 포지션을 0으로 간주해 삭제하는 경우도 있다.

떨어뜨린 모든 기호는 전송할 필요가 없으며 수신 끝에서 다시 삽입할 수 있다., ) 순환 코드를(- , - ) 단축 코드로 변환하려면 기호를 0으로 설정하고 각 코드 워드에서 삭제하십시오. 주기 코드는 기호를 모든 {\displaystyle b}의 계수인 n 에 삭제하여 준주기 코드로 변환할 수 있다 삭제된 기호가 체크 기호가 아닌 경우 이 주기 코드도 단축 코드다.

오류 수정을 위한 주기 코드

이제 오류 감지 수정과 함께 명시적으로 순환 코드에 대한 논의를 시작하겠다.주기 코드는 단일 오류를 수정하는 데 사용될 수 있는 주기 코드로 해밍 코드와 같이 오류를 수정하는 데 사용될 수 있다.마찬가지로 이중 오류와 버스트 오류를 수정하는 데도 사용된다.모든 유형의 오류 수정은 다음 하위 절에서 간략히 다룬다.

(,4) 해밍 코드는 g x)= + + 1 를 가지고 있다This polynomial has a zero in Galois extension field at the primitive element , and all codewords satisfy . Cyclic codes can also be used to correct double errors over the field . Blocklength will be equal to and primitive elements and as zeros in the because we are considering the case of two errors here, so each will r한 가지 오류를 범하다

수신된 단어는 )= ( ) g( )+ ( x) 주어진 - 1 의 다항식이다.

여기서 ( ) 은(는) 2개의 오차에 해당하는 최대 2개의 0이 아닌 계수를 가질 수 있다.

제너레이터 다항식 ) v)로 나눌 때 Syndrome 다항식, 을(를) 나머지 다항식 )로 정의한다.

를) ()0 ( ) x)\ g(x

두 개의 오류를 수정하는 경우

필드 요소 X_2}}를 두 의 오류 위치 번호로 설정하십시오.하나의 오류만 발생하면 2}} 0과 같고, 발생하지 않으면 둘 다 0이 된다.

1= ( ) S = v 3 ) {\

이 필드 요소는 "신드롬"이라고 불린다.Now because is zero at primitive elements and , so we can write and . If say two errors occur, then

= + i S 3 = 3 + i S_{3i3i

그리고 이 두 쌍은 ( ) 에서 두 개의 방정식으로 간주될 수 있으므로 우리는 쓸 수 있다.

= 1+ X }+}}S =( 1 ) +( 2) 3 {\3}}}}}}{3

따라서 두 쌍의 비선형 방정식을 해결할 수 있다면 두 개의 오류를 수정하는 데 사용할 수 있다.

해밍 코드

해밍(74) 코드는 1 +x+ 1+를 사용하여 GF(2)를 통한 순환 코드로 작성할 수 있다. 실제로 함(r, 2) 형식의 모든 바이너리 해밍 코드는 주기 코드에 해당하며,[3] r과 q-1이 비교적 프라임인 함(r,q) 형태의 모든 해밍 코드는 주기 코드에 해당된다.[4]ham(r,2) 형식의 해밍 코드와 r 3 이(가) 주어진짝수 코드 집합은 순환[ - , - {\ -code를 형성한다.[5]

단일 오류 수정을 위한 해밍 코드

최소 거리가 3 이상인 코드는 모든 열이 구별되고 0이 아닌 체크 행렬을 가진다.2진수 코드의 체크 m {\ m 행이 있는 경우 각 열은 -bit 이진수가 된다.- 개의 가능한 열이 있다.따라서 3개 이상의 d 행이 있는 이진 코드의 체크 에 m{\ 행이 있는 경우, - 1 2 열만 포함할 수 있으며, 그 이상은 안 된다.이것은 해밍 코드라고 불리는 a( -1, - - ) 코드를 정의한다.

크기 의 큰 알파벳에 대해 해밍 코드를 정의하는 것은 쉽다 우리는 선형 독립된 열로 의 H 행렬을 정의해야 한다.크기 의 어떤 단어에 대해서도 서로 복수인 컬럼이 있을 것이다.따라서 선형 독립성을 얻기 위해 이 아닌 모든 비 0 m - tuplers가 상위 0 원소로 선택된다.그러면 세 개의 열이 코드의 최소 거리를 3으로 하여 선형적으로 종속될 수 있기 때문에 두 개의 열은 결코 선형적으로 종속되지 않을 것이다.

따라서( - )/ (- 1) ) 비제로 열 중 하나를 가장 높은 0 원소로 한다.따라서 해밍 코드는[ ( m- 1)/( - 1)/( -)/ (- ) / - 이다.

자, 순환 코드의 경우 은(는) ( ) 에서 원시 원소가 되게 하고 = - {\Then and thus is a zero of the polynomial and is a generator polynomial for the cyclic code of block length ) n.

그러나 = {\=\ 그리고 수신된 단어는 과 같이 도 n -1{\의 다항식이다.

서, ( )= 0 또는 x x i 은 오류 위치를 나타낸다.

i 을(를) 의 요소로 사용하여 오류 위치를 색인화할 수도 있다.()= 0 g이기 때문에 v )= i v 있고, 부터2m - -까지의 파워가 구별된다. 오류가 없는 )= 0 (가) 아닌 한 i 에서 오류 위치 i를 쉽게 확인할 수 있다.따라서 해밍 코드는 = - } k = =n - {\k=(를) 하여 G F( 2){\displaysty k

버스트 오류 수정을 위한 주기 코드

해밍 거리 개념에서 최소 거리 + }의코드는 오류를 수정할 수 있다.그러나 많은 채널에서 오류 패턴은 매우 임의적이지 않으며, 메시지의 매우 짧은 세그먼트 내에서 발생한다.이런 종류의 오류를 버스트 에러라고 한다.따라서, 그러한 오류를 수정하기 위해 우리는 제약조건이 적기 때문에 더 높은 비율의 더 효율적인 코드를 얻을 것이다.주기 코드는 버스트 오류를 수정하는 데 사용된다.사실, 순환 코드는 또한 버스트 오류와 함께 순환 버스트 오류를 수정할 수 있다.주기적 버스트 오차는 다음과 같이 정의된다.

길이 의 주기적 버스트 은(는) 0이 아닌 성분이 {\순환) 연속 성분 사이에 있는 벡터로서, 이 중 첫 번째와 마지막이 0이 아닌 성분이다.

In polynomial form cyclic burst of length can be described as with as a polynomial of degree with nonzero coefficient 여기서 ( x는 패턴을 정의하고 x는 오류의 시작점을 정의한다.패턴의 길이는 dg ( )+ 1 에 의해 주어진다신드롬 다항식은 각 패턴에 대해 고유하며 다음과 같이 주어진다.

길이 이하의 모든 버스트 오류를 수정하는 선형 블록 코드에는 최소 체크 기호가 있어야 한다.증명: 길이 이하의 버스트 패턴을 수정할 수 있는 선형 코드는 길이 이하의 버스트를 코드 워드로 가질 수 없기 때문에, 만약 그렇다면 의 버스트 패턴이 길이 t 의 코드 워드로 변경될 수 있기 때문에, 이 코드는모든 제로 코드 워드에서 길이 의 버스트 오차를 만들어 lso를 얻을 수 있었다.이제 처음 구성 요소에서 0이 아닌 벡터 2개가 서로 다른 어레이의 공동 집합에서 나와야 길이 의 버스트 코드 워드가 될 수 있다따라서 이러한 동시 설정의 수는 2 인 벡터 수와 동일하므로 t 이상의 동시 설정과 그에 따라 최소 체크 기호가 표시된다

이 속성은 리거 바운드로도 알려져 있으며 임의 오류 수정을 위한 싱글톤 바운드와 유사하다.

주기적 경계로서의 화재 코드

1959년 필립 파이어는[6] 이항과 원시 다항식의 생산물에 의해 생성된 순환 코드의 구조를 제시하였다.이항은 일부 양의 홀수 정수 + 1 x으로 되어 있다[7] Fire 코드는 제너레이터 다항식으로 F ( ) 에 대한 코드를 수정하는 주기적 버스트 오류다.

여기서 ( ) 은(는 t {\보다 작지 도 m {\ 을(를 갖는 primary 다항식이며 (x ) {\ x^{1 나누지 코드의 블록 길이는 이와 같은 최소 {\ n{\data.( ) 에서 x - 1 x을 나눈다

동일한 공동 집합에 두 개의 b) b j ′({\ x 나타나지 않으면 방화 코드가 길이 t 이하의 모든 버스트 오류를 수정할 수 있다.이것은 모순으로 증명할 수 있다.길이가 이하인 뚜렷한 두 개의 비제로 b) 가 있으며 코드의 동일한 조합에 있다고 가정합시다.그래서 그들의 차이는 암호어다.( x) 의 배수이기 때문에 x - - 의 배수도 된다 따라서

( )= x ( ) ( - 1- 1) ^'

이것은 (가) -1{\의 배수라는 것을 보여준다

for some . Now, as is less than and is less than so is a codeword.그러므로

( - 1)- ( x)= ( )( x 2 - -1 ) ( x) p ( ) )-12t-1-1)

Since degree is less than degree of , cannot divide . If is not zero, then also cannot divide as is less than and by definition of , divides for no smaller than . 따라서 0과 같다.이는 두 버스트 모두 가정과 달리 동일하다는 것을 의미한다.

화재 코드는 높은 속도의 단일 버스트 보정 코드에 가장 적합하며 분석적으로 구성된다.그것들은 매우 높은 비율을 가지고 있고 m{\m}과 t{\}이 같을 때 중복성은 가장 적고 3 - 1 과 같다 복수의 화재 코드를 사용함으로써 더 긴 폭발 오류를 해결할 수도 있다.

오류 감지용 주기 코드는 널리 사용되며 - 주기 반복 코드라고 한다.

푸리에 변환의 주기 코드

푸리에 변환의 응용은 신호 처리에 널리 퍼져 있다.그러나 그들의 애플리케이션은 복잡한 필드에만 국한되지 않는다. 푸리에 변환은 갈루아 필드 ( ) 에도 존재한다 푸리에 변환을 사용한 주기 코드는 신호 처리에 가까운 설정으로 설명할 수 있다.

유한 분야에 걸친 푸리에 변환

유한 분야에 걸친 푸리에 변환

The discrete Fourier transform of vector is given by a vector where,

= = n- - - 1 v n 여기서,

서 exp(- / n )는 통합의 n 이다.마찬가지로 유한 필드 tr 루트는 순서가 원소 이다그러므로

If is a vector over , and be an element of of order , then Fourier transform of the vector ,... , - )의벡터 V = {\V_{0},}}, 이며 구성 요소는 다음과 같이 지정됨

= = n- i{\^{여기서,

여기 i 시간 인덱스, j j}은 V 스펙트럼이다. 분야의 푸리에 변환과 갈루아 필드의 중요한 차이점은 n 의 모든 값에 대해 복잡한 필드 {\ (가) 존재하는 반면, 갈루아 필드에서는 n 이(가) - 1 을 나누는 경우에만 존재한다는 것이다 e의 경우xtension fields, there will be a Fourier transform in the extension field if divides for some . In Galois field time domain vector is over the field 그러나 V {\이(가 확장 필드 ) 를 초과할 수 있다.

순환 코드의 스펙트럼 설명

Any codeword of cyclic code of blocklength can be represented by a polynomial of degree at most . Its encoder can be written as . Therefore in frequency domain encoder can be written as . Here codeword spectrum has a value in but all the components in the time domain are from . As the data spectrum is arbitrary, the role of 은(는) j(가) 0이 되는 j {\ j}을를) 지정하는 것이다.

따라서, 순환 코드는 또한 다음과 같이 정의될 수 있다.

Given a set of spectral indices, , whose elements are called check frequencies, the cyclic code is the set of words over whose spectrum is zero in the components indexed by - 그러한 스펙트럼 에는 형식의 구성 요소가 있을 이다

따라서 주기 코드는 필드 ( ) 의 벡터이며, 역 푸리에 변환에 의해 주어진 스펙트럼은 필드 ( m) 를 초과하며 특정 구성 요소에서 0이 되도록 제한된다.그러나 특정 ) {\q^{ 0의 모든 스펙트럼은 G ) 필드의 구성요소와 역변환되지 않을 수 있다 그러한 스펙트럼은 순환 코드로 사용할 수 없다.

다음은 순환 코드의 스펙트럼에 대한 몇 가지 한계다.

BCH 바운드

이(가) 일부 대해 m- ) 의 요인이 되는 경우무게 - 이하의 에서 의 d- 연속 성분을 0과 동일한 유일한 벡터는 0 벡터다.

하르트만-텡 바운드

이(가) 일부 대해 - 1) 의 인수인 경우, 과(와) 일치하는 정수The only vector in of weight or less whose spectral components equal zero for , where ., - - 2= .. .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .

루스 바운드

If be a factor of for some and . The only vector in of weight or less whose spectral components equal to zero for , where and takes at least values in the range 0는 올제로 벡터다.

2차 잔류 코드

prime 이(가) 2차적 잔류물 모듈인 경우 p + / 및 최소 중량( 2차적 잔류물 코드가 있다) .

일반화

항상성 코드는 (c1,c2,...,cn)가 코드 워드일 경우 (cn,c,c,...,c)가 코드 워드일 때 (c,c1,c,...,cn-1)인 속성을 가진 선형 코드다.부정기 코드는 λ=-1을 가진 항상기 코드다.[8]준순환 코드는 어떤 순간에는 코드 워드의 어떤 주기적인 이동이 다시 코드 워드라는 속성을 갖는다.[9]이중 순환 코드s=2로 짝수 길이의 준주기 코드다.[9]

참고 항목

메모들

  1. ^ 반 린트 1998, 페이지 76
  2. ^ 반 린트 1998, 페이지 80
  3. ^ 1988년 힐, 페이지 159-160
  4. ^ Blahut 1983, Organization 5.5.1 대상 없음:
  5. ^ 1988년 힐, 페이지 162-163
  6. ^ P. 화재, E. P.(1959년).독립적인 오류에 대한 다중 오류 수정 이진 코드 클래스.실바니아 정찰 시스템 연구소, 마운틴뷰, CA, 파충류.RSL-E-2, 1959.
  7. ^ 위주, 슈린, 칼레드 압델-가파르.Fire 및 BCH 코드에 기초한 버스트 또는 랜덤 오류 수정.ITA 2014: 2013년 1-5.
  8. ^ 반 린트 1998, 페이지 75
  9. ^ a b 맥윌리엄스 & 슬로운 1977, 페이지 506

참조

  • Blahut, Richard E. (2003), Algebraic Codes for Data Transmission (2nd ed.), Cambridge University Press, ISBN 0-521-55374-1
  • Hill, Raymond (1988), A First Course In Coding Theory, Oxford University Press, ISBN 0-19-853803-0
  • MacWilliams, F. J.; Sloane, N. J. A. (1977), The Theory of Error-Correcting Codes, New York: North-Holland Publishing, ISBN 0-444-85011-2
  • Van Lint, J. H. (1998), Introduction to Coding Theory, Graduate Texts in Mathematics 86 (3rd ed.), Springer Verlag, ISBN 3-540-64133-5

추가 읽기

외부 링크

이 글에는 크리에이티브 커먼스 귀속/공유-알리케 라이센스에 따라 라이센스가 부여된 PlanetMath의 순환 코드 자료가 통합되어 있다.