Makale 9 kat zip dosyasından bahsediyor, bu yüzden bir grup sıfırın sıkıştırılması basit bir durum değil. Neden 9, neden her birinde 10 dosya?
İlk olarak, Wikipedia makalesi şu anda her biri 16 dosyadan oluşan 5 katman söylüyor. Tutarsızlığın nereden geldiğinden emin değilim, ancak hepsi o kadar alakalı değil. Asıl soru, ilk etapta neden yuva kullanmanın kullanılmasıdır.
Zip dosyaları * için yaygın olarak desteklenen tek sıkıştırma yöntemi olan DEFLATE, maksimum sıkıştırma oranı 1032'dir. Bu, 1-3 baytlık herhangi bir yinelenen dizi için asimptotik olarak elde edilebilir. Bir zip dosyasına ne yaparsanız yapın, sadece DEFLATE kullandığı sürece, paketlenmemiş boyut orijinal zip dosyasının boyutunun en fazla 1032 katı olacaktır.
Bu nedenle, gerçekten aşırı sıkıştırma oranları elde etmek için iç içe geçmiş zip dosyalarını kullanmak gerekir. 2 sıkıştırma katmanınız varsa, maksimum oran 1032 ^ 2 = 1065024 olur. 3 için, 1099104768, vb. Olur. 42.zip'de kullanılan 5 katman için teorik maksimum sıkıştırma oranı 1170572956434432'dir. Gördüğünüz gibi gerçek 42.zip bu seviyeden uzaktır. Bunun bir kısmı zip formatının ek yükü ve bir kısmı da umursamamış olmaları.
Tahmin etmem gerekirse, 42.zip'in sadece büyük bir boş dosya oluşturarak ve tekrar tekrar sıkıştırıp kopyalayarak oluşturulduğunu söyleyebilirim. Formatın sınırlarını zorlama veya sıkıştırmayı en üst düzeye çıkarma veya herhangi bir şey yapma girişimi yoktur - sadece rastgele olarak katman başına 16 kopya topladılar. Amaç, fazla çaba sarf etmeden büyük bir yük oluşturmaktı.
Not: bzip2 gibi diğer sıkıştırma formatları çok, çok, çok daha büyük maksimum sıkıştırma oranları sunar. Ancak çoğu zip ayrıştırıcısı bunları kabul etmez.
PS Kendisinin bir kopyasına (bir quine) açılacak bir zip dosyası oluşturmak mümkündür. Ayrıca kendi birden çok kopyasına açılan bir tane de yapabilirsiniz. Bu nedenle, bir dosyayı sonsuza kadar yinelemeli olarak açarsanız, olası maksimum boyut sonsuzdur. Tek sınırlama, her yinelemede en fazla 1032 artabilmesidir.
PPS 1032 şekli, zip dosyasındaki dosya verilerinin ayrık olduğunu varsayar. Zip dosya formatının bir tuhaflığı, arşivdeki dosyaları listeleyen ve dosya verilerine göre ofsetleri listeleyen merkezi bir dizine sahip olmasıdır. Aynı veriye işaret eden birden çok dosya girdisi oluşturursanız, yuvalama olmasa bile çok daha yüksek sıkıştırma oranları elde edebilirsiniz, ancak böyle bir zip dosyası büyük olasılıkla ayrıştırıcılar tarafından reddedilecektir.