Các chức năng nén chỉ thực tế bởi vì các chuỗi bit xảy ra trong thực tế khác xa với ngẫu nhiên?


7

Tôi đã có một nhận xét, vì điều này liên quan đến câu trả lời của Andrej Bauer trong chủ đề này ; tuy nhiên, tôi tin rằng nó đáng để đặt câu hỏi

Andrej giải thích rằng với tập hợp tất cả các chuỗi bit có độ dài từ 3 trở xuống, hàm nén không mất dữ liệu chỉ có thể "nén" một số trong số chúng. Những cái khác, ví dụ "01" sẽ thực sự phải được nén thành một chuỗi như "0001", với độ dài 4. Tỷ lệ nén chỉ đơn giản là nén trung bình trên toàn bộ đầu vào.

Điều này làm cho nén không mất dữ liệu có vẻ không thực tế, nhưng trích dẫn quan trọng là:

Các chuỗi bit xảy ra trong thực tế khác xa với ngẫu nhiên và thể hiện rất nhiều tính đều đặn.

Tôi có một thời gian khó tin rằng, ví dụ, các tệp đa phương tiện được thể hiện bằng bất cứ thứ gì ngoài chuỗi bit ngẫu nhiên. Có thực sự có một mô hình mà các hàm nén tận dụng để làm cho thuật toán trở nên hữu ích trong thực tế không?


3
Tôi không phải là chuyên gia nhưng chắc chắn có rất nhiều sự đều đặn. Hãy xem xét một hình ảnh của một cái cây; màu xanh lá cây và màu nâu sẽ thống trị hình ảnh. Bởi vì chúng tôi thấy các giá trị này rất nhiều, chúng tôi có thể nén chúng thành các giá trị nhỏ hơn. Tiếp theo hãy xem xét ý tưởng nén không mất dữ liệu, nó quá tốt để trở thành sự thật. Một cái gì đó phải cung cấp. Đó là một cái gì đó đang được nói về ở đây. Cuối cùng hãy thử một thử nghiệm trong đó bạn tạo ngẫu nhiên các chuỗi và xem tỷ lệ nén được tính trung bình trong nhiều lần. Nếu bạn làm đúng (có thể khó), bạn sẽ không thấy lợi thế tổng thể thực sự.
Jake

2
Ngoài ra, ngay cả khi bạn cố tình lưu trữ dữ liệu ngẫu nhiên dưới dạng tệp đa phương tiện, bản thân tệp đó có cấu trúc lặp đi lặp lại và có thể được nén - tiêu đề, dữ liệu khung (đối với những thứ có khung), v.v.
Luke Mathieson

Câu trả lời:


10

Trước hết, bạn đúng: Các tệp đa phương tiện được thể hiện (nhiều hơn hoặc ít hơn) dưới dạng các tệp ngẫu nhiên. Lý do cho điều đó là những tập tin đó đã bị nén (mất dữ liệu). Lưu ý rằng mp3, chẳng hạn, không có gì ngoài thuật toán nén!
Hậu quả là việc nén thêm sẽ không mang lại bất kỳ nén đáng chú ý nào (và thực tế, nén không mất dữ liệu trên các tệp đã được nén (đa phương tiện) chưa bao giờ là con đường dẫn đến thành công).

Bạn cũng đúng ở điểm khác của bạn: Nén không tổn thất không thể nén trung bình. Để thấy rằng, tập dữ liệu có thể của bạn bao gồm2ncác yếu tố khác nhau. Bạn cần bao nhiêu bit cho mỗi tệp để luôn có thể phân biệt các thành phần với tập hợp của bạn? Đúng,n. Tổng cộng tất cả các tệp sẽ được đại diện bởi không ít hơnn2nchút ít. Bây giờ nếu bạn đại diện cho một số các tệp đó ít hơnn bit, một số tệp sẽ được đại diện bởi nhiều hơn nchút ít. Đó là tất cả những gì cần nói.

Nói tóm lại, nén không mất dữ liệu hoạt động vì các tệp văn bản không phải là ngẫu nhiên (chỉ cần xem xét phân phối chữ cái của câu trả lời của tôi và so sánh số lượng của e với số z !) Và nén dữ liệu ngẫu nhiên (ví dụ: đã nén dữ liệu hoặc dữ liệu được mã hóa) không có ý nghĩa gì.


Tôi nghĩ rằng bạn đang trộn vấn đề, một chút. "Nén multimedia file chưa bao giờ được một con đường dẫn đến thành công" - làm việc LZ trên đa phương tiện không nén, ví dụ như WAV hoặc TIFF? LZ được thiết kế cho các chuỗi, tức là với các giả định nhất định có thể hoặc không thể giữ cho dữ liệu không phải chuỗi.
Raphael

Tôi chắc chắn có thể thấy quan điểm của bạn khi liên quan đến các tập tin văn bản và phân phối thư. Những thứ rất thú vị.
AlexMayle

@Raphael Bạn nói đúng, nén WAV hoặc TIFF sẽ mang lại khả năng nén đáng chú ý. Tôi đã bao gồm từ "nén" trong phần tương ứng. Về điểm khác của bạn, vâng, các thuật toán LZ đã được xác định cho các chuỗi, nhưng theo như tôi biết thì zip vv hoạt động cho mọi dữ liệu nhị phân.
john_leo

Được rồi, nhưng một nhận xét thêm: không phải tất cả các nén đa phương tiện đều bị mất. Ví dụ, FLAC và PNG nén đáng kể mà không bị mất. So sánh ZIP với FLAC hoặc PNG (bắt đầu bằng WAV hoặc TIFF) có thể mang tính giáo dục đối với tác động của các giả định thiết kế.
Raphael

@Raphael thay vào đó tôi đã chọn xóa tham chiếu đến bất kỳ thuật toán nén thực tế nào, tôi thấy rằng nói về ZIP, FLAC hoặc WHATNOT có thể là một chủ đề khác.
john_leo

9

Dữ liệu đa phương tiện rất xa ngẫu nhiên, đó là lý do tại sao nó nén rất tốt. Ví dụ: một giây video ở độ phân giải 1920x1080 pixel, với màu 24 bit và 24 khung hình mỗi giây là khoảng 150 MB dữ liệu không bị nén. Các tập tin đa phương tiện đã được nén nên khó có thể nén xa hơn.

Tuy nhiên, ngay cả dữ liệu đa phương tiện không nén có thể sẽ trông khá ngẫu nhiên nếu bạn chỉ xem nó như một luồng số không và số. (Đã nói rằng, GIF được nén bằng LZW, coi chúng là, về cơ bản là một luồng bit; hoạt động tốt.) Khi bạn nhìn vào dữ liệu đa phương tiện biết ý nghĩa của nó, có rất nhiều cấu trúc trong đó.

  • Hình ảnh có rất nhiều độ dốc màu và các khối có màu tương tự nhau. JPEG sử dụng một cái gì đó rất nhiều như thế này.
  • Trong video, hầu hết mọi khung hình đều trông rất giống với khung hình ngay trước nó, với một số phần được di chuyển một chút. MPEG sử dụng rộng rãi.
  • Rất nhiều âm thanh chúng ta quan tâm là dạng sóng từ các vật thể cộng hưởng, không phải tần số ngẫu nhiên.

Tôi đã đề cập đến JPEG và MPEG, tất nhiên, mất mát. Nhưng tôi nghi ngờ rằng về nguyên tắc, bạn có thể sử dụng những ý tưởng này để tạo ra tỷ lệ nén không mất dữ liệu tốt cho dữ liệu không ngẫu nhiên này. Tôi nghi ngờ bất cứ ai sẽ cố gắng để làm điều đó, mặc dù, vì thời gian để nén có lẽ sẽ rất lớn.


Một số ví dụ tốt ở đây.
AlexMayle

1920 * 1080 * 24 * 24 là 1,11 Gb dữ liệu không nén. 150Mb là vừa đủ cho 320x480 thang độ xám. @ 1fps.
FRob

@FRob Byte, không phải bit. Tôi đã sửa "Mb" thành "MB".
David Richerby 28/03/2015

1
Về đoạn cuối: một cái gì đó như thế này thực sự được thực hiện. Có các codec âm thanh lossless dựa trên một luồng sử dụng thuật toán nén tổn thất cộng với sự khác biệt của nó với nén ban đầu theo cách thông thường.
Carsten S

3

Có, nén không mất lợi dụng thực tế là nhiều tệp không phải là ngẫu nhiên. Có, hầu hết các tập tin đa phương tiện không phải là ngẫu nhiên.

Hình ảnh fax là một ví dụ tốt về hiệu ứng này. Ở dạng đơn giản nhất, hình ảnh fax là hình ảnh đen trắng 2 chiều, thu được bằng cách quét một trang của một số tài liệu. Nếu bạn biểu diễn hình ảnh này dưới dạng một chuỗi bit, một bit trên mỗi pixel (0 = trắng, 1 = đen), thì bạn sẽ phát hiện ra rằng dữ liệu nhị phân kết quả hoàn toàn không phải là ngẫu nhiên. Chẳng hạn, đây là một số mẫu không ngẫu nhiên bạn sẽ thấy:

  • Thông thường hình ảnh fax có nhiều pixel trắng hơn pixel đen.

  • Ngoài ra, mỗi pixel có nhiều khả năng có cùng màu với pixel ở bên trái hơn là có một màu khác nhau.

  • Đối với một mẫu phức tạp hơn: Hãy tưởng tượng quét các pixel theo chiều ngang, từ trái sang phải và đếm chiều dài của mỗi "lần chạy" của các pixel liên tiếp có cùng màu. Sau đó, chạy dài là phổ biến hơn so với chạy ngắn và chạy pixel dài màu phổ biến hơn so với chạy pixel đen dài.

Các thuật toán nén fax được thiết kế để tận dụng các khía cạnh không ngẫu nhiên này. Các thuật toán nén fax sớm là một ví dụ đặc biệt tốt, bởi vì chúng là các sơ đồ nén không mất dữ liệu đơn giản khai thác trực tiếp các thuộc tính không ngẫu nhiên này của các hình ảnh được quét.

Chẳng hạn, một sơ đồ ban đầu để nén ảnh fax được sử dụng mã hóa thời lượng chạy kết hợp với mã hóa Huffman . Mã hóa độ dài chạy thay thế mỗi lần chạy của các pixel cùng màu bằng một số nguyên duy nhất đếm chiều dài của lần chạy. Chẳng hạn, 00000110001 trở thành "5 2 3 1". Mã hóa độ dài chạy khai thác thực tế là các pixel có xu hướng chạy cùng màu. Mã hóa Huffman khai thác hơn nữa thực tế là một số độ dài chạy phổ biến hơn các mã khác. Xem ở đây để biết ví dụ chi tiết về cách một trong những sơ đồ ban đầu này hoạt động - sơ đồ này đơn giản và thanh lịch và trực tiếp khai thác các mẫu được đề cập ở trên.

Các lược đồ này sẽ không cung cấp bất kỳ nén, trung bình, cho các tệp ngẫu nhiên. Tuy nhiên, hình ảnh fax được quét không phải là ngẫu nhiên và do đó, các chương trình nén này có thể mang lại sự tiết kiệm đáng kể.

Nhận xét tương tự áp dụng cho các tập tin đa phương tiện khác. Các mẫu có trong các loại tệp đa phương tiện khác có thể phức tạp hơn, nhưng vẫn có nhiều mẫu hiện diện làm cho dữ liệu không ngẫu nhiên.


0

Một tập tin âm thanh ngẫu nhiên tạo thành một loại tiếng ồn. Hầu hết mọi người lưu trữ các tập tin âm thanh với âm nhạc hoặc lời nói, không tiếng ồn.


2
Cảm ơn sự đóng góp của bạn. Bạn có thể xây dựng và thêm một số ví dụ? Ý tưởng bạn đưa ra là tốt, đúng, nhưng nó đã được trình bày trong 3 câu trả lời trước đó.
Ác

@EvilJS, hoàn toàn có thể đúng. Tôi không nghĩ rằng nên mất nửa trang để giải thích rằng có sự khác biệt giữa lời nói và tiếng ồn.
Carsten S

Không nên mất nửa trang để giải thích các sự kiện nổi bật để câu trả lời của bạn giải thích tại sao lời nói và âm nhạc bị nén nhưng tiếng ồn ngẫu nhiên thì không.
David Richerby

@DavidR Richby, dữ liệu ngẫu nhiên không nén đã được chấp nhận trong câu hỏi. Câu hỏi là "nhưng không phải dữ liệu đa phương tiện ngẫu nhiên?" mà câu trả lời là rõ ràng là không.
Carsten S
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.