Нужна ! по каналу связи сообщения, каждое из которых содержит 10 букв а, 5 букв б, 20 букв в и 5 букв г (других букв в сообщениях нет). каждую букву кодируют двоичной последовательностью. при выборе кода учитывались два требования: а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал однозначное декодирование); б) общая длина закодированного сообщения должна быть как можно меньше. какой код из ниже следует выбрать для кодирования букв а, б, в и г? 1) а: 1, б: 01, в: 001, г: 111 2) а: 00, б: 01, в: 10, г: 11 3) а: 0, б: 10, в: 11, г: 111 4) а: 10, б: 111, в: 0, г: 110
186
404
Ответы на вопрос:
Если нужно выбрать из вариантов, достаточно проверить, что код префиксный и найти общую длину сообщения в каждом случае. 1) ✔ префиксныйдлина а: 1, длина б: 2, длина в: 3, длина г: 3длина сообщения: 10 * 1 + 5 * 2 + 20 * 3 + 5 * 3 = 10 + 10 + 60 + 15 = 95 бит2) ✔ префиксныйдлины кодовых слов: 2длина сообщения: (10 + 5 + 20 + 5) * 2 = 40 * 2 = 80 бит3) ✘ не префиксный (11 - префикс 111)4) ✔ префиксный длина а: 2, длина б: 3, длина в: 1, длина г: 3 длина сообщения: 10 * 2 + 5 * 3 + 20 * 1 + 5 * 3 = 20 + 15 + 20 + 15 = 70 бит наиболее оптимальный код 4). если бы нужно было бы найти какое-нибудь оптимальное префиксное кодирование, можно было бы построить код хаффмана. выписываем частоты символов, а затем объединяем наименее часто встречающиеся символы, почлучая кодовое дерево. а - 10, б - 5, в - 20, г - 5 а - 10, (бг) - 10, в - 20 (а(бг)) - 20, в - 20 (в(а(бг)) - 40 если в этой записи есть (xy), то к коду любой буквы из x приписываем слева 0, для любого символа из y - 1. начинаем с пустых кодов: (бг) -> б: 0, г: 1 (а(бг)) -> а: 0, б: 10, г: 11 (в(а(бг)) -> в: 0, а: 10, б: 110, г: 111. доказано, что такой код будет оптимальным.
Популярно: Информатика
-
зимахолодная30.06.2021 12:32
-
rf2048111111ozt4z704.10.2021 06:23
-
sonechka20108.12.2022 03:27
-
стулка28.11.2021 16:47
-
Trollyz06.06.2022 12:51
-
alimbekoffniki17.04.2020 06:09
-
Балерина201712.05.2020 05:50
-
nikim0502.09.2022 13:13
-
elyushik26.02.2021 01:00
-
nekit12023.06.2021 03:00