4. Кодирование и декодирование информации: шифрование слова
По каналу связи передаются сообщения, содержащие только буквы из набора: А, Б, К, Р, Н. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений.
Кодовые слова для некоторых букв известны: К — $01$, Р — $001$. Для трёх оставшихся букв Б, Н и А кодовые слова неизвестны.
Какое количество двоичных знаков потребуется для кодирования слова БАРАБАН, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Известны кодовые слова:
- К — $01$;
- Р — $001$.
Одноразрядный код $0$ использовать нельзя, так как он является началом кодов $01$ и $001$. Код $1$ использовать можно, но тогда два других кодовых слова должны иметь длину не менее $4$: например, $0000$ и $0001$. Такой вариант не будет оптимальным.
Без одноразрядного кода можно использовать два свободных двухразрядных слова:
$10$ и $11$.
Для третьей буквы подходит код $000$. Получаем, например:
- А — $10$;
- Б — $11$;
- Н — $000$.
Все кодовые слова
$01$, $001$, $10$, $11$, $000$
удовлетворяют условию Фано.
В слове БАРАБАН:
- буква А встречается $3$ раза;
- буква Б — $2$ раза;
- буква Р — $1$ раз;
- буква Н — $1$ раз.
Количество двоичных знаков: $3\cdot2+2\cdot2+1\cdot3+1\cdot3=16$.
По каналу связи передаются сообщения, содержащие только буквы из набора: А, В, Д, К, Р, Н. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Р — $1$, К — $0000$. Для четырёх оставшихся букв А, В, Д и Н кодовые слова неизвестны.
Какое количество двоичных знаков потребуется для кодирования слова КАРАВАН, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Код буквы Р равен $1$, поэтому все остальные кодовые слова должны начинаться с $0$.
Код $0$ использовать нельзя, так как он является началом кода К — $0000$. Кратчайший свободный код — $01$. Его выгодно отдать букве А, поскольку в слове КАРАВАН она встречается $3$ раза.
Для остальных букв можно выбрать, например, такие коды:
| Буква | Кодовое слово |
|---|---|
| Р | $1$ |
| К | $0000$ |
| А | $01$ |
| В | $001$ |
| Н | $00010$ |
| Д | $00011$ |
Код удовлетворяет условию Фано. Буква Д в слове КАРАВАН не встречается, поэтому ей можно назначить один из наиболее длинных кодов.
В слове КАРАВАН:
- К встречается $1$ раз;
- А — $3$ раза;
- Р — $1$ раз;
- В — $1$ раз;
- Н — $1$ раз.
Количество двоичных знаков: $4+3\cdot2+1+3+5=19$.
Меньше получить нельзя: после выбора кода $01$ для буквы А в ветви $00$ необходимо разместить код К — $0000$ и ещё три кодовых слова. Минимальные возможные длины этих трёх слов — $3$, $5$, $5$ или $4$, $4$, $4$, поэтому суммарная длина кодов букв В и Н не может быть меньше $8$.
По каналу связи передаются сообщения, содержащие только буквы из набора: В, Д, К, Н, О, Р. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Н — $0$, К — $1001$. Для четырёх оставшихся букв В, Д, О и Р кодовые слова неизвестны.
Какое количество двоичных знаков потребуется для кодирования слова КОНОВОД, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Буква Н имеет код $0$, поэтому все остальные кодовые слова должны начинаться с $1$.
Код $1$ использовать нельзя, так как он является началом кода буквы К — $1001$. Код $10$ также использовать нельзя, поскольку он является началом кода $1001$.
Единственное возможное кодовое слово длины $2$ — $11$. Его выгодно назначить букве О, поскольку она встречается в слове КОНОВОД $3$ раза.
Остальные буквы можно закодировать так:
| Буква | Кодовое слово |
|---|---|
| Н | $0$ |
| К | $1001$ |
| О | $11$ |
| В | $1000$ |
| Д | $1010$ |
| Р | $1011$ |
Все кодовые слова удовлетворяют условию Фано.
Сделать сумму длин кодов букв В и Д меньше $8$ нельзя. В ветви $10$ уже расположен код К — $1001$, и в ней необходимо разместить ещё три кодовых слова. Поэтому для двух букв В и Д минимальная суммарная длина равна $4+4=8$.
В слове КОНОВОД:
- К встречается $1$ раз;
- О — $3$ раза;
- Н — $1$ раз;
- В — $1$ раз;
- Д — $1$ раз.
Общая длина закодированного слова: $4+3\cdot2+1+4+4=19$.
По каналу связи передаются сообщения, содержащие только буквы из набора: А, З, К, Н, Ч. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Н – $1111$, З – $110$. Для трёх оставшихся букв А, К и Ч кодовые слова неизвестны.
Какое количество двоичных знаков потребуется для кодирования слова КАЗАЧКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
В слове КАЗАЧКА:
- буква А встречается $3$ раза;
- буква К — $2$ раза;
- буквы З и Ч — по $1$ разу.
Поэтому самое короткое свободное кодовое слово нужно назначить букве А, следующее по длине — букве К.
Код $0$ не является началом известных кодов, поэтому выберем: А — $0$.
Следующее кратчайшее свободное слово: К — $10$.
Для буквы Ч кратчайшим возможным кодом будет $1110$. Получаем код:
| Буква | Кодовое слово |
|---|---|
| А | $0$ |
| К | $10$ |
| З | $110$ |
| Ч | $1110$ |
| Н | $1111$ |
Этот код удовлетворяет условию Фано.
Количество двоичных знаков для слова КАЗАЧКА: $2\cdot2+3\cdot1+1\cdot3+1\cdot4=4+3+3+4=14$.
По каналу связи передаются сообщения, содержащие только буквы из набора: А, З, К, Н, Т. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: К — $1$, Н — $001$. Для трёх оставшихся букв А, З и Т кодовые слова неизвестны.
Какое количество двоичных знаков потребуется для кодирования слова КАНТАТА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
Код буквы К равен $1$, поэтому все остальные кодовые слова должны начинаться с $0$.
Код $01$ можно использовать: он не является началом кода Н — $001$ и сам не начинается с известного кода. Самое короткое слово выгодно назначить букве А, которая встречается $3$ раза: А — $01$.
После этого для букв Т и З остаётся свободная ветвь $000$. Её необходимо разделить на два кодовых слова: Т — $0000$; З — $0001$.
Полученный код удовлетворяет условию Фано:
| Буква | Кодовое слово |
|---|---|
| К | $1$ |
| А | $01$ |
| Н | $001$ |
| Т | $0000$ |
| З | $0001$ |
В слове КАНТАТА:
- К встречается $1$ раз;
- А — $3$ раза;
- Н — $1$ раз;
- Т — $2$ раза.
Длина сообщения: $1+3\cdot2+3+2\cdot4=18$.