Возможно ли Terra Compression? Если да, пожалуйста, объясните и предоставьте образцы - PullRequest
0 голосов
/ 23 августа 2010

Длинный текст строки Ascii может быть, а может и не быть сжат и сжат в хеш-вид контрольной суммы ascii с помощью сложной математической формулы / алгоритма. Как воздух, который можно сжать.

Чтобы сжать мегабайты текста ascii в 128 или около того байтов, перетасовывая, а затем смешивая новые «шаблоны» отдельных «байтов», по очереди поворачивая от первого к последнему. Когда мы распаковываем его, сначала извлекается последний символ, а затем мы просто продолжаем распаковку, используя формулу и последовательные ключи от последнего к первому. Последовательные ключи и последний и первый байты должны быть точно известны, включая полностью обновленную окончательную скомпилированную строку и общее количество байтов, которые были сжаты.

Это сжатие терры, о котором я думал. Это возможно? Можете ли вы объяснить примеры. Я работаю над этой теорией, и это моя собственная мысль.

Ответы [ 7 ]

8 голосов
/ 23 августа 2010

В общем? Абсолютно нет.

Для каких-то конкретных случаев? Ага. Мегабайт текста ASCII, состоящий только из пробелов, вероятно, будет очень хорошо сжиматься. Реальный текст обычно сжимает довольно хорошо ... но не порядка нескольких мегабайт в 128 байтов.

Подумайте, сколько строк - даже строк правильных английских слов - может уместиться в несколько мегабайт. Гораздо больше, чем 256 ^ 128. Они не могут все сжать до 128 байт по принципу "голубиного отверстия" ...

6 голосов
/ 23 августа 2010

Если у вас есть n возможных строк ввода и m возможных сжатых строк и m меньше n , тогда две строки должны отображатьсяв ту же сжатую строку.Это называется принципом pigeonhole и является основной причиной, по которой существует ограничение на объем данных, которые можно сжимать.

То, что вы описываете, больше похоже на хеш-функцию.Многие хеш-функции спроектированы так, что при наличии хеша строки крайне маловероятно, что вы найдете другую строку, которая дает тот же хеш.Но нет никакого способа, которым с помощью хэша вы можете обнаружить исходную строку.Даже если вам удастся отменить операцию хеширования, чтобы получить действительный ввод, который дает этот хеш, существует бесконечно много других входных данных, которые дали бы такой же хеш.Вы не знаете, какой из них «правильный».

3 голосов
/ 23 августа 2010

Теория информации - это научная область, в которой рассматриваются вопросы такого рода. Это также дает вам возможность рассчитать минимальное количество битов, необходимое для хранения сжатого сообщения (со сжатием без потерь). Эта нижняя граница известна как Энтропия сообщения.

Расчет энтропии фрагмента текста возможен с использованием марковской модели . Такая модель использует информацию о вероятности определенной последовательности символов алфавита.

2 голосов
/ 23 августа 2010

Воздушная аналогия очень неправильная.

Когда вы сжимаете воздух, вы приближаете молекулы друг к другу, каждой молекуле отводится меньше места.

Когда вы сжимаете данные, вы не можете сделать бит меньше (если вы не положите жесткий диск в гидравлический пресс). Самое близкое из того, что вы можете на самом деле сделать битами меньше, это увеличить пропускную способность сети, но это не сжатие.

Сжатие заключается в нахождении обратимой формулы для расчета данных. «Правила» сжатия данных похожи на

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

Чтобы понять, как работает сжатие, вы можете изучить несколько примеров, таких как Кодировка длин серий и Lempel Ziv Welch .

1 голос
/ 23 августа 2010

Возможно, вы думаете о фрактальном сжатии , которое эффективно работает, сохраняя формулу и начальные значения.Формула повторяется определенное количество раз, и в результате получается аппроксимация исходного ввода.

Это допускает высокое сжатие, но с потерями (выходные данные близки к входным, но не совсемто же самое) и сжатие может быть очень медленным.Несмотря на это, соотношение 170: 1 является самым высоким, достигнутым на данный момент.

0 голосов
/ 23 августа 2010

Это немного не по теме, но мне напоминают о потоке Broloid , который появился в USENET ... назад, когда USENET был еще интересен.

Серьезно, любой, кто утверждает, что имеет магический алгоритм сжатия, который уменьшает любой текстовый мегабайтный файл до нескольких сотен байтов, является либо:

  • мошенник,
  • тот, кто не понимает основную теорию информации, или
  • и.
0 голосов
/ 23 августа 2010

Вы можете сжимать тест до определенной степени, потому что он не использует все доступные биты (т.е. a-z и A-Z составляют 52 из 256 значений). Повторяющиеся шаблоны допускают интеллектуальное хранение (zip).

Существует нет способа хранения произвольных больших кусков текста в любом фиксированном количестве байтов.

Вы можете сжимать воздух, но не удаляете его молекулы! Масса остается неизменной.

...