0.922의 섀넌 엔트로피, 3 개의 고유 값


14

값의 캐릭터 감안할 때 로그베이스, 섀넌 엔트로피를  에 관해서 . 내가 이해 한 바에 따르면, 기초  에서 반올림 된 Shannon Entropy는 값 중 하나를 나타내는 이진수 최소 비트 수입니다.AAAAAAAABC20.9222

이 위키 백과 페이지의 소개에서 가져온 것입니다.

https://en.wikipedia.org/wiki/Entropy_%28information_theory%29

그렇다면 어떻게 3 개의 값을 1 비트로 표현할 수 있습니까? A  는 1 일 수 있고  , B  는 0 일 수 있으며  ; 그러나 어떻게 C 를 대표 할 수  있습니까?

미리 감사드립니다.

답변:


16

계산 한 엔트로피는 실제로 특정 문자열이 아니라 확률이 인 와 확률이 및  를  각각 생성하는 임의의 심볼 소스에 입니다.  , 연속 기호간에 상관 관계가 없습니다. 이 분포에 대해 계산 된 엔트로피 는 평균적으로 문자 당 비트 미만을 사용하여이 분포에서 생성 된 문자열을 나타낼 수 없음을 의미합니다 .A810BC1100.9220.922

이 속도를 달성하는 코드를 개발하는 것은 매우 어려울 수 있습니다. * 예를 들어 허프만 코드 할당 할 부호화 , 및  에 , 및  의 평균에 대해 각각  캐릭터 당 비트. 그것은 엔트로피와는 거리가 멀지 만 문자 당 2 비트의 순진 인코딩보다 여전히 낫습니다. 더 나은 코딩을 시도하면 10 개의 연속적인 의 실행조차도 단일 보다 가능성이 높다는 사실을 이용할 수 있습니다 ( 확률 )  .01011ABC1.2A0.107B


* 원하는만큼 가까이 다가 가기가 어렵다는 것이 밝혀졌습니다 – 다른 답변을보십시오!


18

평균적으로 1 비트 미만으로 각 심볼을 나타낼 수있는 구체적인 인코딩은 다음과 같습니다.

먼저 입력 문자열을 연속 문자 쌍으로 분할하십시오 (예 : AAAAAAAABC는 AA | AA | AA | AA | BC가 됨). 그런 다음 AA를 0으로, AB를 100으로, AC를 101로, BA를 110으로, CA를 1110으로, BB를 111100으로, BC를 111101로, CB를 111110으로, CC를 111111로 인코딩 합니다. 여러 개의 기호를 사용할 수 있지만 임의의 인코딩을 사용하여 마지막 기호를 인코딩 할 수 있지만 입력이 길면 중요하지 않습니다.

이것은 독립적 인 기호 쌍을 배포하기위한 허프만 코드 이며 Yuval의 답변에서 n=2 를 선택하는 것과 같습니다 . n 이 클수록 더 나은 코드로 이어질 수 있습니다 (제한된대로 Shannon 엔트로피에 접근).

위의 인코딩에서 심볼 쌍당 평균 비트 수는

8108101+38101103+1108104+41101106=1.92
즉심볼 당1.92/2=0.96비트. 실제로 간단한 인코딩의 경우 Shannon 엔트로피에서 멀지 않습니다.


13

하자 D 통해 다음 분배 할 {A,B,C} : 만약 XDPr[X=A]=4/5Pr[X=B]=Pr[X=C]=1/10 .

n 우리 프리픽스 코드 만들 수 Cn:{A,B,C}n{0,1} 되도록

limnEX1,,XnD[Cn(X1,,Xn)]n=H(D).

다시 말해, 우리가 D 로부터 많은 수의 독립적 샘플을 인코딩한다면 , 평균적으로 샘플 당 H(D)0.922 비트 가 필요합니다 . 직관적으로, 우리가 1 비트 미만으로 할 수있는 이유는 각 개별 샘플이 A 일 가능성이 높기 때문 입니다.

이것은 엔트로피의 진정한 의미이며, 문자열 A8BC 의 "엔트로피"를 계산 하는 것은 무의미한 운동 이라는 것을 보여줍니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.