단항 부호화

Unary coding

길이 n의 1(또는 n), 보통 n은 0(자연스러운 숫자 음이 아닌 정수로 이해된다)또는 n− 1 낮은 사람들은 0(자연스러운 번호underst 있는 표를+a코드들과, 자연수, n의 곱을 나타내Unary coding,[nb 1]또는 단항 진법과 또한 때때로 온도계 부호, 엔트로피 인코딩입니다.ood로엄밀하게 양의 정수).예를 들어 5는 111110 또는 11110으로 표시됩니다.일부 표현에서는 n 또는 n - 1의 0 뒤에 1을 사용합니다.1과 0은 일반성을 잃지 않고 교환할 수 있습니다.단항 부호화는 프리픽스 프리 코드와 자기 동기화 코드입니다.

n(음수 아님) n(정극성) 유니리 코드 대안
0 1 0 1
1 2 10 01
2 3 110 001
3 4 1110 0001
4 5 11110 00001
5 6 111110 000001
6 7 1111110 0000001
7 8 11111110 00000001
8 9 111111110 000000001
9 10 1111111110 0000000001

단항 부호화는 다음과 같은 이산 확률 분포에 최적으로 효율적인 부호화입니다.

( ,, 3 ..{ n 2, 3, ...}) 。

기호별 부호화에서는 모든 기하학적 분포에 최적입니다.

k ≥ = 1.61803398879…에 대해 황금비, 또는 보다 일반적으로, 다음과 같은 이산 분포에 대해

,,, n 이러한 확률 분포에 대한 최적의 기호별 부호화이지만 골롬 부호화는 입력 기호를 독립적으로 고려하지 않고 오히려 암묵적으로 입력을 그룹화하기 때문에 기하 분포에 대해 더 나은 압축 능력을 달성한다.같은 이유로 산술 부호화는 위의 마지막 경우와 같이 일반적인 확률 분포에서 더 나은 성능을 발휘합니다.

단항 코드가 현재 사용 중입니다.

단일 코드 사용의 예는 다음과 같습니다.

  • 골롬 라이스 코드에서는 단항 부호화가 골롬 코드 워드의 몫 부분을 부호화하기 위해 사용됩니다.
  • UTF-8에서는 연속 바이트를 검사하지 않고 시퀀스의 길이를 결정할 수 있도록 멀티 바이트 시퀀스의 선두 바이트에 유니리 인코딩을 사용하여 시퀀스 내의 바이트 수를 나타낸다.
  • 순간적으로 훈련된 신경망은 효율적인 데이터 표현을 위해 단항 부호화를 사용한다.

생물학적 네트워크에서의 단항 부호화

단항 부호화는 새소리 [1][2]생성을 담당하는 신경 회로에 사용됩니다.새소리 학습과 새소리 생성에 모두 관여하는 새의 뇌핵은 HVC(고성중추)다.새소리의 다른 음에 대한 명령 신호는 HVC의 다른 지점에서 발생합니다.이 코딩은 공간 코딩으로 작동하며, 공간 코딩은 본질적으로 단순하고 견고하기 때문에 생물학적 회로에 대한 효율적인 전략입니다.

표준 런렝스 단항 코드

모든 이진 데이터는 1과 0을 번갈아 사용하는 런렝스로 단항 숫자를 나타내는 기능으로 정의됩니다.이는 동일한 번호 1 또는 0의 단항 ie N자리 숫자의 표준 정의에 준거합니다.정의상 모든 런렝스는 최소 1자리 숫자를 가지며, 따라서 엄밀하게 양의 정수를 나타냅니다.

n RL 코드 다음 코드
1 1 0
2 11 00
3 111 000
4 1111 0000
5 11111 00000
6 111111 000000
7 1111111 0000000
8 11111111 00000000
9 111111111 000000000
10 1111111111 0000000000
...

고유하게 복호화할 수 있는 프리픽스 비단항 코드

다음은 프리픽스 코드가 아닌 고유하게 디코딩 가능한 단항 코드의 예입니다(디코딩을 위해 룩어헤드 필요).

n 유니리 코드
1 1
2 10
3 100
4 1000
5 10000
6 100000
7 1000000
8 10000000
9 100000000
10 1000000000
...

대칭 단항 부호

다음 단항 코드 세트는 대칭이며 모든 방향으로 읽을 수 있습니다.또한 어느 방향으로든 즉시 해독할 수 있습니다.

n(정극성) 유니리 코드 대안 n(음수 아님)
1 1 0 0
2 00 11 1
3 010 101 2
4 0110 1001 3
5 01110 10001 4
6 011110 100001 5
7 0111110 1000001 6
8 01111110 10000001 7
9 011111110 100000001 8
10 0111111110 1000000001 9
...

표준 단항 코드

최대값이 알려진 단항 값의 경우 문자 기반 코드와는 다른 다소 수치적 성질의 표준 단항 코드를 사용할 수 있습니다.숫자 '0' 또는 '-1'( 1 \ ^{로 시작하고 각 단계에서 최대 자릿수를 1자리씩 줄이고 결과를 숫자 '1'만큼 증가/감소합니다.

n 유니리 코드 대안
1 1 0
2 01 10
3 001 110
4 0001 1110
5 00001 11110
6 000001 111110
7 0000001 1111110
8 00000001 11111110
9 000000001 111111110
10 0000000000 1111111111

표준 코드는 문자열이 아닌 숫자로 처리될 경우 디코딩에 더 적은 처리 시간이 필요할 수 있습니다.기호 길이당 필요한 코드 수가 1과 다른 경우, 즉 필요한 길이의 비단일 코드가 더 많을 경우, 이 경우 길이를 줄이지 않고 값을 수치적으로 증가/감소함으로써 이를 달성할 수 있다.

일반화 단항 부호화

Subhash Kak은 표준 단항 [3]부호화보다 훨씬 효율적으로 숫자를 표현하기 위해 단항 부호화의 일반화 버전을 제시했다.다음은 7비트만 필요한 0 ~ 15의 정수에 대한 일반화된 단항 부호화의 예입니다(이 예에서는 숫자를 표시하기 위해 표준 단항 내의 단일 비트 대신 3비트가 임의로 선택됩니다.표현은 마커를 사용하여 더 높은 사이클에서 더 높은 정수를 나타내는 주기적 표현이라는 점에 유의하십시오.

n 유니리 코드 일반화 단항
0 0 0000000
1 10 0000111
2 110 0001110
3 1110 0011100
4 11110 0111000
5 111110 1110000
6 1111110 0010111
7 11111110 0101110
8 111111110 1011100
9 1111111110 0111001
10 11111111110 1110010
11 111111111110 0100111
12 1111111111110 1001110
13 11111111111110 0011101
14 111111111111110 0111010
15 1111111111111110 1110100

일반화된 단항 부호화에서는 필요한 비트 수가 결정되기 때문에 나타낼 숫자의 범위를 미리 지정해야 합니다.

「 」를 참조해 주세요.

메모들

  1. ^ 독일 과학 문헌에서 "단일 부호화"라는 용어와 동등한 용어는 "BCD-Zéhlcode"로, "이진 코드 10진수 계수 코드"로 번역된다.이것은 영어로 BCD 코드로 번역되는 유사한 독일어 용어 "BCD-Code"와 혼동해서는 안 됩니다.

레퍼런스

  1. ^ Fiete, I. R.; Seung, H. S. (2007). "Neural network models of birdsong production, learning, and coding". In Squire, L.; Albright, T.; Bloom, F.; Gage, F.; Spitzer, N. (eds.). New Encyclopedia of Neuroscience. Elsevier.
  2. ^ Moore, J. M.; et al. (2011). "Motor pathway convergence predicts syllable repertoire size in oscine birds". Proc. Natl. Acad. Sci. USA. 108 (39): 16440–16445. Bibcode:2011PNAS..10816440M. doi:10.1073/pnas.1102077108. PMC 3182746. PMID 21918109.
  3. ^ Kak, S. (2015). "Generalized unary coding". Circuits, Systems and Signal Processing. 35 (4): 1419–1426. doi:10.1007/s00034-015-0120-7. S2CID 27902257.