Изменения

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

Алгоритм LZW

49 байт добавлено, 05:31, 25 октября 2011
Пример
| 3 || 11
|-
| ... || ...
|-
| 31 || 11111
Пусть мы сжимаем последовательность 15, 25, 25, 17, 25, 25, 25.
Тогда, согласно изложенному выше алгоритму, мы добавим к изначально пустой строке “15” и проверим, есть ли строка “15” в таблице. Поскольку мы при инициализации занесли в таблицу все строки из одного символа, то строка “15” есть в таблице. <br>Далее мы читаем следующий символ 25 из входного потока и проверяем, есть ли строка “15, 25” в таблице. Такой строки в таблице пока нет.<br>Добавляем в таблицу <32> “15, 25”. В поток: <15>; <br>“25, 25” — нет. В таблицу: <33> “25, 25”. В поток: <25>; <br>“25, 17” — нет. В таблицу: <34> “25, 17”. В поток: <25>; <br>“17, 25” — нет. В таблицу: <35> “17, 25”. В поток: <17>; <br>“25, 25” — есть в таблице; “25, 25, 25” — нет. В таблицу: <36> “25, 25, 25”. В поток: <33>;<br>
И, наконец последняя строка “25”, за ней идет конец сообщения, поэтому мы просто выводим в поток <25>.
| 15 || 1111
| style="border-right: none;" | 32:
| style="border-left: none;" | 15, 25||
| style="text-align: left;" |
|-
| 25 || 10111
| style="border-right: none;" | 33:
| style="border-left: none;" | 25, 25||
|-
| style="text-align: center;" | 25
| 25 || 10111
| style="border-right: none;" | 34:
| style="border-left: none;" | 25, 17||
|-
| style="text-align: center;" | 17
| 17 || 10001
| style="border-right: none;" | 35:
| style="border-left: none;" | 17, 25||
|-
| style="text-align: center;" | 25
| - || -
| style="border-right: none;" |
| style="border-left: none;" | -||
|-
| style="text-align: center;" | 25
| 33 || 100001
| style="border-right: none;" | 36:
| style="border-left: none;" | 25, 25, 25||
| style="text-align: left;" |
|-
84
правки

Навигация