Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аттестация - октябрь-2012 - ответы.doc
Скачиваний:
49
Добавлен:
19.11.2019
Размер:
99.84 Кб
Скачать
  1. Коды постоянной и переменной длины. Префиксные коды.

Пусть объектом кодирования являются тексты, записанные на некотором

(естественном или искусственном) языке, причем число букв в алфавите этого

языка, включая (если есть такая необходимость) некоторые знаки препинания,

знак пробела и т.п., равно п. Пусть далее, l - наименьшее натуральное число,

удовлетворяющее условию l log2 n . Тогда можно пользоваться простейшим из

различных методов побуквенного кодирования, сводящимся к установлению

взаимно однозначного соответствия между различными буквами исходного

текста и различными кодовыми наборами двоичных символов фиксированной

длины, равной l. Например, если речь идет о текстах, записанных на русском

языке, где число букв алфавита, включая знак пробела, n = 34, то, поскольку

имеет место неравенство 5 < log234 < 6, можно осуществить побуквенное

кодирование.

В связи с переходом к переменной длине кодовых наборов возникает

проблема установления границ между ними при декодировании. При этом крайне

нежелательно, чтобы для установления границ были использованы какие-либо

специальные разделительные символы, так как это привело бы к увеличению

средней длины кодовых наборов. Коды (схемы, алгоритмы кодирования), где

однозначность декодирования достигается без помощи каких-либо специальных

разделительных символов, называются кодами без запятой. Среди них наиболее

простыми и в то же время наиболее популярными являются так называемые

префиксные коды, обладающие тем свойством, что кодовый набор никакой буквы

не является началом (префиксом) кодового набора другой буквы. Префиксный код называется полным, если добавление к нему любого нового

кодового набора нарушает свойство префиксности. Пусть, например, буквам А, В

и С поставлены в соответствии кодовые наборы 00, 01 и 1. Тогда очевидно, что

любая попытка закодировать еще хоть одну букву привела бы к нарушению

свойства префиксности. Значит, код 00, 01, 1 является полным. Если же буквам А.

В и С были поставлены в соответствие кодовые наборы 00, 01 и 10, то через ветвь

11... мы смогли бы, не нарушая свойство префиксности, закодировать сколько

угодно новых букв. Мы также смогли бы без нарушения свойства префиксности

через ветвь 01... закодировать сколько угодно новых букв, если бы буквам А, В и

С были поставлены в соответствие кодовые наборы 000, 001 и 1. Значит, коды 00,

01, 10 и 000, 001, 1 являются неполными.