제2장 정보공학과 통신시스템 - Welcome! This is

Download Report

Transcript 제2장 정보공학과 통신시스템 - Welcome! This is

<소스코딩(Source Coding)>
제4장 가변길이 코드
 고정/가변길이 코드(variable-length code)
 유일디코딩과 동시디코딩
 최적 동시코드와 Huffman Code
 Huffman Code의 응용
소스코딩(Source Coding)
정보원 심볼들에 대하여 Binary Code를 부여하는 방법
• 평균코드길이(avg. code-length)의 최소화 지향
• 고정길이코드 vs. 가변길이코드
<고정길이코드(fixed-length code)> 예) ASCII code
 모든 정보원 심볼에 대하여 동일한 길이의 코드 부여
 정보원 심볼의 수를 M이라 하고, 코드의 고정길이를 n이라 하면
log2 M  n  log2 M  1
<가변길이코드(variable-length code)> 예) Morse code
 정보원 심볼의 발생확률에 따라 서로 다른 길이의 코드 부여
- 발생빈도가 높은 심볼 : short code
- 발생빈도가 낮은 심볼 : long code
 유일성, 동시성, 동기 등의 문제를 해결해야 한다.
정보공학 2001-1
유일성 / 동시성
 코드체계 1
s1 = 0
s2 = 01
s3 = 11
s4 = 00
 코드체계 2
s1 = 0
s2 = 01
s3 = 011
s4 = 111
 코드체계 4
s1 = 0
s2 = 10
s3 = 110
s4 = 1110
s5 = 1111
 코드체계 3
s1 = 0
s2 = 10
s3 = 110
s4 = 111
 코드체계 5
s1 = 00
s2 = 01
s3 = 10
s4 = 110
s5 = 111
정보공학 2001-1
UI-Code(unique & instantaneous code)
 Unique Code  모든 extension이 서로 다르다
 UI-Code  코드체계 내에 prefix가 없다  디코딩트리 존재
 코드체계 2
s1 = 0
s2 = 01
s3 = 011
s4 = 111
 코드체계 3
s1 = 0
s2 = 10
s3 = 110
s4 = 111
s1
0
0
0
s1
1
s2
0
s2
1
1
1
s3
0
s3
1
1
1
1
s4
정보공학 2001-1
s4
 Kraft Inequality
l1  l2    lq의 길이를 갖는 UI  code존재
q
1
 K   li  1, for radix  2
i 1 2
최대 코드길이에 대한 수학적 귀납법으로 증명
1) Basis step
(최대길이=1 인 경우)
2) Induction step
(최대길이=n 일때 성립함을 가정하여
최대길이=n+1일때 성립함을 보임)
K’
K
K’’
최대길이= n
정보공학 2001-1
 최적 UI-Code의 특성
Source Alphabet S = {s1, s2, …, sq}, Code Alphabet C = {0, 1}
& pi = Pr{si occurs}, i = 1, 2, …, q
& li : code-length for si , i = 1, 2, …, q
q
평균 코드길이
Lav   pi li
i 1
최적 UI-Code의 특성
If p1  p2    pq
 l1  l2    lq
(“평균 코드길이”의 관점에서 최적)
정보공학 2001-1
 Binary Huffman Coding
Step 1. 축소과정(reduction process)
1) 최하위(최소 확률)의 두 심볼을 결합, 합의 확률을 갖는 하나
의 심볼을 형성 pnew  pq  pq 1
2) 새로 형성된 심볼을 확률순서에 따라 천이 pm  pnew  pm1
3) 오직 두 개의 심볼만 남을 때까지 1), 2) 과정을 반복
Step 2. 확장과정(splitting & expansion process)
1) 남은 두 심볼에 대하여 각각 ‘0’, ‘1’을 할당 (split)
2) 축소과정을 통하여 결합되었던 심볼을 다시 분리하면서 각각
‘0’, ‘1’을 첨가 (expand)
3) 원래의 q개 심볼이 될 때까지 2) 과정을 반복
정보공학 2001-1
 Huffman Coding (예)
S  {s1 , s2 , s3 , s4 , s5 }, C  {0,1}
예제1) & p  0.4, p  0.2, p  0.2, p  0.1, p  0.1
1
2
3
4
5
예제2) S  {s1 , s2 , s3 , s4 , s5 },
&
C  {0,1}
p1  0.1, p2  0.2, p3  0.3, p4  0.15, p5  0.25
예제3) Zipf’s Distribution (language problem simulation)
S  {s1 , s2 , , s N },
&
C  {0,1}
N
1/ k
1
pk 
, k  1,2, , N , where S N  
SN
k 1 k
1. q = 4 일 때
2. q = 8 일 때
3. q = 16 일 때
각각 Huffman 방식으로 Coding 하라.
정보공학 2001-1
 Zipf 분포에 대한 Huffman coding의 이득
심볼의 수
N
2
4
8
16
32
64
128
256
512
1024
블록코드의 길이
LB
Huffman 코드의 길이
LH (Average)
1
2
3
4
5
6
7
8
9
10
1.0
1.8
2.68
3.43
4.17
4.89
5.60
6.26
6.90
7.54
정보공학 2001-1
이득(%)
G
0
10
10.7
14.3
16.6
18.5
20
21.8
23.3
24.6
 Huffman Code의 특수한 경우
1. 모든 심볼들이 동일한 발생확률을 갖는 경우,
pi  1/ q, for i  1,2,, q, q  2m
• Huffman code = m-bit block code
2.
pq  pq1  p1, for all reduction processes
• Huffman code = m-bit block code
심볼들의 발생확률이 대동소이한 경우
3.
2 q
p j   pk , for all j
3 k  j 1
• Huffman code = Comma code
심볼들의 발생확률이 서로 크게 다른 경우
정보공학 2001-1
 코드의 확장
S  {s1 , s2 },
C  {0,1},
&
p1  2 / 3, p2  1 / 3
 1-차 확장 (원래의 Alphabet)
Si
Pi
S1
2/3
0
S2
1/3
1
L1 
2

i 1
pi li 
2
1
1  1  1(bit)
3
3
 2-차 확장 (2nd extension)
1
01
000
001
Sij
S1S1
S1S2
S2S1
S2S2
Pij
4/9
2/9
2/9
1/9
4/9
5/9 0
3/9 00
4/9 1
1 4
L2   pi li 0.9444(bits)
2 i 1
2/9 01
 3-차 확장 (3rd extension)
1 8
L3   pi li 0.938272(bits)
3 i 1
 4-차 확장 (4th extension)
1 16
L4   pi li 0.938270(bits)
4 i 1
정보공학 2001-1
 코드의 확장과 Entropy
S  {s1 , s2 },
C  {0,1},
&
p1  2 / 3, p2  1 / 3
2
1
H 2 ( S )   pi log2
0.918296(bits)
pi
i 1
Entropy
Ln 평균코드길이
1
1.000000
0.98
0.96
0.944444
0.938270
0.94
‖
0.918296
2
3
4
정보공학 2001-1
‖
1
n 코드확장의 차수
 Radix-r Huffman Coding
Step 1. 전처리과정(pre-processing)
1) 소스알파벳의 심볼 수를 k ( r  1)  r 개가 되도록, 필요한 경우 dummy
Symbol들을 추가한다.
Step 2. 축소과정(reduction process)
1) 최하위(최소 확률) r 개 심볼을 결합, 합의 확률을 갖는 하나의 심볼을 형성
pnew  pq  pq1   pq r 1
2) 새로 형성된 심볼을 확률순서에 따라 천이 pm  pnew  pm1
3) 오직 r 개의 심볼만 남을 때까지 1), 2) 과정을 반복
Step 3. 확장과정(splitting & expansion process)
1) 남은 r 개의 심볼에 대하여 각각 ‘0’, ‘1’, …, ‘r-1’을 할당 (split)
2) 축소과정을 통하여 결합되었던 심볼을 다시 분리하면서 각각
‘0’, ‘1’, …, ‘r-1’을 첨가 (expand)
3) 원래의 q개 심볼이 될 때까지 2) 과정을 반복
정보공학 2001-1