ทำไมการบีบอัดไฟล์ ZIP ถึงไม่บีบอัดอะไรเลย


18

ไดเรกทอรี 398MB ถูกบีบอัดเป็น 393MB โดยใช้การบีบอัด 7Z และ ZIP ปกติ เป็นเรื่องปกติหรือไม่ ถ้าเป็นเช่นนั้นทำไมผู้คนยังใช้ ZIP บน Windows ต่อไป

คำตอบ:


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"

มันดีจริงๆ! อย่างไรก็ตามนี่เป็นเพียงพื้นฐานของพื้นฐานของ"อัลกอริทึมการเข้ารหัส Huffman"และในโลกแห่งความจริงมันจะซับซ้อนกว่านั้นเล็กน้อย (และคุณจะต้องเก็บตารางที่มีข้อมูลการเข้ารหัสไว้ด้วย ไกลไปหน่อยสำหรับการตอบคำถามนี้)

ตอนนี้มันตอบคำถามของคุณ: ทำไมไม่สามารถข้อมูลทั้งหมดถูกบีบอัดที่ดี ?, ดีลองอีกตัวอย่างหนึ่ง: "0001 0110 1000 1111" ถ้าเราจะใช้เทคนิคเดียวกันกับข้างต้นเราจะไม่สามารถที่จะบีบอัดข้อมูล (ไม่พบการทำซ้ำ) ดังนั้นจึงไม่ได้ประโยชน์จากการบีบอัด ...


(*) มีข้อยกเว้นแน่นอนในเรื่องนี้ ตัวอย่างที่เป็นที่รู้จักมากที่สุดคือการบีบอัดไฟล์ MP3 นี่ข้อมูลบางอย่างเกี่ยวกับเสียงที่จะได้รับหายไปขณะที่การแปลงจากดิบไฟล์ต้นฉบับในรูปแบบ MP3 นี้การบีบอัดจึงสูญเสีย อีกตัวอย่างหนึ่งคือรูปแบบ. JPG สำหรับรูปภาพ


6

กระบวนการบีบอัดใช้รูปแบบที่ทำซ้ำได้และโทเค็นเป็นรูปแบบที่สั้นกว่า เอาต์พุตนั้นส่วนใหญ่ไม่สามารถทำซ้ำได้และดังนั้นจึงไม่สามารถบีบอัดได้มากถ้าหากทั้งหมด


6

จากส่วนข้อ จำกัด ของบทความ Wikipedia เกี่ยวกับ Lossless Compression :

อัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียไม่สามารถรับประกันการบีบอัดสำหรับชุดข้อมูลอินพุตทั้งหมด กล่าวอีกนัยหนึ่งสำหรับอัลกอริธึมการบีบอัดข้อมูล (ไม่สูญเสียข้อมูล) จะมีชุดข้อมูลอินพุตที่ไม่เล็กลงเมื่อประมวลผลโดยอัลกอริทึม นี่คือการพิสูจน์ได้อย่างง่ายดายด้วยคณิตศาสตร์ระดับประถมศึกษาโดยใช้อาร์กิวเมนต์การนับ ...

โดยพื้นฐานแล้วมันเป็นไปไม่ได้ในทางทฤษฎีที่จะบีบอัดข้อมูลอินพุตที่เป็นไปได้ทั้งหมดโดยไม่สูญเสียข้อมูล


มันยากที่จะบีบอัดข้อมูลที่ถูกบีบอัดแล้ว รูปภาพวิดีโอส่วนใหญ่จะถูกบีบอัดเนื่องจากขนาดดั้งเดิมจะมีขนาดใหญ่มาก
phuclv

4

เป็นเรื่องปกติหรือไม่

ไม่ไม่ใช่ไฟล์ "ปกติ" คุณบีบอัดไฟล์ประเภทใด หากพวกเขาถูกบีบอัดอยู่แล้วเช่นพวกเขาเป็น JPG, GIF, PNGs, วิดีโอหรือแม้แต่ไฟล์ zip อื่น ๆ พวกเขาจะไม่ถูกบีบอัดด้วยอัลกอริทึมใด ๆ หากคุณลองบีบอัดข้อความ, XML, ไม่มีการบีบอัด BMP, ซอร์สโค้ดไฟล์ ฯลฯ ไฟล์ zip จะให้การบีบอัดที่ดี แต่อาจไม่ใช่วิธีที่ดีที่สุดแน่นอน

ทำไมคนยังคงใช้ ZIP บน Windows ต่อไป

เหตุผลหนึ่งก็คือมีการจัดการ zip ที่ดีในตัวระบบ - คุณสามารถคลิกขวาได้ทุกที่และสร้างไฟล์ zip ใหม่จากนั้นปล่อยสิ่งต่างๆลงไป คุณสามารถคลิกสองครั้งที่ไฟล์ zip และเปิดขึ้นมาเหมือนโฟลเดอร์ คุณสามารถคัดลอกสิ่งต่าง ๆ ออกมาและบางครั้งก็ใช้งานได้ทันที คุณไม่จำเป็นต้องติดตั้ง WinZip หรือ 7z หรือโปรแกรมอื่นใด ฉันมักจะแนะนำคนที่ไม่


2

ในไฟล์ zip ที่มีไฟล์จำนวนมากแต่ละไฟล์จะถูกบีบอัดอย่างอิสระ หากมีความคล้ายคลึงกันอย่างมากระหว่างไฟล์เครื่องมือที่แตกต่างกันอาจให้การบีบอัดที่ดีกว่ามาก

ตัวอย่างเช่น tar.gz รวมไฟล์เข้าด้วยกันแล้วบีบอัดผลลัพธ์ เช่นเดียวกันไฟล์ rar "solid" ใช้ประโยชน์จากความคล้ายคลึงกันระหว่างไฟล์

ข้อเสียของ tar.gz หรือ rar rar คือคุณไม่สามารถแยกไฟล์เดียวจากไฟล์เก็บถาวรขนาดใหญ่ได้อีกต่อไปโดยไม่คลายการบีบอัดไฟล์เก็บถาวรจนถึงตำแหน่งไฟล์ที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.