Nén dữ liệu bằng số nguyên tố


22

Gần đây tôi đã tình cờ thấy bài viết thú vị sau đây tuyên bố sẽ nén hiệu quả các bộ dữ liệu ngẫu nhiên hơn 50%, bất kể loại và định dạng của dữ liệu.

Về cơ bản, nó sử dụng các số nguyên tố để xây dựng một cách duy nhất một đại diện cho các khối dữ liệu 4 byte, dễ giải nén với điều kiện mỗi số là một sản phẩm duy nhất của các số nguyên tố. Để liên kết các chuỗi này với các số nguyên tố, nó sử dụng một từ điển.

Câu hỏi của tôi là:

  • Điều này có thực sự khả thi như các tác giả đề xuất không? Theo bài báo, kết quả của họ rất hiệu quả và luôn nén dữ liệu đến kích thước nhỏ hơn. Không phải kích thước từ điển là rất lớn?
  • Điều này không thể được sử dụng để nén lại dữ liệu nén bằng cùng một thuật toán? Rõ ràng, và đã được chứng minh rằng các kỹ thuật như vậy (trong đó dữ liệu nén được nén lại nhiều lần nhất có thể, giảm đáng kể kích thước tệp) là không thể; thật vậy, sẽ không có sự lựa chọn nào giữa tập hợp tất cả dữ liệu ngẫu nhiên và dữ liệu nén. Vậy tại sao điều này cảm thấy như nó sẽ có thể?
  • Ngay cả khi kỹ thuật này vẫn chưa hoàn hảo, rõ ràng nó có thể được tối ưu hóa và cải thiện mạnh mẽ. Tại sao điều này không được biết đến / nghiên cứu rộng rãi hơn? Nếu thực sự những tuyên bố và kết quả thử nghiệm này là đúng, thì điều này không thể cách mạng hóa điện toán?

5
Như bạn đã quan sát, bài báo đang đưa ra những tuyên bố thực sự mạnh mẽ. Luôn luôn nghi ngờ về những tuyên bố như vậy, đặc biệt là nếu bài báo được xuất bản ở một địa điểm kỳ lạ (bài báo tuyệt vời "cách mạng hóa điện toán" sẽ xuất hiện ở những địa điểm nổi tiếng được tôn trọng, phải không?).
Juho

2
không thể "luôn nén dữ liệu ngẫu nhiên" dựa trên lý thuyết phức tạp kolmogorov . và một disproof tương tự như cách bạn đã phác thảo ra. không chắc chắn nếu đây là một giải thích sai của bài báo hoặc trong bài báo gốc. Tại sao bạn không nêu bật nơi yêu cầu cụ thể đó đến?
vzn

6
"Điều này không thể được sử dụng để nén lại dữ liệu nén bằng cùng một thuật toán sao?" - Vâng. Bất kỳ thuật toán nào tuyên bố có thể nén tất cả dữ liệu tùy ý đều có thể được áp dụng đệ quy cho đầu ra của chính nó sao cho mọi dữ liệu được nén thành 0 bit. Vì vậy, yêu cầu này là không thể.
Jörg W Mittag

1
@ JörgWMittag Tôi có một thuật toán cho phép bạn nén một tệp liên tục thành một số lượng nhỏ bit, nhưng nó cực kỳ không thực tế. Cũng chỉ hoạt động với các tệp bắt đầu bằng 1 bit: Xử lý toàn bộ tệp dưới dạng số nhị phân lớn, giảm dần, sau đó loại bỏ các số 0 đứng đầu. Để giải nén, tăng nó, thêm số 1 nếu cần.
dùng253751

3
Lưu ý đến bản thân: Đừng bận tâm gửi bất kỳ giấy tờ nào cho bất kỳ tạp chí Elsevier nào - bao giờ hết.
500 - Lỗi máy chủ nội bộ

Câu trả lời:


34

luôn nén các bộ dữ liệu ngẫu nhiên hơn 50%

Không thể nào. Bạn không thể nén dữ liệu ngẫu nhiên , bạn cần một số cấu trúc để tận dụng. Nén phải có thể đảo ngược, do đó bạn không thể nén mọi thứ bằng 50% vì có ít hơn chuỗi có độ dài n .n/2n

Có một số vấn đề chính với bài báo:

  • Họ sử dụng 10 tệp thử nghiệm mà không có bất kỳ dấu hiệu nào về nội dung của họ. Là dữ liệu thực sự ngẫu nhiên? Chúng được tạo ra như thế nào?

  • Họ tuyên bố đạt được tỷ lệ nén ít nhất 50%, trong khi dữ liệu thử nghiệm của họ cho thấy họ đạt được nhiều nhất là 50%.

Thuật toán này xác định một chiến lược không tổn thất, sử dụng các số nguyên tố có trong hệ thống số thập phân

  • Gì? Số nguyên tố là số nguyên tố bất kể cơ sở.

  • Vấn đề # 1 với giải nén: hệ số nguyên tố là một vấn đề khó, làm thế nào để họ làm điều đó một cách hiệu quả?

  • Phát hành # 2 với giải nén ( đây là kicker ): họ nhân các số nguyên tố cùng nhau, nhưng làm như vậy bạn sẽ mất bất kỳ thông tin về trình tự, vì . Tôi không nghĩ có thể giải nén bằng kỹ thuật của họ.25= =10= =52

Tôi không nghĩ rằng bài viết này là rất tốt.


Từ những gì tôi hiểu, họ lưu trữ thứ tự của các chuỗi với cùng bội số trong từ điển. Nhưng trong các tập dữ liệu ngẫu nhiên, điều này có nên tạo ra một từ điển khổng lồ hay không, với điều kiện là có nhiều chuỗi 4 byte có bội số 1 (hoặc bội số bằng nhau)?
Klangen

@Pickle Trong ví dụ của họ, chuỗi "@THE" có bội số 2. Tôi không thấy cách họ có thể tái cấu trúc trong đó hai vị trí của từ "the" nên đi.
Tom van der Zanden 21/07/2015

1
Ah tôi thấy. Quan sát tốt. Thật vậy, đó là một vấn đề lớn. Làm thế nào bài báo này được chấp nhận để xuất hiện trong tạp chí? Không nên có đánh giá ngang hàng nghiêm ngặt hơn?
Klangen

4
@Pickle Vâng, cần có sự xem xét chặt chẽ hơn. Tuy nhiên, điều đó không phải luôn luôn như vậy, đôi khi những người tổ chức hội nghị thiếu kinh nghiệm / lười biếng / không đủ năng lực không quản lý để tìm ra những người đánh giá ngang hàng kịp thời. Có nhiều lần xuất hiện các bài báo có chứa tiếng vô nghĩa được tạo ngẫu nhiên được chấp nhận và một tạp chí thậm chí đã xuất bản một bài báo có tiêu đề "Đưa tôi ra khỏi danh sách gửi thư chết tiệt của bạn" .
Tom van der Zanden 21/07/2015

Hahaha thật tuyệt vời. Nhưng buồn cùng một lúc.
Klangen

15

Tôi sẽ trì hoãn Tom van der Zanden, người dường như đã đọc bài báo và phát hiện ra một điểm yếu trong phương pháp. Mặc dù tôi không đọc chi tiết bài báo, đi từ bảng tóm tắt và bảng kết quả, nó có vẻ như là một tuyên bố đáng tin cậy rộng rãi.

Những gì họ tuyên bố là tỷ lệ nén 50% nhất quán trên các tệp văn bản (không phải "tất cả các tệp"), mà họ lưu ý là giống với LZW và kém hơn khoảng 10% so với mã hóa Huffman (có lẽ là không có thứ tự). Nén các tệp văn bản bằng 50% không khó để đạt được bằng các phương pháp hợp lý đơn giản; đó là một nhiệm vụ đại học trong nhiều khóa học khoa học máy tính.

Tôi đồng ý rằng bài báo không hay như nghiên cứu đã được công bố và tôi không nghĩ nó nói tốt về những người đánh giá rằng điều này đã được chấp nhận. Ngoài các chi tiết bị thiếu rõ ràng làm cho kết quả không thể sao chép (ví dụ: tệp văn bản là gì) và không cố gắng buộc nó vào trường nén, không có nghĩa là họ thực sự hiểu thuật toán của họ đang làm gì.

Trang web hội nghị tuyên bố tỷ lệ chấp nhận 1: 4, khiến bạn tự hỏi họ đã từ chối điều gì.


12

Bạn hỏi:

  • Điều này có thực sự khả thi như các tác giả đề xuất không? Theo bài báo, kết quả của họ rất hiệu quả và luôn nén dữ liệu đến kích thước nhỏ hơn. Không phải kích thước từ điển là rất lớn?

Phải, tất nhiên. Ngay cả đối với ví dụ được chọn bằng tay của họ ("NHỮNG BẠC FOX BẠC NHANH QUÁ NHIỀU DOG LAZY"), họ không đạt được nén, vì từ điển chứa mỗi chuỗi con 4 byte của văn bản (trừ 4 byte cho một lần lặp lại " THE ") ... và phiên bản" nén "của văn bản phải bao gồm toàn bộ từ điển cộng với tất cả số nguyên tố này.

  • Điều này không thể được sử dụng để nén lại dữ liệu nén bằng cùng một thuật toán? Rõ ràng, và đã được chứng minh rằng các kỹ thuật như vậy (trong đó dữ liệu nén được nén lại nhiều lần nhất có thể, giảm đáng kể kích thước tệp) là không thể; thật vậy, sẽ không có sự lựa chọn nào giữa tập hợp tất cả dữ liệu ngẫu nhiên và dữ liệu nén. Vậy tại sao điều này cảm thấy như nó sẽ có thể?

Một lần nữa bạn dường như có một nắm bắt trực quan tốt của tình huống. Bạn đã nhận ra một cách trực giác rằng không có sơ đồ nén nào có thể có hiệu quả trên tất cả các đầu vào, bởi vì nếu có, chúng ta chỉ có thể áp dụng nó nhiều lần để nén bất kỳ đầu vào nào xuống một bit - và sau đó là hư vô!

Nói cách khác: Một khi bạn đã nén tất cả các tệp .wav của mình thành .mp3, bạn sẽ không nhận được bất kỳ cải thiện nào về kích thước tệp bằng cách nén chúng. Nếu máy nén MP3 của bạn đã hoàn thành công việc, sẽ không có bất kỳ mẫu nào còn lại để máy nén ZIP khai thác.

(Điều tương tự cũng áp dụng cho mã hóa: nếu tôi lấy một tệp số 0 và mã hóa nó theo thuật toán mã hóa mà tôi chọn, thì tệp kết quả tốt hơn là không thể nén được , nếu không thì thuật toán mã hóa của tôi bị rò rỉ "mẫu" vào đầu ra của nó!)

  • Ngay cả khi kỹ thuật này vẫn chưa hoàn hảo, rõ ràng nó có thể được tối ưu hóa và cải thiện mạnh mẽ. Tại sao điều này không được biết đến / nghiên cứu rộng rãi hơn? Nếu thực sự những tuyên bố và kết quả thử nghiệm này là đúng, thì điều này không thể cách mạng hóa điện toán?

Những tuyên bố và kết quả thí nghiệm là không đúng sự thật.

Như Tom van der Zanden đã lưu ý, "thuật toán nén" của Chakraborty, Kar và Guchait không hoàn hảo ở chỗ nó không chỉ không đạt được bất kỳ tỷ lệ nén nào, mà còn không thể đảo ngược (trong toán học, "không tính toán") vô số các văn bản mà tất cả "nén" vào cùng một hình ảnh, bởi vì thuật toán của chúng về cơ bản là nhân và nhân là giao hoán.

Bạn sẽ cảm thấy tốt vì sự hiểu biết trực quan của bạn về các khái niệm này đã đưa bạn đến kết luận đúng ngay lập tức. Và, nếu bạn có thể dành thời gian, bạn nên cảm thấy thương hại cho các tác giả của bài báo rõ ràng đã dành rất nhiều thời gian để suy nghĩ về chủ đề mà không hiểu gì về nó.

Thư mục tệp một cấp trên URL bạn đã đăng chứa 139 "giấy tờ" có cùng chất lượng, tất cả rõ ràng được chấp nhận vào "Kỷ yếu hội thảo quốc tế về nghiên cứu mới nổi về máy tính, thông tin, truyền thông và ứng dụng". Đây dường như là một hội nghị giả mạo của loại thông thường. Mục đích của các hội nghị như vậy là cho phép các học giả lừa đảo tuyên bố "xuất bản trong một tạp chí", đồng thời cho phép các nhà tổ chức vô đạo đức kiếm được rất nhiều tiền. (Để biết thêm về các hội nghị giả, hãy xem chủ đề reddit này hoặc các bài đăng StackExchange khác nhau về chủ đề này .) Các hội nghị Sham tồn tại trong mọi lĩnh vực. Chỉ cần học cách tin vào bản năng của bạn và không tin tất cả những gì bạn đọc trong một "tiến trình hội nghị", và bạn sẽ làm tốt.


Cảm ơn vì đã nêu rõ lý do tại sao bài báo này là tào lao đơn giản, và cho biết làm thế nào thậm chí có thể nó được viết ở nơi đầu tiên và nó đã xoay sở để trải qua bất kỳ loại đánh giá nào.
vaab

Cảm ơn câu trả lời súc tích của bạn. Thật sự rất buồn khi bạn thậm chí không thể tin tưởng các mục tạp chí ít nhất được xem xét bởi một nhóm nào đó. Điều này thực sự làm sáng tỏ rất nhiều về thực tế rằng người ta phải cảnh giác ngay cả khi đọc các ấn phẩm tạp chí khoa học "được cho là". Người ta sẽ nghĩ rằng những bài viết như vậy không chỉ là chủ đề để "đánh giá", mà còn là một "phân tích" ngang hàng tối thiểu, như thường lệ trong các lĩnh vực như vậy. Tôi hy vọng điều này sẽ trở thành một mắt mở cho một số người.
Klangen

Tôi đã học được rằng ngày nay tồn tại ít nhất hai bằng sáng chế của Hoa Kỳ về "thuật toán nén vô hạn" tương tự. Xem gailly.net/05533051.html
Quuxplusone

5

Entropy giới hạn hiệu quả của việc nén không mất dữ liệu mạnh nhất có thể. Do đó, không tồn tại thuật toán nào có thể nén các tập dữ liệu ngẫu nhiên luôn luôn hơn 50%.


8
Thậm chí không tồn tại một thuật toán có thể nén các bộ dữ liệu ngẫu nhiên luôn luôn hơn 0,0000001%.
David Richerby 21/07/2015

1

Các phương pháp nén, đáng chú ý, nói chung tìm một mô hình và thể hiện lại nó một cách đơn giản. Một số rất thông minh, một số rất đơn giản. Tại một số điểm không có mô hình. Quá trình đã 'luộc' dữ liệu được đặt thành mẫu duy nhất đơn giản nhất. Bất kỳ nỗ lực nén nào từ thời điểm đó chuyển tiếp đều dẫn đến một tập dữ liệu lớn hơn hoặc làm loãng tính duy nhất. Trong các sơ đồ nén số ma thuật luôn có một lỗ hổng, hoặc một chút nhẹ tay hoặc mất mát. hãy cảnh giác với bất kỳ quy trình nào tuyên bố sẽ thực hiện WinZip hoặc RAR mới nhất.


2
SSS

1
@DavidR Richby, sau đó việc nén chuỗi rỗng của bạn tạo ra một tập dữ liệu lớn hơn, theo yêu cầu của SkipBerne. Tuy nhiên, tôi nghĩ rằng câu trả lời của anh ta nên làm rõ rằng anh ta đang đề cập đến việc giải nén đầu ra trước đó bằng cùng một thuật toán .
Ángel

2
@ Ángel Yêu cầu của SkipBerne là tồn tại các chuỗi không thể nén bằng bất kỳ thuật toán nào (" mọi nỗ lực nén từ thời điểm đó trở đi", tôi nhấn mạnh). Điều đó không chính xác vì lý do tôi đưa ra: đối với mỗi chuỗi, tồn tại một thuật toán nén chuỗi đó.
David Richerby

Cách tôi diễn giải nó SkipBerne đang tuyên bố rằng đối với mọi thuật toán nén đều có một chuỗi không thể nén được. Cái nào đúng. Chuỗi không thể nén đó sẽ khác nhau cho các thuật toán khác nhau, tất nhiên.
Jose Antonio phục hồi lại

@DavidR Richby Bạn đang đặt sai số lượng tử - rõ ràng là SkipBerne đã viết rằng (đối với bất kỳ phương pháp nén nào, có một điểm mà sau đó không có nén), không phải là (sau đó có một điểm cho bất kỳ phương pháp nén nào, có không nén). Câu trả lời này thực sự chính xác, nhưng không thêm bất cứ điều gì vào câu trả lời cũ hơn, được viết tốt hơn.
Gilles 'SO- ngừng trở nên xấu xa'
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.