На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Простой алгоритм сжатия данных
    Всем привет!
    Подскажите, плиз, кто шарит в сжатии, наиболее простой, но в то же время, достаточно эффективный, алгоритм сжатия и распаковки (простым должен быть именно алгоритм распаковки), не требующий дополнительной памяти (в крайнем случае, требующего очень-очень небольшого кол-ва памяти) для распаковки.
    Интересует название, ну и по возможности описание алгоритма...
    p.s. Для универсальных данных: более или менее однородных массивов чисел, изображений, шаблонов (типа музыкальных XM-модулей), текста, кода и т.д.
      LZW. Придуман спецом для GIF, но какая разница. Очень прост и быстр, проще, пожалуй, лишь RLE. Эффективность компрессии, по сравнению с классическим LZ, невелика, однако.
        Цитата
        ...
        Размер кода распаковки LZMA составляет порядка 5 Кб; расход динамической памяти зависит от размера словарей. Эти возможности позволяют реализовать распаковку на встраиваемых системах.
        ...


        LZMA Specification (Draft)
        LZMA SDK C, C++, C#, Java x86/x64 binaries for Windows
          Qraizer, спасибо, гляну.

          JoeUser, 5 Кб - это очень много.
          Надо байт на 100, ну может 200. Например, типа того, что юзает UPX для .com-файлов :)

          Добавлено
          UPX сжимает 1Кб .com (состоящий из нулей) до 134 байт (вместе с распаковщиком), 10 Кб - до 138 байт.
            Цитата
            наиболее простой, но в то же время, достаточно эффективный, алгоритм сжатия и распаковки

            Цитата
            Для универсальных данных: более или менее однородных массивов чисел, изображений, шаблонов (типа музыкальных XM-модулей), текста, кода и т.д.

            Цитата
            5 Кб - это очень много.
            Надо байт на 100, ну может 200

            Гм, эффективный универсальный алгоритм сжатия, не требующий дополнительной памяти и с распаковщиком на 200 байт максимум? Посмотри здесь, может, найдешь что-нибудь полезное >:)

            В принципе, можно сочинить алгоритм на тему LZ*, для килобайтов нулей добавить RLE, но жать в общем случае он будет хреновенько. Надо бы уменьшить требования и сузить область применения.
              LZO не требует доп. памяти при распаковке, насчет размера кода распаковщика не знаю...
                LZ4 тут ещё советуют, надо глянуть: https://github.com/lz4/lz4/wiki/LZ4-Versions
                Ну и LZO тоже: http://www.infradead.org/~mchehab/kernel_d...sorted/lzo.html
                NRV, который UPX используют ещё поискать можно...
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0447 ]   [ 15 queries used ]   [ Generated: 19.03.24, 03:42 GMT ]