Kompresi data menggunakan bilangan prima


22

Saya baru-baru ini menemukan artikel menarik berikut yang mengklaim secara efisien mengompresi set data acak dengan selalu lebih dari 50%, terlepas dari jenis dan format data.

Pada dasarnya ia menggunakan bilangan prima untuk secara unik membangun representasi potongan data 4-byte yang mudah untuk didekompresi mengingat bahwa setiap angka adalah produk unik bilangan prima. Untuk menghubungkan urutan ini dengan bilangan prima, ia menggunakan kamus.

Pertanyaanku adalah:

  • Apakah ini benar-benar layak seperti yang disarankan oleh penulis? Menurut kertas, hasilnya sangat efisien dan selalu kompres data ke ukuran yang lebih kecil. Bukankah ukuran kamus akan sangat besar?
  • Tidak bisakah ini digunakan untuk secara berulang mengkompres ulang data yang dikompres menggunakan algoritma yang sama? Jelas, dan telah didemonstrasikan, bahwa teknik seperti itu (di mana data yang dikompres kembali dikompres sebanyak mungkin, secara dramatis mengurangi ukuran file) tidak mungkin; memang, tidak akan ada penipisan antara set semua data acak dan data terkompresi. Jadi mengapa ini terasa mungkin?
  • Bahkan jika tekniknya belum sempurna, itu jelas dapat dioptimalkan dan sangat ditingkatkan. Mengapa ini tidak banyak diketahui / dipelajari? Jika memang klaim dan hasil eksperimen ini benar, tidak bisakah ini merevolusi komputasi?

5
Seperti yang Anda amati, makalah ini membuat klaim yang sangat kuat. Selalu sangat curiga terhadap klaim seperti itu, terutama jika makalah tersebut diterbitkan di tempat yang aneh (makalah yang luar biasa "merevolusi komputasi" harus muncul di tempat-tempat terkenal yang disegani, bukan?).
Juho

2
tidak mungkin untuk "selalu kompres data acak" berdasarkan misalnya pada teori kompleksitas kolmogorov . dan disproof mirip dengan cara Anda membuat sketsa. tidak yakin apakah ini adalah salah tafsir dari kertas atau di kertas asli. mengapa Anda tidak menyoroti di mana klaim khusus itu masuk?
vzn

6
"Tidak bisakah ini digunakan untuk mengulangi kompresi data yang dikompresi menggunakan algoritma yang sama?" - Iya nih. Setiap algoritma yang klaim untuk dapat memampatkan semua data yang sewenang-wenang dapat rekursif diterapkan untuk output sendiri sehingga data dikompresi ke 0 bit. Dengan demikian, klaim ini tidak mungkin.
Jörg W Mittag

1
@ JörgWMittag Saya memiliki algoritme yang memungkinkan Anda memampatkan file berulang kali ke sejumlah kecil bit, tetapi ini sangat tidak praktis. Juga hanya berfungsi dengan file yang dimulai dengan 1 bit: Perlakukan seluruh file sebagai angka biner yang besar, kurangi, lalu buang dulu 0. Untuk mendekompres, tambahkan, tambahkan 1 jika perlu.
user253751

3
Catatan untuk diri sendiri: Jangan repot-repot mengirimkan makalah ke jurnal Elsevier - selamanya.
500 - Kesalahan Server Internal

Jawaban:


34

selalu kompres kumpulan data acak lebih dari 50%

Itu tidak mungkin. Anda tidak dapat mengompresi data acak , Anda perlu beberapa struktur untuk memanfaatkan. Kompresi harus dapat dibalik, sehingga Anda tidak dapat mengompresi semuanya hingga 50% karena ada string yang jauh lebih kecil dari daripada panjangnya yang n .n/2n

Ada beberapa masalah utama dengan makalah ini:

  • Mereka menggunakan 10 file uji tanpa indikasi konten mereka. Apakah datanya benar-benar acak? Bagaimana mereka dihasilkan?

  • Mereka mengklaim mencapai rasio kompresi setidaknya 50%, sementara data uji mereka menunjukkan mereka mencapai paling banyak 50%.

Algoritma ini mendefinisikan strategi lossless yang memanfaatkan bilangan prima yang ada dalam sistem bilangan desimal

  • Apa? Bilangan prima adalah bilangan prima terlepas dari pangkalannya.

  • Masalah # 1 dengan dekompresi: faktorisasi utama adalah masalah yang sulit, bagaimana mereka melakukannya secara efisien?

  • Masalah # 2 dengan dekompresi ( ini adalah kicker ): mereka mengalikan bilangan prima bersama-sama, tetapi dengan melakukannya Anda kehilangan informasi tentang pesanan, karena . Saya pikir tidak mungkin untuk melakukan kompresi sama sekali menggunakan teknik mereka.25=10=52

Saya rasa makalah ini tidak bagus.


Dari apa yang saya mengerti, mereka menyimpan urutan string dengan multiplisitas yang sama di kamus. Tetapi dalam set data acak, tidakkah ini menghasilkan kamus yang sangat besar, mengingat bahwa ada banyak string 4-byte dengan multiplisitas 1 (atau multiplisitas yang sama)?
Klangen

@Pickle Dalam contoh mereka, string "@THE" memiliki multiplisitas 2. Saya tidak melihat bagaimana mereka dapat merekonstruksi di mana dua tempat kata "the" harus pergi.
Tom van der Zanden

1
Ah, begitu. Pengamatan yang bagus. Memang, itu adalah masalah utama. Bagaimana makalah ini diterima muncul di jurnal? Tidakkah seharusnya ada peer review yang lebih teliti?
Klangen

4
@Pickle Ya, harus ada peninjauan yang lebih ketat. Namun tidak selalu demikian, terkadang penyelenggara konferensi yang tidak berpengalaman / malas / tidak kompeten tidak berhasil menemukan peer reviewer tepat waktu. Ada beberapa kemunculan makalah yang berisi omong kosong yang dihasilkan secara acak diterima, dan satu jurnal bahkan menerbitkan makalah berjudul "Keluarkan aku dari milis sialanmu" .
Tom van der Zanden

Hahaha itu luar biasa. Tapi sedih sekaligus.
Klangen

15

Saya akan tunduk pada Tom van der Zanden yang tampaknya telah membaca koran dan menemukan kelemahan dalam metode ini. Meskipun saya tidak membaca makalah secara detail, dari abstrak dan tabel hasil, sepertinya klaim yang dipercaya luas.

Apa yang mereka klaim adalah rasio kompresi 50% yang konsisten pada file teks (bukan "semua file"), yang mereka catat hampir sama dengan LZW dan sekitar 10% lebih buruk daripada (mungkin tanpa urutan) Huffman coding. Mengompresi file teks sebesar 50% tidak sulit dicapai dengan menggunakan metode yang cukup sederhana; ini adalah tugas sarjana di banyak program ilmu komputer.

Saya setuju bahwa makalah ini tidak terlalu bagus sebagai penelitian yang dipublikasikan, dan saya tidak berpikir itu berbicara dengan baik dari pengulas bahwa ini diterima. Terlepas dari detail yang jelas hilang yang membuat hasil tidak mungkin untuk direproduksi (misalnya apa file teks itu), dan tidak ada upaya untuk mengikatnya ke bidang kompresi, tidak ada gunanya mereka benar-benar memahami apa yang dilakukan algoritma mereka.

Situs web konferensi mengklaim rasio penerimaan 1: 4, yang membuat Anda bertanya-tanya apa yang mereka tolak.


12

Anda bertanya:

  • Apakah ini benar-benar layak seperti yang disarankan oleh penulis? Menurut kertas, hasilnya sangat efisien dan selalu kompres data ke ukuran yang lebih kecil. Bukankah ukuran kamus akan sangat besar?

Ya tentu saja. Bahkan untuk contoh pilihan mereka sendiri ("FOX SILVER CEPAT MELOMPAT DARI LAZY DOG"), mereka tidak mencapai kompresi, karena kamus berisi setiap substring teks 4-byte (minus 4 byte untuk satu pengulangan dari ") THE ") ... dan versi" terkompresi "dari teks harus menyertakan seluruh kamus plus semua omong kosong bilangan prima ini.

  • Tidak bisakah ini digunakan untuk secara berulang mengkompres ulang data yang dikompres menggunakan algoritma yang sama? Jelas, dan telah didemonstrasikan, bahwa teknik seperti itu (di mana data yang dikompresi kembali dikompresi sebanyak mungkin, secara dramatis mengurangi ukuran file) tidak mungkin; memang, tidak akan ada penipisan antara set semua data acak dan data terkompresi. Jadi mengapa ini terasa mungkin?

Sekali lagi Anda tampaknya memiliki pemahaman intuitif yang baik tentang situasi tersebut. Anda secara intuitif menyadari bahwa tidak ada skema kompresi yang bisa efektif pada semua input, karena jika ya, kita bisa menerapkannya berulang-ulang untuk mengompresi input apa pun menjadi satu bit - dan kemudian ke ketiadaan!

Dengan kata lain: Setelah Anda mengompres semua file .wav Anda ke .mp3, Anda tidak akan mendapatkan peningkatan dalam ukuran file dengan zip mereka. Jika kompresor MP3 Anda telah melakukan tugasnya, tidak akan ada pola yang tersisa untuk dieksploitasi oleh kompresor ZIP.

(Hal yang sama berlaku untuk enkripsi: jika saya mengambil file nol dan mengenkripsi sesuai dengan algoritma kriptografi pilihan saya, file yang dihasilkan lebih baik tidak kompresibel , atau algoritma enkripsi saya bocor "pola" ke dalam outputnya!)

  • Bahkan jika tekniknya belum sempurna, itu jelas dapat dioptimalkan dan sangat ditingkatkan. Mengapa ini tidak banyak diketahui / dipelajari? Jika memang klaim dan hasil eksperimen ini benar, tidak bisakah ini merevolusi komputasi?

Klaim dan hasil eksperimen ini tidak benar.

Seperti yang telah dicatat oleh Tom van der Zanden, "algoritma kompresi" Chakraborty, Kar, dan Guchait cacat karena tidak hanya tidak mencapai rasio kompresi, tetapi juga ireversibel (dalam matematika, "tidak bijektif"): ada banyak teks yang semuanya "kompres" ke gambar yang sama, karena algoritme mereka pada dasarnya adalah perkalian dan perkalian adalah komutatif.

Anda harus merasa senang bahwa pemahaman intuitif Anda tentang konsep-konsep ini membawa Anda ke kesimpulan yang tepat secara instan. Dan, jika Anda dapat meluangkan waktu, Anda harus merasa kasihan kepada penulis makalah yang jelas menghabiskan banyak waktu untuk memikirkan topik tersebut tanpa memahaminya sama sekali.

Direktori file satu tingkat di atas URL yang Anda posting berisi 139 "makalah" dengan kualitas yang sama, semua tampaknya diterima ke dalam "Prosiding Konferensi Internasional tentang Penelitian yang Berkembang dalam Komputasi, Informasi, Komunikasi dan Aplikasi." Tampaknya ini adalah konferensi palsu dari tipe yang biasa. Tujuan konferensi semacam itu adalah untuk memungkinkan akademisi yang curang mengklaim "publikasi dalam jurnal", sementara juga memungkinkan penyelenggara yang tidak bermoral menghasilkan banyak uang. (Untuk informasi lebih lanjut tentang konferensi palsu, lihat utas reddit ini atau berbagai posting StackExchange tentang hal ini .) Konferensi palsu ada di setiap bidang. Belajarlah untuk memercayai naluri Anda dan tidak percaya semua yang Anda baca dalam "proses konferensi", dan Anda akan baik-baik saja.


Terima kasih telah menyatakan dengan jelas mengapa makalah ini omong kosong, dan katakan bagaimana mungkin itu ditulis di tempat pertama dan bahwa ia berhasil melalui semua jenis peninjauan.
vaab

Terima kasih atas jawaban singkat Anda. Sungguh menyedihkan ketika Anda bahkan tidak bisa mempercayai entri jurnal untuk setidaknya ditinjau oleh semacam rekan. Ini benar-benar memberi banyak cahaya pada fakta bahwa seseorang harus waspada bahkan ketika membaca publikasi jurnal ilmiah "seharusnya". Orang akan berpikir bahwa artikel semacam itu tidak hanya tunduk pada peer "review", tetapi juga dengan "analisis" peer minimal, seperti yang biasa dalam bidang tersebut. Saya harap ini menjadi pembuka mata bagi sejumlah orang.
Klangen

Saya belajar hari ini bahwa setidaknya ada dua paten AS pada "algoritma kompresi tak terbatas" yang serupa. Lihat gailly.net/05533051.html
Quuxplusone

5

Entropy secara efektif membatasi kinerja kompresi lossless terkuat yang mungkin. Dengan demikian tidak ada algoritma yang dapat mengompres set data acak dengan selalu lebih dari 50%.


8
Bahkan tidak ada algoritma yang dapat mengompres kumpulan data acak dengan selalu lebih dari 0,0000001%.
David Richerby

1

Metode kompresi, yang dapat dipulihkan, secara umum menemukan pola dan mengekspresikannya dengan cara yang sederhana. Beberapa sangat pintar, beberapa sangat sederhana. Di beberapa titik tidak ada pola. Proses ini telah 'mendidihkan' data yang ditetapkan menjadi pola unik yang paling sederhana. Setiap upaya kompresi dari titik itu menghasilkan set data yang lebih besar, atau melemahkan keunikannya. Dalam skema kompresi angka ajaib selalu ada kelemahan, atau sedikit tangan, atau kerugian. berhati-hatilah terhadap proses yang mengklaim tidak melakukan WinZip atau RAR terbaru.


2
sss

1
@ DavidRicherby, maka kompresi string kosong Anda menghasilkan kumpulan data yang lebih besar, seperti yang diklaim oleh SkipBerne. Namun, saya pikir jawabannya harus menjelaskan bahwa ia merujuk tentang mengkompresi ulang output sebelumnya menggunakan algoritma yang sama .
Ángel

2
Klaim @ Ángel SkipBerne adalah bahwa ada string yang tidak dapat dikompresi oleh algoritma apa pun (" segala upaya kompresi dari titik itu ke depan", penekanan saya). Itu tidak benar karena alasan yang saya berikan: untuk setiap string, ada algoritma yang memampatkan string itu.
David Richerby

Cara saya menafsirkannya SkipBerne mengklaim bahwa untuk setiap algoritma kompresi ada string yang tidak dapat dikompres. Yang mana yang benar. String yang tidak terkompresi itu akan berbeda untuk algoritma yang berbeda, tentu saja.
Jose Antonio Reinstate Monica

@ DavidRicherby Anda salah menempatkan quantifiers - cukup jelas bahwa SkipBerne menulis bahwa (untuk metode kompresi apa pun, ada titik setelah mana tidak ada kompresi), bukan itu (ada titik setelah itu untuk metode kompresi, ada tidak ada kompresi). Jawaban ini memang benar secara faktual, tetapi tidak menambahkan apa pun ke jawaban yang lebih tua dan lebih baik.
Gilles 'SANGAT berhenti menjadi jahat'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.