× Главная Раздел 1 Введение. Тема 1.1 Роль информации и связанных с ней процессов в окружающем мире. Тема 1.2 Системы. Раздел 2 Математические основы информатики Тема 2.1 Тексты и кодирование. Тема 2.2 Системы счисления. Тема 2.3 Элементы комбинаторики, теории множеств и математической логики. Тема 2.4 Дискретные объекты. Раздел 3 Алгоритмы и элементы программирования Тема 3.1 Алгоритмические конструкции. Тема 3.2 Составление алгоритмов и их программная реализация Тема 3.3 Анализ алгоритмов Тема 3.4 Математическое моделирование Раздел 4 Использование программных систем и сервисов. Тема 4.1 Компьютер –универсальное устройство обработки данных. Тема 4.2 Подготовка текстов и демонстрационных материалов. Тема 4.3 Работа с аудиовизуальными данными. Тема 4.4 Электронные (динамические) таблицы. Тема 4.5 Базы данных. Тема 4.6 Автоматизированное проектирование. Тема 4.7 3D-моделирование. Тема 4.8 Системы искусственного интеллекта и машинное обучение. Раздел 5 Информационно-коммуникационные технологии. Работа в информационном пространстве. Тема 5.1 Компьютерные сети. Тема 5.2 Деятельность в сети Интернет. Тема 5.3 Социальная информатика. Тема 5.4 Информационная безопасность. Тестовые задания Практические работы

Тема 2.1 Тексты и кодирование.
Равномерные и неравномерные коды. Условие Фано.

Тексты и кодирование.

Кодирование — это процесс перевода информации из формы, понятной человеку (текст, изображения, видео и т. д.), в некоторый код.
Декодирование — это процесс перевода информации из кода в форму, понятную человеку.
Код — это условные знаки для представления информации.
Вся информация в компьютере хранится в двоичном коде. Поэтому надо научиться преобразовывать символы в двоичный код.
Формула Хартли определяет количество информации в зависимости от количества возможных вариантов
N=2i, где p
N — это количество вариантов,
i — это количество бит, не обходимых для кодирования.

Если же мы преобразуем эту формулу и примем за N — количество символов в используемом алфавите (назовем это мощностью алфавита), то мы поймем, сколько памяти потребуется для кодирования одного символа.

N=2i, где N — кол-во возможных вариантов
i — кол-во бит, потребуемых для кодирования
Итак, если в нашем алфавите будет присутствовать только 32 символа, то каждый из них займет только 5 бит.
N=32 ⇒ i= 5 бит
И тогда каждому символу мы дадим уникальный двоичный код. Такую таблицу мы будем назвать кодировочной

N=32 ⇒ i= 5 бит


Таблица ASCII (американский системный код для обмена информацией) — это стандарт кодирования символов, используемый в компьютерах и других устройствах для текстовых файлов. ASCII — это подмножество Unicode с набором символов из 128 символов. Символы включают заглавные и строчные буквы, цифры, знаки препинания, запоминающиеся символы и управляющие символы. Каждый символ в наборе символов имеет одинаковое шестнадцатеричное и восьмеричное значение, а также десятичное значение в диапазоне от 0 до 127.

ASCII - это стандарт кодировки символов для электронной связи. Текст представлен с помощью кода ASCII в компьютерах, телекоммуникационном оборудовании и других устройствах. Хотя они позволяют использовать гораздо больше символов, большинство современных методов кодирования символов основаны на ASCII.

Управление по присвоению номеров Интернета (IANA) поддерживает обозначение US-ASCII для этой кодировки символов. Одной из вех IEEE является ASCII.

DecHexChar  DecHexChar  DecHexChar  DecHexChar
00NUL3220(sp)6440@9660`
11SOH3321!6541A9761a
22STX3422"6642B9862b
33ETX3523#6743C9963c
44EOT3624$6844D10064d
55ENQ3725%6945E10165e
66ACK3826&7046F10266f
77BEL3927'7147G10367g
88BS4028(7248H10468h
99TAB4129)7349I10569i
10ALF422A*744AJ1066Aj
11BVT432B+754BK1076Bk
12CFF442C,764CL1086Cl
13DCR452D-774DM1096Dm
14ESO462E.784EN1106En
15FSI472F/794FO1116Fo
1610DLE483008050P11270p
1711DC1493118151Q11371q
1812DC2503228252R11472r
1913DC3513338353S11573s
2014DC4523448454T11674t
2115NAK533558555U11775u
2216SYN543668656V11876v
2317ETB553778757W11977w
2418CAN563888858X12078x
2519EM573998959Y12179y
261ASUB583A:905AZ1227Az
271BESC593B;915B[1237B{
281CFS603C<925C\1247C|
291DGS613D=935D]1257D}
301ERS623E>945E^1267E~
311FUS633F?955F_1277FDEL

Таблица ASCII была создана под контролем Американской ассоциации стандартов (ASA). То Американская Ассоциация стандартов (ASA) превратилась в США Американского института стандартов (USASI) и, в конечном итоге, Американская Национальный институт стандартов (ANSI).

Для дополнительный После заполнения специальных символов и управляющих кодов ASCII был опубликован как ASA X3.4-1963, оставив 28 кодовых позиций без присвоенного значения и один неназначенный управляющий код. Был существенный спор о том, следует ли использовать дополнительные управляющие символы вместо строчного алфавита. Колебания длились недолго: в мае 1963 года рабочая группа CCITT по новому телеграфному алфавиту выступила за присвоение строчных букв стержням 6 и 7, а в октябре Международная организация по стандартизации TC 97 SC 2 решила включить корректировку в свои проект стандарта

На собрании в мае 1963 года рабочая группа X3.2.4 одобрила переход на ASCII. Расположение строчных букв на палочках 6 и 7 привело к тому, что битовые шаблоны символов отклонились от верхнего регистра на один бит, что упростило сопоставление символов без учета регистра и дизайн клавиатур и принтеров.

Другие модификации, внесенные комитетом X3, включали добавление новых символов (скобки и вертикальные черты), переименование некоторых управляющих символов (SOM стало началом заголовка (SOH)), а также перемещение или удаление других (RU был удален). В результате ASCII был изменен как USAS X3.4-1967, затем USAS X3.4-1968, ANSI X3.4-1977 и, наконец, ANSI X3.4-1986.


Равномерные и неравномерные коды.

Кодирование символов обычно предполагает, что каждому символу всегда сопоставляется одинаковое количество битов (например, в кодовой таблице ASCII каждому символу сопоставляется один байт, хранящий порядковый номер того или иного символа в этой таблице). Такой способ кодирования прост и удобен, однако очевидно, что он является не самым оптимальным. Для значительной части символов используются не все биты отведенных под них байтов (часть старших битов — нулевые), а при наличии в тексте только части символов, предусмотренных в таблице ASCII (например, если текст содержит только прописные русские буквы), приходится все равно использовать 8-битный код.

Более компактным является неравномерный двоичный код (особенно если при его построении исходить из частоты встречаемости различных символов и присваивать наиболее часто используемым знакам самые короткие коды, как это сделано в методе Хаффмана). При этом количество битов, отводимых для кодирования символов, в целом зависит от количества используемых в конкретном случае различных символов (от мощности алфавита), а коды, соответствующие разным символам, могут иметь различную длину в битах.

Главное при таком кодировании — обеспечить возможность однозначного декодирования записанной с помощью этих кодов строки (поочередного, слева направо, выделения и распознавания из сплошной последовательности нулей и единиц кодов отдельных букв). Для этого коды символам необходимо назначать в соответствии с условиями Фано.

Прямое условие Фано. Неравномерный код может быть однозначно декодирован, если никакой из кодов не совпадает с началом (префиксом) какого-либо другого, более длинного кода.

Обратное условие Фано. Неравномерный код может быть однозначно декодирован, если никакой из кодов не совпадает с окончанием (постфиксом) какого-либо другого, более длинного кода.

Для однозначности декодирования последовательности кодов достаточно выполнения хотя бы одного из двух вышеуказанных условий Фано:

Выбрать, какое из двух правил Фано используется при решении конкретной задачи, можно, проанализировав коды в условии задачи (без учёта кода, проверяемого в вариантах ответа): если для исходных кодов выполняется прямое правило Фано, то его и нужно использовать при решении, и наоборот. Вместе с тем нужно помнить, что правила Фано — это достаточное, но не необходимое условие однозначного декодирования: если не выполняется ни прямое, ни обратное правило Фано, конкретная двоичная последовательность может оказаться такой, что она декодируется однозначно (так как остальные возможные варианты до конца декодирования довести не удаётся). В подобном случае необходимо пытаться строить дерево декодирования в обоих направлениях.

Рекомендуется начинать решение задач такого типа с анализа выполнимости правил Фано для исходных кодов, указанных в условии задачи (т.е. без учета искомого кода в вариантах ответов). В зависимости от того, какое из двух правил Фано выполняется для исходных кодов, при дальнейшем решении задачи производится сравнение более короткого кода с началом (при выполнении прямого правила Фано) или с концом (при выполнении обратного правила Фано) более длинного кода.

Если для заданной последовательности кодов выполняется прямое правило Фано, то её декодирование необходимо вести с начала (слева направо).

Если для заданной последовательности кодов выполняется обратное правило Фано, то её декодирование необходимо вести с конца (справа налево).

При сравнении пары кодов удобно подписывать более короткий код под более длинным, выравнивая эти записи по левому краю — для прямого правила Фано либо по правому краю — для обратного правила Фано.