이 아이디어는 프로그램을 배우고 처음 PRNG를 만난 어린 시절에 나에게 일어났다. 나는 아직도 그것이 얼마나 현실적인지 알지 못하지만 이제 스택 교환이 있습니다.
놀라운 압축 알고리즘을위한 14 살짜리 계획은 다음과 같습니다.
PRNG s를 가져와 시드 로 시드 하여 긴 일련의 의사 난수 바이트를 얻습니다. 이 시퀀스를 다른 당사자에게 전송하려면 PRNG에 대한 설명, 적절한 시드 및 메시지 길이 만 전달하면됩니다. 충분히 긴 시퀀스의 경우 해당 설명은 시퀀스 자체보다 훨씬 짧습니다.
이제 프로세스를 반전시킬 수 있다고 가정하십시오. 충분한 시간과 계산 리소스가 주어지면 무차별 검색을 수행하여 원하는 시퀀스를 생성하는 시드 (및 PRNG 또는 다른 말로하면 프로그램)를 찾을 수 있습니다 (고양이의 재미있는 사진은 장난 스럽습니다).
PRNG는 충분한 수의 비트가 생성 된 후에 반복되지만 "일반적인"주기와 비교할 때 제 메시지는 매우 짧아서 별 문제가되지 않습니다.
Voila는 데이터를 압축하는 효과적인 방법입니다.
따라서 가정 :
- 압축하려는 시퀀스는 유한하며 미리 알려져 있습니다.
- 현금이나 시간이 부족하지 않습니다 (유한 한 금액이 필요한 한)
알고 싶습니다 :
- 이 계획의 추론에 근본적인 결함이 있습니까?
- 이러한 종류의 사고 실험을 분석하는 표준 방법은 무엇입니까?
요약
좋은 답변이 답변뿐만 아니라 내가 실제로 묻는 것임을 분명히하는 경우가 종종 있습니다. 모두의 인내심과 상세한 답변에 감사드립니다.
다음은 답변 요약에 대한 n 번째 시도입니다.
- PRNG / 시드 각도는 아무 것도 기여하지 않으며, 원하는 시퀀스를 출력으로 생성하는 프로그램에 지나지 않습니다.
- 비둘기 구멍 원리 : 길이 <= k의 (메시지 생성) 프로그램보다 더 많은 길이> k의 메시지가 있습니다. 따라서 일부 시퀀스는 단순히 메시지보다 짧은 프로그램의 출력이 될 수 없습니다.
- 프로그램의 해석기 (메시지)가 반드시 미리 고정되어 있다는 것은 언급 할 가치가 있습니다. 또한 길이 k의 메시지가 수신 될 때 생성 될 수있는 메시지의 작은 하위 집합을 결정합니다.
이 시점에서 원래 PRNG 아이디어는 이미 죽었지 만 해결해야 할 마지막 질문이 하나 이상 있습니다.
- Q : 운이 좋으면서 긴 (그러나 유한 한) 메시지가 길이 <k 비트의 프로그램 출력이라는 것을 알 수 있습니까?
엄밀히 말하면, 가능한 모든 메시지 (프로그램)의 의미를 미리 알아야하므로 우연이 아닙니다. 어느 것이 인 <k 비트의 일부 메시지의 의미 또는 그렇지 않다 .
무작위로> = k 비트의 무작위 메시지를 선택하면 (왜 내가?) k 비트 미만을 사용하여 메시지를 보낼 수 있다는 소멸 가능성과 거의 보낼 수 없다는 확실성이 있습니다. k 비트 미만을 사용합니다.
OTOH, k 비트보다 작은 프로그램의 출력 인 메시지에서> = k 비트의 특정 메시지를 선택하면 (그러한 메시지가 있다고 가정) 실제로는 이미 전송 된 비트를 이용합니다. 전송 된 메시지의 일부로 계산되는 수신자 (인터프리터의 설계)
드디어:
- Q :이 엔트로피 / 콜 로고 로프 복잡성 사업은 무엇입니까?
궁극적으로 둘 다 (간단한) 비둘기 구멍 원리가 우리가 압축 할 수있는 양에 대해 알려주는 것과 같은 것을 알려줍니다.