Читать «Таинственные страницы. Занимательная криптография» онлайн - страница 7

Иван Иванович Ефишов

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

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

•, –, • •, –, • –, – •.

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

Сколькими способами можно прочесть переданное слово?

Сделаем задачу более наглядной. Предположим, что вам передали следующее слово:

• • – • – • – •

Попробуйте для начала разобраться с этим частным случаем.

Задача полностью аналогична той, которую вы разгадывали в линейном кроссворде. Но там вы отделяли друг от друга слова, а здесь придется отделить закодированные буквы в слове. Известно, что при передаче телеграмм или радиограмм применяется азбука Морзе, в которой, например, буква А всегда кодируется двумя знаками • –, тогда как буква Е – это одна точка •, а буква Т – просто тире – . Таким образом, получив сообщение из двух знаков • – (в котором преднамеренно пропущен пробел), вы можете его декодировать либо как букву А, либо как две буквы ЕТ.

Теперь попробуйте применить подобный подход для слова из одиннадцати знаков. Не забудьте, что наш этюд называется «Числа Фибоначчи»!

Попробуйте сделать это самостоятельно, потратьте на задачу час, два, три… Столько, сколько вам понадобится. Но не забегайте вперед, чтобы просто прочитать ответ. Задача не так сложна: при ее решении вам не придется воспользоваться ни одной математической формулой!

Подсказка: ответ задачи – двенадцатое число Фибоначчи.

Решим эту задачу подробно – шаг за шагом. Итак, слово длиной в одиннадцать знаков уже задано. Предположим, что сначала нам дана последовательность из 1 знака, затем из 2, 3…., 11 знаков. Каждый знак, как вы помните, – это либо точка, либо тире.

Первый шаг. Вначале имеем слово длиной в один знак: *, где * обозначает либо точку, либо тире.

Очевидно, слово у нас прочитается единственным образом. Когда конкретное сообщение из одного знака у вас перед глазами, то вы увидите либо • либо –.

Второй шаг. Теперь задано слово длиной уже в два знака: **.

(*)(*), (**) – два способа декодирования. Других комбинаций попросту нет. Здесь круглыми скобками выделены отдельные буквы (однозначные либо двузначные) в полученном нами слове.

Третий шаг. Имеем слово длиной в три знака: ***.

(*)(*)(*), (*)(**), (**)(*) – уже три способа декодирования (будем располагать последовательность из букв в лексикографическом порядке их длины). Как мы помним, буквы из трех знаков (***) по условию нашей задачи не существует.

Четвертый шаг. Имеем слово длиной в четыре знака: ****.

(*)(*)(*)(*), (*)(*)(**), (*)(**)(*), (**)(*)(*), (**)(**) – вот так сюрприз! У нас теперь не четыре, как можно было бы ожидать, а целых пять способов декодирования.