0과 1의 문자열을 얼마나 많이 압축 할 수 있는지 알려진 최대 값이 있습니까?


38

오래 전에 저는 어떤 종류의 교수가 미래에 우리는 단지 2 비트 (또는 이와 유사한 것)로 데이터를 압축 할 수 있다고 신문 기사를 읽었습니다.

이것은 물론 정확하지 않습니다 (그리고 그가 정확히 말한 것에 대한 나의 기억이 올바르지 않을 수도 있습니다). (기술적으로 가능하더라도) 0과 1의 문자열을 단지 2 비트로 압축 하는 것은 실용적이지 않습니다. 왜냐하면 너무 많은 다른 종류의 문자열은 같은 두 비트로 압축 될 것입니다. '및'10 '중에서 선택).

어쨌든, 이것은 어떤 계획에 따라 0과 1의 임의의 길이 문자열을 압축하는 가능성에 대해 생각하게했습니다. 이러한 종류의 문자열의 경우 문자열 길이 (0과 1 사이의 비율은 중요하지 않음)와 최대 압축 사이에 알려진 관계가 있습니까?

다시 말해, 0과 1의 문자열을 압축 할 수있는 최소 (가장 작은) 길이를 결정하는 방법이 있습니까?

(여기서 저는 현재 기술적으로 가능한 것이 아니라 수학적 최대 압축에 관심이 있습니다.)


7
선택할 수있는 '00'과 '11'도 있습니다. 그러나 인수는 동일합니다.이를 사용하면 압축 할 수있는 4 개의 다른 문자열 만 있습니다.
RemcoGerlich

3
mathoverflow.net/q/160099/34859 : Pl은 비둘기 구멍 원리에 따라 압축 할 수없는 문자열이 항상 무한한 것을 알 수 있습니다 ... 사용되는 알고리즘에 관계없이 사용하십시오 (사용되는 알고리즘에 관계없이 '배경'섹션 참조). 질문
ARi

4
압축은 데이터 구조에 대한 지식에 달려 있습니다. 지식을 추가하면 압축률을 높이는 데 도움 되는 체스 동작 압축에 대한이 기사 가있었습니다 .
스펙트럼

1
명확하게 설명 할 수 있습니까? 압축은 "손실"또는 "손실 없음"(또는 둘 다 사용할 수있는 "하이브리드") 일 수 있습니다. "손실없는"압축 방법 만 사용하여 최대 압축에 대해 이야기하고 있습니까? 또는 "손실"압축 방법의 사용을 포함 (허용)하고 있습니까? 다시 말해, 3 가지 가능성이 있다고 생각합니다. "최대 압축"찾기 (1) 데이터 압축 전과 동일하게 항상 압축을 풀 수 있어야합니다. (2) 데이터는 압축을 풀 수 있어야하지만 일부 "손실"이 허용된다. (3) 데이터를 압축 해제 할 필요는 없다.
케빈 Fegan

안녕하세요 @KevinFegan,이 경우에는 옵션 1이되어야 할것 "은 압축 전과로 데이터를 항상 정확하게 압축 해제 할 수 있어야합니다"
x457812

답변:


45

Kolmogorov의 복잡성 은 이것을 수학적으로 공식화하는 한 가지 방법입니다. 불행히도 문자열의 Kolmogorov 복잡성을 계산하는 것은 계산할 수없는 문제입니다. Kolmogorov 복잡성 근사화 참조 .

문자열 자체 보다는 문자열 소스 를 분석하면 더 나은 결과를 얻을 수 있습니다 . 다시 말해, 소스는 어떤 분포에 따라 문자열을 무작위로 선택하는 확률 적 프로세스로 모델링 될 수 있습니다. 이 분포의 엔트로피는 수학적으로 가능한 압축률을 알려줍니다 (최대 약간의 추가 상수).


완벽한 압축이 불가능하면 다음 사항에도 관심이있을 수 있습니다.


그러나 압축은 엔트로피를 추정하는 기술 중 하나입니다. 압축과 엔트로피가 같은 두 가지 측면이 될 수 있습니까?
Paul Uszak

1
@PaulUszak, 그렇습니다. 그들은 매우 밀접한 관련이 있습니다. 예를 들어 Shannon의 정리를 참조하십시오 . 그러나 참고 사항은 후속 질문을하지 말고 게시물에 대한 개선 / 설명을 제안하기 위해서만 사용해야합니다. 새로운 질문을하려면 페이지 오른쪽 상단에있는 "질문하기"링크를 사용하십시오.
DW

35

Nlog2N

또한 많은 경우에 정확한 재구성에 신경 쓰지 않습니다 . 이것을 손실 압축 이라고하며 음악과 비디오가 압축되는 방식입니다. 이 경우 위에서 언급 한 하한은 유지되지 않지만 다른 하한을 생각해 낼 수 있습니다.


1
Nlog2N

27

다음은 임의의 비트 문자열을 무손실로 압축 할 수있는 간단한 체계입니다. 가장 작은 결과는 단지 1 비트입니다.

문자열이 컴퓨터의 하드 드라이브에 저장된 AAC 형식으로 베토벤의 9 번째 교향곡, 4 번째 움직임을 녹음하는 것과 일치하면 출력은 단일 비트 '0'입니다.

문자열이 다른 것이라면, 출력은 단일 비트 '1'에 이어 원본 문자열과 동일한 사본이옵니다.

이 방식은 하나의 가능한 입력을 정확히 1 비트로 줄이고 다른 모든 입력의 길이를 늘립니다. 압축 알고리즘이 입력 문자열을 압축 문자열에 매핑 할 수 있고 압축 문자열을 원래 문자열에 다시 매핑하는 압축 해제 알고리즘이 있고 압축 알고리즘이 입력을 더 짧은 문자열에 매핑 하는 경우 그런 다음 일부 입력 문자열을 더 긴 문자열로 매핑해야합니다 .


2
대답을 명확하고 분명하게하는 훌륭한 직업. 이것은 주어진 압축 도메인에 대해 좋은 압축 알고리즘이 시도하는 것과 유사하다는 점에 주목할 가치가 있습니다. 공통 입력이 길어질수록 가장 일반적으로 예상되는 입력 유형을 줄이십시오.
JBentley

6

모든 압축 구성표에 대해 압축 할 수없는 데이터를 생성 할 수 있습니다. 따라서 압축 방식이 일부 유형의 데이터에서 매우 효율적이더라도 일정한 비율로 일관되게 압축되지는 않습니다.

특정 압축 알고리즘에 대해 압축 할 수없는 데이터의 예를 생성하는 방법은 간단합니다. 더 이상 크기가 줄어들지 않을 때까지 모든 종류의 데이터를 가져 와서 압축 알고리즘을 반복적으로 실행하십시오.

따라서 비트 열의 압축성은 실제로 문자열 길이의 함수가 아니라 압축 알고리즘과 관련하여 복잡합니다.


어서 오십시오! 이것은 무손실 압축에만 적용됩니다. 손실 압축은 모든 문자열을 압축 할 수 있습니다 (적어도 "빈 문자열 반환"알고리즘을 손실 압축 알고리즘으로 허용하는 한 ;-)).
David Richerby

@DavidRicherby 물론입니다. 그러나 OP가 손실없는 압축에 대해 질문하고 있다는 생각에서 나는 손실 계획의 최대 압축을 논의하는 것이 이치에 맞지 않기 때문에 인상을 받았습니다. 사용할 수없는 극단으로 가져갈 수 있다는 아이디어는 손실 압축 개념에 내재되어 있습니다.
m69

예, 나는 그것이 합리적인 해석이라고 생각합니다.
David Richerby

-2

엔터프라이즈 백업 시스템에서 사용하는 흥미롭고 완전히 다른 알고리즘이 있습니다. 아이디어는 10,000 대의 컴퓨터를 보유한 회사가있는 경우 이러한 많은 컴퓨터에는 동일한 파일이 많이 포함된다는 것입니다. 예를 들어 회사의 모든 사람에게 전송 된 전자 메일은 모든 단일 하드 드라이브에서 동일한 파일로 끝날 수 있습니다.

따라서 파일을 백업하려는 백업 시스템은 공간을 절약하기 위해 파일을 압축하려고 시도하지만, 백업 시스템은 먼저 완전히 동일한 파일이 이미 저장되어 있는지 확인합니다! 그래서 그 대신 백업의 아무것도 , 백업 시스템이하는 모든 것을 당신이 당신의 하드 드라이브에 백업 시스템에서 파일 번호 1487578을 가지고 예를 들어, 기억하기위한 것입니다.

예를 들어 10,000 명의 사용자가 모두 동일한 운영 체제와 응용 프로그램을 설치 한 경우에 특히 효과적입니다. 단일 사용자에게는 전혀 유용하지 않습니다.


4
흥미롭지 만 질문에 어떻게 대답하는지 모르겠습니다. 이 질문은 엔터프라이즈 백업에 대한 일반적인 논의가 아니라 압축에 대한 제한을 요구합니다.
David Richerby

이를 중복 제거라고하며 해시를 사용하여 수행됩니다. 디스크의 모든 블록에 대해 128 비트 해시를 저장하려면 많은 RAM이 필요합니다. ZFS는이를 통해 일부 블록이 일부 COW (Copy-On-Write) 저장 공간을 공유 할 수 있습니다. 그러나 이런 종류의 압축 문제 (무작위 액세스가 필요한 방대한 데이터 세트를 압축하려고하지만 일반 스트림 압축에서는 너무 빠르게 변경되지만 블록 레벨 중복성이 있음)는 이에 대한 답과 관련이 없습니다. 질문.
Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.