Закончите фразу при использовании неравномерного кода в некоторых случаях сообщение может быть
Обновлено: 05.07.2024
Можно ли точно сказать, какой это был рисунок? Если нет, нарисуйте возможные варианты.
4. Определите количество информации в этих данных. Не забудьте указать единицы измерения.
Количество информации
5. Переведите количество информации в другие единицы:
16 битов = | байт | 2 Кбайт = | байт |
3 байта = | битов | 3072 байта = | Кбайт |
4 бита = | байтов | 5 Гбайт = | Мбайт |
64 байта = | битов | 4096 Кбайт = | Мбайт |
6. Заполните пропуски в таблице степеней числа 2:
7. Используя образец, переведите количество информации в другие единицы, представив числа как степени числа 2:
2 Мбайт = 2 · 2 10 Кбайт = 2 11 Кбайт = 2 11 · 2 10 байт = 2 21 байт
16 Кбайт = | Кбайт = | байт = | байт = |
= | битов = | битов | |
2 15 Кбайт = | Мбайт = | Мбайт | |
2 17 битов = | байт = | байт = | Кбайт = |
= | Кбайт | ||
32 Гбайт = | Гбайт = | Мбайт = | Мбайт = |
= | Кбайт = | Кбайт | |
2 23 байт = | байт = | Кбайт = | Кбайт = |
= | Мбайт = | Мбайт | |
64 Мбайт = | Мбайт = | Кбайт = | Кбайт = |
= | байт = | байт |
8. Решите кроссворд:
По горизонтали:
1) Тот, кто выполняет программу.
2) Правило, по которому кодируется текст.
3) Устройство для ввода текста в компьютер.
4) Единица количества информации, равная 8 битам.
5) Единица количества информации, равная 8192 битам.
7) Наименьший элемент растрового рисунка.
Какое слово получилось в закрашенных клетках?
Дайте определение этому слову:
Место для ввода текста.
Какую длину имеют все кодовые слова:
Можно ли сделать так, чтобы все кодовые слова были длиной 2? Почему?
Место для ввода текста.
Место для ввода текста.
10. Дан неравномерный двоичный код:
Возможны ли различные варианты ответа на этот вопрос? Почему?
Место для ввода текста.
жизнь есть ценность потому, что она является исходной базой, способом, процессом, в ходе которого мы только и можем проявлять, вызывать к деятельному бытию, реализовывать нашу человечность, все наши положительные качества и добродетели, все наши ценности.
от одного этого человеческая жизнь становится беспредельно ценной, становится универсальной ценностью. безграничная ценность жизни проявляется уже в том, что она для всех и всякого человеческого существа она находит своё место. и все же в бесконечной ценности жизни, покуда мы можем жить, как бы тонут все ее черные пятна. каждый психически здоровый человек дорожит жизнью независимо от того, выглядит ли она по принятым меркам удавшейся или нет. жизнь – универсальная, всеохватывающая основа человеческого существования. это значит, что она открыта и человечному, и бесчеловечному в нас. именно поэтому она может быть и радостью, и горем, и крыльями, и ярмом на шее, и роскошью, удачей, и нищетой, неудачей и проклятием. миллионы и десятки
Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. Вот этот код: А — 00, Б — 01, В — 100, Г — 101, Д — 110. Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных букв меняться не должны. Выберите правильный вариант ответа.
1) для буквы Д — 11; 2) это невозможно; 3) для буквы Г — 10; 4) для буквы Д — 10
Как показывает практика, эта задача вызывает серьезные трудности не только у многих учеников, но даже у учителей информатики.
В чём проблема?
Сказанное выше означает, что код (1) НЕ является однозначно декодируемым. Как же определить, является ли заданный код однозначно декодируемым? Этим вопросом мы и займемся.
Равномерные коды
Проблема состоит в том, чтобы правильно разбить полученную битовую цепочку на отдельные кодовые слова. Для того, чтобы её решить, можно, например, использовать равномерный код, то есть код, в котором все кодовые слова имеют одинаковую длину. Например, в нашей фразе 6 символов, поэтому можно использовать 3-битный код (который позволяет закодировать 8 = 2 3 различных символов).
Неравномерные коды
Пример 3. Используем для кодирования фразы из примера 1 следующий код:
М | А | Ы | Л | У | пробел | (3) |
---|---|---|---|---|---|---|
01 | 00 | 1011 | 100 | 1010 | 11 |
Здесь 34 бита. Это, конечно, не 22, но и не 42.
Несложно показать, что эта битовая цепочка декодируется однозначно. Действительно, первая буква — М (код 01), потому что ни одно другое кодовое слово не начинается с 01. Аналогично определяем, что вторая буква — А. Действительно, за 01 следует 00 (код буквы А) и никакое другое кодовое слово не начинается с 00. Это же свойство, которое называется условием Фано, выполняется не только для кодовых слов 01 и 00, но и кодовых слов всех других букв (проверьте это самостоятельно).
Условие Фано. Никакое кодовое слово не совпадает с началом другого кодового слова.
- для однозначной декодируемости достаточно выполнение хотя бы одного из двух условий, или прямого, или обратного;
- могут существовать коды, для которых не выполняется ни прямое, ни обратное условие Фано, но они, тем не менее, обеспечивают однозначное декодирование.
Однозначно декодируемые коды
Полный ответ на вопрос об однозначной декодируемости получил в начале 1960-х годов советский математик Ал.А. Марков, предложивший решение с помощью графов [2]. Продемонстрируем его метод на примере.
- Определяем все последовательности (строки), которые
а) совпадают с началом какого-то кодового слова и одновременно с концом какого-то кодового слова и
б) сами не являются кодовыми словами.
В данном случае это две последовательности:
0 (начало кода буквы А и конец кода буквы Б) и
1 (начало кода буквы Г и конец кода буквы Д);
10 (начало кода буквы Д и конец кода буквы Б);
последовательности 01 и 11 не учитываем, потому что они совпадают с кодами букв А и Г; - Добавляем к этому множеству пустую строку, которую обычно обозначают греческой буквой Λ; элементы полученного множества будут вершинами графа:
Код является однозначно декодируемым тогда и только тогда, когда в построенном таким образом графе нет ориентированных циклов, включающих вершину Λ.
Таким образом, код (6) не обладает свойством однозначной декодируемости.
Проверим таким же способом код (5), который, как мы уже выяснили, не является ни префиксным, ни постфиксным. Множество последовательностей, которые совпадают с началом и концом кодовых слов, состоит из пустой строки и единицы: . Граф, построенный с помощью приведённого выше алгоритма, содержит два узла и одну петлю:
Ещё примеры
Теперь проверим, что получится, если сократить код буквы Д до 11 (вариант 1). Свойство однозначной декодируемости может быть потеряно только тогда, когда в результате такого сокращения нарушится условие Фано, то есть код буквы Д совпадёт с началом какого-то другого кодового слова. Видим, что этого не произошло — нет других кодовых слов, которые начинаются с 11, поэтому вариант 1 — это и есть верное решение.
Конечно, можно построить граф, как было сделано выше, и проверить, есть ли в нём циклы, включающие вершину Λ. В данном случае граф выглядит так:
Построение и анализ графа — дело достаточно трудоемкое и требующее аккуратности. Обычно в таких случаях значительно легче просто подобрать последовательность, которая может быть декодирована двумя разными способами.
Построим граф по методу Ал.А. Маркова:
Проверим вариант 1 — сократим код буквы Г до 00. При этом нарушилось условие Фано, которое обеспечивало однозначную декодируемость исходного варианта: теперь код буквы Г (00) совпадает с началом кода буквы Д (001). Но и обратное условие Фано тоже не выполняется для пары букв А-В. Поэтому можно предположить, что такой код не обладает свойством однозначной декодируемости. И действительно, легко находится цепочка 001011, которую можно раскодировать как ГБА (00 10 11) или ДВ (001 011).
Рассмотрим вариант 3 — сократим код буквы В до 01. При этом условие Фано выполняется, поскольку ни одно из кодовых слов не начинается с 01, то есть код является префиксным и однозначно раскодируется. Это и есть правильный ответ.
На всякий случай проверяем вариант 4 — сокращает код буквы Б до 1. При этом код перестает быть префиксным, и обратное условие Фано также не выполнено (код буквы Б совпадает с началом и концом кода буквы А). Сразу понятно, что последовательность 11 можно раскодировать как А или как ББ, поэтому этот вариант неверный.
Выводы
В заметке выполнен подробный анализ задачи на кодирование, которая предлагается на ЕГЭ в последние несколько лет. Нужно заметить, что в нём затрагивается вузовский курс дискретной математики. Понятно, что нельзя требовать от школьников знания теорем Ал.А. Маркова об однозначном декодировании, но учителю полезно более глубоко представлять себе эти вопросы, которые можно разбирать на факультативах. В качестве дополнительной литературы по этой теме можно рекомендовать 5.
С точки зрения практического подхода, для решения всех известных автору реальных задач подобного типа достаточно найти вариант, при котором выполняется условие Фано или обратное условие Фано (одно из двух!).
Кодирование – это перевод информации, представленной символами первичного алфавита, в последовательность кодов.
Декодирование (операция, обратная кодированию) – перевод кодов в набор символов первичного алфавита.
Кодирование может быть равномерное и неравномерное. При равномерном кодировании каждый символ исходного алфавита заменяется кодом одинаковой длины. При неравномерном кодировании разные символы исходного алфавита могут заменяться кодами разной длины.
Равномерное кодирование всегда однозначно декодируемо.
Для неравномерных кодов существует следующее достаточное (но не необходимое) условие однозначного декодирования:
Кодирование в различных системах счисления
Для кодирования букв О, В, Д, П, А решили использовать двоичное представление
чисел 0, 1, 2, 3 и 4 соответственно (с сохранением одного незначащего нуля в случае одноразрядного представления). Если закодировать последовательность букв ВОДОПАД таким способом и результат записать восьмеричным кодом, то получится
Представим коды указанных букв в двоичном коде, добавив незначащий нуль для одноразрядных чисел:
Закодируем последовательность букв: ВОДОПАД — 010010001110010.
Разобьём это представление на тройки справа налево и переведём каждую тройку в восьмеричное число.
010 010 001 110 010 — 22162.
Правильный ответ указан под номером 1.
Для передачи по каналу связи сообщения, состоящего только из символов А, Б, В и Г, используется посимвольное кодирование: А-10, Б-11, В-110, Г-0. Через канал связи передаётся сообщение: ВАГБААГВ. Закодируйте сообщение данным кодом. Полученное двоичное число переведите в шестнадцатеричный вид.
Закодируем последовательность букв: ВАГБААГВ — 1101001110100110. Разобьем это представление на четвёрки справа налево и переведём каждую четверку в шестнадцатеричное число:
1101 0011 1010 01102 = D3A616
Правильный ответ указан под номером 1.
Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв – из двух бит, для некоторых – из трех). Эти коды представлены в таблице:
Определите, какой набор букв закодирован двоичной строкой 1000110110110, если известно, что все буквы в последовательности – разные:
Мы видим, что условия Фано и обратное условие Фано не выполняются, значит код можно раскодировать неоднозначно.
Значит, будем перебирать варианты, пока не получим подходящее слово :
1) 100 011 01 10 110
Первая буква определяется однозначно, её код 100: a.
Пусть вторая буква — с, тогда следующая буква — d, потом — e и b.
Такой вариант удовлетворяет условию, значит, окончательно получили ответ: acdeb.
Для передачи данных по каналу связи используется 5-битовый код. Сообщение содержит только буквы А, Б и В, которые кодируются следующими кодовыми словами: А — 11010, Б — 10111, В — 01101.
Получено сообщение 11000 11101 10001 11111. Декодируйте это сообщение — выберите правильный вариант.
Декодируем каждое слово сообщения. Первое слово: 11000 отличается от буквы А только одной позицией. Второе слово: 11101 отличается от буквы В только одной позицией. Третье слово: 10001 отличается от любой буквы более чем одной позицией. Четвёртое слово: 11111 отличается от буквы Б только одной позицией.
Таким образом, ответ: АВхБ.
Однозначное кодирование
Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=1, Б=01, В=001. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?
Для анализа соблюдения условия однозначного декодирования (условия Фано) изобразим коды в виде дерева. Тогда однозначность выполняется, если каждая буква является листом дерева:
Видим, что ближайший от корня дерева свободный лист (т.е. код с минимальной длиной) имеет код 000.
Для кодирования некоторой последовательности, состоящей из букв У, Ч, Е, Н, И и К, используется неравномерный двоичный префиксный код. Вот этот код: У — 000, Ч — 001, Е — 010, Н — 100, И — 011, К — 11. Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему остался префиксным? Коды остальных букв меняться не должны.
Выберите правильный вариант ответа.
Примечание. Префиксный код — это код, в котором ни одно кодовое слово не является началом другого; такие коды позволяют однозначно декодировать полученную двоичную последовательность.
1) кодовое слово для буквы Е можно сократить до 01
2) кодовое слово для буквы К можно сократить до 1
3) кодовое слово для буквы Н можно сократить до 10
4) это невозможно
Для анализа соблюдения условия однозначного декодирования (условия Фано) изобразим коды в виде дерева. Тогда однозначность выполняется, если каждая буква является листом дерева:
Легко заметить, что если букву Н перенести в вершину 10, она останется листом. Т.е. кодовое слово для буквы Н можно сократить до 10.
Читайте также: