Тверской государственный университет
Опубликован: 02.10.2014 | Доступ: свободный | Студентов: 1798 / 183 | Длительность: 10:03:00
Лекция 12:

Код

< Лекция 1 || Лекция 12
Аннотация: Кодирование текста, представление текста в цифровом виде.

Смотреть на youtube || на ИНТУИТ в качестве: низком | среднем | высоком

Когда мы говорили о числах, то возникла задача перевода числа из системы счисления P в систему счисления Q. Необходимость перевода во многом обусловлена тем, что человек работает в десятичной системе, а компьютер в двоичной. Поэтому при работе с компьютером возникает необходимость перевода 2 ↔ 10. Теоретический и практический интерес представляет рассмотрение этой задачи для любых систем счисления.

При работе с текстами возникает аналогичная проблема. Человек работает с текстами, созданными в некотором алфавите, естественном для человека. Компьютер работает с текстами в алфавите {0, 1}, содержащем только два символа. Поэтому на практике возникает необходимость представления текстов, созданных в алфавите P, текстами в алфавите {0, 1}. Поскольку люди работают с текстами в разных алфавитах, то теоретический и практический интерес представляет задача представления текстов, созданных в алфавите P, текстами в алфавите Q. Эта задача может появляться в разных вариациях.

При передаче текста по линиям связи часто возникает потребность шифрования текста, чтобы никто другой кроме получателя, знающего шифр, не мог понять смысл переданного текста. Шифрование – дело сложное. Мы ограничимся рассмотрением кодирования, которое является простым способом шифрования, но, чаще всего, применяется для решения более важной задачи представления текста, записанного в алфавите P, в текст, записанный в алфавите Q.

Кодированием называется замена символов алфавита P символами алфавита Q.

Если при кодировании один символ алфавита P заменяется одним символом алфавита Q, то, очевидно алфавит Q должен содержать не меньше символов, чем алфавит P, чтобы кодирование было однозначным и допускало декодирование – восстановление исходного текста.

Задача: декодируйте слово "шжйвтю".

Непонятно, как это делать. Предположим, что для кодирования использовался "код Цезаря", который использовал еще Юлий Цезарь в своих посланиях. Кодирование в этом случае исходит из того, что алфавит, как это чаще всего бывает, упорядочен, так что известен порядок букв в алфавите. В коде Цезаря алфавиты P и Q совпадают. При кодировании символ, имеющий в алфавите порядковый номер i, заменяется символом с номером i + k, где k – величина сдвига в алфавите.

В нашей задаче перебором можно определить, что при кодировании использовался код Цезаря со сдвигом k = 2 и кодируемое слово – "цезарь".

В рассказах о Шерлоке Холмсе есть история о "Пляшущих человечках", где в роли алфавита Q использовался алфавит, символами которого являлись рисунки пляшущих человечков. Гениальный сыщик Шерлок Холмс разгадал используемый код, основываясь на частотном анализе использования символов в текстах на английском языке. Букве А например можно поставить в соответствие такой символ из алфавита пляшущих человечков:


До Конан Дойля подобную фабулу использовал Эдгар По в рассказе "Золотой жук". Кодирование встречается довольно часто в литературе и в жизни. В наши дни часто приходиться встречаться с примерами кодирования текстов в кириллице текстами в латинице и обратно. Текст в латинице легко кодируется текстом в кириллице, поскольку алфавит Q (кириллица) содержит больше символов, чем алфавит P (латиница). Так например слово Hallo может быть кодировано словом Халло. Обратное кодирование сложнее, поскольку символов в P, меньше чем в Q. В этом случае приходится некоторые символы кириллицы кодировать несколькими символами латиницы. Чтобы кодирование было однозначным, можно поступать следующим образом. Положим, что букве h не ставится в соответствие никакая буква кириллицы, тогда пара букв kh может кодировать букву х, ch – ч, sh – ш. При таком способе кодировке слово "привет" переходит в "privet", а предложение "что хорошо, то хорошо" - в предложение "chto khorosho, to khorosho".

Для естественных языков под переводом текста из языка P в язык Q понимается перевод, сохраняющий смысл. С появлением компьютеров была надежда, что эту задачу удастся решить. Но задача оказалась тяжелее, чем думали, и до сих пор она решена лишь частично.

Кодирование - представление текста в алфавите P текстом в алфавите Q,– это более простая задача, имеющая решение.

Декодирование – это восстановление исходного текста в алфавите P по его коду - тексту в алфавите Q.

Заметьте, целью кодирования обычно является не шифрование, а представление текста, записанного в одном алфавите, текстом в другом алфавите.

Наиболее просто задачи кодирования и декодирования решаются, когда оба алфавита имеют одинаковое число символов.

Задача: текст в алфавите {да, нет } представить текстом в алфавите {+, -}. Возможны два способа кодирования (да +, нет -) и (да -, нет +). При первом способе кодирования слово "дадада" будет кодироваться словом "+++", при втором – слово "+++" означает "нетнетнет".

< Лекция 1 || Лекция 12
Дмитрий Анисимов
Дмитрий Анисимов

Подскажите - где публиковать решения самостоятельных заданий которые Вы задали 

Михаил Жуков
Михаил Жуков

Мне вот реально интересно, не проще было сказать сразу, что есть такая штука - "полином разложения", и привести формулу? Слишком много воды в теме о системах счисления имхо.