Изменения

Перейти к: навигация, поиск

Алгоритм LZW

388 байт добавлено, 21:39, 17 декабря 2011
Нет описания правки
{{Определение
|definition=
'''Алгори́тм Ле́мпеля — Зи́ва — Ве́лча''' ('''Lempel-Ziv-Welch''', '''LZW''') — это универсальный алгоритм сжатия данных без потерь
}}
Непосредственным предшественником LZW явился алгоритм LZ78, опубликованный Абрахамом Лемпелем(''Abraham Lempel'') и Якобом Зивом (''Jacob Ziv'') в 1978 г. Этот алгоритм воспринимался как математическая абстракция до 1984 г., когда Терри Уэлч (Terry A. Welch) опубликовал свою работу с модифицированным алгоритмом, получившим в дальнейшем название LZW (Lempel-Ziv-Welch).
== Алгоритм ==
=== Кодирование ===# Инициализация словаря всеми возможными односимвольными фразами. Инициализация входной фразы ω X первым символом сообщения.# Считать очередной символ K Y из кодируемого сообщения.# Если КОНЕЦ_СООБЩЕНИЯ, то выдать код для ωX, иначе# : Если фраза ωK XY уже есть в словаре, присвоить входной фразе значение ωK XY и перейти к Шагу 2, иначе выдать код ωX, добавить ωK XY в словарь, присвоить входной фразе значение K Y и перейти к Шагу 2.Конец=== Декодирование ===# Инициализация словаря всеми возможными односимвольными фразами. Считать первый код X сообщения.# Считать очередной код Y из декодируемого сообщения.# Если КОНЕЦ_СООБЩЕНИЯ, то выдать символ для кода X, иначе: Если фразы под кодом XY нет в словаре, вывести фразу с кодом X, фразу с кодом XY занести в словарь. Иначе перейти к шагу 2.
== Пример ==
84
правки

Навигация