답변:
그것은 엔트로피 (entropy) 라는 개념으로 귀결 됩니다. Wikipedia를 참조하십시오 .
기본 아이디어는 항상 파일을 더 작게 만들 수있는 압축 작업이 존재하면 논리는 해당 압축 작업이 파일을 0 바이트로 줄이고 모든 데이터를 계속 유지할 수 있다는 것입니다. 그러나 우리는 0 바이트가 정보를 전혀 전달할 수 없다는 것을 알고 있기 때문에 이것은 터무니 없습니다. 따라서 입력을 항상 작게 만드는 압축 알고리즘이 존재하지 않는다는 것을 이미 증명했습니다 . 그럴 경우 어떤 정보도 0 바이트로 저장할 수 있지만 0 바이트 는 정보 가 없음 을 의미 하므로 ' t는 정보와 모든 정보를 동시에 가지고 있지 않습니다 . 따라서 터무니 없다.
이 이론적 인 개념으로 인해, 사용하는 모든 압축 프로그램은 일부 입력 의 크기 를 늘리 거나 (또는 기껏해야 동일한 크기를 유지) 것 입니다. 즉, 설계하거나 사용하는 압축 알고리즘의 경우 특정 입력이 더 작게 나오고 그렇지 않은 입력이있을 수 있습니다.
대부분의 무손실 압축 알고리즘은 동일한 이론적 원리를 기반으로하기 때문에 이미 압축 된 데이터는 일반적으로 추가 압축의 끔찍한 후보입니다. 인 더욱 저조한 압축 된 데이터를 압축 할 수있다; 그러나 이것은 원래 데이터에서 가장 유용한 알고리즘으로 간단히 압축하는 것보다 효율적이지 않습니다.
예를 들어 100MB 텍스트 파일이 있고 일반 Zip 알고리즘을 사용하여 압축하면 50MB로 압축 될 수 있습니다. 그런 다음 LZMA2를 사용하여 Zip 파일을 압축하면 LZMA는 Zip보다 압축 가능한 데이터의 압축 비율 이 높기 때문에 40 또는 45MB로 줄일 수 있습니다 . 따라서 Zip은 모든 엔트로피를 완전히 흡수하지 않기 때문에 Zip 데이터를 압축 할 수 있다고 추론합니다. 그러나 Zip 컨테이너를 완전히 제거하면 LZMA2를 사용하여 원시 텍스트를 압축하여 30-35MB 정도의 결과를 얻을 수 있습니다 (이는 개념을 설명하기 위해 "공기 번호"임). .
이 바이너리의 경우 압축하려는 경우 7-Zip 파일 형식은 자체 내부 구조를 작성하고 이미 압축 된 실행 파일의 데이터를 7-Zip 형식으로 압축해야하기 때문에 더 큽니다 . 여기에는 사전, 파일 헤더 등이 포함됩니다. 이러한 추가 데이터는 일반적으로 데이터 자체를 압축함으로써 절약되는 것 이상으로 상쇄되지만 압축하려는 실행 파일은 이미 LZMA 형식으로 압축 된 것으로 보입니다. 그렇지 않으면 실행 파일의 크기를 줄이거 나 2MB (많은)만큼 늘리지 않고 약간 증가시킬 수 있습니다.
2^(n+1)-1
크기가 n 비트 이하인 메시지 가 있습니다. 우리의 알고리즘은 이들 각각을 고유 한 출력으로 매핑해야합니다 . 이 중 하나라도 비트 수가 적은 값에 매핑되면 다른 값은 반드시 더 많은 값에 매핑되어야합니다.
7z에서 사용되는 기본 압축 알고리즘은 무손실 입니다. 즉, 파일을 여러 번 반복적으로 압축 압축 해제 할 수 있습니다. 또한 각 반복 후에 파일은 정확히 동일 하게 유지 됩니다 .
불행히도, 항상 긍정적 인 결과 로 무손실 압축 알고리즘을 여러 번 적용 할 수는 없습니다 . 건너 뛸 수없는 엄격한 경계가 있습니다. 대략이 경계는 입력 시퀀스가 무작위 데이터를 얼마나 밀접하게 앙상블하는지에 달려 있습니다. 무엇보다도 손실없는 알고리즘은 파일 압축, 인터넷 HTML 데이터 전송, 백업 및 출력 파일이 정확히 동일한 원본 입력 파일로 압축 해제 될 것으로 예상되는 기타 작업에 사용됩니다.
대조적으로 무손실 압축, 당신은 항상로 압축 후 파일 크기 감소를 기대할 수 lossful (또는 손실) 압축 알고리즘을 . 단점은 단일 압축 압축 풀기 반복 후에 원본 파일을 정확하게 복원 할 수 없다는 것 입니다. 이 알고리즘은 오디오 / 비디오 / 이미지 전송 및 저장에 가장 유명합니다.
7z 형식에서 사용되는 bzip2 , LZMA , LZMA2 및 기타 알고리즘 은 모두 무손실 입니다. 따라서 더 이상 압축 할 수없는 한계가 있습니다. 또한 실행 가능 이미지 (.exe)는 일반적으로 압축률이 높은 파일입니다. 7zip과 많은 다른 압축 도구로 실제로 출력 파일이 더 크게 만들 수있는 메타 데이터를 포함합니다.
이 경우 압축 파일이 입력 파일보다 작다는 것을 항상 알 수 있습니다. 이것이 불가능한 이유는 다음과 같습니다.