Olası Çoğalt:
Neden ZIP Sıkıştırması hiçbir şeyi sıkıştırmıyor?
Bir .exe dosyasını 7zipping denedim ama aslında daha büyük oldu.
Beklenen sonuç bu mu?
Olası Çoğalt:
Neden ZIP Sıkıştırması hiçbir şeyi sıkıştırmıyor?
Bir .exe dosyasını 7zipping denedim ama aslında daha büyük oldu.
Beklenen sonuç bu mu?
Yanıtlar:
Entropi denilen bir konsepte iniyor . Vikipedi'ye bakınız .
Temel fikir, her zaman bir dosyayı küçültebilecek bir sıkıştırma işlemi varsa , o zaman mantık, bahsedilen sıkıştırma işleminin herhangi bir dosyayı 0 bayta indirgeyebileceğini ve hala tüm verileri koruyabileceğini söyler. Fakat bu çok saçma , çünkü biliyoruz ki 0 byte hiçbir bilgi aktaramaz. Bu nedenle , girişini her zaman daha küçük yapan bir sıkıştırma algoritması bulunmadığını kanıtladık , çünkü durum buysa, herhangi bir bilgi 0 baytta depolanabilir - ancak 0 bayt bilginin yokluğunu ima eder. t aynı anda hiçbir bilgiye ve tüm bilgilere sahip değilsiniz . Dolayısıyla, bu saçma.
Bu teorik konsept sayesinde, kullandığınız her sıkıştırma programı bazı girdilerin boyutunu artıracak (veya en iyi ihtimalle aynı boyutta olacak) . Diğer bir deyişle, tasarladığınız veya kullandığınız herhangi bir sıkıştırma algoritması için, daha küçük çıkacak ve bazıları çıkmayacak belirli girdiler olacaktır.
Zaten sıkıştırılmış veriler genellikle daha fazla sıkıştırma için korkunç bir adaydır, çünkü çoğu kayıpsız sıkıştırma algoritması aynı teorik ilkelere dayanır. İse daha da kötü sıkıştırılmış veriyi sıkıştırmak mümkün; ancak bu başlangıçta orijinal verilerden elde edilebilecek en iyi algoritma ile sıkıştırmaktan daha az etkilidir.
Örneğin, 100 MB'lık bir metin dosyanız varsa ve normal Zip algoritmasını kullanarak sıkıştırırsanız, 50 MB'a kadar sıkıştırılabilir. Daha sonra, Zip dosyasını LZMA2 ile sıkıştırırsanız, 40 veya 45 MB'a düşürebilirsiniz, çünkü LZMA, Sıkıştırılabilir verilerin çoğu için Zip'den daha yüksek bir sıkıştırma oranına sahiptir . Bu yüzden, Zip verilerini de sıkıştırabildiği için bir neden olabilir, çünkü Zip tüm entropiyi emmez. Ancak, Zip kabını tamamen ortadan kaldırırsanız, ham metni LZMA2 ile sıkıştırarak daha da küçültebilirsiniz, potansiyel olarak 30 - 35 MB mertebesinde bir şeyler verebilir (bunlar sadece kavramı göstermek için "hava numaralarıdır") .
Sıkıştırmaya çalıştığınız bu ikili dosyada daha büyüktür, çünkü 7-Zip dosya formatı kendi iç yapısını oluşturmak ve önceden sıkıştırılmış çalıştırılabilir verilerin verilerini 7-Zip formatına paketlemek zorundadır. Bu sözlük, dosya başlığı vb. Gibi şeyleri içerir. Bu ekstra veriler, genellikle verilerin kendisinin sıkıştırılmasının tasarrufuyla dengelenmekten daha fazladır, ancak sıkıştırmaya çalıştığınız yürütülebilir dosyanın zaten bir çeşit LZMA ile sıkıştırılmış olduğu anlaşılmaktadır; Aksi takdirde, 2 MB (çok fazla) artırmak yerine, yürütülebilir dosyanın boyutunu küçültebilir veya çok az artırabilir.
2^(n+1)-1
boyutu, n-bit veya daha az olası mesajlar. Algoritmamız bunların her birini benzersiz bir çıktıya eşlemelidir. Bunlardan biri bile daha az bitli bir değerle eşlenirse, başka bir değer mutlaka birden fazla olanla eşlenmelidir.
7z'de kullanılan temel sıkıştırma algoritmaları kayıpsızdır . Bu, bir dosyayı yinelemeli olarak sıkıştır-sıkıştırmasını açabileceğiniz anlamına gelir. Ayrıca, her yinelemeden sonra dosya tamamen aynı kalacaktır .
Ne yazık ki, kayıpsız bir sıkıştırma algoritmasının her zaman olumlu bir sonuçla birçok kez uygulanmasını bekleyemezsiniz . Üstünden atlayamayacağı katı bir sınır var. Kabaca, bu sınır, bir giriş dizisinin rastgele verileri ne kadar yakından birleştirdiğine bağlıdır. Her şeyden önce, kayıpsız algoritmalar dosya sıkıştırma, Internet HTML veri aktarımı, yedeklemeler ve bir çıktı dosyasının tam olarak aynı orijinal girdi dosyasına sıkıştırılmasını bekleyen diğer işlemler için kullanılır.
Kayıpsız sıkıştırmanın aksine, kayıpsız (veya kayıplı) sıkıştırma algoritmalarıyla sıkıştırmadan sonra bir dosya boyutunda küçülme bekleyebilirsiniz . Aşağı tarafı, tek bir sıkıştırmalı dekompresyon yinelemesinden sonra orijinal bir dosyayı tam olarak geri yükleyemezsiniz. Bu algoritmalar en çok ses / video / görüntü aktarımı ve depolamasıyla ünlüdür.
bzip2 , LZMA , LZMA2 ve 7z formatı tarafından kullanılan diğer algoritmalar tamamen kayıpsızdır . Bu nedenle artık sıkıştıramayacağı bir sınır olacaktır. Bunun da ötesinde, çalıştırılabilir görüntüler (.exe) genellikle yüksek oranda sıkıştırılmış dosyalardır. Diğerleri gibi 7zip sıkıştırma aracı, çıktı dosyasını daha büyük hale getirebilen bazı meta verileri içerir.
Bu durumda, her zaman sıkıştırılmış dosyanın giriş dosyasından daha küçük olduğunu göreceksiniz. Bunun neden mümkün olmadığına dair bir yorumu görün.
Sıkıştırma algoritmalarının çoğu, sembol tablosu olarak adlandırılanları kullanır, temelde sadece sıkıştırdığı CAN olarak kullandığı dosyanın parçalarıdır . Bu, elbette, dosyada bir miktar ek yük oluşturur, ancak genellikle çok daha küçük bir dosya oluşturur.
Zaten sıkıştırılmış dosyalarda, yine de bir semboller kümesi oluşturur, ancak boyutu azaltabilecek çok az şey vardır. Sizin durumunuzda, önceden sıkıştırılmış dosyanın sembol tablosu muhtemelen 2 MB veya daha fazla mahallede ya da biraz sıkıştırma yapmayı başardıysa daha fazladır.