Алгоритм сжатия LZMA (цепной алгоритм Лемпеля-Зива-Маркова) основан на использовании последовательных повторений данных для достижения высокой степени сжатия. products.aspose.com
Процесс сжатия LZMA состоит из нескольких этапов: diversedaily.com
- Инициализация словаря. diversedaily.com LZMA поддерживает скользящее окно ранее увиденных данных, которое называется «словарём». diversedaily.com Во время инициализации словарь заполняется заданным объёмом данных из входного потока. diversedaily.com
- Поиск совпадений и кодирование. diversedaily.com Алгоритм сканирует входной поток данных и ищет повторяющиеся последовательности внутри словаря. diversedaily.com Для эффективного поиска совпадений используется комбинация хеширования и структур бинарного дерева. diversedaily.com Когда совпадение найдено, оно кодируется с использованием комбинации кодов расстояния и длины. diversedaily.com
- Предсказание и кодирование. diversedaily.com LZMA использует цепочку Маркова второго порядка для предсказания следующего символа на основе ранее увиденных символов. diversedaily.com Это предсказание используется для кодирования следующего символа, используя статистические свойства данных. diversedaily.com
- Кодирование диапазона. products.aspose.com diversedaily.com После предсказания и кодирования LZMA применяет кодирование диапазона, которое является формой кодирования энтропии. diversedaily.com Кодирование диапазона назначает меньшие коды более вероятным символам и большие коды — менее вероятным символам. diversedaily.com
LZMA обеспечивает один из самых высоких коэффициентов сжатия среди существующих алгоритмов, что позволяет значительно уменьшить размеры файлов. products.aspose.com Средняя степень сжатия превышает 70% по сравнению с другими форматами архивов. products.aspose.com