Еще одна бредовая теория архиватора.

Модератор: Модераторы разделов

Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Еще одна бредовая теория архиватора.

Сообщение demongloom »

Сабж. На этот раз все может быть вполне реальней и не нужно ждать 3 миллиарда лет пока архиватор рандомно сгенерирует файл. Тут проще.
Все ниже полное ИМХО. Я могу полностью заблуждаться, так что пока не поздно откройте глаза себе или мне. Так что шибко не ругайте.

Итак как известно в файле с обычной кодировкой можно сохранить лишь 256 символов. Это спец символы, цифры, латиница и буквы кодировки. Русские, либо иврит, либо китайские и т.д. С этой же проблеммой сталкиваются все архиваторы. Поэтому разрабатываются хитроумные алгоритмы для сжатия данных. Так как если каждый повторяющийся блок данных кодировать 1 символом, то их кол-во упирается в 256 символьное ограничение.

Но ведь есть утф кодировка которая позволяет сохранять в одном файле целую кучу разнообразных символов, начиная от русского и кончая китайскими. Следовательно...
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
Kot-Mulder
Сообщения: 99

Re: Еще одна бредовая теория архиватора.

Сообщение Kot-Mulder »

Сразу вопрос: а в каком виде сохраняются в UTF кодировке файлы? Если там более 256 вар-тов символов => что один символ утф просто кодируется несколькими ASCII (полагаю, двух должно хватить), или нет?
Правды нет, есть только свое мнение (с)
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Еще одна бредовая теория архиватора.

Сообщение elide »

да. в чем принципиальная разница? выигрыш где? один ASCII символ занимает 1 байт, а один юникодный - от 2 до 8. и в чем смысл?
слава роботам!
Спасибо сказали:
Аватара пользователя
bogus
Сообщения: 160

Re: Еще одна бредовая теория архиватора.

Сообщение bogus »

На самом деле, при архивировании, блоки информации кодируются разным числом бит, в зависимости от частоты повторения этого блока. А ограничение на размер словаря мы можем задать любое.
Хотя, это зависит от конкретного алгоритма...
bogus добавил в 19.12.2004 15:04
P.S. Sorry, если я просто не врубился в тему :)
Как всякое несовершенное существо я могу ошибаться. Простите меня.
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
Спасибо сказали:
Аватара пользователя
TIM
Сообщения: 91
ОС: FreeBSD

Re: Еще одна бредовая теория архиватора.

Сообщение TIM »

Редко встречаются тексты в которых-бы использовалась хотя-бы малая толика всего потенциала UTF ... (например, чтобы символы 2х или 3х алфавитов встречались в одном тексте с равной вероятностью)

Поэтому, для юникодного текcта, как впрочем и для любого другого (разница будет только при задании формата для дерева частот), IMHO, хороших результатов можно добится при использовании подобного метода:


1) квантование (для возможной работы в потоке);

2) сжатие квантов по словарю или смещениям (LZ* (Лемпела-Зива) - много способов ...) - жмём слова и пр. повторяющиеся блоки;

3) преобразование сжатого кванта к виду, более удобному для частотной компрессии (напр. метод BWT (Барроуза-Уилера) с последующим MFT(Move to Front Translation) или кодированием расстояний). Словарь лучше не преобразовывать;

4) частотное сжатие атомарных конструкций (одиночных символов, идентификаторов вставок, длин, смещений и т.п.) в преобразованном кванте и словаре (в случае LZ77,LZ78 словарь сжимать не требуется - там используются смещения) - методом Хаффмана ("путь" по дереву частот) или арифметическим методом (кодирование интервалов в зависимости от вероятностей частот) - уходим от избыточности текста/юникода - теперь каждый атом имеет длину, зависящую только от частоты его появления в тексте, сжатом по словарю и словаре, вместе взятым;

и только в самом конце это всё укладывается в двоичное представление - т.е. мы уже имеем не байты (это про 256 символов), а битовый поток, состоящий из элементов переменной длины.

- можно, кстати, комрессировать по частоте и вставки из словаря (при предварительном препроцессинге текста, а это уже зависит от свойств текста)

З.Ы. Не изобретайте велосипеды, а путешествуйте на них - может-быть и откроете новую страну ... :)
Спасибо сказали: