- •Реферат
- •Содержание
- •Введение
- •Словарное моделирование
- •Генерация псевдотекста
- •Построение словаря повторяющихся подстрок
- •Сравнительные характеристики энтропии
- •Кодирование на основе словарного моделирования
- •Построение двоичных кодов Хаффмана
- •Анализ графиков оптимальной длины кода и длины кода Хаффмана
- •Заключение
- •Список использованных источников
- •Приложение а Дерево подстрок псевдотекста
- •Приложение б Таблицы для кодирования по методу Хаффмана
-
Словарное моделирование
-
Генерация псевдотекста
Для генерации псевдотекста мной был взят алфавит состоящий из четырех букв моей фамилии плюс знак подчеркивания в качестве разделителя слов: X = {"Ю", "Д", "И", "Н", "_"}.
Из символов полученного алфавита был составлен собственный непрерывный псевдотекст (около 150 символов), интуитивно подражая фонетическим, орфографическим и грамматическим свойствам естественного человеческого языка:
ЮДЮ_ДЮДЮ_ДЮНИ_НЮНЮ_Ю_И_ДЮНИ_ЮЮ_ЮИ_НИ_ДЮ_НИ_►НЮ_И_НИ_ДИДИ_И_ДИНЮ_И_НИНИНИДИ_ДИНЮ_НЮ_НИ_НИДИ_ДИНИ_ДИНИНИ_НИДИ_ДИНИ_НИ_НЮ_НИ_ДИДИЮ
Примерно треть текста здесь отделен маркером так, чтобы разрыв находился перед началом очередного псевдослова (т.е. после знака подчёркивания). Часть текста(до маркера) решено было считать обработанной, именно она использовалась для статистического анализа и получения подстрок.
-
Построение словаря повторяющихся подстрок
Выписав все имеющиеся подстроки первой части и частоту их появления, мы построим словарь D. Удобно записывать подстроки иерархически: для каждой короткой подстроки выписывать все более длинные, начинающиеся с этой подстроки. Тогда можно проверить: частота появления подстроки должна быть равна сумме частот дочерних подстрок (более длинных, начинающихся с родительской). Все возможные подстроки изображены на рисунке А.1 приложения А. Выбор подстрок проводился по следующим правилам:
–– нас интересовали подстроки, встречающиеся хотя бы дважды в тексте;
–– если одна подстрока полностью покрывает другую (то есть содержит те же буквы в том же порядке плюс еще одна и при этом частота их появления одинакова), то берётся наибольшую подстроку, так как имеет смысл говорить лишь о его существовании (стопроцентная вероятность, что при появлении меньшего появилось большее).
Однако в ходе работы подобный способ формирования подстрок оказался неудачным. Действительно, при анализе рисунка А.1 приложения А в соотнесении с оставшимся текстом можно заметить, что сформированное множество подстрок не способно полностью покрыть текст и заменить тем самым алфавит( у нас нет буквы «Д», «И», таких после которых может следовать любая буква, а потребность в них есть). По этой причине множество подстрок было преобразовано. Полеченное множество строк представлено на рисунке А.2 приложения А.
Из всего вышеизложенного я делаю заключение, что выбор подстрок являясь в каком-то смысле произвольным процессом, имеет важное для последующего кодирование свойство: множество подстрок модели должно покрывать множество возможных подстрок сообщения, и в общем случае это можно достичь включив весь алфавит в множество подстрок.
-
Сравнительные характеристики энтропии
После формирования множества подстрок были вычислены оценки условной энтропии следующего за маркером символа на основе двух полученных ансамблей состояний. Рисунок 1 содержит данные, используемые при этом.
Р исунок1 – Вычисление энтропии в Exel
Перед сравнением полученные оценки энтропии были нормализированы – поделены на среднее количество символов в подстроке ансамбля:
HD=4,198081/3=1,39936 бит. (2)
Что касается максимального значения энтропии первого символа оставшейся части текста Hmax, то очевидно из свойства энтропии о её максимуме, что значение будет Hmax высчитываться по формуле 3:
Hmax=-log2N= -log20,2=2,32193 бит. (3)
В таблице 1 приведены значения полученной энтропии в битах:
Таблица 1 – Значения полученной энтропии
HD |
Hmax |
HX |
1,39936 |
2,32193 |
2,22499 |
Исходя из полученных значений энтропии можно сделать вывод, что степень неопределенности при работе с подстроками самая маленькая, что при однородности текста возможно могло бы привести к уменьшению кода. А степень неопределенности при анализе частот символов алфавита также меньше максимальной, то есть кодирование через нее тоже может оказаться полезным.