Сообщение, передаваемое по каналу связи, состоит из 8 символов, которые имеют следующую вероятность: ‘А’ - 0.52, ‘Б’ - 0.012, ‘В’ - 0.125, ‘Г’ - 0.033, ‘Д’ - 0.295, ‘Е’ - 0.01 ‘Ж’ - 0.003, ‘З’ - 0.002. Требуется построить эффективный код сообщения с метода Шеннона-Фано
Метод Шеннона-Фано - это метод сжатия данных, который использует вероятности символов для кодирования сообщений таким образом, чтобы использовать меньше битов для передачи наиболее часто встречающихся символов.
Итак, у нас есть 8 символов: ‘А’, ‘Б’, ‘В’, ‘Г’, ‘Д’, ‘Е’, ‘Ж’, ‘З’ со следующими вероятностями:
‘А’ - 0.52,
‘Б’ - 0.012,
‘В’ - 0.125,
‘Г’ - 0.033,
‘Д’ - 0.295,
‘Е’ - 0.01,
‘Ж’ - 0.003,
‘З’ - 0.002.
Для построения эффективного кода Шеннона-Фано мы должны разделить все символы на две группы (или подгруппы), так чтобы сумма вероятностей символов в каждой группе была примерно одинакова (или максимально близка к 0.5). И так мы будем делить до тех пор, пока не получится отдельный символ в группе.
Давай начнем.
Шаг 1: Сортировка символов по убыванию вероятностей
Отсортируем символы в порядке убывания их вероятностей:
‘А’ - 0.52,
‘Д’ - 0.295,
‘В’ - 0.125,
‘Г’ - 0.033,
‘Е’ - 0.01,
‘Б’ - 0.012,
‘Ж’ - 0.003,
‘З’ - 0.002.
Шаг 2: Разделение символов на группы
Разделим символы на две группы так, чтобы сумма вероятностей в каждой группе была близка к 0.5.
Группа 1: ‘А’ (0.52), ‘Д’ (0.295), ‘В’ (0.125) - сумма вероятностей равна 0.52 + 0.295 + 0.125 = 0.94.
Группа 2: ‘Г’ (0.033), ‘Е’ (0.01), ‘Б’ (0.012), ‘Ж’ (0.003), ‘З’ (0.002) - сумма вероятностей равна 0.033 + 0.01 + 0.012 + 0.003 + 0.002 = 0.06.
Шаг 3: Создание кодовых слов
Теперь мы создаем кодовые слова для разделенных групп символов. Для группы 1 мы добавляем "0" в начало и для группы 2 - "1".
Для группы 1:
‘А’ - 0.52: кодовое слово - "0"
‘Д’ - 0.295: кодовое слово - "00"
‘В’ - 0.125: кодовое слово - "01"
Для группы 2:
‘Г’ - 0.033: кодовое слово - "10"
‘Е’ - 0.01: кодовое слово - "110"
‘Б’ - 0.012: кодовое слово - "1110"
‘Ж’ - 0.003: кодовое слово - "11110"
‘З’ - 0.002: кодовое слово - "11111"
Шаг 4: Запись оригинального сообщения с использованием кодовых слов
Теперь, когда мы имеем кодовые слова для каждого символа, мы можем записать оригинальное сообщение, заменив символы на их кодовые слова:
Оригинальное сообщение: ‘ДАВИД’
Запись с использованием кодовых слов: "00 0 01 10 110"
Таким образом, эффективный код сообщения с использованием метода Шеннона-Фано для данного примера будет "00 0 01 10 110".