2012-04-02 3 views
1

큰 숫자 인 99999999999가 있다고 가정 해보십시오. 훨씬 짧은 숫자로 압축 할 수있는 방법론이 있습니까, 예를 들어 "234.56"이라고 말하면 배경에 참조 정보를 저장할 수 있다고 가정합니다 (즉, "압축 해제" , 234.56에서 999999999로 돌아옴)숫자를 줄이거 나 압축 할 수있는 수학/암호화 알고리즘/모델이 있습니까?

+0

물론 이것은 [무손실 데이터 압축] (http://en.wikipedia.org/wiki/Data_compression#Lossless) (RLE, Lempel-Ziv 또는 기타 여러 항목)의 전체 기반입니다. "예, 압축 알고리즘 선택"이 아닌 다른 의미있는 대답을 위해 질문의 범위를 좁혀 야합니다. –

+0

http://en.wikipedia.org/wiki/Kolmogorov_complexity –

+1

현재 번호를 저장하는 방법에 대해 언급하지 않았습니다. 그것은 서면으로 아스키 십진 양식에 있다면, 먼저해야 할 일은 이진으로 변환하는 것입니다. –

답변

5

일반적으로 질문을 문자 그대로 받아들이는 경우 아니요입니다. 일부 숫자는 항상 더 커지거나 같은 크기를 유지합니다.

쉽게 표시 할 수 있습니다. 질문에 대한 대답이 "예"라고 가정합니다. 당신은 더 큰 숫자에서 더 짧은 숫자를 얻습니다. 0 자리 숫자가 될 때까지 다시 적용하십시오. 문제를 보시겠습니까?

그러나 그 외에도 무손실 압축 알고리즘을 사용할 수 있습니다. 그들을 이진 파일에 모두 집어 넣고 필요한 경우 모든 것을 압축하십시오. 오버 헤드를 이기기 위해 한 번에 압축하기 위해 많은 숫자가 필요할 것입니다. 만약 이들이 임의의 숫자라면 행운을 빕니다. - no algorithm can compress randomness.

물론 샘플 공간에 따라 훨씬 더 잘 수행 할 수 있습니다. 예를 들어 반복되는 1 개의 숫자로 구성 될 가능성이 높다면 그 패턴에 맞지 않는 숫자에 대해 이스케이프 시퀀스를 사용하여 숫자와 실행 길이를 저장할 수 있습니다. 256 개의 다른 공통 번호가있는 경우, 프로그램에 바이트를 저장하고 배열에 바이트 인덱스를 추가하고 배열에없는 숫자에 대한 이스케이프 시퀀스를 저장하십시오. 기타

그러나 일반적으로 문제에 대한 대답은 아니요입니다.

0

"참조 정보를 백그라운드에 저장"의 의미에 따라 다릅니다. 극단적 인 경우 "참조 정보"는 숫자 자체 일 것이고 "압축 된"숫자는 "참조 정보"의 색인 일 것입니다. 기본적으로 숫자에 대한 URL 단축키가 있습니다.

관련 문제