ZIP Sıkıştırma neden hiçbir şeyi sıkıştırmıyor?


18

398MB'lık bir dizin yalnızca 7Z ve Normal ZIP sıkıştırması kullanılarak 393MB'ye sıkıştırıldı. Bu normal mi? Öyleyse, insanlar neden Windows'ta ZIP kullanmaya devam ediyor?

Yanıtlar:


70

Zaten sıkıştırılmış olan şeyleri sıkıştırıyorsanız (AVI, JPEG, MP3), her şeyi tek bir dosyada paketlemekten başka kazanamazsınız.


1
Sıkıştırılmış arşivin sıkıştırılmış dosyalardan daha büyük olmasına neden olarak ters yönde çalıştığını gördüm.
Fiasco Labs

32

Sıkıştırma, sıkıştırılacak öğelerin içinde tekrar eden kalıplar arayarak çalışır. Ayrıca dosyalarınızı sıkıştırırken veri kaybetmek istemediğiniz için, sıkıştırma kayıpsız olmalıdır (*).
Şimdi kafanın arka tarafındayken, dosyaların (öğelerin) bir bilgisayarda nasıl depolandığını düşünün. En düşük seviyede, hepsi sadece 0 ve 1'li bir gruptur.

Bu nedenle soru şu şekildedir: " 1 ve 0'ların bir demetini, orijinal gösterimden daha kompakt bir şekilde nasıl temsil edebilirim? "

Öyleyse baştan başlayalım, tek bir bitin (tek 1 veya tek 0) normal temsilini nasıl düzenleyebilirsiniz ?
Cevap gerçekten kolay: Yapamazsınız! ... tek bir bit mümkün olan en kompakt şekilde temsil edilir.

Oldukça adil, daha büyük bir örnek verelim, 0111 0111 0100 0111 gibi bir ikili dizeyi nasıl sıkıştırırsınız ?
Tek tek parçalara bakmanın bize hiç yardımcı olmayacağını bildiğimiz için, daha büyük bir ölçeğe bakmamız gerektiğini biliyoruz. Örneğin, bir seferde 4 bit alalım. Şimdi "0111" ikili dizesinin örnekte 3 kez ortaya çıkacağını görüyoruz, neden bunu tek bir bitle temsil etmiyoruz: 0? ama bu hala karanlıkta 0100 kalıyor, bu yüzden "1"
ile orijinali "0010" olarak sıkıştırdığımızı bilelim.

Bu gerçekten iyi! Bununla birlikte, bu sadece "Huffman kodlama algoritmasının" temellerinin temelidir ve gerçek dünyada bundan biraz daha karmaşık olacaktır (ve kodlama bilgileri içeren bir tablo da depolamanız gerekir, ancak bu bir bu soruyu cevaplamak için biraz uzak).

Şimdi sorunuzu gerçekten cevaplamak için: neden tüm veriler bu kadar iyi sıkıştırılamıyor? Peki başka bir örnek alalım: "0001 0110 1000 1111", eğer yukarıdaki ile aynı tekniği kullanırsak verileri sıkıştıramazdık (tekrar bulunmaz) ve bu nedenle sıkıştırmadan fayda sağlamaz ...


(*) bu konuda elbette istisnalar vardır. Bunun en bilinen örneği MP3 dosyaları için kullanılan sıkıştırmadır. burada sesler hakkında bazı bilgiler ham, orijinal dosyadan MP3 formatına dönüştürülürken kaybolacak, bu sıkıştırma kaybolacaktır . Başka bir örnek, görüntüler için .JPG biçimidir


6

Sıkıştırma işlemi tekrarlanabilir kalıpları alır ve daha kısa kalıplara tokenler. Çıktı daha sonra çoğunlukla tekrarlanamaz ve bu nedenle de çok fazla sıkıştırılamaz.


6

Gönderen Kayıpsız Sıkıştırma Vikipedi'ye sınırlamaları bölümünde :

Kayıpsız veri sıkıştırma algoritmaları, tüm giriş veri kümeleri için sıkıştırmayı garanti edemez. Başka bir deyişle, herhangi bir (kayıpsız) veri sıkıştırma algoritması için, algoritma tarafından işlendiğinde küçülmeyen bir giriş veri kümesi olacaktır. Bu, sayım argümanı kullanarak temel matematik ile kolayca kanıtlanabilir. ...

Temel olarak, tüm olası giriş verilerini kayıpsız bir şekilde sıkıştırmak teorik olarak imkansızdır.


Önceden sıkıştırılmış verileri sıkıştırmak daha zordur. Orijinal boyut çok büyük olacağından resimler, videolar çoğunlukla sıkıştırılıyor
phuclv

4

Bu normal mi?

Hayır. "Normal" dosyalarla değil. Ne tür dosyaları sıkıştırıyordunuz? Zaten sıkıştırılmışlarsa, örneğin JPG'ler, GIF'ler, PNG'ler, videolar veya diğer zip dosyalarıysa, herhangi bir algoritma tarafından çok fazla sıkıştırılmazlar. Metin, XML, sıkıştırılmamış BMP, kaynak kodu vb. Dosyaları sıkıştırmayı denerseniz, zip iyi bir sıkıştırma sağlar, ancak muhtemelen en iyisi olmaz.

İnsanlar neden Windows'ta ZIP kullanmaya devam ediyor?

Bunun bir nedeni, sisteme yerleştirilmiş güzel zip kullanımının olmasıdır - herhangi bir yere sağ tıklayıp yeni bir zip dosyası oluşturabilir, daha sonra içine şeyler bırakabilirsiniz. Bir zip dosyasını çift tıklatabilirsiniz ve klasör gibi açılır. Bir şeyi kopyalayabilir ve hatta bazen yerinde kullanabilirsiniz. WinZip veya 7z veya başka bir program yüklemenize gerek yoktur. Genellikle insanlara tavsiye etmem.


2

Çok sayıda dosya içeren bir zip arşivinde, her dosya bağımsız olarak sıkıştırılır. Dosyalar arasında büyük bir benzerlik varsa, farklı bir araç daha iyi sıkıştırma sağlayabilir.

Örneğin, tar.gz dosyaları birleştirir ve ardından sonuçları sıkıştırır. Aynı şekilde "katı" bir rar dosyası da dosyalar arasındaki benzerlikleri kullanır.

Tar.gz veya sağlam bir rar'ın dezavantajı, arşivi istediğiniz dosyaya kadar açmadan büyük bir arşivden tek bir dosyayı artık ayıklayamamanızdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.