|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Тема №9 (время – 2 мин)
Тема: Кодирование и декодирование информации. Что нужно знать: · кодирование – это перевод информации с одного языка на другой (запись в другой системе символов, в другом алфавите) · обычно кодированием называют перевод информации с «человеческого» языка на формальный, например, в двоичный код, а декодированием – обратный переход · один символ исходного сообщения может заменяться одним символом нового кода или несколькими символами, а может быть и наоборот – несколько символов исходного сообщения заменяются одним символом в новом коде (китайские иероглифы обозначают целые слова и понятия) · кодирование может быть равномерное и неравномерное; · закодированное сообщение можно однозначно декодировать с начала, если выполняется условие Фано: никакое кодовое слово не является началом другого кодового слова; · закодированное сообщение можно однозначно декодировать с конца, если выполняется обратное условие Фано: никакое кодовое слово не является окончанием другого кодового слова; · условие Фано – это достаточное, но не необходимое условие однозначного декодирования. Пример задания: Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. Вот этот код: А–00, Б–010, В–011, Г–101, Д–111. Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных букв меняться не должны. Выберите правильный вариант ответа. 1) для буквы Б – 01 2) это невозможно 3) для буквы В – 01 4) для буквы Г – 01 Решение (1 способ, проверка условий Фано): 4) для однозначного декодирования достаточно, чтобы выполнялось условие Фано или обратное условие Фано; 5) проверяем последовательно варианты 1, 3 и 4; если ни один из них не подойдет, придется выбрать вариант 2 («это невозможно»); 6) проверяем вариант 1: А–00, Б–01, В–011, Г–101, Д–111. «прямое» условие Фано не выполняется (код буквы Б совпадает с началом кода буквы В); «обратное» условие Фано не выполняется (код буквы Б совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит; 7) проверяем вариант 3: А–00, Б–010, В–01, Г–101, Д–111. «прямое» условие Фано не выполняется (код буквы В совпадает с началом кода буквы Б); «обратное» условие Фано не выполняется (код буквы В совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит; 8) проверяем вариант 4: А–00, Б–010, В–011, Г–01, Д–111. «прямое» условие Фано не выполняется (код буквы Г совпадает с началом кодов букв Б и В); но «обратное» условие Фано выполняется (код буквы Г не совпадает с окончанием кодов остальных буквы); поэтому этот вариант подходит; 9) правильный ответ – 4. Решение (2 способ, дерево): 1) построим двоичное дерево, в котором от каждого узла отходит две ветки, соответствующие выбору следующей цифры кода – 0 или 1; разместим на этом дереве буквы А, Б, В, Г и Д так, чтобы их код получался как последовательность чисел на рёбрах, составляющих путь от корня до данной буквы (красным цветом выделен код буквы В – 011): 2) здесь однозначность декодирования получается за счёт того, что при движении от корня к любой букве в середине пути не встречается других букв (выполняется условие Фано); 3) теперь проверим варианты ответа: предлагается перенести одну из букв, Б, В или Г, в узел с кодом 01, выделенный синим цветом 4) видим, что при переносе любой из этих букв нарушится условие Фано; например, при переносе буквы Б в синий узел она оказывается на пути от корня до В, и т.д.; это значит, что предлагаемые варианты не позволяют выполнить прямое условие Фано 5) хочется уже выбрать вариант 2 («это невозможно»), но у нас есть еще обратное условие Фано, для которого тоже можно построить аналогичное дерево, в котором движение от корня к букве дает её код с конца (красным цветом выделен код буквы В – 011, записанный с конца): видно, что обратное условие Фано также выполняется, потому что на пути от корня к любой букве нет других букв 6) в заданных вариантах ответа предлагается переместить букву Б, В или Г в синий узел; понятно, что Б или В туда перемещать нельзя – перемещённая буква отказывается на пути от корня к букве Г; а вот букву Г переместить можно, при этом обратное условие Фано сохранится 7) правильный ответ – 4. Ещё пример задания: Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приёмной стороне канала связи. Использовали код: 1) 00 2) 01 3)11 4) 010 Решение: 8) заметим, что для известной части кода выполняется условие Фано – никакое кодовое слово не является началом другого кодового слова 9) если Д = 00, такая кодовая цепочка совпадает с началом Б = 000 и В = 001, невозможно однозначно раскодировать цепочку 000000: это может быть ДДД или ББ; поэтому первый вариант не подходит 10) если Д = 01, такая кодовая цепочка совпадает с началом Г = 011, невозможно однозначно раскодировать цепочку 011: это может быть ДА или Г; поэтому второй вариант тоже не подходит 11) если Д = 11, условие Фано тоже нарушено: кодовое слово А = 1 совпадает с началом кода буквы Д, невозможно однозначно раскодировать цепочку 111: это может быть ДА или ААА; третий вариант не подходит 12) для четвертого варианта, Д = 010, условие Фано не нарушено; 13) правильный ответ – 4.
Еще пример задания: Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11, соответственно). Если таким способом закодировать последовательность символов БАВГ и записать результат шестнадцатеричным кодом, то получится 1) 4B16 2) 41116 3)BACD16 4) 102316 Решение: 14) из условия коды букв такие: A – 00, Б –01, В – 10 и Г – 11, код равномерный 15) последовательность БАВГ кодируется так: 01 00 10 11 = 1001011 16) разобьем такую запись на тетрады справа налево и каждую тетраду переведем в шестнадцатеричную систему (то есть, сначала в десятичную, а потом заменим все числа от 10 до 15 на буквы A, B, C, D, E, F); получаем 1001011 = 0100 10112 = 4B16 17) правильный ответ – 1.
Еще пример задания: Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв – из двух бит, для некоторых – из трех). Эти коды представлены в таблице:
Определить, какой набор букв закодирован двоичной строкой 0110100011000 1) EBCEA 2) BDDEA 3) BDCEA 4) EBAEA Решение (вариант 1, декодирование с начала): 1) здесь используется неравномерное кодирование, при котором декодирование может быть неоднозначным, то есть, заданному коду может соответствовать несколько разных исходных сообщений 2) попробуем декодировать с начала цепочки, первой буквой может быть B или E, эти случаи нужно рассматривать отдельно 3) пусть первая буква – E с кодом 011, тогда остается цепочка 0100011000 · для кода 0100011000 первой буквой может быть только B с кодом 01, тогда остается 00011000 (начало исходной цепочки – EB?) · для кода 00011000 первой буквой может быть только A с кодом 000, тогда остается 11000, а эта цепочка не может быть разложена на заданные коды букв · поэтому наше предположение о том, что первая буква – E, неверно 4) пусть первая буква – B с кодом 01, тогда остается цепочка 10100011000 · для кода 10100011000 первой буквой может быть только D с кодом 10, тогда остается 100011000 (можно полагать, что начало исходной цепочки – BD?) · для кода 100011000 первой буквой может быть только С с кодом 100, тогда остается 011000 (начало исходной цепочки – BDC?) Несмотря на то, что среди ответов есть единственная цепочка, которая начинается с BDC, здесь нельзя останавливаться, потому что «хвост» цепочки может «не сойтись» · для кода 011000 на первом месте может быть B (код 01) или E (011); в первом случае «хвост» 1000 нельзя разбить на заданные коды букв, а во втором – остается код 000 (буква А), поэтому исходная цепочка может быть декодирована как BDCEA 5) правильный ответ – 3
Решение (вариант 2, декодирование с конца): 1) для кода 0110100011000 последней буквой может быть только А (код 000), тогда остается цепочка 0110100011 2) для 0110100011 последней может быть только буква E (011), тогда остается цепочка 0110100 3) для 0110100 последней может быть только буква C (100), тогда остается цепочка 0110 4) для 0110 последней может быть только буква D (10), тогда остается 01 – это код буквы B 5) таким образом, получилась цепочка BDCEA 6) правильный ответ – 3
Решение (вариант 3, кодирование ответов): 1) в данном случае самое простое и надежное – просто закодировать все ответы, используя приведенную таблицу кодов, а затем сравнить результаты с заданной цепочкой 2) получим 1) EBCEA – 01101100011000 2) BDDEA – 011010011000 3) BDCEA – 0110100011000 4) EBAEA – 01101000011000 3) сравнивая эти цепочки с заданной, находим, что правильный ответ – 3.
Еще пример задания: Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=10, В=110. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы? 1) 1 2) 1110 3) 111 4) 11 Решение (вариант 1, метод подбора): 1) рассмотрим все варианты в порядке увеличения длины кода буквы Г 2) начнем с Г=1; при этом получается, что сообщение «10» может быть раскодировано двояко: как ГА или Б, поэтому этот вариант не подходит 3) следующий по длине вариант – Г=11; в этом случае сообщение «110» может быть раскодировано как ГА или В, поэтому этот вариант тоже не подходит 4) третий вариант, Г=111, дает однозначное раскодирование во всех сочетаниях букв, поэтому… 5) … правильный ответ – 3.
Решение (вариант 2, «умный» метод): 1) для того, чтобы сообщение, записанное с помощью неравномерного по длине кода, однозначно раскодировалось, требуется, чтобы никакой код не был началом другого (более длинного) кода; это условие называют условием Фано 2) как и в первом решении, рассматриваем варианты, начиная с самого короткого кода для буквы Г; в нашем случае код Г=1 является началом кодов букв Б и В, поэтому условие Фано не выполняется, такой код не подходит 3) код Г=11 также является началом другого кода (кода буквы В), поэтому это тоже ошибочный вариант 4) третий вариант кода, Г=111, не является началом никакого уже известного кода; кроме того, ни один уже имеющийся код не является началом кода 111; таким образом, условие Фано выполняется 5) поэтому правильный ответ – 3.
Еще пример задания [4]: Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивая в правом нижнем углу. При кодировании 1 обозначает черный цвет, а 0 – белый. Для компактности результат записали в шестнадцатеричной системе счисления. Выберите правильную запись кода. 1) BD9AA5 2) BDA9B5 3) BDA9D5 4) DB9DAB Решение: 1) «вытянем» растровое изображение в цепочку: сначала первая (верхняя) строка, потом – вторая, и т.д.:
2) в этой полоске 24 ячейки, черные заполним единицами, а белые – нулями:
3) поскольку каждая цифра в шестнадцатеричной системе раскладывается ровно в 4 двоичных цифры, разобьем полоску на тетрады – группы из четырех ячеек (в данном случае все равно, откуда начинать разбивку, поскольку в полоске целое число тетрад – 6):
4) переводя тетрады в шестнадцатеричную систему, получаем последовательно цифры B (11), D(13), A(10), 9, D(13) и 5, то есть, цепочку BDA9D5 5) поэтому правильный ответ – 3.
Еще пример задания: Для передачи чисел по каналу с помехами используется код проверки четности. Каждая его цифра записывается в двоичном представлении, с добавлением ведущих нулей до длины 4, и к получившейся последовательности дописывается сумма её элементов по модулю 2 (например, если передаём 23, то получим последовательность 0010100110 ). Определите, какое число передавалось по каналу в виде 01010100100111100011? 1) 59143 2) 5971 3) 102153 4) 10273 Решение: 1) сначала разберемся, как закодированы числа в примере; очевидно, что используется код равномерной длины; поскольку 2 знака кодируются 10 двоичными разрядами (битами), на каждую цифру отводится 5 бит, то есть 2 → 00101 и 3 → 00110 2) как следует из условия, четыре первых бита в каждой последовательности – это двоичный код цифры, а пятый бит (бит четности) используется для проверки и рассчитывается как «сумма по модулю два», то есть остаток от деления суммы битов на 2; тогда 2 = 00102, бит четности (0 + 0 + 1 + 0) mod 2 = 1 3 = 00112, бит четности (0 + 0 + 1 + 1) mod 2 = 0 3) но бит четности нам совсем не нужен, важно другое: пятый бит в каждой пятерке можно отбросить! 4) разобъем заданную последовательность на группы по 5 бит в каждой: 01010, 10010, 01111, 00011. 5) отбросим пятый (последний) бит в каждой группе: 0101, 1001, 0111, 0001. 01012 = 5, 10012 = 9, 01112 = 7, 00012 = 1. 6) таким образом, были переданы числа 5, 9, 7, 1 или число 5971. 7) Ответ: 2. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.02 сек.) |