8. Декодирование LZW
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра информационных систем
отчЁт
по практической работе №8
по дисциплине «Теория информации, данные, знания»
Тема: Декодирование LZW.
Студент гр. 93—  | 
		
  | 
		—  | 
	
Преподаватель  | 
		
  | 
		Писарев И. А.  | 
	
Санкт-Петербург
2020
Цель работы
Сформулировать ответы на вопросы с указанием источников информации.
Вопросы по теме:
В каких популярных программах реализован метод LZW?
Гарантирует ли метод LZW отсутствие потерь или искажений данных?
Опишите метод декодирования Лемпеля—Зива—Велча (LZW).
Решить задачи:
Декодируйте сообщение «99 256 257 258» методом LZW. Приведите описание последовательности выполненных действий декодирования с комментариями выполняемых шагов алгоритма.
Декодируйте сообщение «65 68 256 257 68 260» методом LZW. Приведите описание последовательности выполненных действий.
Выполнение работы
Вопрос 1.
В настоящее время используется в файлах формата TIFF, PDF, GIF, PostScript и других, а также отчасти во многих популярных программах сжатия данных (ZIP, ARJ, LHA). (2, С. 70)
Вопрос 2.
Данный тип компрессии не вносит искажений в исходный графический файл, и подходит для сжатия растровых данных любого типа. (2, С. 69)
Вопрос 3.
Декодер начинает с заполнения словаря первыми символами алфавита (их, обычно, 256). Затем он читает входной файл, который состоит из указателей в словаре, использует каждый указатель для того, чтобы восстановить несжатые символы из словаря и записать их в выходной файл. Кроме того, он строит словарь тем же методом, что и кодер.
На первом шаге
декодирования, декодер вводит первый
указатель и использует его для
восстановления словарного элемента 
.
Это строка символов, и она записывается
декодером в выходной файл. Далее следует
записать в словарь строку 
,
однако символ 
ещё неизвестен; это будет первый символ
следующей строки, извлечённой из словаря.
На каждом шаге
декодирования после первого декодер
вводит следующий указатель, извлекает
следующую строку 
из словаря, записывает её в выходной
файл, извлекает её первый символ 
и заносит строку 
в словарь на свободную позицию
(предварительно проверив, что строки 
нет в словаре). Затем декодер перемещает
в 
.
Теперь он готов к следующему шагу
декодирования. (1, С. 102)
Задача 1.
Вход  | 
		Запись в словарь  | 
		Выход  | 
	|
Полная  | 
		Частичная  | 
	||
99 (c)  | 
		
  | 
		256: c�  | 
		c  | 
	
256 (c�)  | 
		256: cc  | 
		257: cc�  | 
		cc  | 
	
257 (cc�)  | 
		257: ccc  | 
		258: ccc�  | 
		ccc  | 
	
258 (ccc�)  | 
		258: cccc  | 
		259: cccc�  | 
		cccc  | 
	
Выходное сообщение: cccccccccc.
Задача 2.
Вход  | 
		Запись в словарь  | 
		Выход  | 
	|
Полная  | 
		Частичная  | 
	||
65 (A)  | 
		
  | 
		256: A�  | 
		A  | 
	
68 (D)  | 
		256: AD  | 
		257: D�  | 
		D  | 
	
256 (AD)  | 
		257: DA  | 
		258: AD�  | 
		AD  | 
	
257 (DA)  | 
		258: ADD  | 
		259: DA�  | 
		DA  | 
	
68 (D)  | 
		259: DAD  | 
		260: D�  | 
		D  | 
	
260 (D�)  | 
		260: DD  | 
		261: DD�  | 
		DD  | 
	
Выходное сообщение: ADADDADDD.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Сэломон Д. Сжатие данных, изображений и звука. М.: Техносфера. 2004. 368 с.
Гошин Е.В. Теория информации и кодирования. Самара: Самарский университет. 2018. 124 с.
