블록코드
Block code코딩 이론에서 블록 코드는 데이터를 블록으로 인코딩하는 크고 중요한 오류 수정 코드입니다.블록 코드의 예는 매우 다양하며, 그 중 상당수는 실용적으로 광범위하게 적용되고 있습니다.블록 코드의 추상적 정의는 코딩 이론가, 수학자 및 컴퓨터 과학자가 모든 블록 코드의 한계를 통일된 방식으로 연구할 수 있도록 하기 때문에 개념적으로 유용합니다.이러한 제한은 종종 블록 코드의 다른 매개 변수(예: 속도 및 오류를 감지하고 수정하는 기능)를 서로 관련짓는 경계 형태를 취합니다.
블록 코드의 예로는 Reed-Solomon 코드, Hamming 코드, Hadamard 코드, Expander 코드, Golay 코드 및 Reed-Muller 코드가 있습니다.이러한 예는 선형 코드 클래스에도 속하므로 선형 블록 코드라고 합니다.특히 이러한 코드는 부울 다항식을 사용하여 생성될 수 있기 때문에 대수 블록 코드 또는 순환 블록 코드라고 알려져 있습니다.
대수 블록 코드는 일반적으로 대수 디코더를 [jargon]사용하여 하드 디코딩됩니다.
블록 코드라는 용어는 입력 데이터의 에 작용하여 출력데이터의(를 하는 오류 수정 코드를 가리킬 수도 있습니다. 따라서 블록 코더는 메모리가 없는 장치가 됩니다.터보 코드와 같은 이 정의 코드에서는 종료된 컨볼루션 코드 및 기타 반복적으로 디코딩 가능한 코드(터보 유사 코드)도 블록 코드로 간주됩니다.종단되지 않은 컨볼루션인코더는 메모리가 있고 대신 트리 코드로 분류되는 비블록(프레임 없음) 코드의 예입니다.
이 문서에서는 "대칭 블록 코드"에 대해 설명합니다.
블록 코드와 그 파라미터
오류 정정 코드는 채널 노이즈의 영향을 받는 신뢰할 수 없는 통신 채널을 통해 디지털 데이터를 안정적으로 전송하기 위해 사용됩니다.송신자가 블록 코드를 사용하여 매우 긴 데이터 스트림을 전송하려고 할 때 송신자는 스트림을 일정한 크기의 조각으로 나눕니다.이러한 각 조각을 메시지라고 하며, 블록 코드에 의해 주어진 절차는 각 메시지를 블록 코드의 맥락에서 블록이라고도 하는 코드 워드로 개별적으로 부호화한다.그 후, 송신자는 모든 블록을 수신자에게 송신해, 수신자는 몇개의 디코딩 메카니즘을 사용해, 파손되었을 가능성이 있는 수신 블록으로부터 원래의 메세지를 회복할 수 있습니다(바람직하게는).전체 전송의 성능과 성공은 채널 및 블록 코드의 파라미터에 따라 달라집니다.
형식적으로 블록 코드는 주입 매핑입니다.
- ^{ \Sigman
여기서 \는 유한하고 비어 있지 않은 이며 k k와 n n은 정수입니다.이들 3개의 파라미터 및 코드와 관련된 기타 파라미터의 의미와 중요성은 다음과 같습니다.
알파벳 σ
부호화할 데이터 스트림은 일부 알파벳(\ 위에 문자열로 모델링됩니다.알파벳의 크기(\displaystyle \Sigma})는 종종(\q)로 표기됩니다.많은 어플리케이션에서 qq를 주력으로 하고 유한 로 를 식별하면 편리합니다.
메시지 길이 k
메시지는 의 m \Sigma 즉 k(\k입니다.따라서 k(\ k는 블록코드의 메시지 길이 또는 치수라고 불립니다.
블록 길이 n
블록 코드의 블록 n(\ n은 블록 내의 기호 수입니다.\^{n의 요소c\c는 의 문자열이며 수신자가 수신할 수 있는 블록에 대응합니다.그래서 그것들은 수신어라고도 불린다.m { m에 대해 c (m) { c ( m )、 { c}는 m{ m}의 코드워드로 불립니다.
레이트 R
블록 코드의 레이트는 메시지 길이와 블록 길이 사이의 비율로 정의됩니다.
- / { R / } 。
레이트가 클 경우 전송 블록당 실제 메시지 양이 많다는 것을 의미합니다.그런 의미에서 전송속도를 측정하여 1-R을 측정하여 블록코드를 사용한 인코딩으로 발생하는 오버헤드를 측정합니다.일반적으로 데이터를 무손실 압축할 수 없기 때문에 속도가1(\displaystyle을 할 수 없다는 것은 단순한 정보 이론상의 사실이다.형식적으로는 C C가 주입형 맵이라는 사실에서 비롯됩니다.
거리 d
블록 코드의 거리 또는 최소 거리 d는 두 개의 다른 코드워드가 있는 최소 위치 수이며 상대 거리 는 d /입니다.수신된 }, {n의 형식입니다. 1 , 2) 、 { \ ( { 1 , c_ {2} } 、 c、 {} 、 2( c _ { { ) 。, c 1{ }}와 의 해밍 거리입니다.으로 코드C의 최소 d dC를 다음과 같이 정의합니다.
- : m1 [ ( ) , ( ) d:=\_ {\ Sigma \ sigma m_{
어떤 코드든 주입식이어야 하므로 두 개의 코드워드는 적어도 한 위치에서 일치하지 않으므로 코드 거리는 최소 11)입니다. 또한 거리는 선형 블록 코드의 최소 무게와 같습니다. 이유는 다음과 같습니다.
- _{1},^{ \2}\Delta mathbf 1})+2})=\k}\inigmigmigma 1}\Sigma}
거리가 멀수록 오류 수정 및 검출이 더 쉬워집니다.예를 들어, 송신된 코드 워드의 기호를 변경할 수 있는 에러만을 생각할 경우, 에러수는 송신된 코드 워드와 수신된 워드의 위치가 다릅니다.코드 워드의d - 를 하면 실수로 다른 코드 워드가 생성되지 않으므로 거리 의 코드를 사용하면 수신기가 d 의전송 오류를 검출할 수 있습니다.게다가 (-) / 이하의 송신 에러가 발생했을 경우, 수신측은 수신한 워드를 코드 워드로 일의로 디코딩 할 수 있습니다.이는 수신된 모든 워드는 거리 )/ ( / 의 코드워드를 1개까지 가지고 있기 때문입니다.( - ) / 2 (/ 2) 이상의 전송 에러가 발생했을 경우 수신된 워드는 일반적으로 여러 개의 코드워드가 존재할 수 있으므로 수신된 워드를 고유하게 디코딩할 수 없습니다.리시버가 이 상황에 대처하기 위한 하나의 방법은 리스트 디코딩을 사용하는 것입니다.리스트 디코딩에서는 디코더는 특정 반경 내의 모든 코드워드의 리스트를 출력합니다.
인기 표기법
( n, , ){\ , , 는가q { q}인 { \ 위의 블록코드를 나타냅니다(이 선형인).[ n, , ] , _표기의 각 괄호를 사용하여 이 사실을 나타냅니다.q { q인 이진 코드의 경우 인덱스가 삭제될 수 있습니다.최대 거리 분리 가능 코드의 경우 거리는 d - + d이지만 정확한 거리를 알 수 없거나 입증 또는 진술할 수 없거나 필요하지 않을 수 있습니다. 경우 dd-component가 누락될 수 있습니다.
비블록 코드의 경우, 특히 n )q {기호가 n n의 M{\ m 코드워드를 하는 코드에 되는 경우가 있습니다 크기의 k{\ k 메시지가 있는 블록코드의 경우,는 M k { M가 됩니다.
예
앞서 말한 바와 같이 실제로 블록 코드인 오류 정정 코드는 매우 많습니다.첫 번째 오류 수정 코드는 1950년 리처드 W. 해밍에 의해 개발된 해밍(7,4) 코드입니다.이 코드는 3개의 패리티 비트를 추가하여 4비트로 구성된 메시지를 7비트의 코드 워드로 변환합니다.따라서 이 코드는 블록 코드입니다.그것은 또한 선형 코드이며 거리 3을 가지고 있는 것으로 밝혀졌다.위의 약자 표기법에서는 Hamming(7,) 코드가 [,4,3, 코드임을 의미합니다.
Reed-Solomon 코드는 [ {코드의 이며, d - + { d q {q}는 소수입니다.순위 코드는 dn - + { d1의[, 코드 패밀리입니다. 하다마드 코드는[ ]2 { [d 코드 이며, n -2 k - 스타일 입니다.
오류 검출 및 수정 속성
c{ \ c \ \ Sigma ^ { }는 n\ n n \ \ Sigma ^ { n}의 점으로 간주할 수 있으며 C{ \ \ 는 n\ { C 의 서브셋입니다.{은(는 거리 d d를 가지고 있습니다.는 cC {\cmathcal {를 으로 한 해밍 볼에 d - 의 코드워드가 없음을 의미합니다이 의 display n차원 워드의 집합으로 정의됩니다.c{\ c까지의 해밍 거리는d -(\ 입니다.또한 (최소) d d의 C{\ {에는 다음과 같은 특성이 있습니다.
- 는 를 검출할 수 있습니다c({ d-1 는 해밍볼에서 반경 을 으로 하는 유일한 코드워드이기 때문에({ d-1 이하의 패턴은 코드워드를 변경할 수 없습니다.o 다른 것.수신한 벡터가 C의 코드워드가 아님을 수신기가 검출하면 오류가 검출됩니다(단, 수정 보장은 없습니다).
- {\{\은는 - {\{ {{ \2) \ right \ 오류를 수정할 수 있습니다.c(\ c는 을 가진 해밍볼의 유일한 코드워드이므로 2개의 해밍볼은 각각 반경 {{ 2를 가진 다른 코드워드에 중심을 맞춥니다.겹치다따라서 오류 수정이 된 단어에 가장 가까운 코드 워드를 찾는 것으로 간주할 때 오류 수가 - 1 2{\ < \> \ \ rfloordidididiydi를 으로 한 해밍볼에는 코드 워드가 1개밖에 .y는 반지름이- \ 2이므로 모든 오류를 수정할 수 있습니다.
- -) / ( ( ) / 이상의 오류가 있는 경우 디코딩하려면 목록 디코딩 또는 최대우도 디코딩을 사용할 수 있습니다.
- 는 소거를 할 수 있습니다.지우기는 지워진 기호의 위치를 알고 있음을 의미합니다.수정은q\passing 으로 수행할 수 있습니다. 지워진 위치를 i 로 채우고 오류 수정을 수행합니다.에러수가「- 2」({lfloor {{ \ 이하인 경우는, 소거를 수정할 수 있습니다.
블록 코드의 하한 및 상한
코드 패밀리
{ 1{ { C = \ { _ { } { \ } {\ family 。i { C { i }는 , , { ( } )q asingasingasingasingasingasingasingasingasingasingasingasingasingasingasingasingasingasing n . k _ k _ k _ i。
코드 C 패밀리의 비율은 (C ) i i ( \ R ( ) = \ _ { \ \ infty } {{ i } \n _ { i } 로 정의됩니다.
C 패밀리의 상대 거리는 ( ) i ( C ) = \ _ { \ \ infty { d {_ { i} \ n _ { i} 로 정의된다.
() \ R ( ) ( ( ( \ (C )의 관계를 조사하기 위해 블록코드의 하한과 상한을 알고 있습니다.
해밍행
싱글톤행
싱글턴 경계는 블록 코드의 레이트와 상대 거리의 합계가 1보다 클 수 없다는 것입니다.
- + 1+ { R + \ \ 1 + { \ { 1 { } 。
즉, 모든 블록코드는 k + n+ { k n}을만족합니다.리드-솔로몬 부호는 동일성을 갖는 싱글톤 바운드를 만족시키는 단순한 부호의 예입니다.
플롯킨 바운드
22 + 1 R 1 즉 + dn({ kn
일반적인 경우, 다음 Plotkin 경계는 거리 d의 임의의 n \ C _에 대해 유지됩니다.
- ( - q )일 경우 C 2 n \ d = \ ( - { 1 q } \ ) \}
- ( - q ) d -(- 1 ) d > \ left ( 1 - { \q } \ ) \{ { - \ left ( q - \ right ) }
{ \ delta 1 -( -) + ( )\ R \ left ( {\over { \ right ) \ + \ \( 1 \ right )
길버트-바르샤모프행
1 - ( ") - \ R \ } \ ( \ \) - \ }。서 01 - - (\ \ ){\ {q _는 q-ary 엔트로피 함수입니다.
존슨행
( " ) f ( - q )( - 1 q - )\ \ left ( \ )를 합니다.left({q {q-1
q ( , ,e) \ J _ { } \ ( , , \ be \ \{ F }_ { } _ { { q }^{ n } } e e e e e e e e e e e e e e e e e e e of 、 Hamming ball of of of e of e of of of of
으로 Johnson Bound : q ( , , )≤ n \ J _ {} \ left ( , , e \ )\ ( n , _ { q}\ ( n , style - 1 - 1 ) - n)
엘리아스-바살리고 경계
구면 패킹 및 격자
블록 코드는 구면 패킹 문제와 관련되어 있으며, 이 문제는 수년간 어느 정도 주목을 받아 왔습니다.2차원에서는 쉽게 시각화할 수 있습니다.동전 뭉치를 탁자 위에 평평하게 놓고 함께 밀어라.그 결과 벌집과 같은 육각형 무늬가 만들어집니다.그러나 블록 코드는 쉽게 시각화할 수 없는 더 많은 차원에 의존합니다.심우주 통신에 사용되는 강력한 골레이 코드는 24차원을 사용합니다.바이너리 코드(보통 바이너리 코드)로 사용되는 경우 치수는 위에서 정의한 코드 워드의 길이를 나타냅니다.
부호화 이론은 N차원 구 모델을 사용한다.예를 들어, 테이블 상판 또는 3차원 원 안에 몇 페니를 넣을 수 있는지, 지구본에 몇 개의 구슬을 넣을 수 있는지 등입니다.그 외의 고려 사항에서는 코드를 선택할 수 있습니다.예를 들어 직사각형 상자의 구속조건에 육각형 패킹하면 모서리에 빈 공간이 남습니다.치수가 커질수록 빈 공간의 비율은 작아집니다.그러나 특정 차원에서는 패킹이 모든 공간을 사용하며 이러한 코드들은 이른바 완벽한 코드입니다.이러한 코드는 거의 없습니다.
또 하나의 속성은 하나의 코드워드가 [1]가질 수 있는 네이버의 수입니다.다시 한 번, 페니를 예로 들어보자.우선 우리는 페니를 직사각형 격자 모양으로 포장한다.각 페니에는 4개의 이웃이 있습니다(그리고 4개는 더 먼 모서리에 있습니다).육각형에서, 각 동전에는 6개의 이웃이 있을 것이다.3차원 및 4차원에서는 각각 12개의 이웃과 24개의 이웃을 가진 12면 및 24개의 셀에 의해 최대 패킹이 이루어진다.치수를 늘리면 인접한 이웃의 수가 매우 빠르게 증가합니다.일반적으로, 그 값은 키스 번호로 주어진다.
그 결과, 노이즈가 수신측이 네이버를 선택하도록 하는 방법(따라서 에러)도 많아집니다.이것은 블록 코드와 실제로 모든 코드의 기본적인 제한입니다.단일 네이버에 오류를 발생시키는 것은 더 어려울 수 있지만 네이버의 수가 충분히 많아 총 오류 확률이 실제로 저하될 [1]수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b c Christian Schlegel and Lance Pérez (2004). Trellis and turbo coding. Wiley-IEEE. p. 73. ISBN 978-0-471-22755-7.
- J.H. van Lint (1992). Introduction to Coding Theory. GTM. Vol. 86 (2nd ed.). Springer-Verlag. p. 31. ISBN 3-540-54894-7.
- F.J. MacWilliams; N.J.A. Sloane (1977). The Theory of Error-Correcting Codes. North-Holland. p. 35. ISBN 0-444-85193-3.
- W. Huffman; V.Pless (2003). Fundamentals of error-correcting codes. Cambridge University Press. ISBN 978-0-521-78280-7.
- S. Lin; D. J. Jr. Costello (1983). Error Control Coding: Fundamentals and Applications. Prentice-Hall. ISBN 0-13-283796-X.