![]() |
|
![]() ![]() ![]() |
|
Win MK 32 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Я придумал как сжимать файлы в 2 раза!
![]() ![]() ![]() ![]() ![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Сжатие в 8 раз? Это что шутка? или заявка на Нобелевскую премию? Или речь идёт об алгоритмах сжатия с потерей качества? Или сжимаются файлы определённой структуры? Если нет, то давай я тебе пришлю файл длинной 65536 байт ты мне его сожмёшь хотябы на 5% (не бойся, с чётностью проблем нет - эта длина делиться на 2, 4, 8, 16, 32, 64, 128, 256)?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Естж ше еше в 50 годач придуманнии одним математиком алгоритм. Я питалса в него врубитса, но там уш все оченж навороченно. Помоему "алгоритм хаммера" називаетса или как-то так. На нем и базируютса все .zip и .rar.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Допустим, файл состоит из 64 символов. Последовательно сжимая его вдвое, получаем: 64->32->16->8->4->2->1 байт. Неплохо ! Но над этим еще надо поработать: что это такое, зачем этот лишний байт ?! Надо довести алгоритм до ума, чтобы можно было сжимать до нуля !
А начет зипа, так у него ~ 8 различных методов, включая просто storing. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
Win MK 32 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Vit, идея есть, но...
1)Я забыл сказать, что это сжатие только текстовых файлов (А можно ли другие файлы (например - в двоичном виде) сжимать я не знаю) 2)Улучшить способ перебора и замены двух символов на один (не перебирать же все возможные по парам в ручную) 3)
Сardinal, скажи пожалуйста, что знаешь об "алгоритме хаммера". Chingachguk, Насчет последнего байта была шутка или можно сжимать файлы до размера < 1 байта? P.S. Может если алгоритм будет проработан, можно будет поместить статью "Новый архиватор на VB" в раздел "Совмесные проекты/Поиск партнеров"... |
||||
|
|||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Текстовые файлы сжимать в 8 раз конечно можно, в целом алгоритм сжатия текстового файла прост - подсчитываем частоты комбинаций букв, далее наиболее частые комбинации кодируем наименьшим числом бит, наиболее редкие - большим числом бит. Вообще можно создать для текстовых файлов очень мощный архиватор - 3 байта составляют 16 миллионов комбинаций, что значительно превышает число слов в любом языке, т.е. можно каждое слово кодировать 3х байтной комбинацией, что даст уровень упаковки в 3-4 раза, однако полученный файл будет архивироваться Хаммером минимум ещё в 2 раза. Если идти дальше этим путём, то просто надо ранжировать слова по встречаемости и наиболее частые слова кодировать меньшим количеством бит, более редкие - большим, это может дать очень большие степени упаковки, но к сожалению алгоритм будет работать только на текстовых файлах, что абсолютно не актуально - текстовые файлы и так хорошо пакуются и обычно небольших размеров - я еще не встречал надобность сильного сжатия текстовых файлов. Гораздо перспективнее разработка алгоритмов сжатия там где это действительно критично - например видео и звук
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
HuffmanPacker
Господа, если хотите делать упаковщик по круче, то используйте этот алгоритм, я не думаю, что можно сделать лучше. Точнее сделать то все можно, но я сомневаюсь, что кто-то с форума пересилит математика, которого в институтах проходят ![]() P.S. только без обид. Я и сам в него не врубился полностью... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
cosmic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 28.9.2002 Репутация: нет Всего: нет |
НЕЕЕЕЕЕЕЕЕЕЕ! надо добиться сжатия до отрицательного размера, чтобы место на ж.диске освобождалось :))))) |
|||
|
||||
FdX |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
Алгоритм твой понятен. Если текстовый файл состоит только из букв латинского алфавита, пробелов, запятых и т.п., то на кодирование одного символа уйдет 5 битов (32=2^5 (или как там это пишется)). Если добавить ещще кирилицу, то уже 2 в шестой степени (6 битов). Если 2 в шестой, то сжатие будет всего 25%.
Реализуй сначала с четным кол-вом, а потом это добавим |
||||
|
|||||
Win MK 32 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
С заменой двух символов на один проблям нет, но надо, чтобы это происходило автоматически(Нужен алгоритм).
А это возможно!?! ![]() ![]() |
|||
|
||||
FdX |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
Не понятно. Поясни |
|||
|
||||
Win MK 32 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Я имею в виду то, что автоматически должно происходить следующее:
1)Перебирались по два все символы 2)И осуществлять замену не перебором Например:
А...например...циклом или еще как... |
|||
|
||||
FdX |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
Ну это не сложно. Можно и циклом.
Ну а как распаковывать сжатый файл? |
|||
|
||||
Win MK 32 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Наоборот. (Замена одного символа на один)
|
|||
|
||||
neutrino |
|
||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Это простой перевод в другую систему счисления. Вот тебе и алгоритм. А тот алгоритм, что Вит предложил называется арифметическим кодированием. Он на самом деле лучше Хоффмана в этом случае. -------------------- The truth comes from within ... Покойся с миром, Vit |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |