맨위로가기

리드 솔로몬 부호

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

리드-솔로몬 부호는 통신 및 데이터 저장 시스템에서 오류 정정을 위해 사용되는 부호의 한 종류이다. 1960년 어빙 S. 리드와 구스타브 솔로몬에 의해 개발되었으며, 데이터 심볼과 중복 심볼로 구성된 부호어를 유한체 상의 다항식으로 표현하여 오류를 정정한다. 최대 거리 분리 부호(MDS)로, 버스트 오류에 강하며, CD, DVD, QR 코드, 위성 통신 등 다양한 분야에 응용된다. 복호화 과정은 신드롬 계산, 오류 위치 다항식 계산, 오류 값 계산, 오류 정정의 단계를 거치며, 버렐캠프-매시 알고리즘, 유클리드 알고리즘 등이 사용된다. 최근에는 리스트 복호 및 소프트 복호와 같은 발전된 복호 기술 연구도 진행되고 있다.

더 읽어볼만한 페이지

  • 부호 이론 - 해밍 거리
    해밍 거리는 길이가 같은 두 문자열에서 서로 다른 기호의 개수를 나타내는 거리 척도로, 아벨 군에서는 벡터의 해밍 무게를 영벡터와의 해밍 거리로 정의하며, 오류 검출, 수정 부호 이론, 정보 이론, 계통학 등에서 활용된다.
  • 부호 이론 - 선형 부호
    선형 부호는 유한체 위의 벡터 공간의 부분 공간으로, 데이터 전송 및 오류 정정을 위해 사용되며, 길이, 차원, 최소 거리에 따라 표기되고, 부호어, 생성 행렬, 패리티 검사 행렬 등의 개념을 갖는다.
  • 오류 검출 정정 - 부호 이론
    부호 이론은 정보를 효율적으로 표현하고 오류를 감지 및 수정하는 기술을 연구하며, 소스 부호화, 채널 부호화, 암호 부호화 등으로 발전하여 CD, 모뎀, 휴대폰 등 다양한 분야에 응용된다.
  • 오류 검출 정정 - 비터비 알고리즘
    비터비 알고리즘은 잡음이 있는 통신 링크 상에서 길쌈 부호 해독에 사용되며, 확률과 관련된 극대화 문제에 동적 계획법을 적용하는 표준 용어로, 상태 기계를 기반으로 은닉 마르코프 모델에서 가장 가능성 높은 상태 시퀀스를 찾는 데 활용되어 통신, 자연어 처리, 생물정보학 등 다양한 분야에 적용되고 개선 방법이 연구되고 있다.
리드 솔로몬 부호
개요
이름리드-솔로몬 부호
영문명Reed–Solomon codes
명명 유래어빙 S. 리드와 구스타브 솔로몬
종류선형 블록 부호
하위 종류다항 부호
부호 정보
블록 길이n
메시지 길이k
최소 거리n − k + 1
알파벳 크기q = pm ≥ n (p는 소수)
종종 n = q − 1
표기법'[n, k, n − k + 1]q-부호'
복호화
속성
특징최대 거리 분리 부호

2. 역사

1960년, 매사추세츠 공과대학교 링컨 연구소(MIT Lincoln Laboratory)의 연구원이었던 어빙 S. 리드(Irving S. Reed)와 구스타브 솔로몬(Gustave Solomon)이 "특정 유한체 위의 다항식 부호"라는 논문을 통해 리드-솔로몬 부호를 발표했다.[2] 같은 해, 다니엘 고렌스타인(Daniel Gorenstein)과 닐 지어러(Neal Zierler)는 BCH 부호에 대한 실용적인 고정 다항식 디코더를 개발했다.[3]

1969년, 엘윈 버렐캠프(Elwyn Berlekamp)와 제임스 매시(James Massey)는 개선된 BCH 방식 디코더 (버렐캠프-매시 알고리즘(Berlekamp–Massey decoding algorithm))를 개발했다. 1975년, 야스오 스기야마(Yasuo Sugiyama)는 확장된 유클리드 알고리즘을 기반으로 또 다른 개선된 BCH 방식 디코더를 개발했다.[5]

1977년, 리드-솔로몬 부호는 보이저 계획에서 연접 오류 정정 부호 형태로 구현되었다. 1982년에는 콤팩트 디스크(CD)에 처음 상업적으로 적용되었다.

1986년, 버렐캠프-웰치 알고리즘(Berlekamp–Welch algorithm)으로 알려진 원래 방식의 디코더가 개발되었다. 1996년, 매두 수단(Madhu Sudan) 등은 리스트 디코더 또는 소프트 디코더라고 불리는 원래 방식 디코더의 변형을 개발했다. 2002년, 슈홍 가오(Shuhong Gao)는 확장된 유클리드 알고리즘을 기반으로 또 다른 원래 방식 디코더를 개발했다.[6]

3. 기본 원리

리드-솔로몬 부호는 데이터를 특정 크기의 덩어리로 묶어 처리하며, 이 덩어리를 심볼이라고 부른다. 하나의 심볼은 ''r'' 비트로 구성된다.
부호어: N개의 심볼로 구성되며, 전체 비트 수는 ''r'' × N이다. 부호어는 K개의 정보 심볼과 (N-K)개의 중복 심볼로 나뉜다.
유한체 (갈루아체): 리드-솔로몬 부호는 2''r''개의 원소를 갖는 유한체(갈루아체)를 사용한다. 각 심볼은 이 유한체의 원소에 대응된다. 유한체 연산의 예로, 덧셈은 XOR 연산을 사용하고, 곱셈은 원시 다항식을 사용하여 구현한다.
다항식 표현: 부호어는 심볼을 계수로 하는 (N-1)차 다항식으로 표현할 수 있다. 예를 들어, 8비트 심볼 A, B, C, D로 구성된 비트 열은 다음과 같은 다항식으로 표현된다.

: Ax^3 \oplus Bx^2 \oplus Cx \oplus D
심볼 변환: ''r'' 비트를 하나의 심볼로 묶고, 2''r''개의 원소를 갖는 갈루아체를 정의한다. ''r''차 원시 다항식을 선택하고 (예: r=8, x^8 \oplus x^4 \oplus x^3 \oplus x^2 \oplus 1 = 0), 이 방정식의 근을 α라고 하면, α의 거듭제곱을 이용하여 각 비트 열에 대응시킨다.
생성 다항식: (N-K)차 다항식으로, 부호어 다항식을 생성하는 데 사용된다. 생성 다항식 ''G(x)''는 다음과 같이 표현된다.

: G(x) = \prod_{i=b}^{2t-1+b}(x-\alpha^i) (b는 적당한 정수)
오류 정정 능력: (N-K)/2 = ''t''개의 심볼 오류를 정정할 수 있다. 즉, 최대 ''t''개의 심볼에 오류가 발생해도 원래 데이터를 복원할 수 있다.

4. 부호화 (Encoding)

부호화는 다음과 같은 절차로 수행된다.

먼저 보낼 정보 K × ''r'' 비트를 심볼화하여 K-1차 다항식을 생성하며, 이를 정보 다항식(''I(x)'')이라고 한다. 다음으로, 생성 다항식을 준비한다.

:G(x) = \prod_{i=b}^{2t-1+b}(x-\alpha^i)

위 식에서 b는 적당한 정수이다.

예를 들어 b=0으로 2 심볼의 오류를 정정하는 부호를 생성하면, t=2가 되고, 생성 다항식은 다음과 같다.

: G(x) = (x-1)(x-\alpha)(x-\alpha^2)(x-\alpha^3) = x^4 + \alpha^{75}x^3 + \alpha^{249}x^2 + \alpha^{78}x + \alpha^{6}

정보 다항식과 생성 다항식을 사용하여 다음과 같은 연산을 수행한다.

: C(x) = x^{N-K} \times I(x) + P(x)

단,

:P(x) \equiv x^{N-K} \times I(x) \mod G(x)

여기서 생성되는 C(x)에 대응하는 비트열이 전송되는 부호이다.

5. 복호화 (Decoding)

리드-솔로몬 부호의 복호 과정은 다음과 같다.

1. 오류 검출 및 신드롬 계산: 수신된 데이터에 오류가 있는지 확인하고, 오류가 있다면 신드롬을 계산한다. 신드롬은 다음과 같이 표현되는 2t개의 숫자이다.

::S_i = Y(\alpha^{i-1+b}), (i=1,\dots,2t)

2. 오류 심볼 수 검출: 신드롬을 이용하여 오류를 포함하는 심볼의 개수를 찾는다.

3. 오류 위치 검출: 오류 위치 다항식을 생성하여 오류가 있는 심볼의 위치를 찾는다. 오류 위치 다항식은 다음과 같다.

::\sigma(x) = 1 + \sigma_1x + \sigma_2x^2 + \cdots + \sigma_kx^k

4. 오류 값 검출: 오류 위치와 신드롬을 이용하여 오류 값을 계산하고, 연립 일차 방정식을 사용하여 오류 값을 구한다.

5. 오류 정정: 오류 위치와 값을 이용하여 원래 데이터를 복원한다.

리드-솔로몬 부호의 복호 방법에는 피터슨법이나 유클리드법 등이 있다. 피터슨법은 처리가 단순하지만, 수정하는 심볼 수가 많을 때는 계산량이 증가하는 단점이 있다.

6. 응용 분야

리드-솔로몬 부호는 데이터의 오류를 정정하는 데 널리 사용되는 기술이다. 특히, 연속적인 데이터 손상(버스트 오류)에 강한 특징을 가지고 있다.


  • 데이터 저장:
  • 콤팩트 디스크(CD), DVD, 블루레이 디스크(BD) 등의 광학 디스크에 데이터를 기록하고 읽을 때 발생할 수 있는 오류를 정정한다. CD에서는 교차 인터리브 리드-솔로몬 부호(CIRC)라는 방식을 사용한다.[7]
  • QR 코드와 같은 2차원 바코드의 일부가 손상되어도 정확하게 데이터를 읽을 수 있도록 한다.
  • 하드 디스크 및 RAID와 같은 대용량 저장 시스템에서 매체 결함으로 인한 오류를 수정한다.
  • USENET에서 멀티미디어 파일과 함께 게시되는 파카이브 파일의 오류 정정에 사용된다.
  • 2015년에 중단된 분산 온라인 스토리지 서비스 왈라(Wuala)에서 파일을 분할할 때 사용되었다.
  • PDF-417, MaxiCode, Datamatrix 등 2차원 바코드에도 사용된다.

  • 데이터 전송:
  • xDSL과 같은 통신 시스템에서 데이터 전송 중 발생하는 오류를 정정한다.
  • 위성 통신(DVB-S, DVB-S2) 및 우주 통신 (\보이저 계획, 마스 패스파인더, 카시니 탐사선 등)에서 잡음과 신호 간섭으로 인한 오류를 정정한다.[7]
  • 지상파 디지털 방송 에서도 사용된다.

  • 기타:
  • 포스트바 기호 체계와 같은 1차원 바코드에도 사용된다.

7. 한국의 관점

리드-솔로몬 부호는 1960년에 개발되어 오류 정정 능력이 뛰어나 지상파 디지털 텔레비전 방송, 위성 통신 등 다양한 분야에 활용되고 있다. 특히 여러 비트를 하나의 덩어리로 처리하여 연속적인 비트 오류(버스트 오류)에 강한 특성을 보인다. 이러한 특징 덕분에 한국의 디지털 방송, 통신, 저장 매체 기술 발전에 중요한 역할을 해왔다.

유럽식 디지털 방송 표준인 DVB-S, DVB-S2 등에 리드-솔로몬 부호가 채택되어 한국에서도 널리 사용되고 있으며, 데이터의 안정성과 신뢰성이 중요해지는 4차 산업혁명 시대에 리드-솔로몬 부호의 활용은 더욱 확대될 것으로 예상된다.

8. 추가 설명

리드-솔로몬 부호는 1960년에 어빙 스토이 리드와 구스타브 솔로몬이 개발한 오류 정정 부호이다. 부호 생성과 복호화가 복잡하여 처리 속도가 요구되는 분야에서는 많이 사용되지 않지만, 오류 정정 능력이 높아 지상파 디지털 방송, 위성 통신, ADSL, DVTR, CD, DVD, BD, QR 코드의 오류 정정에 응용되고 있다.

부호 생성에는 갈루아체(유한체) 개념을 사용한다. 여러 비트를 하나의 덩어리(심볼 또는 워드)로 간주하고, 부호어를 심볼 집합으로 나타내어 각 심볼 단위로 오류를 검출하고 정정한다. 하나의 심볼 내 비트가 아무리 많은 오류를 포함하더라도 "1 심볼 오류"로 간주되므로, 연속적인 비트 오류(버스트 오류)에 강하다. 1 심볼의 비트 수는 보통 정해져 있지 않지만, 컴퓨터 사양상 8비트(1바이트)로 구현되는 시스템이 많다.

''r'' 비트 덩어리를 하나의 심볼로, N개 심볼( ''r'' × N 비트 배열)을 하나의 부호어로 한다. K개 심볼은 전송할 정보이고, (N-K)개 심볼은 부호화로 생성되는 중복 심볼이다. ''r'', N, K는 다음 조건을 만족한다.

(N-K)/2 = ''t'' 일 때, 리드-솔로몬 부호는 ''t''개까지의 심볼 오류를 정정할 수 있다.

리드-솔로몬 부호 복호화 방법에는 피터슨법이나 유클리드법 등이 있다.

8. 1. 최대 거리 분리 부호 (MDS 부호)

리드-솔로몬 부호는 싱글톤 한계(Singleton bound)를 만족하는 최대 거리 분리 부호(Maximum Distance Separable code, MDS code)이다.

8. 2. 연접 부호 (Concatenated codes)

리드-솔로몬 부호는 보이저 계획에서 연접 오류 정정 부호 형태로 구현되었다.[4] 이는 컨볼루션 부호와 함께 사용되어 오류 정정 능력을 향상시키는 방식이다. 예를 들어, 디지털 비디오 방송(DVB) 표준 DVB-S에서 리드-솔로몬 부호는 컨볼루션 부호화 내부 부호와 함께 사용된다.[4]

참조

[1] 간행물 1960
[2] 논문 A class of cyclic linear error-correcting codes in ''pm'' symbols 1961-06
[3] 서적 Error-Correcting Codes MIT Press 1961
[4] 서적 Error Correcting Codes "{{GBurl|5kfwlFeklx0[...] MIT Press 1996
[5] 논문 A method for solving key equation for decoding Goppa codes 1975
[6] 간행물 New Algorithm For Decoding Reed-Solomon Codes http://www.math.clem[...] Clemson 2002-01
[7] 간행물 Reed–Solomon Codes and Their Applications IEEE Press
[8] 서적 Reed Solomon Codes and Their Applications IEEE Press 1994
[9] 논문 The development of turbo and LDPC codes for deep-space applications. https://scholar.arch[...] 2007
[10] 간행물 1983
[11] 웹사이트 Analytical Expressions Used in bercoding and BERTool https://www.mathwork[...] 2019-02-01
[12] 간행물 Kissing Numbers, Sphere Packings, and Some Unexpected Proofs https://www.ams.org/[...] 2004-09
[13] 간행물 A class of cyclic linear error-correcting codes in p^m symbols 1961-06
[14] 서적 Error Correcting Codes 1961
[15] 간행물 Error Control Coding 1982
[16] 간행물 Improved decoding of Reed–Solomon codes and algebraic geometry codes 1999-09
[17] 서적 Proceedings of the 55th Annual ACM Symposium on Theory of Computing Association for Computing Machinery 2023-06-02
[18] 서적 2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS) 2023
[19] 간행물 Randomly punctured Reed--Solomon codes achieve list-decoding capacity over linear-sized fields 2023-08-18
[20] 논문 Algebraic soft-decision decoding of Reed–Solomon codes
[21] 논문 Open Source Soft-Decision Decoder for the JT65 (63,12) Reed–Solomon Code http://physics.princ[...] 2017-06-07



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com