Алгоритм Лемпеля — Зіва — Велча: відмінності між версіями
[неперевірена версія] | [неперевірена версія] |
Вилучено вміст Додано вміст
CHINGO (обговорення | внесок) Немає опису редагування |
стильові правлення |
||
Рядок 15:
# Ініціалізація словника всіма можливими односимвольними фразами. Ініціалізація вхідної фрази ω першим символом повідомлення.
# Знайти в словнику рядок ω найбільшої довжини,
# Зчитати черговий символ K з кодованого повідомлення.
# Якщо КІНЕЦЬ_ПОВІДОМЛЕННЯ, то видати код для ω, інакше - крок 5.
Рядок 33:
== Приклад ==
Даний приклад показує алгоритм LZW в дії, зображуючи стан вихідних даних і словника на кожній
Повідомлення, яке потрібно стиснути, виглядає наступним чином:
TOBEORNOTTOBEORTOBEORNOT#
Маркер '''#''' використовується для позначення кінця повідомлення. Отже в нашому алфавіті 27 символів (26 прописних букв від A до Z і #). Комп'ютер представляє це у вигляді груп бітів, для представлення кожного символу алфавіту нам достатньо групи з 5 бітів на символ. По мірі росту словника розмір груп повинен рости, щоб врахувати нові елементи. 5-бітні групи дають 2<sup>5</sup> = 32
# = 00000
A = 00001
Рядок 72:
Загальна довжина = 6*5 + 11*6 = 96 бітів.
Таким чином,
=== Декодування ===
Тепер уявімо, що ми
Дані: На
Повний: Частковий:
10100 = 20 T 27: T?
Рядок 97:
000000 = 0 #
Єдина невелика складність може виникнути, якщо нове слово словника пересилається негайно. В приведеному вище прикладі декодування, коли декодер зустрічає перший символ "'''T'''" він знає, що слово 27 починається з "T", але чим воно закінчується?
Дані: На
Повний: Частковий:
.
Рядок 106:
101111 = 47 AB? <--- що нам з цим робити?
На перший погляд, для декодера це нерозв'язна задача. Ми знаємо наперед, що словом 47 повинно бути '''ABA''',
Відмітимо, що слово 47 складається зі слова 29 плюс символ, що йде наступним. Таким чином, слово 47 закінчується на «символ, що йде наступним». Але, оскільки це слово посилається негайно, то воно повинно починатися з «
== Патенти ==
Рядок 115:
=== Unisys, GIF і PNG ===
При розробці формату [[GIF]] в CompuServe не знали про існування патенту {{US patent|4,558,302}}.
[[20 червня]] [[2003 року]] закінчився срок оригінального американського патенту, що означає, що Unisys не може більше стягувати по ньому ліцензійні відрахування. Аналогічні патенти в Європі, Японії та Канаді закінчились в 2004 році.
|