Лекция 3
Не сложно увидеть, что кодирование будет обратимым, когда выполняются следующее 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