부호화 이론
Coding theory![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Hamming.jpg/220px-Hamming.jpg)
코딩 이론은 코드의 특성과 특정 애플리케이션에 대한 각각의 적합성에 대한 연구입니다.코드는 데이터 압축, 암호화, 오류 검출 및 수정, 데이터 전송 및 데이터 저장에 사용됩니다.코드는 효율적이고 신뢰할 수 있는 데이터 전송 방법을 설계하기 위해 정보 이론, 전기 공학, 수학, 언어학, 컴퓨터 과학 등 다양한 과학 분야에서 연구됩니다.통상, 용장성의 삭제와 송신 데이터의 에러의 수정 또는 검출이 포함됩니다.
코딩에는 [1]다음 4가지 유형이 있습니다.
데이터 압축은 데이터를 보다 효율적으로 전송하기 위해 데이터로부터 불필요한 중복을 제거하려고 합니다.예를 들어 ZIP 데이터 압축은 인터넷 트래픽을 줄이는 등의 목적으로 데이터 파일을 더 작게 만듭니다.데이터 압축과 오류 보정은 조합하여 연구할 수 있다.
오류 보정은 소스로부터의 데이터에 유용한 용장성을 추가하여 전송 채널에 존재하는 장애에 대한 전송을 보다 견고하게 합니다.일반 사용자는 오류 수정을 사용하는 많은 응용 프로그램을 인식하지 못할 수 있습니다.일반적인 음악 콤팩트 디스크(CD)는 Reed-Solomon 코드를 사용하여 긁힘이나 먼지를 보정합니다.이 응용 프로그램에서는 전송 채널이 CD 자체입니다.또한 휴대폰은 고주파 무선 전송의 페이딩과 노이즈를 보정하기 위해 코딩 기술을 사용합니다.데이터 모뎀, 전화 전송 및 NASA 딥 스페이스 네트워크는 모두 채널 코딩 기술을 사용하여 비트를 통과시킵니다(터보 코드나 LDPC 코드 등).
부호화 이론의 역사
1948년 클로드 섀넌은 벨 시스템 기술 저널의 7월과 10월호에 두 부분으로 나눠 "소통의 수학적 이론"을 발표했다.이 작업에서는, 송신자가 송신하고 싶은 정보를 부호화하는 최선의 방법에 관한 문제에 초점을 맞추고 있습니다.이 기초적인 작업에서 그는 Norbert Wiener에 의해 개발된 확률 이론의 도구를 사용했는데, 그것은 그 당시 통신 이론에 적용되기 시작한 초기 단계에 있었다.섀넌은 본질적으로 정보 이론의 분야를 발명하면서 메시지의 불확실성에 대한 척도로 정보 엔트로피를 개발했습니다.
바이너리 골레이 코드는 1949년에 개발되었습니다.24비트 워드당 최대 3개의 오류를 수정하고 4번째 오류를 검출할 수 있는 오류 수정 코드입니다.
리처드 해밍은 1968년 벨 연구소에서 수치적 방법, 자동 코딩 시스템, 오류 감지 및 오류 수정 코드에 대한 연구로 튜링상을 수상했습니다.그는 해밍 코드, 해밍 창, 해밍 수, 해밍 거리라고 알려진 개념을 발명했다.
1972년 Nasir Ahmed는 1973년 [2]T. 나타라잔과 K. R. Rao와 함께 개발한 이산 코사인 변환(DCT)DCT는 가장 널리 사용되는 손실 압축 알고리즘으로 JPEG, MPEG 및 MP3와 같은 멀티미디어 형식의 기초입니다.
소스 코딩
소스 코딩의 목적은 소스 데이터를 가져와 더 작게 만드는 것입니다.
정의.
데이터는 랜덤 X {X: \(x x {x \ \{} ) 。서 X는 P [ \ { } [ X=x} 로 표시됩니다.
데이터는 알파벳(\ 위에 문자열(워드)로 인코딩됩니다.
코드는 함수입니다.
- : \ C : { \ {} \ \ { * } ) ( + \ \ { + } ) 。
C( ){ C는x { x와 된 코드워드입니다.
코드 워드의 길이는 다음과 같습니다.
코드 길이는 다음과 같습니다.
C ( 1, , k ) ( ) C ( x2) cC ( ){ C ( x { , \, { k } ( { \ C ( { k} ) 。
빈 문자열의 코드 워드는 빈 문자열 자체입니다.
특성.
원칙
소스의 엔트로피는 정보의 척도이다.기본적으로 소스 코드는 소스에 존재하는 용장성을 줄이고 더 많은 정보를 전송하는 더 적은 비트로 소스를 나타냅니다.
특정 가정된 확률 모델에 따라 메시지의 평균 길이를 최소화하려고 명시적으로 시도하는 데이터 압축을 엔트로피 부호화라고 합니다.
소스 코딩 방식에 의해 사용되는 다양한 기술은 소스의 엔트로피 한계를 달성하기 위해 시도합니다.C(x) h H(x) 。H(x)는 소스(비트레이트)의 엔트로피이며, C(x)는 압축 후의 비트레이트입니다.특히 소스 부호화 방식은 소스의 엔트로피보다 나을 수 없다.
예
팩시밀리 송신에서는, 심플한 실행 길이 코드를 사용합니다.소스 코딩은 송신기의 필요성에 불필요한 모든 데이터를 제거하여 전송에 필요한 대역폭을 줄입니다.
채널 부호화
채널 코딩 이론의 목적은 빠르게 전송되고, 많은 유효한 코드 워드를 포함하며, 많은 오류를 수정하거나 최소한 탐지할 수 있는 코드를 찾는 것입니다.이러한 영역의 퍼포먼스는 상호 배타적이지는 않지만 트레이드오프입니다.따라서 다른 코드는 다른 애플리케이션에 최적입니다.이 코드의 필요한 속성은 주로 전송 중에 발생하는 오류의 확률에 따라 달라집니다.일반적인 CD의 장애는 주로 먼지나 긁힌 자국입니다.
CD는 교차 인터리브 리드-솔로몬 코딩을 사용하여 데이터를 [3]디스크로 분산합니다.
좋은 코드는 아니지만 간단한 반복 코드는 이해할 수 있는 예가 될 수 있습니다.데이터 비트 블록(음향을 나타내는 것)을 가져와서 3회 송신한다고 합니다.수신측에서 3회 반복을 조금씩 검토하여 다수결로 가결합니다.여기서 반전은 우리가 단순히 순서대로 비트를 보내는 것이 아니라는 것입니다.우린 그들을 내버려두죠.데이터 비트 블록은 먼저 4개의 작은 블록으로 나뉩니다.그런 다음 블록을 순환하여 첫 번째 비트, 두 번째 비트 등을 전송합니다.이 작업은 디스크 표면에 데이터를 분산하기 위해 세 번 수행됩니다.단순한 반복 코드의 경우, 이것은 효과적이지 않은 것처럼 보일 수 있습니다.그러나 이 인터리빙 기술을 사용할 때 긁힌 상처나 먼지 반점의 "버스트" 오류를 수정하는 데 매우 효과적인 더 강력한 코드가 있습니다.
다른 코드는 다른 애플리케이션에 더 적합합니다.딥 스페이스 통신은, 버스트성보다 연속적인 성질의 수신기의 열 노이즈에 의해서 제한됩니다.마찬가지로 협대역 모뎀은 전화 네트워크에 존재하는 노이즈에 의해 제한되며 지속적인 [citation needed]장애로 더 잘 모델링됩니다.휴대폰은 빠르게 퇴색되기 쉽다.사용되는 주파수가 높으면 수신기가 몇 인치 이동해도 신호가 빠르게 페이딩될 수 있습니다.다시 [citation needed]페이딩에 대처하기 위해 설계된 채널코드 클래스가 있습니다.
선형 코드
대수적 부호화 이론이라는 용어는 부호화 이론의 하위 분야를 나타내며, 여기서 부호의 특성은 대수적 용어로 표현되고 그 후 더 [citation needed]연구된다.
대수 부호화 이론은 기본적으로 두 가지 주요 코드 [citation needed]유형으로 나뉩니다.
- 선형 블록 코드
- 컨볼루션 코드
주로 다음 [citation needed]세 가지 코드 속성을 분석합니다.
선형 블록 코드
선형 블록 코드는 선형성의 특성을 가진다.즉, 임의의 2개의 코드 워드의 합도 코드 워드이며, 블록 내의 소스 비트에 적용되므로 선형 블록 코드라는 이름이 붙는다.선형적이지 않은 블록 코드가 있지만 이 [4]속성이 없으면 코드가 양호한 코드임을 증명하기 어렵습니다.
선형 블록 코드는 기호 알파벳(예: 이진수 또는 삼진수)과 매개변수(n,m,dmin)[5]로 요약됩니다.
- n은 코드 워드의 길이(기호 단위)입니다.
- m은 부호화에 동시에 사용되는 소스 기호의 수입니다.
- d는min 코드의 최소 해밍 거리입니다.
선형 블록 코드에는 다음과 같은 많은 유형이 있습니다.
블록 코드는 구면 패킹 문제와 관련되어 있으며, 이 문제는 몇 년 동안 어느 정도 주목을 받아 왔습니다.2차원에서는 쉽게 시각화할 수 있습니다.동전 뭉치를 탁자 위에 평평하게 놓고 함께 밀어라.그 결과 벌집과 같은 육각형 무늬가 만들어집니다.그러나 블록 코드는 쉽게 시각화할 수 없는 더 많은 차원에 의존합니다.심우주 통신에 사용되는 강력한(24,12) Golay 코드는 24차원을 사용합니다.바이너리 코드(보통 바이너리 코드)로 사용되는 경우 치수는 위에서 정의한 코드 워드의 길이를 나타냅니다.
부호화 이론은 N차원 구 모델을 사용한다.예를 들어, 테이블 상판의 원 안에 몇 페니를 넣을 수 있는지, 또는 3차원적으로 몇 개의 구슬을 지구본에 넣을 수 있는지 등을 나타냅니다.그 외의 고려 사항에서는 코드를 선택할 수 있습니다.예를 들어 직사각형 상자의 구속조건에 육각형 패킹하면 모서리에 빈 공간이 남습니다.치수가 커질수록 빈 공간의 비율은 작아집니다.그러나 특정 차원에서는 패킹이 모든 공간을 사용하며 이러한 코드는 소위 "완벽한" 코드입니다.중요하지 않은 유용한 완전 코드는 파라미터가 (2r – 1r, 2 – 1 – r, 3)를 만족하는 distance-3 Hamming 코드와 [23,12,7]바이너리와 [11,6,5] 삼원 Golay [4][5]코드뿐입니다.
또 하나의 코드 속성은 하나의 코드 워드가 [6]가질 수 있는 네이버 수입니다.다시 한 번, 페니를 예로 들어보자.우선 우리는 페니를 직사각형 격자 모양으로 포장한다.각 페니에는 4개의 이웃이 있습니다(그리고 4개는 더 먼 모서리에 있습니다).육각형에서, 각 동전에는 6개의 이웃이 있을 것이다.치수를 늘리면 인접한 이웃의 수가 매우 빠르게 증가합니다.그 결과, 노이즈가 수신측이 네이버를 선택하도록 하는 방법(따라서 에러)의 수도 증가합니다.이것은 블록 코드와 실제로 모든 코드의 기본적인 제한입니다.단일 네이버에 오류를 발생시키는 것은 더 어려울 수 있지만 네이버의 수가 충분히 많아 총 오류 확률이 실제로 저하될 [6]수 있습니다.
선형 블록 코드의 속성은 많은 애플리케이션에서 사용됩니다.예를 들어 가장 잘 알려진 쉐이핑 코드 중 하나인 트렐리스 [7]쉐이핑에서 선형 블록 코드의 증후군 코제 고유성 특성이 사용됩니다.
컨볼루션 코드
컨볼루션 코드 뒤에 있는 아이디어는 모든 코드워드 기호가 다양한 입력 메시지 기호의 가중치 합계가 되도록 하는 것입니다.이는 LTI 시스템에서 입력 및 임펄스 응답을 알고 있을 때 시스템의 출력을 찾기 위해 사용되는 컨볼루션과 같습니다.
따라서 일반적으로 시스템 컨볼루션인코더의 출력, 즉 입력 비트의 컨볼루션인코더의 출력은 컨볼루션인코더, 레지스터의 상태와 대조됩니다.
기본적으로 컨볼루션 코드는 동등한 블록 코드보다 더 많은 노이즈 보호를 제공하지 않습니다.대부분의 경우 동일한 전력의 블록 코드보다 구현이 훨씬 단순합니다.인코더는 보통 상태 메모리와 피드백 로직(일반적으로 XOR 게이트)을 가진 단순한 회로입니다.디코더는 소프트웨어 또는 펌웨어로 구현할 수 있습니다.
Viterbi 알고리즘은 컨볼루션 코드를 디코딩하는 데 사용되는 최적의 알고리즘입니다.계산 부하를 줄이기 위한 단순화가 있습니다.가장 가능성이 높은 경로만 검색하는 데 의존합니다.최적은 아니지만 일반적으로 저소음 환경에서 좋은 결과를 제공하는 것으로 밝혀졌다.
컨볼루션 코드는 음성 대역 모뎀(V.32, V.17, V.34) 및 GSM 휴대 전화 및 위성 및 군사 통신 장치에서 사용됩니다.
암호 부호화
암호법 또는 암호 부호화는 제3자(적수)[8]가 존재하는 상황에서 안전한 통신을 위한 기술을 연습하고 연구하는 것입니다.보다 일반적으로는 [9]공격자를 차단하는 프로토콜을 구축하고 분석하는 것입니다. 데이터 기밀성, 데이터 무결성, 인증 및 거부[10] 방지와 같은 정보 보안의 다양한 측면이 현대 암호화의 핵심입니다.현대 암호학은 수학, 컴퓨터 과학, 전기 공학 분야의 교차점에 존재한다.암호학에는 ATM 카드, 컴퓨터 패스워드, 전자상거래 등이 포함된다.
현대 이전의 암호학은 사실상 암호화와 동의어였으며, 정보를 읽을 수 있는 상태에서 명백한 난센스로 변환하는 것이다.암호화된 메시지의 발신자는 원래 정보를 복구하는 데 필요한 복호화 기술을 의도된 수신자와만 공유함으로써 원치 않는 사람이 같은 일을 하는 것을 방지했다.제1차 세계 대전과 컴퓨터의 등장 이후, 암호학을 실행하는 방법은 점점 더 복잡해지고 그 적용은 더욱 광범위해졌다.
현대의 암호화는 수학 이론과 컴퓨터 과학 실습을 기반으로 합니다.암호 알고리즘은 계산 경도 가정을 중심으로 설계되어 있기 때문에 어떤 상대도 이러한 알고리즘을 실제로 깨기 어렵습니다.이러한 시스템을 깨는 것은 이론적으로는 가능하지만, 알려진 실제적인 수단으로는 불가능하다.따라서 이러한 스킴은 계산적으로 안전하다고 불립니다.예를 들어 정수 인수분해 알고리즘의 개선과 고속 컴퓨팅 기술 등 이론적인 진보가 이러한 솔루션을 지속적으로 적용할 필요가 있습니다.무제한의 컴퓨팅 능력(예를 들어 일회성 패드)을 사용하더라도 이론적으로 안전한 정보(이론적으로 안전한 시스템)가 존재하지만 이론적으로는 깨지기 쉽지만 계산상 안전한 최고의 메커니즘보다 구현이 더 어렵습니다.
회선 부호화
라인 코드(디지털 베이스 밴드 변조 또는 디지털 베이스 밴드 전송 방식이라고도 함)는 베이스 밴드 전송을 위해 통신 시스템 내에서 사용하도록 선택된 코드입니다.라인 코딩은 디지털 데이터 전송에 자주 사용됩니다.
라인 코딩은 물리적 채널(및 수신 장치의 특정 특성에 맞게 최적으로 조정된 진폭 및 시간 이산 신호에 의해 전송되는 디지털 신호를 나타냅니다.전송 링크에서 디지털 데이터의 1과 0을 나타내는 데 사용되는 전압 또는 전류의 파형 패턴을 라인 인코딩이라고 합니다.회선 부호화의 일반적인 타입은 단극 부호화, 극성 부호화, 양극 부호화 및 맨체스터 부호화입니다.
부호화 이론의 기타 응용
![]() | 이 문서 또는 섹션에는 잘못된 부분이 포함되어 있을 수 있습니다.(2012년 8월) |
코딩 이론의 또 다른 관심사는 동기화에 도움이 되는 코드를 설계하는 것입니다.코드는 위상 시프트를 쉽게 검출 및 보정할 수 있도록 설계되어 동일한 채널 상에서 [citation needed]복수의 신호를 송신할 수 있도록 설계될 수 있다.
일부 휴대 전화 시스템에서 사용되는 또 다른 코드 애플리케이션은 Code-Division Multiple Access(CDMA; 코드분할다중접속)입니다.각 전화기에는 다른 [citation needed]전화기의 코드와 거의 상관없는 코드시퀀스가 할당되어 있습니다.송신시에, 코드 워드는 보이스 메시지를 나타내는 데이터 비트를 변조하기 위해서 사용됩니다.수신측에서는, 복조 처리를 실시해 데이터를 회복한다.이 코드 클래스의 속성을 사용하면 (다른 코드를 가진) 많은 사용자가 같은 무선 채널을 동시에 사용할 수 있습니다.수신기에는 다른 사용자의 신호가 복조기에는 낮은 수준의 [citation needed]노이즈로만 나타납니다.
또 하나의 일반적인 코드 클래스는 Automatic Repeat-Request(ARQ; 자동 반복 요청) 코드입니다.이러한 코드에서는, 송신자는, 에러 체크를 위해서, 통상은 체크 비트를 추가하는 것으로, 각 메시지에 용장성을 추가합니다.메시지가 도착했을 때 체크비트가 메시지의 나머지 부분과 일치하지 않으면 수신자는 메시지를 재발송하도록 송신자에게 요구합니다.가장 단순한 광역 네트워크 프로토콜을 제외한 모든 프로토콜은 ARQ를 사용합니다.일반적인 프로토콜로는 SDLC(IBM), TCP(인터넷), X.25(국제) 등이 있습니다.거부된 패킷을 새로운 패킷과 대조하는 문제로 인해 이 주제에 대한 광범위한 연구 분야가 있습니다.새로운 건가요, 아니면 재발송신인가요?통상은, TCP 와 같이, 번호 부여 방식이 사용됩니다."RFC793". RFCs. Internet Engineering Task Force (IETF). September 1981.
그룹 테스트
그룹 테스트에서는 코드를 다른 방법으로 사용합니다.특정 방식으로 극소수의 품목이 다른 대규모 그룹(예: 불량 제품 또는 감염된 테스트 대상)을 고려합니다.그룹 테스트의 개념은 가능한 한 적은 수의 테스트를 사용하여 어떤 항목이 "다른"지 결정하는 것입니다.문제의 근원은 미 육군 공군이 병사들의 [11]매독 검사를 필요로 했던 2차 세계대전에 있다.
아날로그 부호화
정보는 뇌의 신경망, 아날로그 신호 처리 및 아날로그 전자제품에서 유사하게 인코딩됩니다.아날로그 코딩의 측면에는 아날로그 오류 수정,[12] 아날로그 데이터 압축[13] 및 아날로그 [14]암호화가 포함됩니다.
신경 부호화
뉴럴 코딩은 감각과 다른 정보가 뉴런 네트워크에 의해 뇌에서 어떻게 표현되는지에 관한 신경과학 관련 분야이다.신경 코딩을 연구하는 주요 목표는 자극과 개인 또는 앙상블 신경 반응 사이의 관계와 [15]앙상블 신경의 전기적 활동 사이의 관계를 특징짓는 것이다.뉴런은 디지털과 아날로그 [16]정보를 모두 부호화할 수 있고, 뉴런은 정보이론의 원리를 따르고 정보를 [17]압축하며, 뇌와 더 넓은 신경계에 전달되는 신호의 오류를 감지하고 교정하는[18] 것으로 생각된다.
「 」를 참조해 주세요.
- 부호화 게인
- 커버코드
- 오류정정코드
- 접힌 리드-솔로몬 코드
- 그룹 테스트
- 해밍 거리, 해밍 중량
- 리 거리
- 대수 부호화 이론의 주제 목록
- 다중 안테나 연구의 공간 부호화 및 MIMO
- 공간 다이버시티 부호화는 데이터 전송의 신뢰성을 높이기 위해 서로 다른 공간 경로를 따라 정보 신호의 복제를 전송하는 공간 부호화이다.
- 공간 간섭 소거 부호화
- 공간 다중 부호화
- 정보 이론, 데이터 압축 및 오류 수정 코드 연대표
메모들
- ^ James Irvine; David Harle (2002). "2.4.4 Types of Coding". Data Communications and Networks. p. 18. ISBN 9780471808725.
There are four types of coding
- ^ Nasir Ahmed. "How I Came Up With the Discrete Cosine Transform". Digital Signal Processing, Vol. 1, Iss. 1, 1991, pp. 4-5.
- ^ 토드 캠벨입니다"Answer Geek: 오류 수정 규칙 CD"
- ^ a b Terras, Audrey (1999). Fourier Analysis on Finite Groups and Applications. Cambridge University Press. p. 195. ISBN 978-0-521-45718-7.
- ^ a b Blahut, Richard E. (2003). Algebraic Codes for Data Transmission. Cambridge University Press. ISBN 978-0-521-55374-2.
- ^ a b Christian Schlegel; Lance Pérez (2004). Trellis and turbo coding. Wiley-IEEE. p. 73. ISBN 978-0-471-22755-7.
- ^ Forney, G.D., Jr. (March 1992). "Trellis shaping". IEEE Transactions on Information Theory. 38 (2 Pt 2): 281–300. doi:10.1109/18.119687. S2CID 37984132.
- ^ Rivest, Ronald L. (1990). "Cryptology". In J. Van Leeuwen (ed.). Handbook of Theoretical Computer Science. Vol. 1. Elsevier.
- ^ Bellare, Mihir; Rogaway, Phillip (21 September 2005). "Introduction". Introduction to Modern Cryptography. p. 10.
- ^ Menezes, A. J.; van Oorschot, P. C.; Vanstone, S. A. (1997). Handbook of Applied Cryptography. ISBN 978-0-8493-8523-0.
- ^ Dorfman, Robert (1943). "The detection of defective members of large populations". Annals of Mathematical Statistics. 14 (4): 436–440. doi:10.1214/aoms/1177731363.
- ^ Chen, Brian; Wornell, Gregory W. (July 1998). "Analog Error-Correcting Codes Based on Chaotic Dynamical Systems" (PDF). IEEE Transactions on Communications. 46 (7): 881–890. CiteSeerX 10.1.1.30.4093. doi:10.1109/26.701312. Archived from the original (PDF) on 2001-09-27. Retrieved 2013-06-30.
- ^ Novak, Franc; Hvala, Bojan; Klavžar, Sandi (1999). "On Analog Signature Analysis". Proceedings of the conference on Design, automation and test in Europe. CiteSeerX 10.1.1.142.5853. ISBN 1-58113-121-6.
- ^ Shujun Li; Chengqing Li; Kwok-Tung Lo; Guanrong Chen (April 2008). "Cryptanalyzing an Encryption Scheme Based on Blind Source Separation" (PDF). IEEE Transactions on Circuits and Systems I. 55 (4): 1055–63. arXiv:cs/0608024. doi:10.1109/TCSI.2008.916540. S2CID 2224947.
- ^ Brown EN, Kass RE, Mitra PP (May 2004). "Multiple neural spike train data analysis: state-of-the-art and future challenges" (PDF). Nature Neuroscience. 7 (5): 456–461. doi:10.1038/nn1228. PMID 15114358. S2CID 562815.
- ^ Thorpe, S.J. (1990). "Spike arrival times: A highly efficient coding scheme for neural networks" (PDF). In Eckmiller, R.; Hartmann, G.; Hauske, G. (eds.). Parallel processing in neural systems and computers (PDF). North-Holland. pp. 91–94. ISBN 978-0-444-88390-2. Retrieved 30 June 2013.
- ^ Gedeon, T.; Parker, A.E.; Dimitrov, A.G. (Spring 2002). "Information Distortion and Neural Coding". Canadian Applied Mathematics Quarterly. 10 (1): 10. CiteSeerX 10.1.1.5.6365.
- ^ Stiber, M. (July 2005). "Spike timing precision and neural error correction: local behavior". Neural Computation. 17 (7): 1577–1601. arXiv:q-bio/0501021. doi:10.1162/0899766053723069. PMID 15901408. S2CID 2064645.
레퍼런스
- 엘윈 R. Berlekamp (2014), 대수적 부호화 이론, 세계과학출판(개정판), ISBN 978-9-81463-589-9.
- 맥케이, 데이비드 J. C.정보 이론, 추론 및 학습 알고리즘 케임브리지:케임브리지 대학 출판부, 2003.ISBN 0-521-64298-1
- Vera Pless(1982), 오류 정정 코드 개요, John Wiley & Sons, Inc., ISBN 0-471-08684-3.
- 랜디 예이츠, 코딩 이론 튜토리얼