ไดเรกทอรี 398MB ถูกบีบอัดเป็น 393MB โดยใช้การบีบอัด 7Z และ ZIP ปกติ เป็นเรื่องปกติหรือไม่ ถ้าเป็นเช่นนั้นทำไมผู้คนยังใช้ ZIP บน Windows ต่อไป
ไดเรกทอรี 398MB ถูกบีบอัดเป็น 393MB โดยใช้การบีบอัด 7Z และ ZIP ปกติ เป็นเรื่องปกติหรือไม่ ถ้าเป็นเช่นนั้นทำไมผู้คนยังใช้ ZIP บน Windows ต่อไป
คำตอบ:
หากคุณกำลังบีบอัดสิ่งต่าง ๆ ที่ถูกบีบอัดอยู่แล้ว (AVI, JPEG, MP3) คุณจะไม่ได้อะไรมากไปกว่าการจัดเก็บทุกอย่างไว้ในไฟล์เดียว
การบีบอัดทำงานโดยค้นหารูปแบบซ้ำ ๆ ภายในรายการที่จะบีบอัด นอกจากนี้เนื่องจากคุณไม่ต้องการสูญเสียข้อมูลใด ๆ ในขณะที่บีบอัดไฟล์การบีบอัดจะต้องไม่สูญเสีย (*)
ตอนนี้ที่ด้านหลังในหัวของคุณคิดเกี่ยวกับวิธีการจัดเก็บไฟล์ (รายการ) บนคอมพิวเตอร์ ที่ระดับต่ำสุดพวกเขาทั้งหมดเป็นเพียง 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 สำหรับรูปภาพ
กระบวนการบีบอัดใช้รูปแบบที่ทำซ้ำได้และโทเค็นเป็นรูปแบบที่สั้นกว่า เอาต์พุตนั้นส่วนใหญ่ไม่สามารถทำซ้ำได้และดังนั้นจึงไม่สามารถบีบอัดได้มากถ้าหากทั้งหมด
จากส่วนข้อ จำกัด ของบทความ Wikipedia เกี่ยวกับ Lossless Compression :
อัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียไม่สามารถรับประกันการบีบอัดสำหรับชุดข้อมูลอินพุตทั้งหมด กล่าวอีกนัยหนึ่งสำหรับอัลกอริธึมการบีบอัดข้อมูล (ไม่สูญเสียข้อมูล) จะมีชุดข้อมูลอินพุตที่ไม่เล็กลงเมื่อประมวลผลโดยอัลกอริทึม นี่คือการพิสูจน์ได้อย่างง่ายดายด้วยคณิตศาสตร์ระดับประถมศึกษาโดยใช้อาร์กิวเมนต์การนับ ...
โดยพื้นฐานแล้วมันเป็นไปไม่ได้ในทางทฤษฎีที่จะบีบอัดข้อมูลอินพุตที่เป็นไปได้ทั้งหมดโดยไม่สูญเสียข้อมูล
เป็นเรื่องปกติหรือไม่
ไม่ไม่ใช่ไฟล์ "ปกติ" คุณบีบอัดไฟล์ประเภทใด หากพวกเขาถูกบีบอัดอยู่แล้วเช่นพวกเขาเป็น JPG, GIF, PNGs, วิดีโอหรือแม้แต่ไฟล์ zip อื่น ๆ พวกเขาจะไม่ถูกบีบอัดด้วยอัลกอริทึมใด ๆ หากคุณลองบีบอัดข้อความ, XML, ไม่มีการบีบอัด BMP, ซอร์สโค้ดไฟล์ ฯลฯ ไฟล์ zip จะให้การบีบอัดที่ดี แต่อาจไม่ใช่วิธีที่ดีที่สุดแน่นอน
ทำไมคนยังคงใช้ ZIP บน Windows ต่อไป
เหตุผลหนึ่งก็คือมีการจัดการ zip ที่ดีในตัวระบบ - คุณสามารถคลิกขวาได้ทุกที่และสร้างไฟล์ zip ใหม่จากนั้นปล่อยสิ่งต่างๆลงไป คุณสามารถคลิกสองครั้งที่ไฟล์ zip และเปิดขึ้นมาเหมือนโฟลเดอร์ คุณสามารถคัดลอกสิ่งต่าง ๆ ออกมาและบางครั้งก็ใช้งานได้ทันที คุณไม่จำเป็นต้องติดตั้ง WinZip หรือ 7z หรือโปรแกรมอื่นใด ฉันมักจะแนะนำคนที่ไม่
ในไฟล์ zip ที่มีไฟล์จำนวนมากแต่ละไฟล์จะถูกบีบอัดอย่างอิสระ หากมีความคล้ายคลึงกันอย่างมากระหว่างไฟล์เครื่องมือที่แตกต่างกันอาจให้การบีบอัดที่ดีกว่ามาก
ตัวอย่างเช่น tar.gz รวมไฟล์เข้าด้วยกันแล้วบีบอัดผลลัพธ์ เช่นเดียวกันไฟล์ rar "solid" ใช้ประโยชน์จากความคล้ายคลึงกันระหว่างไฟล์
ข้อเสียของ tar.gz หรือ rar rar คือคุณไม่สามารถแยกไฟล์เดียวจากไฟล์เก็บถาวรขนาดใหญ่ได้อีกต่อไปโดยไม่คลายการบีบอัดไฟล์เก็บถาวรจนถึงตำแหน่งไฟล์ที่คุณต้องการ