Метод LZW-сжатия данных и память субъекта по версии Шенцева М.В. модель памяти IMM.Стандартный алгоритм LZW-сжатия описан, например Mark R. Nelson (Перевод: Запольский С.А.)
« --------------------------
Собственно исходный Lempel/Ziv подход к сжатию данных был впервые обнародован в 1977г., а усовершенствованный (Terry Welch) вариант был опубликован в 1984г. Алгоритм на удивление прост. Если в двух словах, то LZW-сжатие заменяет строки символов некоторыми кодами. Это делается без какого-либо анализа входного текста. Вместо этого при добавлении каждой новой строки символов просматривается таблица строк. Сжатие происходит, когда код заменяет строку символов. Алгоритм LZW-сжатия в простейшей форме приведен на рис.1. Каждый раз, когда генерируется новый код, новая строка добавляется в таблицу строк. LZW постоянно проверяет, является ли строка уже известной, и , если так, выводит существующий код без генерации нового.
Процедура LZW-сжатия:
СТРОКА = очередной символ из входного потока
WHILE входной поток не пуст DO
СИМВОЛ = очередной символ из входного потока
IF СТРОКА+СИМВОЛ в таблице строк THEN
СТРОКА = СТРОКА+СИМВОЛ
ELSE
вывести в выходной поток код для СТРОКА
добавить в таблицу строк СТРОКА+СИМВОЛ
СТРОКА = СИМВОЛ
END of IF
END of WHILE
вывести в выходной поток код для СТРОКА
Рис. 1 Алгоритм сжатия
-----------------------------»
Некоторые основы imm:
1. Объект в памяти субъекта хранится в единичном экземпляре, во всех случаях использования его в том или ином описании используется не сам объект а ссылка на него.
2. Любой объект однозначно идентифицируется ссылкой на него.
3. Узнавание – получение ссылки, соответствующей входным данным.
4. Запоминание информации субъектом, в упрощенном виде, можно представить как узнавание - запоминание ссылки - создание нового объекта.
Если рассмотреть алгоритм LZW-сжатия с этих позиций, то код строки это ссылка из imm. Тогда алгоритм LZW можно переформулировать так:
--------------- часть алгоритма ответственная за узнавание-----------------
СТРОКА = очередной символ из входного потока / входные данные
WHILE входной поток не пуст DO
СИМВОЛ = очередной символ из входного потока
IF СТРОКА+СИМВОЛ в таблице строк THEN
СТРОКА = СТРОКА+СИМВОЛ
ELSE
-----------------Запоминание ссылки --------------------------------------------
вывести в выходной поток код для СТРОКА
-----------------Формирование нового объекта
добавить в таблицу строк СТРОКА+СИМВОЛ
СТРОКА = СИМВОЛ
END of IF
END of WHILE
вывести в выходной поток код для СТРОКА
------------------Конец---------------------------------------------------------------
Что соответствует пункту 4 из «Основы imm».
Т.е. алгоритм запоминания по модели imm соответствует алгоритму LZW-сжатия информации. Т.е. память субъекта представляет собой подобие LZW архива жизненного опыта субъекта. Таким образом, при оценке объема памяти субъекта необходимо учитывать поправку на сжатие информации.
[/b]