Чи є алгоритми стиснення, засновані на PI?


11

Ми знаємо, що π нескінченний, і цілком ймовірно, що він містить усі можливі кінцеві рядки цифр ( диз'юнктивна послідовність ).

Нещодавно я бачив деякий прототип πfs, який передбачає, що кожен файл, який ви створили (або хто-небудь інший), або ви створить, він вже є, тому його потрібно витягнути. Також є piFile, який може конвертувати ваші файли в метадані pi.

Вже є формула типу BBP (як частина експериментальної математики), яка дозволяє обчислити n- й двійковий розряд pi. Таким чином, зберігаючи позицію нашого початку та довжину даних, ми можемо теоретично дістати дані, що цікавлять нас. Є деякі аргументи проти того, що наші метадані (наприклад, зміщення наших даних) можуть бути більшими, ніж вилучені дані. Символи матриці та π можуть бути закодовані в base-256, щоб зробити її більш ефективною (див . Жарт ).

Виходячи з вище, головне моє питання:

  • Чи є алгоритми стиснення, засновані на PI?

Якщо ні, чи є сенс? Або були якісь дослідження в цій галузі?

А може бути, π не є правильним, то що робити з константою Ейлера або Тау (τ)? Чи має це значення?


шукати брудні слова в цифрах - НАЙЧАК веселіше, ніж шукати їх у словнику!  ASS: пі-позиція 590,725 (кодування ascii).  АЛЕ: позиція 177,031,174.  КНИГА: позиція 32 355 500.  8 == D знаходиться в положенні 158,907,339.  Я МОЖУ ДАВИТИ: ЯК ЕРОТИЧНИЙ

Графічні зображення: Комікси динозаврів


Дивись також:


15
Шановний T-rex, Ваш висновок у кадрі 2 жодним чином не випливає із твердження у кадрі 1. Недарма ваш вид вимер. З повагою,
Девід Річербі

2
насправді це відкрита та / або, можливо, нерозв'язна проблема, щоб визначити, чи з'являється якась довга низка цифр у взагалі .... пропонують вивчити теорію складностіπ
колмогорова

1
Ви впевнені, що для всіх можливих біт (даних) ви могли здебільшого дізнатися екземпляр pi, в межах -ї позиції (метаданих)? Це повинно бути, щоб це було названо "стисненням". 2 NN2N
Константин Ван

Відповіді:


17

Ваша пропозиція не має великого сенсу з багатьох причин. Перш за все, намагаючись стиснути великий файл, скажімо, файл розміром байт, вам доведеться знайти місце в двійковому розширенні яке узгоджується з вашим файлом. Оскільки файл має біт, можна було б очікувати, що це місце буде навколо -го біта. Тож було б досить важко знайти. Це не тільки тому, що нам належить зайти далеко в розширення, але й тому, що ми очікуємо спробувати різних локацій, перш ніж знайти хіт.π 128 2 128 2 12816π12821282128

По-друге, хоча в деяких випадках ваша схема призведе до значного стиснення, це відбудеться лише тоді, коли певна рядок з'явиться порівняно на початку розширення . Немає жодної причини, коли б вам хотілося стискати такий тип струни. На відміну від цього, інші алгоритми стиснення намагаються знайти структуру в даних і мають гарантії, які показують, що якщо така структура існує, то вони завжди можуть її використовувати.π

Зміна на будь-який інший номер не змінить зображення. Алгоритм занадто специфічний, стискаючи лише рядки, які нас насправді не цікавлять; і дуже неефективний у фазі стиснення.π


14

Виходячи з відповіді Юваля, з дещо іншим поясненням та прикладом, який допоможе висвітлити проблему.

Теорія

Візьміть файл довжиною байт ( біт). Алгоритм стиснення наступний:12816128

  1. Визначте, де бінарне розширення відповідає змісту.π
  2. Зберігають зміщення та кількість послідовних бітів ( ).128

Зсув вмісту файлу повинен бути близько -го біта; однак, це вимагає багато часу, щоб знайти компенсацію, оскільки це вимагає:2128

  • глибокий пошук бітового шаблону; і
  • дивлячись на різних локацій (в середньому).2128

ππ

Див. Також інформаційна ентропія .

Приклад

log2(938933556)29.830

π597,507,393log2(597507393)29.230

Може, ми можемо скинути цифри?

  • 1,124
  • 1,216
  • 11,727

36

  • 15,312,393
  • 8

2730

N


2

Чи є алгоритми стиснення, засновані на PI?

так, https://github.com/divinity76/pi_compression

чи є сенс?

ні, зберігання компенсацій зазвичай займає більше дискового простору, ніж ви економите, принаймні з вищевказаною реалізацією (3 помітні речі про нього, які можна було б покращити, хоча він вважає лише перші 2 ^ 32 байти двійкового подання pi, і це використовує надмірну кількість біт, щоб зберігати кількість співпадаючих байтів за зміщення, а саме 8 біт, а тестування показує, що 3 біти були б оптимальними, і він вважає лише повноцінними збігами, тому якщо десь збігається 15 біт, це буде вважається лише 8-бітовим збігом. Також, якщо останні 4 біти байтових збігів, але не біт №3, і перші 4 біти наступних байтних збігів, але не біт №5, це не вважається збігом у всі)

Або були якісь дослідження в цій галузі?

Ум впевнено, саме тому я написав вищевказану реалізацію, і результати здаються такими, що протягом перших 4 Гб пі, ви, швидше за все, знайдете 4 байти, що відповідають .. майже нічого, що дуже важко, якщо не неможливо, щоб отримати будь-яке стиснення з, я, принаймні, не вдалося. (але моя реалізація не є оптимальною, як пояснено вище) - також стиснення відбувається дуже повільно, але моя реалізація є однопотоковою, але алгоритм дозволяє зробити багатопотокове читання, якщо хтось міг би розібратися в написанні коду, що дозволило б масштабувати продуктивність за допомогою кількість доступних ядер.

декомпресія дуже швидка.


0

Чи є алгоритми стиснення, засновані на PI?

ππ

XπX

ππ

навіть якщо було показано, що будь-яка математична константа володіє чудовою властивістю "містити всі рядки", простий аргумент полягає в тому, що алгоритм стиснення витратить "занадто багато часу" на пошук позиції рядка, а опис його розташування часто займає довгий (ер) рядок цифр.

див. також / контраст / спробуйте примиритись із подібним голосовим запитанням, як можна вирішити, чи містить пі якась послідовність цифр . (cs.se) (натяк: заголовок можна вважати дещо оманливим)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.