블록 부호

수학과 컴퓨터 과학에서 블록 부호(block符號, 영어: block code 블록 코드[*])는 데이터를 중복해서 “블록”으로 부호화하되, 각 비트 또는 블록의 성분이 전송 과정에서 노이즈를 겪어 바뀌는 것을 일부 경우 교정할 수 있게 하는 부호화 체계이다. 블록 부호 ( Σ , n , k , C ) {\displaystyle (\Sigma ,n,k,C)} 는 다음과 같은 데이터로 구성된다. 유한 집합 Σ {\displaystyle \Sigma } . 이를 알파벳(영어: alphabet)이라고 한다. 양의 정수 n ∈ Z + {\displaystyle n\in \mathbb {Z} ^{+}} . 이를 블록 길이(영어: block length)라고 하고, Σ n {\displaystyle \Sigma ^{n}} 의 원소를 블록(영어: block)이라고 한다. 부분 집합 C : Σ k → Σ n {\displaystyle C\colon \Sigma ^{k}\to \Sigma ^{n}} . C {\displaystyle C} 의 원소인 블록을 부호어(符號語, 영어: codeword)라고 한다. 블록 부호 ( Σ , n , C ) {\displaystyle (\Sigma ,n,C)} 의 전송률(電送率, 영어: rate)은 R = 1 n log | Σ ⁡ / n {\displaystyle R={\frac {1}{n}}\log _{|\Sigma }/n} 이며, 항상 0 ≤ R ≤ 1 {\displaystyle 0\leq R\leq 1} 이다. 블록 부호 ( Σ , n , C ) {\displaystyle (\Sigma ,n,C)} 의 상대 길이(相對-, 영어: relative distance)는 유리수 δ = d / n {\displaystyle \delta =d/n} 이며, 마찬가지로 1 이하의 양의 유리수이다. Σ n {\displaystyle \Sigma ^{n}} 위에 해밍 거리 d H ⁡ ( s , t ) = | { i ∈ { 1 , … , n } : s i ≠ t i } | {\displaystyle \operatorname {d_{H}} (s,t)=|\{i\in \{1,\dotsc ,n\}\colon s_{i}\neq t_{i}\}|} 를 정의하면, 이는 거리 공간을 이룬다. 블록 부호 ( Σ , n , C ) {\displaystyle (\Sigma ,n,C)} 의 최소 거리(最小距離, 영어: minimum distance)는 다음과 같다. d = min a , b ∈ Σ k , a ≠ b d H ⁡ ( C ( a ) , C ( b ) ) {\displaystyle d=\min _{a,b\in \Sigma ^{k},\;a\neq b}\operatorname {d_{H}} (C(a),C(b))} 최소 거리가 d {\displaystyle d} 인 블록 부호 ( Σ , n , C ) {\displaystyle (\Sigma ,n,C)} 는 흔히 [ n , log Σ ⁡ | C | , d ] | Σ | {\displaystyle [n,\log _{\Sigma }|C|,d]_{|\Sigma |}} -블록 부호라고 불린다. 위 정의는 결합 도식의 개념을 통해 일반화된다.:2483–2486, §Ⅲ 구체적으로, 다음이 주어졌다고 하자. 결합 도식 ( X , ∂ : X 2 → D ) {\displaystyle (X,\partial \colon X^{2}\to D)} D {\displaystyle D} 의 부분 집합 E ⊆ D {\displaystyle E\subseteq D} 이 경우, X {\displaystyle X} 의 부분 집합 C ⊆ X {\displaystyle C\subseteq X} 가 다음 조건을 만족시킬 경우, E {\displaystyle E} -블록 부호(영어: E {\displaystyle E} -block code)라고 한다.:2483, Definition 5 임의의 x , y ∈ C {\displaystyle x,y\in C} 에 대하여, ∂ ( x , y ) ∉ E {\displaystyle \partial (x,y)\not \in E} X {\displaystyle X} 속의 블록 부호란 ∅ {\displaystyle \varnothing } -블록 부호를 뜻한다. 만약 X = Σ n {\displaystyle X=\Sigma ^{n}} 이 Σ {\displaystyle \Sigma } 위의 n {\displaystyle n} 차원 해밍 결합 도식일 경우, ∂ = d H {\displaystyle \partial =\operatorname {d_{H}} } 는 해밍 거리가 되며, 이 경우 위의 기초적 정의로 귀결된다. 결합 도식 X {\displaystyle X} 속의 블록 부호 C ⊆ X {\displaystyle C\subseteq X} 에 대하여, X {\displaystyle X} 의 원소를 블록이라고 한다. C {\displaystyle C} 의 원소를 부호어라고 한다. C {\displaystyle C} 의 전송률은 R = ln ⁡ C / ln ⁡ X {\displaystyle R=\ln C/\ln X} 이다. 이는 0 ≤ R ≤ 1 {\displaystyle 0\leq R\leq 1} 인 실수이다. X {\displaystyle X} 의 이항 관계가 ( R i ⊆ X 2 ) i ∈ I {\displaystyle (R_{i}\subseteq X^{2})_{i\in I}} 라고 할 때, C {\displaystyle C} 의 내부 분포(內部分布, 영어: inner distribution)는 다음과 같은 유리수열이다.:2483, Definition 4 α i = | C 2 ∩ R i | | C | {\displaystyle \alpha _{i}={\frac {|C^{2}\cap R_{i}|}{|C|}}} 특히, ∑ i α i = | C | {\displaystyle \sum _{i}\alpha _{i}=|C|} 가 성립한다. 만약 거리 함수의 공역 D {\displaystyle D} 가 전순서 집합일 때, 마찬가지로 최소 거리 d = min x , y ∈ C ∂ ( x , y ) {\displaystyle d=\min _{x,y\in C}\partial (x,y)} 를 정의할 수 있다. [ n , k , d ] q {\displaystyle [n,k,d]_{q}} -블록 부호 C ⊆ Σ n {\displaystyle C\subseteq \Sigma ^{n}} 이 주어졌다고 하고, 편의상 k {\displaystyle k} 가 정수라고 하자. 이 경우, 임의의 전단사 함수 f : Σ k → C ⊆ Σ c {\displaystyle f\colon \Sigma ^{k}\to C\subseteq \Sigma ^{c}} 를 고르자. 이를 부호화 함수(符號化函數, 영어: coding function)라고 한다. 이제, Σ k {\displaystyle \Sigma ^{k}} 의 한 원소를 노이즈가 있는 채널로 전송한다고 하자. 즉, 전송 도중 벡터 v ∈ Σ n {\displaystyle v\in \Sigma ^{n}} 의 n {\displaystyle n} 개의 성분 가운데 일부가 다른 값으로 바뀔 수 있다. 만약 문자열 v ∈ Σ n {\displaystyle v\in \Sigma ^{n}} 를 수신하였을 때, 다음과 같은 알고리즘을 사용하여 데이터를 교정한다고 하자. 만약 min c ∈ C d H ⁡ ( v , c ) < d / 2 {\displaystyle \min _{c\in C}\operatorname {d_{H}} (v,c)<d/2} 라면, v {\displaystyle v} 를 d H ⁡ ( v , f ( c ) ) < d / 2 {\displaystyle \operatorname {d_{H}} (v,f(c))<d/2} 인 유일한 원소 c ∈ Σ k {\displaystyle c\in \Sigma ^{k}} 로 교정한다. 만약 min c ∈ C d H ⁡ ( v , c ) ≥ d / 2 {\displaystyle \min _{c\in C}\operatorname {d_{H}} (v,c)\geq d/2} 라면, 데이터의 교정은 실패한다. 이 경우, 만약 n {\displaystyle n} 개의 성분 가운데 ⌈ d / 2 − 1 ⌉ {\displaystyle \lceil d/2-1\rceil } 개 이하가 잘못되었다고 가정하면, 수신된 데이터를 오류 없이 교정할 수 있다. 만약 n {\displaystyle n} 개의 성분 가운데 d − 1 {\displaystyle d-1} 개 이하가 잘못되었다고 가정하면, 데이터의 송신 도중 오류가 발생하였는지 여부를 항상 확인할 수 있다. (그러나 이 오류를 항상 교정할 수 있지는 않다.) 모든 [ n , k , d ] q {\displaystyle [n,k,d]_{q}} -블록 부호는 다음 두 조건을 만족시킨다. k ≤ n + 1 − d {\displaystyle k\leq n+1-d} (싱글턴 상계 영어: Singleton bound) k ≤ n − log q ⁡ ( ∑ i = 0 ⌊ ( d − 1 ) / 2 ⌋ ( n i ) ( q − 1 ) i ) {\displaystyle k\leq n-\log _{q}\left(\sum _{i=0}^{\lfloor (d-1)/2\rfloor }{\binom {n}{i}}(q-1)^{i}\right)} (해밍 상계 영어: Hamming bound) 싱글턴 상계를 포화시키는 (즉, k + d = n + 1 {\displaystyle k+d=n+1} 인) 블록 부호를 최대 거리 분리 부호(最大距離分離符號, 영어: maximum-distance-separable code, 약자 MDS 부호)라고 한다. 해밍 상계를 포화시키는 블록 부호를 완전 부호(完全符號, 영어: perfect code)라고 한다. 싱글턴 상계의 증명: 최소 거리가 d {\displaystyle d} 인 블록 부호 C ⊆ Σ n {\displaystyle C\subseteq \Sigma ^{n}} 가 주어졌다고 하자. 그렇다면, 모든 부호어에서 처음 d − 1 {\displaystyle d-1} 개의 성분들을 삭제하여 블록 부호 C ′ ⊆ Σ n − d + 1 {\displaystyle C'\subseteq \Sigma ^{n-d+1}} C ′ = { ( s 1 , s 2 , … , s n − d + 1 ) : s ∈ C } {\displaystyle C'=\{(s_{1},s_{2},\dotsc ,s_{n-d+1})\colon s\in C\}} 를 정의할 수 있다. 따라서, | C | = | C ′ | ≤ q n − d + 1 {\displaystyle |C|=|C'|\leq q^{n-d+1}} 이다. 보다 일반적으로, 임의의 결합 도식 ( X , ∂ ) {\displaystyle (X,\partial )} 이 주어졌다고 하자. X {\displaystyle X} 의 복소수 계수 보스-메스너 대수는 복소수 반단순 대수이며, 그 최소 멱등원들을 E 0 , E 1 , … , E p {\displaystyle E_{0},E_{1},\dotsc ,E_{p}} 라고 하자. 여기서 E 0 = | X | − 1 J | X | × | X | {\displaystyle E_{0}=|X|^{-1}{\mathsf {J}}_{|X|\times |X|}} 이며, J | X | × | X | {\displaystyle {\mathsf {J}}_{|X|\times |X|}} 는 모든 성분이 1인 행렬(아다마르 곱의 항등원)이다. 또한, E a = ∑ i Q a i D i {\displaystyle E_{a}=\sum _{i}Q_{ai}D_{i}} 라고 하자 ( D i {\displaystyle D_{i}} 는 각 이항 관계 R i ⊆ X 2 {\displaystyle R_{i}\subseteq X^{2}} 의 인접 행렬). 이제, X {\displaystyle X} 속의 블록 부호 C ⊆ X {\displaystyle C\subseteq X} 가 주어졌다고 하고, 그 내부 분포 α i = | C 2 ∩ R i | | C | {\displaystyle \alpha _{i}={\frac {|C^{2}\cap R_{i}|}{|C|}}} 를 생각하자. 그렇다면, 쌍대 내부 분포(雙對內部分布, 영어: dual inner distribution)는 다음과 같은 수열이다. β a = ∑ i Q a i α i {\displaystyle \beta _{a}=\sum _{i}Q_{ai}\alpha _{i}} 그렇다면, 다음과 같은 맥윌리엄스 부등식(MacWilliams不等式, 영어: MacWilliams inequality)이 성립한다.:2484, Theorem 3 0 ≤ β a ≤ | C | ∀ a {\displaystyle 0\leq \beta _{a}\leq |C|\qquad \forall a} ∑ a β a = | C | {\displaystyle \sum _{a}\beta _{a}=|C|} 증명: 각 E a {\displaystyle E_{a}} 는 멱등원이므로, 그 고윳값은 0 또는 1이다. 따라서, 임의의 x , y ∈ X {\displaystyle x,y\in X} 에 대하여, ⟨ x | y ⟩ = δ x y {\displaystyle \langle x|y\rangle =\delta _{xy}} 이므로, 0 ≤ ⟨ x | E a | y ⟩ ≤ 1 ∀ a {\displaystyle 0\leq \langle x|E_{a}|y\rangle \leq 1\qquad \forall a} 이다. ( δ x y {\displaystyle \delta _{xy}} 는 크로네커 델타이다.) 이에 따라, β a = ∑ i Q a i α i = 1 | C | ∑ i Q a i | C 2 ∩ R i | = 1 | C | ∑ x , y ∈ C ∑ i Q a i ⟨ x | D i | y ⟩ = 1 | C | ∑ x , y ∈ C ⟨ x | E a | y ⟩ {\displaystyle {\begin{aligned}\beta _{a}&=\sum _{i}Q_{ai}\alpha _{i}\\&={\frac {1}{|C|}}\sum _{i}Q_{ai}|C^{2}\cap R_{i}|\\&={\frac {1}{|C|}}\sum _{x,y\in C}\sum _{i}Q_{ai}\langle x|D_{i}|y\rangle \\&={\frac {1}{|C|}}\sum _{x,y\in C}\langle x|E_{a}|y\rangle \end{aligned}}} 이므로, 0 ≤ β a ≤ | C | {\displaystyle 0\leq \beta _{a}\leq |C|} ∑ a β a = 1 | C | ∑ x , y ∈ C ⟨ x | ( ∑ a E a ) | y ⟩ = 1 | C | ∑ x , y ∈ C ⟨ x | y ⟩ = | C | {\displaystyle \sum _{a}\beta _{a}={\frac {1}{|C|}}\sum _{x,y\in C}\langle x|\left(\sum _{a}E_{a}\right)|y\rangle ={\frac {1}{|C|}}\sum _{x,y\in C}\langle x|y\rangle =|C|} 이다. 자명한 예로, n = k {\displaystyle n=k} 이며 C {\displaystyle C} 가 순열인 경우를 생각하자. 이 경우 최소 거리는 1이다. 즉, 이 부호는 최고의 송신률 k / n = 1 {\displaystyle k/n=1} 을 갖지만, 아무런 오류를 교정하지 못한다. 마찬가지로, 예를 들어 어떤 임의의 α ∈ Σ {\displaystyle \alpha \in \Sigma } 에 대하여 C : Σ k → Σ n {\displaystyle C\colon \Sigma ^{k}\to \Sigma ^{n}} C : ( s 1 , s 2 , … , s k ) ↦ ( s 1 , s 2 , … , s k , α , α , … , α ⏟ n − k ) {\displaystyle C\colon (s_{1},s_{2},\dotsc ,s_{k})\mapsto (s_{1},s_{2},\dotsc ,s_{k},\underbrace {\alpha ,\alpha ,\dotsc ,\alpha } ^{n-k})} 를 생각하자. 그 효율은 k / n {\displaystyle k/n} 이지만, 이 부호 역시 최소 거리가 1이므로, 아무런 오류를 교정하지 못한다. 임의의 알파벳 Σ {\displaystyle \Sigma } ( | Σ | = q {\displaystyle |\Sigma |=q} ) 및 양의 정수 k ∈ Z + {\displaystyle k\in \mathbb {Z} ^{+}} 및 양의 정수 m {\displaystyle m} 에 대하여, 다음과 같은 [ m k , k , m ] q {\displaystyle [mk,k,m]_{q}} -블록 부호를 얻을 수 있다. C : Σ k → Σ m k {\displaystyle C\colon \Sigma ^{k}\to \Sigma ^{mk}} C : ( s 1 , s 2 , … , s k ) ↦ ( s 1 , … , s 1 ⏟ m , s 2 , … , s 2 ⏟ m , … , s k , … , s k ⏟ m ) {\displaystyle C\colon (s_{1},s_{2},\dotsc ,s_{k})\mapsto (\underbrace {s_{1},\dotsc ,s_{1}} _{m},\underbrace {s_{2},\dotsc ,s_{2}} _{m},\dotsc ,\underbrace {s_{k},\dotsc ,s_{k}} _{m})} 이를 m {\displaystyle m} 중 반복 부호( m {\displaystyle m} 重反復符號, 영어: m {\displaystyle m} -tuple repetition code)라고 한다. 특히, ( k , m , q ) = ( 1 , 3 , 2 ) {\displaystyle (k,m,q)=(1,3,2)} 일 경우 이는 r = 2 {\displaystyle r=2} 이진 해밍 부호와 같다. 선형 부호의 경우, Σ {\displaystyle \Sigma } 는 유한체이며, C : Σ k → Σ n {\displaystyle C\colon \Sigma ^{k}\to \Sigma ^{n}} 은 Σ {\displaystyle \Sigma } -선형 변환이다. 선형 부호의 예로는 해밍 부호나 이진 골레 부호가 있다. 싱글턴 상계는 리처드 콜럼 싱글턴(영어: Richard Collom Singleton)이 1964년에 증명하였다. 해밍 상계는 리처드 해밍이 증명하였다. 채널 용량 van Lint, Jacobus Hendricus (1999). 《Introduction to coding theory》. Graduate Texts in Mathematics (영어) 86 3판. Springer-Verlag. doi:10.1007/978-3-642-58575-3. ISBN 978-3-540-64133-9. ISSN 0072-5285. Zbl 0936.94014.  MacWilliams, Florence Jessie; Sloane, Neil James Alexander (1977). 《The theory of error-correcting codes》. North-Holland Mathematical Library (영어) 16. North-Holland. ISBN 978-0-444-85193-2. Zbl 369.94008.  Huffman, W. Cary; Pless, Vera (2003). 《Fundamentals of error-correcting codes》 (영어). Cambridge University Press. ISBN 978-0-521-78280-7.  Lin, S.; Costello, Daniel J. Jr. (2005). 《Error control coding: fundamentals and applications》 (영어) 2판. Prentice-Hall. ISBN 978-0-13-042672-7.  Zieschang, Paul-Hermann (2005). 《Theory of association schemes》. Springer Monographs in Mathematics (영어). Springer-Verlag. doi:10.1007/3-540-30593-9. ISBN 978-3-540-26136-0. ISSN 1439-7382.  Delsarte, Philippe; Levenshtein, Vladimir Iosifovich (1998년 10월). “Association schemes and coding theory”. 《Institute of Electrical and Electronics Engineers Transactions on Information Theory》 (영어) 44 (6): 2477–2504. doi:10.1109/18.720545. ISSN 0018-9448.  Singleton, Richard Collom (1964). “Maximum distance q-nary codes”. 《Institute of Electrical and Electronics Engineers Transactions on Information Theory》 (영어) 10 (2): 116–118. doi:10.1109/TIT.1964.1053661. ISSN 0018-9448.  Weisstein, Eric Wolfgang. “Error-Correcting code”. 《Wolfram MathWorld》 (영어). Wolfram Research.  Weisstein, Eric Wolfgang. “Coding theory”. 《Wolfram MathWorld》 (영어). Wolfram Research.  Weisstein, Eric Wolfgang. “Perfect code”. 《Wolfram MathWorld》 (영어). Wolfram Research.  “Coding theory”. 《nLab》 (영어).  차재복 (2017년 3월 27일). “블록 부호, 블록 부호화, 블록 코딩, 블록 코드”. 《정보통신기술용어해설》.  성현경 (2015). “정보 및 부호이론”. 상지대학교 컴퓨터정보공학부.