Bài viết đề cập đến 9 lớp tệp zip, vì vậy đây không phải là trường hợp đơn giản để nén một số không. Tại sao 9, tại sao 10 tệp trong mỗi?
Trước hết, bài viết Wikipedia hiện nói 5 lớp với 16 tệp mỗi tệp. Không chắc chắn sự khác biệt đến từ đâu, nhưng nó không liên quan. Câu hỏi thực sự là tại sao sử dụng làm tổ ở nơi đầu tiên.
DEFLATE, phương pháp nén duy nhất thường được hỗ trợ cho các tệp zip *, có tỷ lệ nén tối đa là 1032. Điều này có thể đạt được một cách không có triệu chứng đối với bất kỳ chuỗi lặp lại 1-3 byte nào. Bất kể bạn làm gì với tệp zip, miễn là nó chỉ sử dụng DEFLATE, kích thước được giải nén sẽ nhiều nhất gấp 1032 lần kích thước của tệp zip gốc.
Do đó, cần phải sử dụng các tệp zip lồng nhau để đạt được tỷ lệ nén thực sự thái quá. Nếu bạn có 2 lớp nén, tỷ lệ tối đa trở thành 1032 ^ 2 = 1065024. Đối với 3, đó là 1099104768, v.v. Đối với 5 lớp được sử dụng trong 42.zip, tỷ lệ nén tối đa theo lý thuyết là 1170572956434432. Như bạn có thể thấy, 42.zip thực tế khác xa mức đó. Một phần trong đó là chi phí chung của định dạng zip và một phần là họ không quan tâm.
Nếu tôi phải đoán, tôi sẽ nói rằng 42.zip được hình thành chỉ bằng cách tạo một tệp trống lớn, và liên tục nén và sao chép nó. Không có nỗ lực để đẩy các giới hạn của định dạng hoặc tối đa hóa nén hoặc bất cứ điều gì - họ chỉ tự ý chọn 16 bản sao cho mỗi lớp. Vấn đề là tạo ra một trọng tải lớn mà không cần nỗ lực nhiều.
Lưu ý: Các định dạng nén khác, chẳng hạn như bzip2, cung cấp tỷ lệ nén tối đa lớn hơn nhiều. Tuy nhiên, hầu hết các trình phân tích cú pháp zip không chấp nhận chúng.
PS Có thể tạo một tệp zip sẽ giải nén thành một bản sao của chính nó (một quine). Bạn cũng có thể tạo một bản sao để mở ra nhiều bản sao của chính nó. Do đó, nếu bạn giải nén đệ quy một tệp mãi mãi, kích thước tối đa có thể là vô hạn. Hạn chế duy nhất là nó có thể tăng tối đa 1032 trên mỗi lần lặp.
PPS Hình 1032 giả định rằng dữ liệu tệp trong zip không khớp nhau. Một điều khó hiểu của định dạng tệp zip là nó có một thư mục trung tâm liệt kê các tệp trong kho lưu trữ và bù đắp cho dữ liệu tệp. Nếu bạn tạo nhiều mục nhập tệp trỏ đến cùng một dữ liệu, bạn có thể đạt được tỷ lệ nén cao hơn nhiều ngay cả khi không lồng nhau, nhưng tệp zip như vậy có khả năng bị từ chối bởi trình phân tích cú pháp.