Навеяло новостями

Евгений Ширяев
348
0

Информационный шум в окружающем интернете выдал историю с кодированием имен в Росреестре (кто сказал «шифрование» в адрес несекретного государственного органа?!). И она нам подошла для практического упражнения школьникам по решению систем линейных уравнений на конечном множестве. К сожалению, наши развлечения и всеобщая страсть к жареному и другим человеческим и корпоративным слабостям усилили шум и увеличили количество абсурда вокруг. Поэтому мне следует принести извинения и привнести буквальную ясность.

Составляя программу учебного курса для лаборатории математики, мы ищем возможность предложить его слушателям задачу с практическим применением. Или хотя бы показать приложения изучаемой науки. Сейчас речь о курсе «Коды и шифры»

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

Заметим, что эта постановка может не иметь ничего общего с реальным кодированием имен Игоря и Артема Чайки. Их коды – если «лсду3» и «йфяу9» вообще коды, а не случайность – могли быть получены из номера паспорта или любого другого признака персоны.

О решении

Давайте уточним, что математики называют решением.

Пример 1: решить уравнение

Вы смело беретесь за задачу и находите, что при подстановке единицы вместо x уравнение становится верным числовым равенством. Означает ли это, что «x=1» – решение уравнения? Да. Означает ли это, что вы решили уравнение? Пока что нет, поскольку есть и другие корни: x=2 и x=3. Когда вы их объедините с первым найденным и докажете, что четвертого быть не может, тогда и выйдет полное решение.

Что считаем решением задачи в нашей формулировке? Какой-нибудь алгоритм. Вот, например, сгодится этот:

Очевидно, что алгоритмов масса. Каждый из читателей может выписать свой, выбрав для своего имени какой-нибудь код вместо «АААА0» и оставив остальное, как на блок-схеме выше.

А как насчет поиска всех способов закодировать имена граждан? Займемся комбинаторикой.

Пример 2. За барной стойкой стоит улыбающийся бармен…

… Неудачный пример. Забудьте о нем.

Пример 3. Бариста сделал двойной эспрессо, капучино маленький и большой. И ждет, когда за заказом подойдут Александр, Иннокентий и Эльдар. Он помнит, что Александру – эспрессо, Иннокентию – маленький капучино. А остальное забыл.

Но поскольку остального – людей и напитков – по одному, то соответствие устанавливается однозначно.

Пример 4. Такой же заказ, плюс добавляется морс. А к компании присоединилась Ирина. Бариста должен повторить напитки Александру с Иннокентием и снова забывает об остальном.

Сейчас соответствий людей напиткам уже может быть два:

Будем развивать процесс: добавлять готовые напитки и увеличивать компанию. Если мощность каждого из множеств равна N, все напитки разные, и бариста снова не запоминает клиентов после второго в группе, то нужно назначить (N−2) напитка (N−2)-м людям. Это делается числом способов, равным факториалу числа (N−2). Факториал натурального числа равен произведению всех чисел от единицы до этого числа:

2! = 2, 3! = 6, 4! = 24.

Факториал быстро растет с увеличением числа-аргумента. Для озвучивания вычисленного факториала числа людей, имеющих недвижимость в России, в русском языке не найдется подходящих слов.

Теперь коды

В приведенных примерах напитки аналогичны кодам. Сколько кодов может быть?

Предположим, что на каждом месте может стоять любая буква или цифра. На любом из пяти мест любой из 43 символов – 43*43*43*43*43 = 435 кодов. Это число примерно равно 147 миллионам. Что-то около числа граждан нашей страны. Т.е. не исключено, что между множеством людей и кодами можно установить биекцию – взаимно однозначное соответствие. Это отображение прекрасно, потому что оно имеет обратное, которое уже кодам ставит в соответствие имя.

Не пробуйте вообразить число таких биекций.

У нас не биекция

Код «ЛСДУ3» по сфантазированному алгоритму получают несколько имен. Вот, например: «Арсен Юрьевич Жаока». Больше того, программка назначит код любой последовательности символов не длиннее 50 знаков. А значит, она исполняет роль баристы, у которого гостей заведомо больше 4350 при длине карты напитков 435.

Да что там биекция – предложенная игрушка это лишь хеш-функция.

Заключение

Друзья – иначе не обратиться к тем, кто дочитал до этого места, – учитывайте, что в этом мире живут работники отделов пиар, творческие специалисты СМИ и самые необыкновенные политики. Они любят сочинять для вас новости. Разберем пару заметок.

1) Сноб сообщает:

В Политехническом музее разгадали алгоритм превращения Артема Чайки в ЛСДУ3

Сотрудники лаборатории математики Политехнического музея выявили алгоритм, по которому имена Артема и Игоря Чаек превратились в коды из букв и цифр в Росреестре. По просьбе «Сноба» музей подготовил описание алгоритма…

Ошибка: увы, ничего не разгадано. Во всяком случае, нет повода это утверждать. Уважаемые журналисты, не теряйте чутье слова!

2) Журнал Алексея Навального сожалеет и слегка драматизирует:

А у нас вот — математики Политеха расшифровали ЛСДУ3а. Точка приложения научных усилий в нашей стране. Дешифровка на службе граждан.

Расшифровка и дешифровка сильно не одно и то же. Подробности на нашем курсе осенью. И ждем новые коды из реестра:)

 —  —

Товарищи! Не выключайте критическое мышление, требуйте первоисточник и проходите не моргнув глазом мимо фраз: «В редакцию подкинули ценный алгоритм».

И спасибо

 — математикам, стерпевшим это безобразие;

 — службе новостей BBC и ТВ Дождь — они позвонили, чтобы уточнить подробности;

 — тем, кто в соцсетях на слова «раскрыто», «расшифровано», «русские учоные ого-го» реагировал в духе: «Ша уже! Что вы, хеширования не видели?» — и объяснял предметно.