- •Глава 3. Анализ и синтез дискретных систем
- •3.1. Применение теории днф к синтезу комбинационных логических сетей (комбинационных схем)
- •3.1.1. Логические элементы
- •3.1.2. Комбинационные логические сети
- •3.1.2.1. Задача анализа
- •3.1.2.2. Синтез в базисе днф
- •3.1.2.3. Синтез в базисе не и
- •3.1.2.4. Синтез в базисе не или
- •3.2. Элементы теории автоматов
- •3.2.1. Классификация автоматов
- •3.2.2. Способы задания конечных автоматов
- •3.2.3. Триггеры
- •3.2.4. Канонические уравнения
- •3.2.5. Автоматы и языки
- •3.2.6. Операции над конечноавтоматными языками
- •Глава 4. Алфавитное кодирование
- •4.1. Критерий однозначности кодирования
- •4.2. Алгоритм распознавания однозначности кодирования
- •4.3. Свойства однозначных кодов
- •4.4. Коды с минимальной избыточностью
- •Глава 5. Исчисление высказываний и исчисление предикатов
- •5.1. Исчисление высказываний
- •5.1.1. Словарь исчисления высказываний
- •5.1.2. Синтаксис исчисления высказываний
- •5.1.3. Семантика исчисления высказываний
- •5.1.4. Исчисление высказываний и естественный язык
- •5.1.5. Выполнимость и общезначимость формулы
- •5.1.6. Проблема выводимости
- •5.1.7. Алгоритмы распознавания невыполнимости формулы
- •5.1.8. Хорновские дизъюнкты
- •5.2. Исчисление предикатов
- •5.2.1. Словарь
- •5.2.2. Синтаксис исчисления предикатов
- •5.2.3. Семантика исчисления предикатов
4.2. Алгоритм распознавания однозначности кодирования
Используя нетривиальные разложения элементарных кодов, опишем алгоритм для схемы кодирования Σ.
1. Для каждого элементарного кода выполним всевозможные нетривиальные разложения.
2. Строим множество М следующим образом. В него включаем пустой символ , а также каждое слово типа β, которое встречается в нетривиальных разложениях элементарных кодов как в роли префикса, так и в роли окончания. В разных ролях это слово не обязательно используется в разложении одного и того же элементарного кода.
3. Каждому слову из М сопоставляем вершину графа. Пусть слова , содержатся в М. Выделим среди нетривиальных разложений элементарных кодов схемы Σ разложения вида … . Для каждого из них проведем дугу из в , пометив ее элементарными кодами … . Полученный граф обозначим (Σ).
4. Анализируем граф (Σ), отыскивая в нем ориентированный цикл, содержащий вершину . Если цикл существует, то кодирование не однозначно, иначе кодирование однозначно.
Теорема 4.3. Алфавитное кодирование со схемой кодирования Σ не обладает свойством однозначности, если и только если граф (Σ) содержит ориентированный цикл, проходящий через вершину .
Доказательство приведено в [1].
Для построенных ранее нетривиальных разложений имеем множество М = {, , , }. С этим множеством связаны разложения (рис. 4.1):
= ( )( ),
= ( )( ) = ( ),
= ( )( )( ) = ( ) .
В графе существует ориентированный цикл, проходящий через вершину , то есть кодирование не однозначно. Действительно, слово В = = допускает две расшифровки:
B = ( )( ) = ,
B = ( )( )( )( ) = .
4.3. Свойства однозначных кодов
Дана схема кодирования Σ:
,
…
.
Пусть q – число символов алфавита В (значность алфавита В), = l( ).
Теорема 4.4 (неравенство МакМилана). Если кодирование со схемой Σ обладает свойством однозначности, то выполняется соотношение
1.
Доказательство. Рассмотрим всевозможные слова в алфавите А, имеющие длину n. Представим их выражением:
( +…+ ) . (1)
Произвольное слово длины n в алфавите А можно представить в виде , ,…, . Здесь принадлежит первой из n скобок, – второй и т.д. Имея это в виду, запишем соотношение
( +…+ ) = . (2)
Сопоставим рассматриваемым словам коды в алфавите В. Коды получаются заменой символов ,…, элементарными кодами ,…, соответственно. Имеем
( +…+ ) = . (3)
В силу однозначности кодирования, если ( ,…, ) ( ,…, ), то , то есть разным словам в алфавите А соответствуют разные слова в алфавите В.
Соотношению (3) соответствует тождество
= . (4)
Слагаемым правой части, имеющим одинаковые знаменатели, сопоставляются слова одинаковой длины t, t = +…+ . Пусть ν(n, t) – число слов из (3), имеющих длину t. Пусть l = . Тогда
= . (5)
Из однозначности кодирования следует
ν(n, t) . (6)
Действительно, есть число всевозможных слов длины t в алфавите В. Поскольку в (3) все рассматриваемые коды слов длины n в алфавите А различны, то различны и их подмножества – коды одной и той же длины. Следовательно, соотношение (6) выполняется.
Далее имеем
nl.
Тогда получим
.
Это неравенство справедливо для любого n, так как его левая часть не зависит от n. Перейдя к пределу при n, получим неравенство МакМилана
1.
Ч.Т.Д.
Теорема 4.5. Если алфавитное кодирование, заданное схемой Σ, однозначно, Σ:
,
…
,
то существует алфавитное кодирование, задаваемое схемой :
,
…
,
обладающее свойством префикса, причем для элементарных кодов ,…, выполняются равенства
l( ) = l( ),
…
l( ) = l( ).
Доказательство. Пусть … . Воспользуемся неравенством МакМилана
1.
Разобьем числа ,…, , представляющие длины элементарных кодов, на классы равной длины. Пусть μ – число классов 1 μ r; ,…, – длины элементов классов; ,…, – мощности классов. Перепишем неравенство МакМилана с учетом введенных обозначений:
1.
Это неравенство порождает серию вспомогательных неравенств:
1 или ,
+ 1 или – ,
…
+ +…+ 1 или – – –…– .
Рассмотрим слова в алфавите B, имеющие длину . Так как , то можно выбрать из них слов длины . Обозначим выбранные слова через ,…, . Они представляют элементарные коды схемы кодирования .
Исключим из рассмотрения в дальнейшем слова, начинающиеся с ,…, . Выберем слова в алфавите В, имеющие длину и не начинающиеся со слов ,…, . Число таких слов в алфавите В определяется выражением
– .
Так как – , то имеется возможность выбрать нужных нам слов. Обозначим их через ,…, . Они также представляют элементарные коды схемы кодирования .
Исключим в дальнейшем слова, начинающиеся с уже включенных в схему элементарных кодов. В конце концов мы получим все элементарные коды ,…, схемы . Из построения кодов следует:
l( ) = l( ),
…
l( ) = l( ).
Ч.Т.Д.