Сообщение было закодировано с помощью кодовой таблицы в ней любые два кодовых

Обновлено: 05.07.2024

Текст, кодированный с помощью двухбайтной кодировки Unicode, занял 4096 байт памяти.

Петя проанализировал этот текст и понял, что в нем используются далеко не все символы, доступные при кодировании в Unicode. Он составил таблицу символов, состоящую только из тех символов, которые хотя бы раз встречаются в тексте, и закодировал текст с ее использованием, кодируя каждый символ минимально возможным одинаковым для всех символов количеством бит. В результате получился файл, размером 2304 байта.

Вася более внимательно посмотрел на текст и обнаружил, что его можно разделить на две равные половины. Причем в первой половине текста используется ровно четверть от общего количества символов в кодовой таблице, которую построил Петя, а во второй половине текста встречаются все символы из кодовой страницы Пети. Тогда Вася решил создать для первой половины текста новую кодовую таблицу и закодировать первую половину текста, кодируя каждый символ минимально возможным одинаковым количеством бит, используя свою таблицу, а вторую половину оставить кодированной по Петиной таблице. В результате Вася получил файл, состоящий из двух половинок, закодированный с использованием двух таблиц кодов символов. Какой размер в байтах получился у этого файла? Файлы, кодированные с использованием всех указанных в задаче таблиц, не содержат никакой дополнительной информации, кроме собственно кодируемого текста. В ответе укажите целое число.

вобщем логика такова:
1) хитрый петя составил новую табличку и файл занял 2304 байта, так как юникод символ состоит из 2 байт (16 бит) составим соотношение для выяснения размера кода символа в его таблице:
4096/2304 = 16/х, отсюда
х = 9, т. е. для кодирования символа в таблице хитрого пети отводится 9 бит и всего можно накодировать 512 разных символов
2) неменее хитрый вася решил так - половина текста при 9 бит символе - 2304/9*2 = 128 симолов, он закодировал по новой таблице, для чего ему понадобилось 7 бит на символ, т. к 2 в 7 степени есть 128 а это и есть четверть от полного набора петиной таблицы.
теперь файл стал занимать 2304/2 + 7*128 = 1152 + 896 = 2048 байт,
таков размер итогового файла!

Кодирование – это перевод информации, представленной символами первичного алфавита, в последовательность кодов.

Декодирование (операция, обратная кодированию) – перевод кодов в набор символов первичного алфавита.

Кодирование может быть равномерное и неравномерное. При равномерном кодировании каждый символ исходного алфавита заменяется кодом одинаковой длины. При неравномерном кодировании разные символы исходного алфавита могут заменяться кодами разной длины.

Равномерное кодирование всегда однозначно декодируемо.

Для неравномерных кодов существует следующее достаточное (но не необходимое) условие однозначного декодирования:

Кодирование в различных системах счисления

Для кодирования букв О, В, Д, П, А решили использовать двоичное представление

чисел 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.

Всем доброе время суток, сегодня мы рассмотрим второе задание ОГЭ по информатике 2021 года.

Валя шифрует русские слова (последовательности букв), записывая вместо каждой буквы её код:

Некоторые цепочки можно расшифровать не одним способом. Например, 00010101 может означать не только СКА, но и СНК. Даны три кодовые цепочки:

Найдите среди них ту, которая имеет только одну расшифровку, и запишите в ответе расшифрованное слово.

Рассмотрим верхнюю цепочку.

Она может начинаться с 10, 111, а может начинаться с 101, 111, здесь мы видим два варианта расшифровки, а значит эта строка нам не подходит.

Рассмотрим центральную цепочку.

Она по-любому начинается с 000, т.к. больше нет подходящих букв, начинающихся с больше одного нуля. Далее идёт 111, т.к. опять же нет букв, которые могут закодировать несколько единиц и на конце, таким образом, остается 10. Данная строка может быть раскодирована только одним способом, поэтому это наш потенциальный ответ.

Рассмотрим последнюю строчку.

Данная строка может начинаться с 100 и 111, а может с 10 и 01, соответственно данная строка нам не подходит.

Нашим правильным ответом является вторая строка, раскодируем её и получим слово СОН.

От разведчика была получена следующая шифрованная радиограмма, переданная с использованием азбуки Морзе:

При передаче радиограммы было потеряно разбиение на буквы, но известно, что в радиограмме использовались только следующие буквы:

Расшифруйте радиограмму. Запишите в ответе расшифрованную радиограмму.

В данном виде заданий нам требуется просто правильно подобрать буквы под шифр Морзе.

Видим, что начинается код с точки и двух тире, видим, что под данное условие подходит только буква А(*-), остальные буквы, которые начинаются с точки имеют на третьей позиции так же точку.

Далее у нас может быть Т(-) или Д(-**), в ситуациях, когда мы встаём перед выбором, мы делаем предположение, что это один из вариантов и пытаемся расшифровать слово, допустим, что дальше идёт буква Т(разгадано *--). В этом случае дальше у нас идёт буква Ж, т.к. только она начинается с нескольких точек подряд(*--***-). Последующую букву подобрать нельзя, т.к. нет ни одного символа с только одной или только двумя точками, это значит, что мы на второй букве ошиблись и нужно было брать Д, а не Т. Пока что у нас угадано АД(*--**).

Далее мы попадаем опять под выбор: А или Л, но А нам брать нельзя, т.к. эту позицию мы рассматривали и у нас нет символов, которые начинаются с одной или двух точек, это значит, что третьим символом у нас становиться Л. Угадано: АДЛ(*--***-**). Осталось угадать ––••–••–•––.

Далее нам нужен символ, который начинается с тире и потом можно опять поставить тире, под эти условия подходит только буква Т, Д не подходит по той причине, что после тире идёт точка. Угадано: АДЛТ(*--***-**-). Осталось угадать –••–••–•––.

Здесь уже идёт Д, так как если мы возьмём опять Т, то мы не найдём символ с двумя или одной точками в начале. Угадано: АДЛТД(*--***-**--**). Осталось: –••–•––.

Опять Д по тем же причинам, что и в предыдущем выборе. Угадано: АДЛТДД(*--***-**--**-**). Осталось: –•––.

Далее выбираем Т, т.к. больше нет букв с тире на третьей позиции. Угадано: АДЛТДДТ(*--***-**--**-**-). Осталось: •––.

Далее выбираем А, т.к. это единственная буква, которая начинается с *- и потом даёт возможность поставить еще тире за счёт буквы Т.

Вася шифрует русские слова, записывая вместо каждой буквы её номер в алфавите (без пробелов). Номера букв даны в таблице:

Только одна из них расшифровывается единственным способом. Найдите её и расшифруйте. То, что получилось, запишите в качестве ответа.

Рассмотрим первую строчку:

Начинаться может с буквы 8, т.к. буквы 81 нет, далее идут цифры разделяемые нулями а значит, что эти числа 10,20,30, иначе быть не может, иначе какой-то букве придётся начинаться с 0, а такого номера нет. Это строка имеет код 8 10 20 30 (ЖИТЬ) и является потенциально верным ответом.

После 8 может идти 1 12 или 11 2 или 11 21, вариантов много, соответственно нам не подходит этот вариант.

После 8 идёт 1 12 или 11 2, или 11 22, опять не подходит.

В начале 8, после идёт 1 5 или 15, дальше мы можем или соединять цифры в числа или оставлять одинарными значениями, что не подходит под условие задачи.

Текст, кодированный с помощью двухбайтной кодировки Unicode, занял 4096 байт памяти.

Петя проанализировал этот текст и понял, что в нем используются далеко не все символы, доступные при кодировании в Unicode. Он составил таблицу символов, состоящую только из тех символов, которые хотя бы раз встречаются в тексте, и закодировал текст с ее использованием, кодируя каждый символ минимально возможным одинаковым для всех символов количеством бит. В результате получился файл, размером 2304 байта.

Вася более внимательно посмотрел на текст и обнаружил, что его можно разделить на две равные половины. Причем в первой половине текста используется ровно четверть от общего количества символов в кодовой таблице, которую построил Петя, а во второй половине текста встречаются все символы из кодовой страницы Пети. Тогда Вася решил создать для первой половины текста новую кодовую таблицу и закодировать первую половину текста, кодируя каждый символ минимально возможным одинаковым количеством бит, используя свою таблицу, а вторую половину оставить кодированной по Петиной таблице. В результате Вася получил файл, состоящий из двух половинок, закодированный с использованием двух таблиц кодов символов. Какой размер в байтах получился у этого файла? Файлы, кодированные с использованием всех указанных в задаче таблиц, не содержат никакой дополнительной информации, кроме собственно кодируемого текста. В ответе укажите целое число.

вобщем логика такова:
1) хитрый петя составил новую табличку и файл занял 2304 байта, так как юникод символ состоит из 2 байт (16 бит) составим соотношение для выяснения размера кода символа в его таблице:
4096/2304 = 16/х, отсюда
х = 9, т. е. для кодирования символа в таблице хитрого пети отводится 9 бит и всего можно накодировать 512 разных символов
2) неменее хитрый вася решил так - половина текста при 9 бит символе - 2304/9*2 = 128 симолов, он закодировал по новой таблице, для чего ему понадобилось 7 бит на символ, т. к 2 в 7 степени есть 128 а это и есть четверть от полного набора петиной таблицы.
теперь файл стал занимать 2304/2 + 7*128 = 1152 + 896 = 2048 байт,
таков размер итогового файла!

Читайте также: