Изменения

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

Алгоритм LZW

162 байта добавлено, 21:00, 20 октября 2014
Кодирование
=== Кодирование ===
Пусть мы сжимаем последовательность "<tex>abacabadabacabae"</tex>.
* '''Шаг 1: '''Тогда, согласно изложенному выше алгоритму, мы добавим к изначально пустой строке “a” <tex>a</tex> и проверим, есть ли строка “a” <tex>a</tex> в таблице. Поскольку мы при инициализации занесли в таблицу все строки из одного символа, то строка “a” <tex>a</tex> есть в таблице. * '''Шаг 2: '''Далее мы читаем следующий символ "<tex>b" </tex> из входного потока и проверяем, есть ли строка “ab” <tex>ab</tex> в таблице. Такой строки в таблице пока нет.Добавляем в таблицу <5> “ab”<tex>ab</tex>. В поток: <0>;* '''Шаг 3: '''“ba” <tex>ba</tex> — нет. В таблицу: <6> “ba”<tex>ba</tex>. В поток: <1>;* '''Шаг 4: '''“ac” <tex>ac</tex> — нет. В таблицу: <7> “ac”<tex>ac</tex>. В поток: <0>;* '''Шаг 5: '''“ca” <tex>ca</tex> — нет. В таблицу: <8> “ca”<tex>ca</tex>. В поток: <2>;* '''Шаг 6: '''“ab” <tex>ab</tex> — есть в таблице; “aba” <tex>aba</tex> — нет. В таблицу: <9> “aba”<tex>aba</tex>. В поток: <5>;* '''Шаг 7: '''“ad” <tex>ad</tex> — нет. В таблицу: <10> “ad”<tex>ad</tex>. В поток: <0>;* '''Шаг 8: '''“da” <tex>da</tex> — нет. В таблицу: <11> “da”. В поток: <3>;* '''Шаг 9: '''“aba” <tex>aba</tex> — есть в таблице; “abac” <tex>abac</tex> — нет. В таблицу: <12> “abac”<tex>abac</tex>. В поток: <9>;* '''Шаг 10: '''“ca” <tex>ca</tex> — есть в таблице; “cab” <tex>cab</tex> — нет. В таблицу: <13> “cab”<tex>cab</tex>. В поток: <8>;* '''Шаг 11: '''“ba” <tex>ba</tex> — есть в таблице; “bae” <tex>bae</tex> — нет. В таблицу: <14> “bae”<tex>bae</tex>. В поток: <6>;* '''Шаг 12: '''И, наконец последняя строка “e”<tex>e</tex>, за ней идет конец сообщения, поэтому мы просто выводим в поток <4>.
{| class="wikitable" border =1, style="text-align: center; margin-left: auto; margin-right: auto;"
|}
Итак, мы получаем закодированное сообщение "<tex>0 1 0 2 5 0 3 9 8 6 4"</tex>.
Каждый символ исходного сообщения был закодирован группой из трех бит, сообщение содержало 16 символов, следовательно длина сообщения составляла 3 * 16 = 48 бит.
49
правок

Навигация