Одной из ключевых тем для подготовки к ЕГЭ по информатике является теория кодирования информации, а именно построение однозначных (однозначно декодируемых) кодов. В этой теме важную роль играет условие Фано – критерий, позволяющий определить, возможно ли для данного кода однозначное декодирование закодированного сообщения. Глубокое понимание поможет не только решать задачи из демоверсии ЕГЭ, но и формировать базовые навыки в области теории информации и алгоритмов сжатия данных.
Определение
Код – это система однозначного отображения элементов одного множества (алфавита сообщений) в последовательности символов другого множества (алфавита кодирования).
Необходимость однозначного декодирования
В задачах кодирования важно, чтобы любая закодированная последовательность могла быть однозначно восстановлена в исходное сообщение. Для этого код должен быть однозначно декодируемым.
Формулировка
Условие Фано – критерий однозначной декодируемости, гласящий:
Для того чтобы блочный (фиксированного или переменного размера) код был однозначно декодируемым, ни одно кодовое слово не должно являться началом (префиксом) другого кодового слова.
Правило 1: Проверка на префиксы
Для каждого кодового слова проверить: встречается ли оно полностью в начале какого-либо другого слова из кода.
Если найден такой случай – код не удовлетворяет условию Фано.
Правило 2: Применимость только к префиксным кодам
Правило 3: Оборотимость
Условие Фано является достаточным, но не необходимым для однозначной декодируемости: есть однозначно декодируемые коды, не являющиеся префиксными.
Однако для ЕГЭ в основном рассматриваются именно префиксные коды.

Этапы анализа кода на условие Фано
Переписать все кодовые слова (например, по алфавиту).
Для каждого слова проверить, не начинается ли другое слово с этого.
Если таких случаев нет – код удовлетворяет условию.
Упражнение 1
Дан код: 0, 10, 110, 111. Проверить, удовлетворяет ли этот код условию Фано.
Решение:
0 – ни одно другое слово не начинается с 0.
10 – ни одно не начинается с 10.
110 – ни одно не начинается с 110.
111 – ни одно не начинается с 111.
Вывод: Код удовлетворяет условию Фано, однозначно декодируется.
Упражнение 2
Пусть кодовые слова: 01, 011, 11. Применить условие Фано.
Решение:
01 – следующее слово 011 начинается с 01 (011 = 01 + 1).
Нарушено условие Фано: 01 – префикс 011.
Вывод: Код не удовлетворяет условию Фано, возможно неоднозначное декодирование.
Упражнение 3
Является ли код 1, 00, 01 префиксным?
Решение:
1 – ни одно другое слово не начинается с 1.
00 – ни одно другое слово не начинается с 00.
01 – ни одно другое слово не начинается с 01.
Вывод: Код удовлетворяет условию Фано, префиксный, однозначно декодируется.
Упражнение 4
Построить пример кода из 4 слов, который не удовлетворяет условию Фано, и объяснить почему.
Решение:
Проверим:
Вывод: Нарушение условия Фано, декодирование неоднозначно.
Упражнение 5
Для кода: 10, 100, 101, 11 – проверить условие Фано и привести пример декодирования последовательности 1010011.
Решение:
Вывод: Код не удовлетворяет условию Фано.
Декодирование:
При попытке декодировать последовательность 1010011 возможны разные разбиения:
10 | 100 | 11 (все слова есть в списке)
101 | 0011 (101 не в списке, 00 не в списке, 11 есть, но 0011 нет).
Всегда записывайте кодовые слова в столбик и по алфавиту, это упростит поиск префиксов.
Не торопитесь – тщательно проверяйте каждый случай, особенно в заданиях с несколькими вариантами.
Если задано составить код, автоматически выбирайте префиксные коды (например, код Хаффмана всегда префиксный).
Тренируйтесь на разных примерах – навыки поиска префиксов очень важны для быстрой работы на экзамене.
Важный инструмент для проверки однозначности декодирования кодов в информатике. Уверенное знание этого условия позволяет быстро и верно выполнять задания на кодирование, что крайне важно для успешной сдачи ЕГЭ. Постоянная практика, анализ примеров и внимательность при проверке на наличие префиксов – залог успеха!