Кодирование слов. О минимальной длине кода слова.
Пусть
и
. Под кодом слова
мы будем понимать любое другое слово
, по которому слово
можно восстановить однозначно. Например, если
— бинарное слово длины
и
— номера единиц слова
, то по слову
слово
можно восстановить однозначно. Следующее определение связывает слова и слова.
Определение. (А.Н. Колмогорова.) Пусть
— произвольная частично-рекурсивная функция (Машина Тьюринга). Тогда «сложность» слова
по
есть следующая величина:
(4.3)
Любое слово
, удовлетворяющее условию (4.3), называется кодом или программой для слова
.
Таким образом, согласно (4.3), для восстановления «сложных» слов нужны длинные программы, а «простые» слова имеют короткие коды. Однако это определение включает в себя некоторый произвол, связанный с функцией
. Этот произвол состоит в том, что мы имеем дело с определённой машиной Тьюринга(Т-М). Таким образом, если
, то
является кодом слова
относительно Т-М, обозначаемой через
. Длина самого короткого кода обозначается через
. Существование универсальной машины Тьюринга позволяет, в определённой степени, получить меру сложности, инвариантную относительно
.
Теорема. Существует такая машина Тьюринга
, что
где константа
зависит лишь от МТ
.
Казалось бы, что мера (4.3) позволяет адекватно и конструктивно оценивать алгоритмическую сложность кодирования произвольного слова. Однако это не совсем так, в силу следующего утверждения.
Теорема. Функция
, измеряющая сложность слова
относительно какой-нибудь универсальной машины Тьюринга, является алгоритмически неразрешимой.
Доказательство. Рассмотрим бинарный алфавит
и упорядочим все слова из
сначала по длине, а потом по возрастанию (лексикографически).

Если существует Т-М
, которая вычисляет
, то существует и Т-М
, которая «переводит» любое натуральное число
в первое по порядку (*) слово
такое, что
. Но тогда по числу
можно восстановить слово
, то есть
является кодом слова
. Так как длина
есть
, то справедливо неравенство
. Противоречие.
Замечание. Нетрудно понять, что существует лишь конечное число слов, сложность которых равна
. Действительно, если не так, то существуют слова, имеющие одинаковые коды, что противоречит условию однозначности кодирования.
Пусть
— конечное множество. Под кодированием
понимается любое инъективное отображение
в некоторое множество бинарных слов. Другими словами, мы рассматриваем отображения вида
:

где
и
при
.
Длина кода
слова
— это, по определению, длина слова
, то есть
. Для того чтобы различать элементы множества
, коды этих элементов должны иметь определённые ограничения на длину. Точный смысл этого замечания состоит в следующем.
Лемма. Справедливы соотношения
1. 
2. 
Доказательство. Так как число двоичных слов длины
равно

то если
, тогда для кодирования
имеется не более
двоичных слов. Так как
, то должно выполняться неравенство:
, что соответствует условию 1).
С другой стороны, словами длины
можно закодировать не более чем
элементов множества
.
Лемма доказана.
Упражнения.
1. Найдите:
а) число бинарных слов длины n, имеющих ровно k серий;
б) число бинарных слов длины n, имеющих ровно k единичных серий;
в) число слов длины n над алфавитом
имеющих ровно k серий.
2. Пусть
– бинарное слово. Показать, что:
а) число фрагментов вида (11) в слове a равно
, где
– число единиц в слове a;
б) число фрагментов вида (01) в слове a равно 
3. Пусть
Слово
над алфавитом A называется монотонным, если
Найти число монотонных слов длины n над алфавитом A.
4. Пусть
– бинарное слово. Найти:
а) общее число фрагментов слова
;
б) число различных фрагментов слова 
5. Покажите, что
a) Число слов длины
, содержащих в качестве фрагмента данное слово
длины
, равно
b) Общее число подслов длины
в слове
равно
.
c) Общее число фрагментов длины
в слове
равно
.
Воспользуйтесь поиском по сайту: