ZIP 압축이 왜 압축하지 않습니까?


18

398MB 디렉토리는 7Z 및 일반 ZIP 압축을 사용하여 393MB로 압축되었습니다. 이것이 정상입니까? 그렇다면 왜 사람들이 Windows에서 계속 ZIP을 사용합니까?

답변:


70

이미 압축 된 파일 (AVI, JPEG, MP3)을 압축하는 경우 모든 파일을 단일 파일로 압축하는 것 외에는 별다른 이점이 없습니다.


1
또한 압축 된 아카이브가 개별 압축 파일보다 커지도록 역으로 작동하는 것을 보았습니다.
Fiasco Labs

32

압축은 압축 할 항목 내부에서 반복적 인 패턴을 찾아서 작동합니다. 또한 파일을 압축하는 동안 데이터를 손실하지 않으려면 압축에 손실이 없어야합니다 (*).
이제 머리 뒤쪽에있는 파일로 컴퓨터에 파일 (항목)이 저장되는 방식을 생각해보십시오. 가장 낮은 수준에서는 모두 0과 1입니다.

따라서 질문은 다음과 같이 변형 될 수있다 : " 원래의 표현보다 더 작은 방법으로 1과 0의 무리를 어떻게 표현할 수 있습니까? "

처음부터 시작하겠습니다 . 단일 비트 (단일 1 또는 단일 0) 의 일반적인 표현을 어떻게 압축 할 수 있습니까?
대답은 정말 쉽습니다 : 당신은 할 수 없습니다! ... 단일 비트는 가능한 가장 컴팩트 한 방식으로 표현됩니다.

충분히 큰 예를 들어 봅시다. 0111 0111 0100 0111 과 같은 이진 문자열을 어떻게 압축 합니까?
개별 비트를 보는 것이 전혀 도움이되지 않는다는 것을 이미 알고 있기 때문에 더 큰 규모를 봐야한다는 것을 알고 있습니다. 예를 들어, 한 번에 4 비트를 가져 갑시다. 이제 이진 문자열 "0111" 이 예제에서 3 번 나타날 것이므로 단일 비트 0으로 표시하지 않는 이유는 무엇입니까? 그러나 이것은 여전히 ​​0100을 암흑으로 남겨 두므로 "1"로 표현하겠습니다
. 원본을 "0010"으로 압축했습니다.

정말 맛있어요! 그러나 이것은 "허프만 인코딩 알고리즘" 의 기본 사항 일 뿐이며 실제 세계에서는 그보다 약간 더 복잡합니다 (또한 인코딩 정보가 포함 된 테이블을 저장해야하지만, 이 질문에 대답하기 위해 조금 먼).

지금 정말 귀하의 질문에 대답 : 모든 데이터가 좋은? 잘 할 수 있음을 압축 할 수없는 이유의 또 다른 예를 가지고 : "0001 0110 1000 1111", 우리는 데이터를 압축 할 수 없을 것입니다 위와 같이 우리가 같은 기술을 사용하는 경우 (반복이 발견되지 않음) 압축의 이점이 없습니다 ...


(*) 물론 예외가 있습니다. 가장 알려진 예는 MP3 파일에 사용되는 압축입니다. 여기에서 원본에 대한 원시 파일에서 MP3 형식으로 변환하는 동안 소리에 대한 일부 정보 가 손실되므로이 압축은 손실 됩니다. 또 다른 예는 이미지의 .JPG 형식입니다.


6

압축 프로세스는 반복 가능한 패턴을 취하여 더 짧은 패턴으로 토큰 화합니다. 출력은 대부분 반복 할 수 없기 때문에 전혀 압축 할 수 없습니다.


6

에서 무손실 압축에 위키 백과 문서의 제한 사항 섹션 :

무손실 데이터 압축 알고리즘이 모든 입력 데이터 세트에 대한 압축을 보장 할 수는 없습니다. 다시 말해, 임의의 (무손실) 데이터 압축 알고리즘에 대해, 알고리즘에 의해 처리 될 때 더 작아지지 않는 입력 데이터 세트가있을 것이다. 이것은 계산 인수를 사용하여 초등 수학으로 쉽게 입증됩니다. ...

기본적으로 모든 가능한 입력 데이터를 무손실로 압축하는 것은 이론적으로 불가능합니다.


이미 압축 된 데이터를 압축하기가 더 어렵습니다. 이미지, 비디오는 원래 크기가 매우 크기 때문에 대부분 압축됩니다
phuclv

4

이것이 정상입니까?

아니요. "일반"파일이 아닙니다. 어떤 종류의 파일을 압축하고 있습니까? JPG, GIF, PNG, 비디오 또는 기타 zip 파일과 같이 이미 압축 된 경우 어떤 알고리즘으로도 압축되지 않습니다. 텍스트, XML, 압축되지 않은 BMP, 소스 코드 등 파일을 압축하려고 시도하면 zip은 압축률은 좋지만 절대 최고는 아닙니다.

사람들이 왜 Windows에서 ZIP을 계속 사용합니까?

그 이유 중 하나는 시스템에 멋진 zip 처리 기능이 내장되어 있기 때문입니다. 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 새 zip 파일을 만든 다음 파일을 넣을 수 있습니다. zip 파일을 두 번 클릭하면 폴더처럼 열립니다. 당신은 그것에서 물건을 복사하고 때로는 그 자리에서 사용할 수 있습니다. WinZip 또는 7z 또는 다른 프로그램을 설치할 필요가 없습니다. 나는 보통 사람들이하지 않는 것이 좋습니다.


2

많은 파일을 포함하는 zip 아카이브에서 각 파일은 독립적으로 압축됩니다. 파일간에 많은 유사성이있는 경우 다른 도구를 사용하면 압축률이 훨씬 높아질 수 있습니다.

예를 들어 tar.gz는 파일을 결합한 다음 결과를 압축합니다. 마찬가지로 "솔리드"rar 파일은 파일 간의 유사성을 사용합니다.

tar.gz 또는 단단한 rar의 단점은 원하는 파일 위치까지 압축을 풀지 않고 더 이상 큰 아카이브에서 단일 파일을 추출 할 수 없다는 것입니다.

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