![]() |
|
|
![]()
|
|
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Два вопроса в одном:
Как сжать текст и как сжать цыфры? "Например" - занимает 8 байт, а мне надо меньше... "1024768" - можно уместить в 4 байта, даже можно в 3, а в два возможно? Заранее спасибо. --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Для начала можно уменьшить количество цифр на представление одного символа. Например для буквы можно взять 5,6 бит - смотря какой алфавит), для цифры - 4 бита. И наконец, сжать это дело каким-либо алгоритмом, напрмер алг. Хафмана.
А вообще, степень сжатия зависит от избыточности информации. В твоем примере число "1024768" смахивает на возможное разрешение экрана. Если у тебя фиксированный набор таких чисел, то их можно сжимать (вернее заменять) в несколько бит. Если есть много повторяющихся фргаментов в тексте или цифрах, то лучше использовать алгоритм сжатия LZW. |
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
А где этот сайт был, там где алгоритмы эти...?
Вот как бы это сделать? (Пусть будет фиксировано, т.е. от 0000000(позиция 0х0) до 1024768(позиция 1024х768)). Ну ладно, допустим если одно число - тада заменить просто, например на букву "А", а вот када их много... куда девать все это? Алфавита та нема столько --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Ничего невозможно сжать в 2 байта и даже бита. Оттуда не достать уже.
-------------------- Всем добра |
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
SoWa в каком смысле ничего?
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Y-Vladimir |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Что-то не понял...
Я не это имел ввиду. Допустим, что у тебя в тексте часто встречаются, в основном, такие значения 800600, 1024768, 640480. Вот их и надо заменять на префиксные коды, а если у тебя с одинаковой вероятностью встречаются числа "от 0000000 до 1024768", то тут никакое сжатие особо не поможет. Основная истина архивации - сжатия происходит за счет наличия у входного потока информации некоторой избыточности. Чем ее больше, тем лучше сжимается инфрмация.
Так не надо алфавит использовать, тут нужно оперировать битами и совокупностями битов.
Не понял фразы. Почему это нельзя? В 2 байта можно, при определенных условиях и мегабайт впихнуть Это сообщение отредактировал(а) Y-Vladimir - 18.7.2005, 09:49 |
||||||||
|
|||||||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Вот это как --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Ну напрмер 12 битов - 4096 комбинаций. Вот их и используй. А вообще, напиши, что тебе конкретно нужно, приведи конкретный фрагмент текста, что хочешь сжать, а то так еще долго можно обсуждать... Вообще, думаю тебе Хаффман или LZW подойдут - дают хорошую степень сжатия и просто реализуются. |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
А вообще, рекомендую почитать:
http://www.compression.ru/arctest/artic-algo.htm Там рассказывается о наиболее известных способах и алгоритмах сжатия информации. Многие вопросы отпадут сами собой. |
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Мне надо сжать положение курсора и текст к нему, чтобы меньше весило...
За ссылку спасибо, приеду почитаю --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
А подробнее? Что такое "положение курсора и текст к нему"??? |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Тебе поможет алгоритм Хафмана.
-------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Лучше наверное LZW, затем Хафман.
|
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Пусть будет просто положение курсора: 1x12, 768x4.... --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
А зачем это сжимать?
Имеются ввиду отдельные значения положения курсора или последовательность таких значений? Только в последнем случае есть смысл что-то сжимать... Опиши ПОДРОБНО свою задачу, тогда можно будет подбирать алгоритм. а то получается гадание по типу игры "Холодно-Горячо" |
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
В текст. док. надо сохранять все положения курсора, когда эти положения меняются естественно...
Добавлено @ 13:14 И надо сделать так, чтобы файл с этими положениями, был как можно меньше в размере! --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
| Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Повторяющиеся значения можно сжимать по принципу RLE.
AAABBCCCCC -> A3B2C5 --------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
| Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Что-то, я чувствую, прога будет использоваться не в благих целях...
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
| Y-Vladimir |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Тогда лучше использовать что-то типа Дельта-модуляции. Т.е. запоминашь только изменение положения курсора относитльно предыдущей позиии. Пример: Вход: (345,594); (345,596); (347,597); (346,599). Выход: (345,594); [0,2]; [2,1]; [-1,1]. Как видишь - значения в квадратных скобках (это посути дельта) заметно меньше по модулю значений на входе, после такого преобразования можно сжимать дальше. Добавлено @ 16:04
Типа прога, котрая запоминает все дейсвия юзера - движения мышкой, нажатия клавиш и сливает их в инет? |
||||
|
|||||
| NoeR |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Учись чувствовать правильно
В принципе спасибо, но тут так не получиться, мало там одинаково будет
Большое спасибо! Мне это и надо было, ну, во всяком - что-то типа того Теперь мне надо как-то сжимать текст, мне продолжать читать те методы по ссылке, или у кого-нибудь есть идеи? Не спрашивайте пож-ста зачем, надо для чата, тексты большие, много времени на сжатия тратить не могу, так как выгоды от экономии отправки - будет мало... --------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
||||||
|
|||||||
| Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Если для чата, нужен обязательно текст, или можно хранить в бинарном коде ? Тогда типа gzip вполне можно применить - есть готовые библиотеки для этого.
Если хранить движения мыши в формате дельта, то совсем необязательно, что координаты будут отличаться на +/- 2. Могут быть изменения даже в десятках единиц - зависит также и от скорости движения мыши. P.S.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
| Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Разумеется могут - у каждого метода есть свои недостатки. Это ведь не метод сжатия, а способ преобразования входных данных таким образом, чтобы дальнейшее сжатие получилось эффективнее. К тому же, обычно юзеры не махают мышкой с огромной скоростью и движения лостаточно плавны - в этом случае подобное преобразование даст ощутимый выигрыш в сжатии. Кстати, не обязательно запоминать все позиции курсора с точностью до пикселя - скорее всего это не требуется, тогда можно огрубить точность дельты - степень сжатия получится еще большей. Начет сжатия текста - либо, как писал Romtek, применяй готовые библиотеки, либо используй алгоритм LZW, т.к. на основе него построено большинство архиваторов. |
|||
|
||||
| NoeR |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 233 Регистрация: 6.2.2005 Репутация: нет Всего: нет |
Попробую с LZW, спасибо
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<< |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |