Какие коды удовлетворяют свойству однозначного декодирования

Какие коды удовлетворяют свойству однозначного декодирования thumbnail

Урок посвящен тому, как решать 5 задание ЕГЭ по информатике

Кодирование информации

5-я тема характеризуется, как задания базового уровня сложности,
время выполнения – примерно 2 минуты,
максимальный балл — 1

Типичные ошибки и рекомендации по их предотвращению:

«Из-за невнимательного чтения условия задания экзаменуемые иногда не замечают, что требуется найти кодовое слово минимальной длины с максимальным (минимальным) числовым значением.

Кроме того, если в задании указано, что несколько букв остались без кодовых слов (как, например, в задании демоварианта), то кодовое слово для указанной буквы должно быть подобрано таким образом, чтобы осталась возможность найти кодовые слова, удовлетворяющие условию Фано, и для других букв. Так, например, если мы букву А закодируем нулём, а букву Б единицей, то букву В мы уже никак не сможем закодировать с соблюдением условия Фано, поэтому длину кодового слова для А или Б следует увеличить»

ФГБНУ «Федеральный институт педагогических измерений»

  • Кодирование — это представление информации в форме, удобной для её хранения, передачи и обработки. Правило преобразования информации к такому представлению называется кодом.
  • Кодирование бывает равномерным и неравномерным:
  • при равномерном кодировании всем символам соответствуют коды одинаковой длины;
  • при неравномерном кодировании разным символам соответствуют коды разной длины, это затрудняет декодирование.

Пример: Зашифруем буквы А, Б, В, Г при помощи двоичного кодирования равномерным кодом и посчитаем количество возможных сообщений:
двоичное кодирование

Таким образом, мы получили равномерный код, т.к. длина каждого кодового слова одинакова для всех кодов (2).

Кодирование и расшифровка сообщений

Декодирование (расшифровка) — это восстановление сообщения из последовательности кодов.

Для решения задач с декодированием, необходимо знать условие Фано:

Условие Фано: ни одно кодовое слово не должно являться началом другого кодового слова (что обеспечивает однозначное декодирование сообщений с начала)

Префиксный код — это код, в котором ни одно кодовое слово не совпадает с началом другого кодового слова. Сообщения при использовании такого кода декодируются однозначно.

  • если сообщение декодируется с конца, то его можно однозначно декодировать, если выполняется обратное условие Фано:
  • Обратное условие Фано: никакое кодовое слово не является окончанием другого кодового слова

    Постфиксный код — это код, в котором ни одно кодовое слово не совпадает с концом другого кодового слова. Сообщения при использовании такого кода декодируются однозначно и только с конца.

    постфиксный код

  • условие Фано – это достаточное, но не необходимое условие однозначного декодирования.

Однозначное декодирование обеспечивается:

Однозначное декодирование

Однозначное декодирование

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

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

Егифка ©:

Решение 5 заданий ЕГЭ

ЕГЭ 5.1: Для кодирования букв О, В, Д, П, А решили использовать двоичное представление чисел 0, 1, 2, 3 и 4 соответственно (с сохранением одного незначащего нуля в случае одноразрядного представления).

Закодируйте последовательность букв ВОДОПАД таким способом и результат запишите восьмеричным кодом.

✍ Решение:

  • Переведем числа в двоичные коды и поставим их в соответствие нашим буквам:

О -> 0 -> 00
В -> 1 -> 01
Д -> 2 -> 10
П -> 3 -> 11
А -> 4 -> 100

  • Теперь закодируем последовательность букв из слова ВОДОПАД:
  • 010010001110010

  • Разобьем результат на группы из трех символов справа налево, чтобы перевести их в восьмеричную систему счисления:
  • 010 010 001 110 010
    ↓ ↓ ↓ ↓ ↓
    2 2 1 6 2

    Результат: 22162

    Решение ЕГЭ данного задания по информатике, видео:

    Рассмотрим еще разбор 5 задания ЕГЭ:

    ЕГЭ 5.2: Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв — из двух бит, для некоторых — из трех). Эти коды представлены в таблице:

    abcde
    0001100100110

    Какой набор букв закодирован двоичной строкой 1100000100110?

    ✍ Решение:

    • Во-первых, проверяем условие Фано: никакое кодовое слово не является началом другого кодового слова. Условие верно.
    •  
      ✎ 1 вариант решения:

    • Код разбиваем слева направо согласно данным, представленным в таблице. Затем переведём его в буквы:

    110 000 01 001 10
    ↓ ↓ ↓ ↓ ↓
    b a c d e

    Результат: b a c d e.

    ✎ 2 вариант решения:

      Этот вариант решения 5 задания ЕГЭ более сложен, но тоже верен.

    • Сделаем дерево, согласно кодам в таблице:
    • 1

    • Сопоставим закодированное сообщение с кодами в дереве:

    110 000 01 001 10

    Результат: b a c d e.

    Кроме того, вы можете посмотреть видео решения этого задания ЕГЭ по информатике:

    Решим следующее 5 задание:

    ЕГЭ 5.3:
    Для передачи чисел по каналу с помехами используется код проверки четности. Каждая его цифра записывается в двоичном представлении, с добавлением ведущих нулей до длины 4, и к получившейся последовательности дописывается сумма её элементов по модулю 2 (например, если передаём 23, то получим последовательность 0010100110).

    Определите, какое число пе­ре­да­ва­лось по ка­на­лу в виде 01100010100100100110.

    ✍ Решение:

    • Рассмотрим пример из условия задачи:

    Было 2310
    Стало 00101001102

  • Где сами цифры исходного числа (выделим их красным цветом):
  • 0010100110 (0010 — 2, 0011 — 3)

  • Первая добавленная цифра 1 после двоичной двойки — это проверка четности (1 единица в 0010 — значит нечетное), после двоичной тройки — это также проверка нечетности (2 единицы в 0011, значит — четное).
  • Исходя из разбора примера решаем нашу задачу так: поскольку «нужные» нам цифры образуются из групп по 4 числа в каждой плюс одно число на проверку четности, то разобьем закодированное сообщение на группы по 5, и отбросим из каждой группы последний символ:
  • разбиваем по 5:
  • 01100 01010 01001 00110

  • отбрасываем из каждой группы последний символ:
  • 0110 0101 0100 0011

  • Результат переводим в десятичную систему:
  • 0110 0101 0100 0011
    ↓ ↓ ↓ ↓
    6 5 4 3

    Читайте также:  Какими свойствами обладает тимьян

    Ответ: 6 5 4 3

    Вы можете посмотреть видео решения этого задания ЕГЭ по информатике:

    ЕГЭ 5.4:

    Для кодирования некоторой последовательности, состоящей из букв К, Л, М, Н решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы Н использовали кодовое слово 0, для буквы К — кодовое слово 10.

    Какова наименьшая возможная суммарная длина всех четырёх кодовых слов?

    Подобные задания для тренировки

    ✍ Решение:

    1 вариант решения

    основан на логических умозаключениях:

    • Найдём самые короткие возможные кодовые слова для всех букв.
    • Кодовые слова 01 и 00 использовать нельзя, так как тогда нарушается условие Фано (начинаются с 0, а — это Н).
    • Начнем с двухразрядных кодовых слов. Возьмем для буквы Л кодовое слово 11. Тогда для четвёртой буквы нельзя подобрать кодовое слово, не нарушая условие Фано (если потом взять 110 или 111, то они начинаются с 11).
    • Значит, надо использовать трёхзначные кодовые слова. Закодируем буквы Л и М кодовыми словами 110 и 111. Условие Фано соблюдается.
    • Суммарная длина всех четырёх кодовых слов равна:

    (Н)1 + (К)2 + (Л)3 + (М)3 = 9

    ✎ 2 вариант решения:

    • Будем использовать дерево. Влево откладываем , вправо — 1:
    • разбор задания 5 егэ по информатике

    • Теперь выпишем соответствие каждой буквы ее кодового слова согласно дереву:

    (Н) -> 0 -> 1 символ
    (К) -> 10 -> 2 символа
    (Л) -> 110 -> 3 символа
    (М) -> 111 -> 3 символа

  • Суммарная длина всех четырёх кодовых слов равна:
  • (Н)1 + (К)2 + (Л)3 + (М)3 = 9

    Ответ: 9

    5.5: ЕГЭ по информатике 5 задание 2017 ФИПИ вариант 2 (под редакцией Крылова С.С., Чуркиной Т.Е.):

    По каналу связи передаются сообщения, содержащие только 4 буквы: А, Б, В, Г; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв А, Б, В используются такие кодовые слова:

    А: 101010,
    Б: 011011,
    В: 01000

    Укажите кратчайшее кодовое слово для буквы Г, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.

    Подобные задания для тренировки

    ✍ Решение:

    • Наименьшие коды могли бы выглядеть, как и 1 (одноразрядные). Но это не удовлетворяло бы условию Фано (А начинается с единицы — 101010, Б начинается с нуля — 011011).
    • Следующим наименьшим кодом было бы двухбуквенное слово 00. Так как оно не является префиксом ни одного из представленных кодовых слов, то Г = 00.

    Результат: 00

    5.6: ЕГЭ по информатике 5 задание 2017 ФИПИ вариант 16 (под редакцией Крылова С.С., Чуркиной Т.Е.):

    Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приемной стороне канала связи. Использовали код:

    А — 01
    Б — 00
    В — 11
    Г — 100

    Укажите, каким кодовым словом должна быть закодирована буква Д. Длина этого кодового слова должна быть наименьшей из всех возможных. Код должен удовлетворять свойству однозначного декодирования. Если таких кодов несколько, укажите код с наименьшим числовым значением.

    ✍ Решение:

    • Так как необходимо найти кодовое слово наименьшей длины, воспользуемся деревом. Влево будем откладывать нули, а вправо — единицы:
    • ЕГЭ по информатике 2017 задание ФИПИ вариант 16 решение

    • Поскольку у нас все ветви завершены листьями, т.е. буквами, кроме одной ветви, то остается единственный вариант, куда можно поставить букву Д:
    • ЕГЭ по информатике 2017 задание ФИПИ вариант 16

    • Перепишем сверху вниз получившееся кодовое слово для Д: 101

    Результат: 101

    Подробней разбор урока можно посмотреть на видео ЕГЭ по информатике 2017:

    5.7: 5 задание. Демоверсия ЕГЭ 2018 информатика (ФИПИ):

    По каналу связи передаются шифрованные сообщения, содержащие только десять букв: А, Б, Е, И, К, Л, Р, С, Т, У. Для передачи используется неравномерный двоичный код. Для девяти букв используются кодовые слова.
    задание 5 егэ информатика 2018

    Укажите кратчайшее кодовое слово для буквы Б, при котором код будет удовлетворять условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.

    Похожие задания для тренировки

    ✍ Решение:

    • Для решения будем использовать дерево. Ветви, соответствующие нулю, будем откладывать влево, единице — вправо.
    • задание 5 егэ по информатике решение

    • При рассмотрении дерева видим, что все ветви «закрыты» листьями, кроме одной ветви — 1100:
    • разбор 5 задания егэ демоверсия 2018

    Результат: 1100

    Подробное решение данного 5 задания из демоверсии ЕГЭ 2018 года смотрите на видео:

    5.8: Задание 5_9. Типовые экзаменационные варианты 2017. Вариант 4 (Крылов С.С., Чуркина Т.Е.):

    По каналу связи передаются шифрованные сообщения, содержащие только четыре букв: А, Б, В, Г; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв А, Б, В используются кодовые слова:

    А: 00011
    Б: 111
    В: 1010

    Укажите кратчайшее кодовое слово для буквы Г, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.

    ✍ Решение:

    • Для решения будем использовать дерево. Ветви, соответствующие нулю, будем откладывать влево, единице — вправо.
    • Поскольку в задании явно не указано о том, что код должен удовлетворять условию Фано, то дерево нужно построить как с начала (по условию Фано), так и с конца (обратное условие Фано).
    • Дерево по условию Фано (однозначно декодируется с начала):
      0

    • Получившееся числовое значение кодового слова для буквы Г01.
    • Дерево по обратному условию Фано (однозначно декодируется с конца):
      0

    • Получившееся числовое значение кодового слова для буквы Г00.
    • После сравнения двух кодовых слов (01 и 00), код с наименьшим числовым значением — это 00.

    Результат: 00

    5.9: Тренировочный вариант №3 от 01.10.2018 (ФИПИ):

    Читайте также:  Опишите в чем состоит процесс обучения и какие свойства ученика изменяются в этом процессе

    По каналу связи передаются сообщения, содержащие только буквы: А, Е, Д, К, М, Р; для передачи используется двоичный код, удовлетворяющий условию Фано. Известно, что используются следующие коды:

    Е – 000
    Д – 10
    К – 111

    Укажите наименьшую возможную длину закодированного сообщения ДЕДМАКАР.
    В ответе напишите число – количество бит.

    ✍ Решение:

    • С помощью дерева отобразим известные коды для букв:
    • Тренировочный вариант №3 решение

    • В результирующем слове — ДЕДМАКАР — вде буквы А. Значит, для получения наименьшей длины необходимо для буквы А выбрать наименьший код в дереве. Учтем это и достроим дерево для остальных трех букв А, М и Р:
    • 00

    • Расположим буквы в порядке их следования в слове и подставим их кодовые слова:

    Д Е Д М А К А Р
    10 000 10 001 01 111 01 110

  • Посчитаем количество цифр в итоговом коде и получим 20.
  • Результат: 20

    Смотрите виде решения задания:

    Источник

    Пусть слово Р е В* имеет вид

    Какие коды удовлетворяют свойству однозначного декодирования

    где Р’, Р»е В*. Тогда слово Р’ называется префиксом (или началом), а Р» — постфиксом (или окончанием) слова р. При этом пустое слово Л и само Р считаются префиксами и постфиксами слова р. Все префиксы и постфиксы слова Р, отличные от Л и р, называются собственными. Например, для слова р = 011 собственными префиксами выступают слова 0 и 01, а собственными постфиксами — 1 и 11.

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

    Очевидно, что если в ф(А) имеется хотя бы одна пара совпадающих элементарных кодов Р„ ру, т. е. Р, = Ру, то префиксность ф(А) нарушается, поскольку р, = ру Л и Ру — префикс для Р„ Ру = Р, Л и Р, — префикс для Ру. То же самое имеет место и в случае, когда ф(А) имеет элементарный код, представимый в виде конкатенации других элементарных кодов из ф(А). Очевидно, что пустое слово Л не может быть составляющей алфавита префиксного кода, поскольку Л является префиксом любого слова. В дальнейшем будем полагать, что Л g ф(А).

    Пусть задан алфавитный код ср(А) = {рь р„}. Обозначим через Р( слово, получающееся из Р, е ф(А) «обращением»:

    Какие коды удовлетворяют свойству однозначного декодирования

    Под ф(А) будем понимать алфавитный код

    Какие коды удовлетворяют свойству однозначного декодирования

    Справедливо следующее достаточное условие однозначного декодирования алфавитного кода, которое нетрудно доказать методом от противного.

    Утверждение 8.1. Если ф(А) или ф(А) является префиксным кодом, то ф(А) допускает однозначное декодирование.

    Пример 8.4. Вернемся к алфавитному коду ф(А) = {0, 01} из примера 8.1. Этот код не является префиксным, так как = 0 — префикс для р2= 01. Однако ф(А) = {0, 10} обладает свойством префикса.

    По утверждению 8.1 код ф(А) допускает однозначное декодирование, что подтверждает результат примера 8.1.

    Пример 8.5. Равномерный двоично-десятичный код

    Какие коды удовлетворяют свойству однозначного декодирования

    из примера 8.2 обладает свойством префикса, поэтому он является однозначно декодируемым.

    Кома-код — это разновидность префиксного кода. При его использовании каждая буква алфавита А кодируется элементарным двоичным кодом из единиц, в конце которого стоит нуль. Так, при | А | = 5 кома-код имеет вид ф(А) = {0, 10, 110, 1110, 11110}. Кома-код легко строится, но он обладает явным недостатком: его элементарные коды могут быть очень длинными и занимать большой объем памяти. Поэтому на практике используются более экономные префиксные коды.

    Важно отметить, что свойство префикса является достаточным, но не является необходимым условием однозначного декодирования алфавитного кода. Это иллюстрирует следующий пример.

    Пример 8.6. Пусть заданы А = {a, b,c,d,e}, В = {О, 1,2,3} и код

    Какие коды удовлетворяют свойству однозначного декодирования

    Здесь коды ф(А) и ф(А) = {10, 23, 0, 33021, 02} не обладают свойством префикса. Однако в примере 8.11 показано, что код ф(А) допускает однозначное декодирование.

    Из-за простоты декодирования префиксные коды иногда называют мгновенными кодами. Рассмотрим процесс декодирования префиксного кода. Пусть А = {ah… , а„} исходный алфавит, В = {Ь,… ,bq} — кодирующий алфавит, при этом п > q> 1. Предположим, что кодирование выполняется побуквенно на основе схемы

    Какие коды удовлетворяют свойству однозначного декодирования

    где А/ е А, Р, е В*, i = 1, …, п. Задан код р = ф(а) Ф Л некоторого сообщения а. Декодирование слова Р е В*, т. е. определение а — ф~'(Р) можно выполнить с помощью следующего алгоритма.

    Алгоритм 8.1. Декодирование слова р = ф(а) по префиксному коду ф(А)

    • 1. Просматривать слово Р по одной букве, начиная с первой. Как только прочитанный префикс (не обязательно собственный) совпадает с некоторым элементарным кодом из ф(А), следует этот префикс заменить соответствующей буквой из А, а затем исключить из слова р.
    • 2. Пункт 1 повторять до тех пор, пока р ф Л.

    Очевидно, что время работы данного алгоритма составляет О(тп), где m = |Р|, я = |А|.

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

    Пример 8.7. Рассмотрим алфавит А = {а, Ъ, с}. Для кодирования используем кома-код

    Какие коды удовлетворяют свойству однозначного декодирования

    который является префиксным, а значит, однозначно декодируемым. Слову а = abbc в этом коде соответствует слово Р = ф(а) = 01010110. Применим к слову р алгоритм 8.1.

    Читайте также:  Какие свойства воды позволяют наблюдать жизнь рыб в аквариуме

    Считываем первую букву 0 из р. Ей соответствует буква а е А. Производим декодирование и исключаем 0 из дальнейшего рассмотрения. В результате имеем: а = а, Р = 1010110.

    Считываем следующую букву 1. Такого элементарного кода нет. После считывания следующей буквы 0 получаем префикс 10, которому соответствует элементарный код буквы be А. После декодирования и исключения префикса 10 из р имеем: а = ab, Р= 10110.

    Аналогично на третьей итерации алгоритма можно декодировать еще один префикс 10. В результате получим: а — abb, Р = 110.

    На четвертой итерации декодируется вся оставшаяся часть слова Р, поскольку в ср(А) нет элементарных кодов 1 и 11. В итоге имеем: а = abbc и Р = Л. Процесс декодирования завершается.

    Для распознавания однозначного декодирования можно применять следующее необходимое условие [25].

    Утверждение 8.2 (неравенство Макмиллана). Для всякого однозначно декодируемого кода в ^-буквенном алфавите с набором длин элементарных кодов 1, всегда выполняется неравенство

    Какие коды удовлетворяют свойству однозначного декодирования

    Для двоичного кодирования неравенство Макмиллана принимает вид

    Какие коды удовлетворяют свойству однозначного декодирования

    По утверждению 8.2, если для алфавитного кода ср(А) = {рь..р„} неравенство Макмиллана не выполняется, т. е.

    Какие коды удовлетворяют свойству однозначного декодирования

    где ?, — | pi |, j = 1,___, и, то (р(А) не допускает однозначного декодирования. При выполнении неравенства Макмиллана об однозначности кода ср(А) ничего сказать нельзя.

    Пример 8.8. Возьмем из примера 8.6 однозначно декодируемый код

    Какие коды удовлетворяют свойству однозначного декодирования

    Для него ix = ?2 = 2, ?3 = 1, ?4 = 5, ?5 = 2. Вычислим сумму

    Какие коды удовлетворяют свойству однозначного декодирования

    Неравенство Макмиллана выполняется.

    Пример 8.9. Пусть заданы алфавиты А = {0, 1, 2, 3,4, 5,6, 7, 8, 9}, В = {0, 1} и код

    Какие коды удовлетворяют свойству однозначного декодирования

    Заметим, что ф(А) не обладает свойством префикса. Для ф(А) имеем = ?2 = 1, €3 = ?4 = 2, ?5 — — ?7 — = 3, ?9 = ?ю = 4. Выполним вычисление левой части неравенства Макмиллана:

    Какие коды удовлетворяют свойству однозначного декодирования

    Неравенство не выполняется, поэтому код ф(А) не является однозначно декодируемым. Действительно, слово (3 = 111111 разделяется на элементарные коды двумя способами: р = (11) (11) (11), Р = (111) (111). Отсюда |3 = ф(ЗЗЗ) и [3 = ф(77) одновременно.

    Следующий пример показывает, что неравенство Макмиллана не может служить достаточным условием распознавания однозначного декодирования кода.

    Пример 8.10. Рассмотрим алфавиты А = {a, b, с, d, е}, В = {0, 1} и код

    Какие коды удовлетворяют свойству однозначного декодирования

    Нетрудно убедиться, что для (р(А) неравенство Макмиллана выполняется. Между тем ф(А) не является однозначно декодируемым. Например, слово Р = 11011101 допускает две расшифровки:

    Какие коды удовлетворяют свойству однозначного декодирования

    Существуют необходимые и одновременно достаточные условия однозначного декодирования алфавитного кода. Эти условия проверяются с помощью соответствующих алгоритмов: алгоритма Маркова и алгоритма анализа окончаний [8, 25]. Приведем второй из них как наиболее простой и эффективный. Пусть задан исходный алфавитный код ср(А) = (ft, … , Р„}, для которого п > 1 иЛ? ф(А).

    Алгоритм 8.2. Распознавание однозначности кода ф(А) путем анализа окончаний

    • 1. Положить W:= 0. Рассмотреть все пары элементарных кодов Р„ р, е ф(А), i Ф j. Если среди них есть равные пары кодов, то процесс завершить ответом: ф(А) не является однозначно декодируемым кодом. В противном случае найти пары, в которых один элементарный код является собственным префиксом другого элементарного кода. Для каждой такой пары найти собственное окончание, которое остается после удаления префикса из начальной части более длинного элементарного кода. Например, для пары Р, = 10 и Ру = 10010 окончанием будет слово 010. Все найденные собственные окончания записать в W и перейти на пункт 2. Если таких пар нет в ф(А), т. е. W не изменилось и осталось пустым, то процесс завершить ответом: ф(А) — префиксный, а значит, однозначно декодируемый код.
    • 2. Выполнить сравнение всех возможных пар слов, одно из которых принадлежит W, а другое — алфавитному коду ф(А), и выделить собственные окончания. Все новые окончания добавить в W.
    • 3. Пункт 2 повторять до тех пор, пока будут появляться новые окончания.
    • 4. Выполнить проверку условия:
      • — если W п (р(А) — 0, т. е. ни одно окончание из W не совпадает ни с одним элементарным кодом из ср(А), процесс завершить ответом: ф(А) является однозначно декодируемым кодом;
      • — иначе ответ: ф(А) не допускает однозначного декодирования.

    Очевидно, что алгоритм 8.2 имеет полиномиальную сложность. Проиллюстрируем его работу на примерах.

    Пример 8.11. Вернемся к коду из примера 8.6:

    Какие коды удовлетворяют свойству однозначного декодирования

    Применим к нему алгоритм 8.2. В результате попарного сравнения в пункте 1 элементарных кодов из ф(А) получим W = {1}. После первой итерации пункта 2 имеем W= {1, 2033}. Повторение пункта 2 дает

    Какие коды удовлетворяют свойству однозначного декодирования

    после чего W уже не изменяется. Итак, W п ф(А) = 0 и ф(А) — однозначно декодируемый код.

    Пример 8.12. Для алфавитного кода

    Какие коды удовлетворяют свойству однозначного декодирования

    из примера 8.9 алгоритм 8.2 работает следующим образом. Выполнение пункта 1 дает

    Какие коды удовлетворяют свойству однозначного декодирования

    В пункте 2 множество W не пополняется. В итоге

    Какие коды удовлетворяют свойству однозначного декодирования

    Поэтому ф(А) не является однозначно декодируемым кодом, что подтверждает результат примера 8.9.

    Пример 8.13. Вновь рассмотрим алфавитный код
    Какие коды удовлетворяют свойству однозначного декодирования

    Из примера 8.10 известно, что данный код не допускает однозначного декодирования. В самом деле, в процессе выполнения алгоритма 8.2 множество W принимает вид W = {1, 00, 01, 101, 1011}. Имеем неоднозначность алфавитного кода ср(А), поскольку W п ср(А) = = {101} *.

    Алгоритм 8.2 также работает верно, когда один элементарный код является конкатенацией других.

    Пример 8.14. Пусть задан алфавитный код

    Какие коды удовлетворяют свойству однозначного декодирования

    где Pi = 01, р2 = 11, Рз = 011101 = Pi р2 Pi. Сравнение элементарных кодов в пункте 1 приводит к W = {1101}. При выполнении пункта 2 множество W пополняется окончанием 01. В итоге

    Какие коды удовлетворяют свойству однозначного декодирования

    Это свидетельствует о том, что (р(А) не является однозначно декодируемым кодом.

    Источник