Известно что слово кошка закодировали с помощью последовательности 1110011101
Сборник. Решение задач на тему «Кодировнаие текстовой информации»
Онлайн-конференция
«Современная профориентация педагогов
и родителей, перспективы рынка труда
и особенности личности подростка»
Свидетельство и скидка на обучение каждому участнику
Решение задач на тему «Кодирование текстовой информации»
Объем памяти, занимаемый текстом.
В задачах такого типа используются понятия:
единицы измерения информации (бит, байт и др.)
Для представления текстовой (символьной) информации в компьютере используется алфавит мощностью 256 символов. Один символ из такого алфавита несет 8 бит информации (2 8 =256). 8 бит =1 байту, следовательно, двоичный код каждого символа в компьютерном тексте занимает 1 байт памяти.
1. Сколько бит памяти займет слово «Микропроцессор»?([1], c .131, пример 1)
Слово состоит из 14 букв. Каждая буква – символ компьютерного алфавита, занимает 1 байт памяти. Слово занимает 14 байт =14*8=112 бит памяти.
2. Текст занимает 0, 25 Кбайт памяти компьютера. Сколько символов содержит этот текст? ([1], c .133, №31)
Переведем Кб в байты: 0, 25 Кб * 1024 =256 байт. Так как текст занимает объем 256 байт, а каждый символ – 1 байт, то в тексте 256 символов.
Ответ: 256 символов
3. Текст занимает полных 5 страниц. На каждой странице размещается 30 строк по 70 символов в строке. Какой объем оперативной памяти (в байтах) займет этот текст? ([1], c .133, №32)
30*70*5 = 10500 символов в тексте на 5 страницах. Текст займет 10500 байт оперативной памяти.
4. Считая, что каждый символ кодируется одним байтом, оцените информационный объем следующего предложения из пушкинского четверостишия:
Певец-Давид был ростом мал, Но повалил же Голиафа! (ЕГЭ_2005. демо, уровень А)
В тексте 50 символов, включая пробелы и знаки препинания. При кодировании каждого символа одним байтом на символ будет приходиться по 8 бит, Следовательно, переведем в биты 50*8= 400 бит.
5 . Считая, что каждый символ кодируется одним байтом, оцените информационный объем следующего предложения в кодировке КОИ-8: Сегодня метеорологи предсказывали дождь. (ЕГЭ_2005, уровень А)
В таблице КОИ-8 каждый символ закодирован с помощью 8 бит. См. решение задачи №4.
Ответ: 320 бит
6. Считая, что каждый символ кодируется 16 битами, оцените информационный объем следующего предложения в кодировке Unicode :
Каждый символ кодируется 8 битами.
34 символа в предложении. Переведем в биты: 34*16=544 бита.
Ответ: 544 бит
7. Каждый символ закодирован двухбайтным словом. Оцените информационный объем следующего предложения в этой кодировке:
В одном килограмме 100 грамм.
19 символов в предложении. 19*2 =38 байт
Ответ: 38 байт
8. Текст занимает полных 10 секторов на односторонней дискете объемом 180 Кбайт. Дискета разбита на 40 дорожек по 9 секторов. Сколько символов содержит текст? ([1], c .133, №34)
180 Кбайт : 360 * 10 =5 Кбайт – поместится на одном секторе.
5*1024= 5120 символов содержит текст.
Ответ: 5120 символов
9. Сообщение передано в семибитном коде. Каков его информационный объем в байтах, если известно, что передано 2000 символов.
Если код символа содержит 7 бит, а всего 2000 символов, узнаем сколько бит займет все сообщение. 2000 х 7=14000 бит.
Переведем результат в байты. 14000 : 8 =1750 байт
10. Сколько секунд потребуется модему, передающему сообщение со скоростью 28800 бит/с, чтобы передать 100 страниц текста в 30 строк по 60 символов каждая, при условии, что каждый символ кодируется одним байтом? (ЕГЭ_2005, уровень В)
Найдем объем сообщения. 30*60*8*100 =1440000 бит.
Найдем время передачи сообщения модемом. 1440000 : 28800 =50 секунд
11. Сколько секунд потребуется модему, передающему сообщения со скоростью 14400 бит/с, чтобы передать сообщение длиной 225 Кбайт? (ЕГЭ_2005, уровень В)
Переведем 225 Кб в биты.225 Кб *1024*8 = 1843200 бит.
Найдем время передачи сообщения модемом. 1843200: 14400 =128 секунд.
Кодирование (декодирование) текстовой информации.
В задачах такого типа используются понятия:
Кодирование – отображение дискретного (прерывного, импульсного) сообщения в виде определенных сочетаний символов.
Код (от французского слова code – кодекс, свод законов) – правило по которому выполняется кодирование.
Кодовая таблица (или кодовая страница) – таблица, устанавливающая соответствие между символами алфавита и двоичными числами.
Примеры кодовых таблиц (имеются на CD диске к учебнику Н. Угринович):
Рис.1 Кодировка КОИ8-Р
ASCII – American Standard Code for Information Interchange (американский стандарт кодов для обмена информацией) – это восьмиразрядная кодовая таблица, в ней закодировано 256 символов (127- стандартные коды символов английского языка, спецсимволы, цифры, а коды от 128 до 255 – национальный стандарт, алфавит языка, символы псевдографики, научные символы, коды от 0 до 32 отведены не символам, а функциональным клавишам).
Рис. 2 Международная кодировка ASCII
Unicode – стандарт, согласно которому для представления каждого символа используется 2 байта. (можно кодировать математические символы, русские, английские, греческие, и даже китайские). C его помощью можно закодировать не 256, а 65536 различных символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов
1) #160 неразрывный пробел,
2) #173 мягкий перенос.
Рис. 3 Кодировка CP 1251
1) #255 неразрывный пробел.
Рис. 4 Кодировка СР866
#202 неразрывный пробел.
Рис. 5 Кодировка Mac
1) Коды 128-159 не используются;
2) #160 неразрывный пробел,
3) #173 мягкий перенос.
Рис. 6 Кодировка ISO 8859-5
Используем кодировочные таблицы
12. Как будет выглядеть слово «диск», записанное в кодировке СР1251, в других кодировках. ([2], стр. 68 №2.63)
Последовательность десятичных кодов слова «диск» составляем на основе кодировочных таблиц
13. Перейдите от двоичного кода к десятичному и декодируйте следующие тексты:
а) 01010101 01110000 0100000 00100110 00100000 01000100 1101111 01110111 01101110;
б) 01001001 01000010 01001101;
в) 01000101 01101110 01110100 01100101 01110010
Решение:
1. Переведите коды из двоичной системы счисления в десятичную.
а) 01010101 01110000 00100000 00100110 00100000 01000100 1101111 01110111 01101110 → 85 112 32 38 32 68 111 119 110
б) 01001001 01000010 01001101 → 73 66 77
в) 01000101 01101110 01110100 01100101 01110010 → 69 110 116 101 114
2. Запустите текстовый редактор Hieroglyph
3. Включить клавишу Num Lock. Удерживая клавишу Alt, набрать код символа на цифровой клавиатуре. Отпустить клавишу Alt, на экране появится соответствующая буква.
а ) 85 112 32 26 32 68 111 119 110 → Up & Down;
б ) 73 66 77 → IBM;
в ) 69 110 116 101 114 → Enter
1 4. Декодируйте следующие тексты, заданные десятичным кодом:
а) 087 111 114 100;
б) 068 079 083;
в) 080 097 105 110 116 098 114 117 115 104.
Решение:
Запустите текстовый редактор Hieroglyph. Включить клавишу Num Lock. Удерживая клавишу Alt, набрать код символа на цифровой клавиатуре. Отпустить клавишу Alt, на экране появится соответствующая буква.
а) 087 111 114 100 → Word;
б) 068 079 083 → DOS;
в) 080 097 105 110 116 098 114 117 115 104 → Paintbrush.
Не используем кодировочные таблицы
15. Буква « I »в таблице кодировки символов имеет десятичный код 105. что зашифровано последовательностью десятичных кодов: 108 105 110 107? ([1],пример 2, стр.132)
Учитываем принцип последовательности кодирования и порядок букв в латинском алфавите и, можно, не обращаться к таблице кодировки символов.
Ответ: Закодировано слово « link »
16. Десятичный код (номер) буквы «е» в таблице кодировки символов ASCII равен 101. Какая последовательность десятичных кодов будет соответствовать слову:
Учитываем принцип последовательности кодирования и порядок букв в латинском алфавите:
Известно что слово кошка закодировали с помощью последовательности 1110011101
Задания:
1) Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11 соответственно). Если таким способом закодировать последовательность символов ГБАВ и записать результат в шестнадцатеричной системе счисления, то получится:
1) 132 16 2) D2 16 3) 3102 16 4) 2D 16
Решение и ответ:
2) Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11 соответственно). Если таким способом закодировать последовательность символов ГБВА и записать результат шестнадцатеричным кодом, то получится:
1) 138 16 2) DBCA 16 3) D8 16 4) 3120 16
Решение и ответ:
По условию:
А = 00
Б = 01
В = 10
Г = 11
Значит:
ГБВА = 11011000 в двоичной системе. Переведем в шестнадцатеричную и получим D8
Ответ: 3
Решение и ответ:
4) Для кодирования букв А, Б, В, Г используются четырехразрядные последовательные двоичные числа от 1000 до 1011 соответственно. Если таким способом закодировать последовательность символов БГАВ и записать результат в восьмеричном коде, то получится:
1) 175423 2) 115612 3) 62577 4) 12376
Решение и ответ:
По условию:
А = 1000
Б = 1001
В = 1010
Г = 1011
БГАВ = 1001101110001010, теперь слудует перевести данное число из двоичной в восьмеричную, и получить ответ.
1001101110001010 2 = 115612 8
Ответ: 2
Для кодирования букв А, В, С, D используются трехразрядные последовательные двоичные числа, начинающиеся с 1 (от 100 до 111 соответственно). Если таким способом закодировать последовательность символов CDAB и записать результат в шестнадцатеричном коде, то получится:
1) А52 16 2) 4С8 16 3) 15D 16 4) DE5 16
Решение и ответ:
По условию: Соответственно
A = 100
B = 101
C = 110
D = 111
СDAB = 110111100101, переведем двоичное число в шестнадцатеричную:
110111100101 2 = DE5 16
Ответ: 4
6) Для кодирования букв К, L, М, N используются четырехразрядные последовательные двоичные числа от 1000 до 1011 соответственно. Если таким способом закодировать последовательность символов KMLN и записать результат в восьмеричном коде, то получится:
1) 84613 8 2) 105233 8 3) 12345 8 4) 776325 8
Решение и ответ:
По условию: соответственно
K = 1000
L = 1001
M = 1010
N = 1011
KMLN = 1000101010011011, переведем в восьмеричное число:
1000101010011011 2 = 105233 8
Ответ: 2
7) Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв – из двух бит, для некоторых – из трех). Эти коды представлены в таблице:
а b с d е
100 110 011 01 10
Определите, какой набор букв закодирован двоичной строкой 1000110110110, если известно, что все буквы в последовательности – разные:
1) cbade 2) acdeb 3) acbed 4) bacde
Решение и ответ:
Запишем двоичный код в виде битов: Методом перебора возможных вариантов, чтобы не повторялись буквы.
Получается: 100 011 01 10 110
Следовательно: acdeb
Ответ: 2
8) Для 6 букв латинского алфавита заданы их двоичные коды (для некоторых букв из двух бит, для некоторых – из трех). Эти коды представлены в таблице:
А В С D Е F
00 100 10 011 11 101
Определите, какая последовательность из 6 букв закодирована двоичной строкой 011111000101100.
1) DEFBAC 2) ABDEFC 3) DECAFB 4) EFCABD
Решение и ответ:
Решим методом перебора, так как буквы в ответах не повторяются, значит и коды не должны повторяться:
Получаем:
011 11 10 00 101 100
Соответственно: DECAFB
Ответ: 3
9) Для кодирования букв А, В, С, D используются четырехразрядные последовательные двоичные числа, начинающиеся с 1 (от 1001 до 1100 соответственно). Если таким способом закодировать последовательность символов CADB и записать результат в шестнадцатеричном коде, то получится:
1) AF52 16 2) 4CB8 16 3) F15D 16 4) В9СА 16
10) Для кодирования сообщения, состоящего только из букв А, Б, В и Г, используется неравномерный по длине двоичный код:
А Б В Г
00 11 010 011
Если таким способом закодировать последовательность символов ВГАГБВ и записать результат в шестнадцатеричном коде, то получится:
1) CDADBC 16 2) A7C4 16 3) 412710 16 4) 4С7А 16
Решение и ответ:
ВГАГБВ = 0100110001111010, переведем в шестнадцатеричную:
0100 1100 0111 1010 2 = 4C7A 16
Ответ: 4
11) Для кодирования сообщения, состоящего только из букв А, Б, В и Г, используется неравномерный по длине двоичный код:
А Б В Г
00 11 010 011
Если таким способом закодировать последовательность символов ГАВБВГ и записать результат в шестнадцатеричном коде, то получится:
1) 62D3 16 2) 3D26 16 3) 31326 16 4) 62133 16
Ответ: 1
12) Для кодирования сообщения, состоящего только из букв А, Б, В и Г, используется неравномерный по длине
двоичный код:
А Б В Г
00 11 010 011
Если таким способом закодировать последовательность символов ГБВАВГ и записать результат в шестнадцатеричном
коде, то получится:
1) 71013 16 2) DBCACD 16 3) 31A7 16 4) 7A13 16
13) Для кодирования сообщения, состоящего только из букв А, Б, В и Г, используется неравномерный по длине двоичный код:
А Б В Г
00 11 010 011
Если таким способом закодировать последовательность символов ГАВБГВ и записать результат в шестнадцатеричном коде, то получится:
1) DACBDC 16 2) AD26 16 3) 621310 16 4) 62DA 16
Решение и ответ: соответственно..
14) Для кодирования сообщения, состоящего только из букв A, B, C, D и E, используется неравномерный по длине двоичный код:
A B C D E
000 11 01 001 10
Какое (только одно!) из четырех полученных сообщений было передано без ошибок и может быть раскодировано:
1) 110000010011110
2) 110000011011110
3) 110001001001110
4) 110000001011110
Решение и ответ:
Возьмем первый код:
11 000 001 001 11 10 = BADDBE
Второй код:
11 000 001 10 11 110 = с ошибкой в конце.
Третий код:
11 000 10 01 001 110 = с ошибкой в конце.
Четвертый код:
11 000 000 10 11 110 = с ошибкой в конце.
Ответ: 1
15) Для передачи по каналу связи сообщения, состоящего только из символов А, Б, В и Г используется посимвольное
кодирование: А-00, Б-11, В-010, Г-011. Через канал связи передается сообщение: ВАГБГВ. Закодируйте сообщение
данным кодом. Полученную двоичную последовательность переведите в шестнадцатеричный вид.
1) AD34 2) 43DA 3) 101334 4) CADBCD
Решение и ответ:
17) Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=100, В=101. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?
1) 1 2) 11 3) 01 4) 010
Аналогично заданию номер 16.
Ответ: 2
18) Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивая в правом нижнем углу. При кодировании 1 обозначает черный цвет, а 0 – белый.
Для компактности результат записали в восьмеричной системе счисления. Выберите правильную запись кода.
1) 57414 2) 53414 3) 53412 4) 53012
Решение и ответ:
После кодирования мы получаем данный код:
Ответ: 3
19) Для передачи по каналу связи сообщения, состоящего только из символов А, Б, В и Г используется посимвольное
кодирование: А-0, Б-11, В-100, Г-011. Через канал связи передается сообщение: ГБАВАВГ. Закодируйте сообщение
20) Для передачи данных по каналу связи используется 5-битовый код. Сообщение содержит только
буквы А, Б и В, которые кодируются следующими кодовыми словами:
A — 11010, Б — 00110, В — 10101.
При передаче возможны помехи. Однако некоторые ошибки можно попытаться исправить. Любые два из этих трёх кодовых слов отличаются друг от друга не менее чем в трёх позициях. Поэтому если при передаче слова произошла ошибка не более чем в одной позиции, то можно сделать обоснованное предположение о том, какая буква передавалась. (Говорят, что «код исправляет одну ошибку».) Например, если получено кодовое слово 10110, считается, что передавалась буква Б. (Отличие от кодового слова для Б — только в одной позиции, для остальных кодовых слов отличий больше.) Если принятое кодовое слово отличается от кодовых слов для букв А, Б, В более чем в одной позиции, то считается, что произошла ошибка(она обозначается‘x’).
Получено сообщение 00111 11110 11000 10111. Декодируйте это сообщение — выберите правильный вариант.
1) БААx
2) БААВ
3) xxxx
4) xAAx
Решение:
1) 00111 = Б, так как 1 ошибка в последней цифре.
2) 11110 = A, так как 1 ошибка в третьей цифре.
3) 11000 = А, так как 1 ошибка в четвертой цифре.
4) 10111 = В, так как 1 ошибка в четвертой цифре
00111 11110 11000 10111 = БААВ.
Ответ: 2
Код является однозначно декодируемым тогда и только тогда, когда в построенном таким образом графе нет ориентированных циклов, включающих вершину Λ.
Таким образом, код (6) не обладает свойством однозначной декодируемости.
Проверим таким же способом код (5), который, как мы уже выяснили, не является ни префиксным, ни постфиксным. Множество последовательностей, которые совпадают с началом и концом кодовых слов, состоит из пустой строки и единицы: <Λ, 1>. Граф, построенный с помощью приведённого выше алгоритма, содержит два узла и одну петлю:
В этом графе нет цикла, содержащего вершину Λ, поэтому любое сообщение, записанное с помощью такого кода, декодируется однозначно. Выше мы показали это с помощью простых рассуждений.
Нужно отметить, что на практике применяются, главным образом, префиксные коды, поскольку они позволяют декодировать сообщение по мере его получения, не дожидаясь окончания приёма данных.
Ещё примеры
Заметим, что «обратное» условие Фано не выполняется: код буквы А (00) совпадает с окончанием кода буквы В (100), а код буквы Б (01) совпадает с окончанием кода буквы Г (101).
Теперь проверим, что получится, если сократить код буквы Д до 11 (вариант 1). Свойство однозначной декодируемости может быть потеряно только тогда, когда в результате такого сокращения нарушится условие Фано, то есть код буквы Д совпадёт с началом какого-то другого кодового слова. Видим, что этого не произошло — нет других кодовых слов, которые начинаются с 11, поэтому вариант 1 — это и есть верное решение.
Остается убедиться, что варианты 3 и 4 не подходят. Если мы сократим код буквы Г до 10 (вариант 3), условие Фано оказывается нарушенным, так как теперь код буквы Г (10) совпал с началом кода буквы В (100). Одновременно нарушено и «обратное» условие Фано: код буквы А (00) совпадает с окончанием кода буквы В (100). Но, как мы знаем, при этом код может всё-таки быть однозначно декодируемым.
Конечно, можно построить граф, как было сделано выше, и проверить, есть ли в нём циклы, включающие вершину Λ. В данном случае граф выглядит так:
Построение и анализ графа — дело достаточно трудоемкое и требующее аккуратности. Обычно в таких случаях значительно легче просто подобрать последовательность, которая может быть декодирована двумя разными способами.
Наконец, нужно убедиться, что вариант 4 не удовлетворяет условию. Если мы сократим код буквы Д до 10, условие Фано оказывается нарушенным, так как теперь код буквы Д (10) совпал с началом кода буквы В (100). Как и раньше, нарушено «обратное» условие Фано: код буквы А (00) совпадает с окончанием кода буквы В (100) и код буквы Б (01) совпадает с окончанием кода буквы Г (101).
Построим граф по методу Ал.А. Маркова:
Проверим вариант 1 — сократим код буквы Г до 00. При этом нарушилось условие Фано, которое обеспечивало однозначную декодируемость исходного варианта: теперь код буквы Г (00) совпадает с началом кода буквы Д (001). Но и обратное условие Фано тоже не выполняется для пары букв А-В. Поэтому можно предположить, что такой код не обладает свойством однозначной декодируемости. И действительно, легко находится цепочка 001011, которую можно раскодировать как ГБА (00 10 11) или ДВ (001 011).
Рассмотрим вариант 3 — сократим код буквы В до 01. При этом условие Фано выполняется, поскольку ни одно из кодовых слов не начинается с 01, то есть код является префиксным и однозначно раскодируется. Это и есть правильный ответ.
На всякий случай проверяем вариант 4 — сокращает код буквы Б до 1. При этом код перестает быть префиксным, и обратное условие Фано также не выполнено (код буквы Б совпадает с началом и концом кода буквы А). Сразу понятно, что последовательность 11 можно раскодировать как А или как ББ, поэтому этот вариант неверный.
Известно что слово кошка закодировали с помощью последовательности 1110011101
Затем на вход программе подаётся значение N — количество записей, которые необходимо обработать. Следующие N строк содержат записанные словами числа. Каждое число записано по-русски, маленькими буквами, без ошибок. Если число состоит из нескольких слов, между словами находится ровно один пробел, лишних пробелов в начале и в конце строк нет.
Напишите эффективную программу, которая определит сумму тех входных чисел, которые находятся в интервале то 1 до 99.
Размер памяти, которую использует Ваша программа, не должен зависеть от длины исходного списка.
Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи.
Пример входных данных (обучающий блок показан в примере с сокращениями):
тысяча девятьсот восемьдесят четыре
Пример выходных данных для приведённого выше примера входных данных:
Программа читает обучающий блок и запоминает написание чисел и их значения. Допускается построение полного «словаря» всех чисел от 1 до 99 или хранение только исходного обучающего блока. В приведённом примере на Паскале реализовано построение полного «словаря».
Затем программа читает входные строки, не запоминая их в массиве. Если построен полный «словарь», прочитанная строка ищется в этом словаре как единое целое. Числовое значение введённой строки равно сумме значений составляющих слов. Если вся строка при поиске в полном «словаре» отсутствует в обучающих данных, введённое число не попадает в интервал от 1 до 99 и не должно учитываться. Дополнительная проверка вхождения числа в заданный интервал не требуется, т. к. все числа, которые удаётся распознать с помощью приведённого обучающего блока, автоматически в него попадают, но за наличие такой дополнительной проверки в программе оценка снижается.
Паскаль |
program c4; w: array[1..99] of string; for i := 1 to 9 do readln(w[i]); for i := 11 to 19 do readln(w[i]); for i := 1 to 9 do readln(w[10*i]); for i := 2 to 9 do begin for j := 1 to 9 do begin w[10*i + j] := w[10*i]+ ‘ ‘ + w[j]; for i:=1 to N do begin while (j line) do j:=j+1; if (v1>0) and (v2>0) then s:=s+v1+v2; FOR i = 10 TO 90 STEP 10 INPUT N s = 0 FOR i = 1 TO N Все 5-буквенные слова, составленные из букв Б, К, Ф, Ц, записаны в алфавитном порядке и пронумерованы. Вот начало списка: Запишите слово, которое стоит на 239-м месте от начала списка. Заменим буквы Б, К, Ф, Ц, на 0, 1, 2, 3 (для них порядок очевиден – по возрастанию). Выпишем начало списка, заменив буквы на цифры: Полученная запись есть числа, записанные в четверичной системе счисления в порядке возрастания. Тогда на 239 месте будет стоять число 238 (т. к. первое число 0). Переведём число 238 в четверичную систему (деля и снося остаток справа налево): В четверичной системе 238 запишется как 03232 (ноль приписали слева, потому что все слова 5-буквенные, значит, и символов должно быть пять). Произведём обратную замену и получим БЦФЦФ. Все заглавные буквы русского алфавита закодированы неравномерным двоичным кодом, в котором никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Известно, что все кодовые слова содержат не меньше двух двоичных знаков, а слову БАРАН соответствует код 10011111011010. Какое наименьшее количество двоичных знаков может содержать сообщение, кодирующее слово РОБОТ? Заметим, что буква А повторяется в слове БАРАН два раза. Буква Н стоит в конце слова, кодовое слово 10 для буквы Н не подходит, поскольку тогда невозможно будет подобрать такое кодовое слово для буквы А, которое может встретиться в коде 10011111011010 два раза. Кодовое слово 1010 для буквы Н не подходит, поскольку в этом случае либо невозможно будет подобрать такое кодовое слово для буквы А, которое может встретиться в коде 10011111011010 два раза, либо невозможно будет подобрать такое кодовое слово для буквы А, которое не будет нарушать условие Фано. Значит, букве Н соответствует кодовое слово 010. Букву А можем закодировать только кодовым словом 011, поскольку при выборе кодового слова 11 не останется кодового слова для буквы Р, не нарушающего условия Фано, а кодовое слово 1011 не встречается в коде 10011111011010 два раза. Тогда букве Б соответствует кодовое слово 10, а букве Р соответствует кодовое слово 111. Буква О встречается в слове РОБОТ два раза, закодируем её кодовым словом 00. Букву Т закодировать кодовым словом 110 нельзя, поскольку не останется кодовых слов для остальных букв русского алфавита, поэтому букве Т соответствует кодовое слово 1100. Тогда сообщение, кодирующее слово РОБОТ, содержит 3 + 2 + 2 + 2 + 4 = 13 двоичных знаков. Все заглавные буквы русского алфавита закодированы неравномерным двоичным кодом, в котором никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Известно, что все кодовые слова содержат не меньше двух двоичных знаков, а слову БАЗАР соответствует код 10001111011010. Какое наименьшее количество двоичных знаков может содержать сообщение, кодирующее слово РОБОТ? Заметим, что буква А повторяется в слове БАЗАР два раза. Буква Р стоит в конце слова, кодовое слово 10 для буквы Р не подходит, поскольку тогда невозможно будет подобрать такое кодовое слово для буквы А, которое может встретиться в коде 10001111011010 два раза. Пусть буква Р кодируется кодовым словом 010. Тогда буква А может кодироваться только кодовым словом 011, следовательно, букве Б соответствует кодовое слово 100, а букве З — кодовое слово 11. Коды остальных букв для соблюдения условия Фано могут начинаться с 00 или 101. Буква О встречается в слове РОБОТ два раза, закодируем её кодовым словом 00. Букву Т закодировать кодовым словом 101 нельзя, поскольку не останется кодовых слов для остальных букв русского алфавита, поэтому букве Т соответствует кодовое слово 1010. Тогда сообщение, кодирующее слово РОБОТ, содержит 3 + 2 + 3 + 2 + 4 = 14 двоичных знаков. Пусть буква Р кодируется кодовым словом 1010. Тогда буква А может кодироваться только кодовым словом 01, следовательно, букве Б соответствует кодовое слово 100, а букве З — кодовое слово 111. Коды остальных букв для соблюдения условия Фано могут начинаться с 00, 110 или 1011. Буква О встречается в слове РОБОТ два раза, закодируем её кодовым словом 00. Букву Т закодируем кодовым словом 110, и для остальных букв останутся кодовые слова, начинающиеся с 1011. Тогда сообщение, кодирующее слово РОБОТ, содержит 4 + 2 + 3 + 2 + 3 = 14 двоичных знаков.
|