Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория Алгоритмов (лекции).doc
Скачиваний:
10
Добавлен:
15.11.2018
Размер:
64 Кб
Скачать

Лекция 3

Не сложно увидеть, что кодирование будет обратимым, когда выполняются следующее 2 условия:

      1. коды различных символов исходного алфавита А должны быть различны;

      2. код любого символа исходного алфавита А не должен совпадать ни с каким из начальных подслов кодов других символов этого алфавита.

Заметим, что условие 2 всегда выполняется в том случае, если при выполнении условия 1 коды всех символов исходного алфавита А будут иметь одинаковую длину.

Кодирование, при котором все коды имеют одинаковую длину, принято в теории алгоритмов называть нормальным кодированием.

Кодирование позволяет свести изучение произвольных слов и алфавитных операторов к соответственным словам и операторам в стандартном алфавите.

Пусть А — произвольный конечный абстрактный алфавит, состоящий из более чем одного символа. С — стандартный двоичный алфавит. Пусть n – это число символов в алфавите А, а m – число символов в С. Тогда всегда можно подобрать число k так, чтобы выполнялось неравенство

m^k >= n

Число различных слов одинаковой длины k в m-символьном алфавите будет равно m^k, следовательно неравенство показывает, что все символы исходного алфавита А можно закодировать одинаковыми словами длины k в алфавите C. таким образом, чтобы все коды были различными. Любое такое кодирование будет нормальным в следствии чего — порождать обратимое кодирующее отображение слов входного алфавита А кодами выходного алфавита С.

Дано:

А = {α,β,γ,δ}

C = {0,1}

Осуществить нормальное кодирование слова P = αβγδ символами нормального алфавита.

N = 4; M =2 2^k >= 4 k >= 2; kmin = 2 2^2 = 4 (всего комб-й)

Данное кодирование можно осуществить с помощью алфавитного оператора, который удобно представляется в виде таблицы соответствия. (Алфавитный оператор — функция перехода входного символа в выходной)

Таблица графический аналитический способ

i

ai

Гai = Ci

1

α

.00

2

β

.01

3

γ

.10

4

δ

.11

Мы уже условились обозначать нормальное кодирование в стандартном алфавите как Гa = C.

Тогда обратное ему отображение имеет вид Гc^-1 = a

Пусть ϕa – произвольный алфавитный оператор в алфавите а такой, что ϕа = а', а ψC – произвольный алфавитный оператор C такой, что ψC = C'. тогда отображение ψC = Гc^-1, ϕа, Га', который получается в результате последовательного выполнения этих отображений, будет представлять собой алфавитный оператор в алфавите С.

ψC = Гс^-1, ϕа, Га'

ψC – сопряженный с фа алфавитный оператор в алфавите С, который получается с помощью кодирования Га' и декодирования Гс^-1.

Исходный алфавитный оператор фа однозначно восстанавливается по сопряженному ψc.

ϕа = Га, ψc, Гс^-1

ψc = Гс^-1, ϕа, Га'

ϕa = Гa, ψc, Гc^-1

a ϕa a'

Га Га Га'

c ψc c'

Аналогичные рассуждения справедливы и в том случае, когда входной алфавит А, выходной В и стандартный С — различны.

a ϕa b

Га^-1 Гb

c ψc c'

ψc = Гa^-1, ϕa, Гb

ϕa = Гa', ψc, Гс^-1