Apa yang kita ketahui adalah bahwa π tidak terbatas dan sangat mungkin mengandung string setiap digit string yang mungkin ( urutan disjungtif ).
Saya baru-baru ini melihat beberapa prototipe πfs yang mengasumsikan bahwa setiap file yang Anda buat (atau orang lain) atau Anda akan buat, itu sudah ada sehingga masalah mengekstraksinya. Ada juga piFile yang dapat mengonversi file Anda ke pi metadata.
Sudah ada BBP jenis rumus (sebagai bagian dari matematika eksperimental) yang memungkinkan kita untuk menghitung n th digit biner dari pi. Jadi menyimpan posisi awal dan panjang data kami, kami secara teoritis dapat mengekstrak data yang kami minati. Ada beberapa argumen yang menentangnya bahwa metadata kami (misalnya offset ke data kami) bisa lebih besar dari data yang diekstraksi. Simbol-simbol matriks dan enc dapat dikodekan dalam basis-256 untuk membuatnya lebih efisien (lihat lelucon ).
Berdasarkan hal di atas, pertanyaan utama saya adalah:
- Apakah ada algoritma kompresi berdasarkan PI?
Jika tidak, apakah itu masuk akal? Atau ada penelitian di daerah itu?
Atau mungkin π bukan yang benar, jadi bagaimana dengan konstanta Euler atau Tau (τ)? Apakah ada bedanya?
Kredit gambar: Komik Dinosaurus
Lihat juga:
Jawaban:
Saran Anda tidak masuk akal, karena banyak alasan. Pertama-tama, ketika mencoba mengompres file besar, katakan file berukuran byte, Anda harus menemukan tempat dalam ekspansi biner π yang sesuai dengan file Anda. Karena file tersebut 128 bit panjang, orang akan berharap tempat ini menjadi sekitar 2 128 bit th. Jadi agak sulit untuk menemukannya. Ini bukan hanya karena kami harus pergi jauh ke ekspansi, tetapi juga karena kami berharap untuk mencoba 2 128 lokasi yang berbeda sebelum menemukan hit.16 π 128 2128 2128
sumber
Berdasarkan jawaban Yuval, dengan penjelasan yang sedikit berbeda dan contoh untuk membantu menerangi masalah.
Teori
Lihat juga, entropi informasi .
Contoh
Mungkin kita bisa memotong angkanya?
sumber
yeah, https://github.com/divinity76/pi_compression
tidak, menyimpan offset biasanya membutuhkan lebih banyak ruang disk daripada yang Anda simpan, setidaknya dengan implementasi di atas (3 hal penting tentang itu yang dapat ditingkatkan, ia hanya mempertimbangkan 2 ^ 32 byte pertama dari representasi biner dari pi, dan itu menggunakan jumlah bit yang berlebihan untuk menyimpan jumlah byte yang cocok per offset, yaitu 8 bit saat pengujian menunjukkan bahwa 3 bit akan optimal, dan itu hanya mempertimbangkan cocok dengan byte penuh, jadi jika ada 15 bit yang cocok di suatu tempat, itu akan hanya dianggap sebagai kecocokan 8 bit .. juga jika 4 bit terakhir dari satu byte cocok tetapi bukan bit # 3, dan 4 bit pertama dari byte berikutnya cocok tetapi bukan bit # 5, itu tidak dianggap sebagai kecocokan pada semua)
uhm yakin, itu sebabnya saya menulis implementasi di atas, dan hasilnya tampaknya bahwa dalam 4GB pertama pi, Anda cenderung menemukan 4 byte yang cocok dari .. cukup banyak apa pun, yang sangat sulit, jika bukan tidak mungkin, untuk mendapatkan kompresi apa pun, setidaknya saya gagal. (tapi implementasi saya tidak optimal, seperti yang dijelaskan di atas) - juga kompresi sangat lambat, tetapi implementasi saya adalah single-threaded, tetapi algoritma ini memungkinkan untuk multithreading jika seseorang dapat menambahkan kode, yang akan memungkinkan untuk meningkatkan kinerja dengan jumlah core yang tersedia.
dekompresi sangat cepat.
sumber
bahkan jika konstanta matematika terbukti memiliki sifat luar biasa dari "mengandung semua string", argumen sederhana adalah bahwa algoritma kompresi akan menghabiskan "terlalu banyak waktu" mencari posisi string, dan menggambarkan lokasinya sering membutuhkan panjang (er) string digit.
lihat juga / kontras / coba rekonsiliasi dengan pertanyaan suara-tinggi serupa bagaimana bisa diputuskan apakah pi berisi beberapa urutan angka . (cs.se) (petunjuk: judul dapat dianggap agak menyesatkan)
sumber