해밍 부호 문서 원본 보기
←
해밍 부호
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
{{위키데이터 속성 추적}} [[선형대수학]]과 [[컴퓨터 과학]]에서 '''해밍 부호'''(해밍符號, {{llang|en|Hamming code|해밍 코드}})는 [[이진 선형 부호]]의 일종이다.<ref>{{서적 인용|이름=David J. C.|성=MacKay|날짜=2003|제목=Information theory, inference and learning algorithms|출판사=Cambridge University Press|isbn=0-521-64298-1|url=http://www.inference.phy.cam.ac.uk/mackay/itila/book.html|언어=en}} </ref> 거리가 3이므로, 1개 이하의 오류를 교정할 수 있으며, 2개 이하의 오류의 존재를 발견할 수 있다. == 정의 == '''해밍 부호'''는 임의의 (소수 거듭제곱) 진법에 대하여 정의되는, 거리 3의 [[선형 부호]]이다. 이 가운데 이진 해밍 부호는 정의하기가 특별히 간단하다. === 이진 해밍 부호 === 다음 데이터가 주어졌다고 하자. * 2 이상의 정수 <math>r\in\{2,3,4,\dotsc\}</math> 그렇다면, 다음과 같은, <math>\mathbb F_2</math> 계수의 <math>r\times 2^r-1</math> 행렬 <math>H</math>를 정의할 수 있다. :<math>H_{i,j}=j_i\qquad(1\le i\le r,\quad j= j_r+2j_{r-1}+4j_{r-2}+8j_4+\dotsb+2^{r-1}j_1,\quad j_1,\dotsc,j_r\in \{0,1\})</math> 즉, <math>H</math>의 <math>j</math>번째 열의 성분들은 <math>j</math>의 [[이진법]] 표기의 성분들이다. 예를 들어, <math>r=3</math>일 때 <math>H</math>는 다음과 같은 3×7 행렬이다. :<math>H =\begin{pmatrix} 0&0&0&1&1&1&1\\ 0&1&1&0&0&1&1\\ 1&0&1&0&1&0&1 \end{pmatrix}</math> 이제, <math>H</math>를 [[패리티 확인 행렬]]로 갖는 [[이진 선형 부호]] :<math>C=\ker H</math> 를 <math>r</math>-'''이진 해밍 부호''' 또는 <math>[2^r-1,2^r-1-r,3]_2</math>-'''해밍 부호'''라고 한다. === 임의의 진법의 해밍 부호 === 보다 일반적으로, 다음이 주어졌다고 하자. * [[소수 (수론)|소수]] 거듭제곱 <math>q\in\{2,3,4,5,7,8,9,11,\dotsc\}</math> * 2 이상의 정수 <math>r\in\{2,3,4,\dotsc\}</math> 그렇다면, [[유한체]] <math>\mathbb F_q</math> 위의 <math>r</math>차원 [[벡터 공간]] <math>\mathbb F_q^r</math> 및 <math>r-1</math>차원 [[사영 공간]] :<math>\mathbb P^{r-1}_{\mathbb F_q}=\frac{\mathbb F_q^r\setminus\{\vec 0\}}{u\sim v\iff\exists\lambda\in\mathbb F_q^\times\colon u=\lambda v}</math> 을 구성할 수 있다. 다시 말해, 사영화 몫 함수 :<math>\mathbb F_q^r\setminus\{\vec 0\}\twoheadrightarrow \mathbb P^{r-1}_{\mathbb F_q}</math> 는 집합 <math>\mathbb F_q^r\setminus\{\vec 0\}</math> 위에 [[동치 관계]]를 정의하며, 그 [[동치류]]의 수는 다음과 같다. :<math>\frac{|\mathbb F_q^r\setminus\{\vec 0\}|}{|\mathbb F_q^\times|} = \frac{q^r-1}{q-1} </math> 이제, 각 동치류에서 임의의 대표원을 고를 수 있으며, 이 대표원들을 열벡터로 삼아 <math>\mathbb F_q</math> 성분의 <math>r\times(q^r-1)/(q-1)</math> [[행렬]] :<math>H\in\operatorname{Mat}(r,(q^r-1)/(q-1);\mathbb F_q)</math> 을 구성할 수 있다. 이 행렬을 [[패리티 확인 행렬]]로 갖는 [[선형 부호]] :<math>C=\ker H\subseteq \mathbb F_q^{(q^r-1)/(q-1)}</math> 를 '''<math>q</math>진 <math>r</math>-해밍 부호'''라고 한다. === 확장 해밍 부호 === 다른 모든 [[선형 부호]]와 마찬가지로, 해밍 부호에 모든 성분에 대응되는 (즉 일반적인) 패리티 성분을 하나 더 추가할 수 있으며, 이는 <math>[2^r,2^r-r-1,4]</math>-선형 부호이다. 이를 '''확장 해밍 부호'''(擴張Hamming符號, {{llang|en|extended Hamming code}})라고 한다. == 성질 == 해밍 부호의 거리는 3이다. 즉, 일반적으로, 소수 거듭제곱 <math>q</math> 및 양의 정수 <math>r</math>가 주어졌을 때, <math>q</math>진 <math>r</math>-해밍 부호는 <math>[(q^r-1)/(q-1),(q^r-1)/(q-1)-r,3]_q</math>-[[선형 부호]]이다. 특히, 거리가 3이므로, 해밍 부호는 각 부호어마다 * 1개 이하의 오류를 교정할 수 있으며, * 2개 이하의 오류의 존재를 발견할 수 있다. (다만, 2개의 오류가 발생한 것을 1개의 오류가 발생한 것과 구별할 수 있지는 않다. 즉, 2개의 오류가 발생하였을 때, 데이터가 잘못 복구될 수 있다.) === 가짓수 === [[소수 (수론)|소수]] 거듭제곱 <math>q</math>에 대하여, <math>q</math>진 해밍 부호를 구성하려면 [[동치류]]의 대표원을 임의로 골라야 한다. 각 동치류의 [[집합의 크기|크기]]는 <math>q-1</math>이므로, (행의 [[순열]]을 무시하면) <math>q</math>진 <math>r</math>-해밍 부호의 가능한 [[패리티 확인 행렬]]의 수는 :<math>(q-1)^{(q^r-1)/(q-1)}</math> 이다. 물론, 서로 다른 [[패리티 확인 행렬]]이 같은 [[선형 부호]]를 정의할 수 있다. <math>q=2</math>일 경우, 각 [[동치류]]가 [[한원소 집합]]이므로 해밍 부호는 유일하며, 대표원을 임의로 고를 필요가 없다. 그러나 예를 들어 <math>q=3</math>일 경우, <math>2^{(3^r-1)/2}</math>개의 서로 다른 3진 <math>r</math>-해밍 부호가 존재한다. === 최적성 === <math>[2^r-1,2^r-1-r,3]_2</math>-해밍 부호는 같은 길이 및 거리의 [[선형 부호]] 가운데, 가장 효율적이다. 즉, 임의의 <math>[2^r-1,k,3]_2</math>-[[선형 부호]]에 대하여, :<math>k\le 2^r-1-r</math> 이다. == 예 == === 이진 2-해밍 부호 === <math>r=2</math> 이진 해밍 부호는 '''삼중 반복 부호'''(三重反復符號, {{llang|en|triple repetition code}})와 같다. 즉, 이는 다음과 같다. * 송신할 때, 같은 비트를 세 번 반복하여 보낸다. * 수신할 때, ** 만약 세 비트가 모두 같다면, 오류가 없음을 알 수 있다. ** 만약 세 비트 가운데 하나가 다르다면, 이를 다른 두 비트와 같게 교정할 수 있다. 생성 행렬과 표준형 [[패리티 확인 행렬]]은 다음과 같다. :<math>G=\begin{pmatrix} 1\\ 1\\ 1 \end{pmatrix}</math> :<math>H=\begin{pmatrix} 1&1&0\\ 1&0&1 \end{pmatrix}</math> === 이진 3-해밍 부호 === 가장 흔히 사용되는 해밍 부호는 <math>r=3</math> 이진 해밍 부호이다. 이 경우, <math>r=3</math> 이진 해밍 부호의 생성 행렬과 표준형 [[패리티 확인 행렬]]은 각각 다음과 같다. : <math>G = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 1 & 1 & 1 \\ 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ \end{pmatrix}</math> :<math>H = \begin{pmatrix} 0 & 1 & 1 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 & 1 & 0 \\ 1 & 1 & 0 & 1 & 0 & 0 & 1 \\ \end{pmatrix}</math> === 삼진 2-해밍 부호 === <math>\mathbb F_3</math> 위의 [[사영 직선]] <math>\mathbb P^1_{\mathbb F_3}</math>을 구성하는 <math>\mathbb F_3^2\setminus\{\vec0\}</math>의 동치류들은 다음과 같다. :<math>\{(0,1), (0,2)\}</math> :<math>\{(1,0), (2,0)\}</math> :<math>\{(1,1), (2,2)\}</math> :<math>\{(1,2), (2,1)\}</math> 이에 따라, 예를 들어 첫째 대표원들을 고르면, 삼진 2-해밍 부호의 표준형 [[패리티 확인 행렬]]은 다음과 같다. :<math>H=\begin{pmatrix} 1&1&1&0\\ 1&2&0&1 \end{pmatrix}</math> 그 표준형 생성 행렬은 다음과 같다. :<math>G=\begin{pmatrix} 1&0\\ 0&1\\ 2&2\\ 2&1 \end{pmatrix}</math> == 역사 == [[리처드 해밍]]이 1950년에 도입하였다.<ref>{{저널 인용|제목=Error detecting and error correcting codes|이름=Richard W.|성=Hamming|저자링크=리처드 해밍|doi=10.1002/j.1538-7305.1950.tb00463.x|날짜=1950-04|저널=Bell Labs Technical Journal|권=29|호=2|쪽=147–160|issn=1089-7089|언어=en}}</ref> 1940년대 [[벨 연구소]]에서 벨 모델 V({{llang|en|Bell Model V}})라는 [[컴퓨터]]를 이용해서 작업을 했다. 이 컴퓨터는 확실히 여러 면에서 오늘날의 컴퓨터와는 거리가 멀었다. 릴레이 회로로 만들어졌으며 입력도 [[천공 카드]]를 이용했다. 천공 카드를 이용했으므로 컴퓨터에 입력되는 자료들은 필연적으로 언제나 오류의 가능성이 있었다. 주중에는 컴퓨터의 관리자가 있으면서 입력에 오류가 발생했다는 경고등이 켜지면 직접 수정할 수 있었으나, 관리자가 없는 주말에는 에러가 발생한 채 프로그램이 실행되지 않고 다음 작업으로 넘어가기 일쑤였다. 해밍은 이런 문제로 인해 여러 차례 고생을 한 후에, 이 문제를 근본적으로 해결하기 위해 노력했다. 그 후 몇 년 동안 오류를 수정하는 방법에 대해서 연구하면서 이와 관련된 여러가지의 효율적인 알고리즘을 만들어냈고 마침내 1950년에 해밍 부호를 발표했다. 이는 [[선형 부호]] 이론의 시초로 여겨진다. 해밍 부호, 특히 <math>r=3</math> 이진 해밍 부호는 오늘날에도 널리 사용되고 있다. == 같이 보기 == * [[부호 이론]] * [[해밍 거리]] * [[리드 솔로몬 부호]] == 각주 == {{각주}} == 외부 링크 == * {{매스월드|id=HammingCode|title=Hamming code}} * {{수학노트|title=해밍코드(Hamming codes)}} * {{웹 인용|url=http://www.ktword.co.kr/abbr_view.php?m_temp1=1212|제목=해밍 코드, 해밍 부호|웹사이트=정보통신기술용어해설|저자=차재복|날짜=2013-01-07|언어=ko}} [[분류:미국의 발명품]] [[분류:부호 이론]] [[분류:오류 검출 정정]] [[분류:컴퓨터 산술]] [[분류:1951년 컴퓨팅]]
이 문서에서 사용한 틀:
틀:Llang
(
원본 보기
)
틀:각주
(
원본 보기
)
틀:매스월드
(
원본 보기
)
틀:서적 인용
(
원본 보기
)
틀:수학노트
(
원본 보기
)
틀:웹 인용
(
원본 보기
)
틀:위키데이터 속성 추적
(
원본 보기
)
틀:저널 인용
(
원본 보기
)
해밍 부호
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보