Поиск:

Ответ в темуСоздание новой темы Создание опроса
> архивация строки 
V
    Опции темы
dstorm81
Дата 26.3.2006, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: нет
Всего: 39



сильно не бейте если что
в общем ситуация такая: пишем слова (цифры+русские+английские символы)
затем все переводится к виду 'двоичному' 7 битовому
'А' 0000000
'Б' 0000001
'В' 0000010
'Г' 0000011
'Д' 0000100
'Е' 0000101
'Ё' 0000110
'Ж' 0000111
.....................
'Z' 1001011

в итоге получается строка типа
0001100000010100110100000000010101100100110010100010101100011010011
00000001000001001000110000000000101011010000101000010101000
вопрос: какой метод сжатия лучше использовать в данном случае (в нэте я кое что нашел, типа Хофмана, LZ)
и если можно общую суть алгоритма, если есть какой-то свой вариант.




--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
nworm
Дата 26.3.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Скорее всего подойдёт метод Хафмана или арифметическое сжатие. Но может быть что-то можно будет ещё выжать, проанализировав получше исходные данные. О сжатии можно поспрашивать на www.compession.ru. Там у них есть бесплатные главы из книги и форум.
PM MAIL WWW   Вверх
SoWa
Дата 27.3.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Я на нули гляжу...
Может записывать цифру(ненулевую, ибо их в строке нету)- кол-во нулей. При разжатии вместо цифры- нули.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
nworm
Дата 27.3.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата

Я на нули гляжу...
Может записывать цифру(ненулевую, ибо их в строке нету)- кол-во нулей. При разжатии вместо цифры- нули.


У символов 'Б', 'В' одинаковое число нулей. При таком способе кодирования, наверное, не будет однозначности декодирования. А, вообще, интересно.

dstorm81
А почему 'Z' 1001011? Если калькулятор не врёт, то в десятичной системе счисления это 75 != 10 + 33 + 26.

Это сообщение отредактировал(а) nworm - 27.3.2006, 22:40
PM MAIL WWW   Вверх
esperant0
Дата 27.3.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(nworm @ 26.3.2006, 20:13)
Скорее всего подойдёт метод Хафмана или арифметическое сжатие. Но может быть что-то можно будет ещё выжать, 

Вообщето, согласно одной из теорем кодирования, для длинных текстов Хафман оптимален до эпсиолна.

И ваше замечание не релевантно.

Арифметической кодирование также достигает нижней границы сжатия


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
SoWa
Дата 28.3.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



nworm, ну и что, что одинаковое. Например вместо трех нулей напишу "3".


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
nworm
Дата 28.3.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата

Цитата

Скорее всего подойдёт метод Хафмана или арифметическое сжатие. Но может быть что-то можно будет ещё выжать,


Вообщето, согласно одной из теорем кодирования, для длинных текстов Хафман оптимален до эпсиолна.

И ваше замечание не релевантно.

Арифметической кодирование также достигает нижней границы сжатия


В той теореме вероятность, что следующим символом будет какой-то наперёд заданный символ (например, '1') постоянная для любого места в тексте . А если цифры с буквами, то могут буть тектсты, где за цифрой с большей вероятностью идет другая цифра, а не буква и т.п.
PM MAIL WWW   Вверх
dstorm81
Дата 28.3.2006, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: нет
Всего: 39



2 nworm
Цитата(nworm @ 27.3.2006, 22:38 Найти цитируемый пост)
dstorm81
А почему 'Z' 1001011? Если калькулятор не врёт, то в десятичной системе счисления это 75 != 10 + 33 + 26.

ну вот такой вот такой странный алфавит
для тех кто смотрит на нули, предполагается закрытие все 7 бит, то есть в алфавита конце будут 1111110 1111111 тут нулей вобщем уже нема
ну мне так и не порекомендовали чем лучше сжимать, мне еще стоит подождать-то?



--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
nworm
Дата 29.3.2006, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Я же в первом посте написал. Повторяю

1. Если задача сжатия не является центральной или могут быть произвольные тексты (известен только алфавит), использовать лучше арифметическое сжатие или метод Хафмана.

2. В других случаях можно подумать, какие будут исходные тексты, что-то поискать по сжатию своего типа текстов, спросить, например, на www.compression.ru.
PM MAIL WWW   Вверх
dstorm81
Дата 29.3.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: нет
Всего: 39



спасибо всем ...


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
esperant0
Дата 29.3.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(nworm @ 29.3.2006, 08:09)
Я же в первом посте написал. Повторяю

1. Если задача сжатия не является центральной или могут быть произвольные тексты (известен только алфавит), использовать лучше арифметическое сжатие или метод Хафмана.

2. В других случаях можно подумать, какие будут исходные тексты, что-то поискать по сжатию своего типа текстов, спросить, например, на www.compression.ru.

смысл второй части от меня ускользает. Определите более формально модель и что вы хотите сказать. Иначе это не консистентно


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
nworm
Дата 30.3.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата из книги с "Методы сжатия данных" с http://www.compression.ru/, глава методы контекстного моделирования:
"Анализ распространенных типов данных - например, тех же текстов на естественных языках, - выявляет сильную зависимость вероятности появления символов от непостредственно им предшествующих. Иначе говоря, большая часть данных с которыми мы сталкиваемся, порождается источником с памятью. Допустим, нам известно, что сжимаемый блок является текстом на русском языке. Если, например, из трех только что обработанных символов равна "_цы" (подчеркиванием здесь и далее обозначается пробел), то текущий символ скорее всего входит в следующую группу 'г' ("цыган"), 'к' ("цыкать"), 'п' ("цыпочки"), 'ц' ("цыц"). Или, в случае аналдиза сразу нескольких слов, если предыдущая строка равна "Вставай,_проклятьем_заклейменный,", то продолжением явно будет "весь_мир_". Действительно, в случае посимвольного кодирования при использовании информации об одном непосредственно предшествующем символе достигается средняя длина кодов в 3.6 бита для русских текстов, при учёте двух последних - уже порядка 3.2 бита. В первом случае моделируются условные распределения вероятьностей символов, зависящие от значения строки из одного непосредственно предшествующего символа, во втором - зависящие от строки из двух предшествующих символов."

Похожая ситуация может возникнуть (а может и не возникнуть), если dstorm81 будет сжимать только какие-то специальные тексты (например, только тексты на естественных языках или только финансовые отчёты).
PM MAIL WWW   Вверх
maxim1000
Дата 30.3.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(nworm @ 29.3.2006, 07:09 Найти цитируемый пост)
1. Если задача сжатия не является центральной или могут быть произвольные тексты (известен только алфавит), использовать лучше арифметическое сжатие или метод Хафмана.

2. В других случаях можно подумать, какие будут исходные тексты, что-то поискать по сжатию своего типа текстов, спросить, например, на www.compression.ru.

кстати, можно использовать Хаффмана/арифметическое кодирование и во втором случае - достаточно на каждом шагу использовать не одну и ту же кодировку, а оптимальную для текущего распределения

в случае Хаффмана это приводит к необходимости частой перестройки дерева - с арифметическим кодированием это несколько проще...


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1210 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.