Эрик Демейн о математике алгоритмов: «Инварианты гарантируют корректность»

MIT OpenCourseWare 26,8 тыс. 1 ч 21 мин 2 мин 24.07.2025
Главное

Анализ конечных автоматов: от инвариантов до завершения алгоритмов 0:12

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

⚙️ Основы теории конечных автоматов 1:05

Конечный автомат состоит из набора возможных состояний $Q$, начального состояния $q_0$ и множества допустимых переходов $T$. Простейшим примером является счетчик, который начинает работу с 0 и последовательно переходит в 1, 2, 3 и так далее.

Исполнение автомата — это последовательность состояний $q_0, q_1, \dots, q_n$, где каждый переход $q_i \to q_{i+1}$ принадлежит множеству допустимых переходов. Состояние $r$ считается достижимым, если существует последовательность переходов, начинающаяся в $q_0$ и оканчивающаяся в $r$. Ключевой задачей при анализе алгоритмов является определение того, будет ли выполнение конечным (завершится ли программа) и является ли результат корректным.

🧩 Анализ игры «Восьмерка» 8:59

Игра «Восьмерка» (3x3 поле с одной пустой клеткой) служит наглядным примером для доказательства недостижимости определенных состояний. Смысл игры заключается в перемещении плиток, чтобы достичь целевой конфигурации (упорядоченного состояния).

Для анализа Демейн вводит понятие инвертированной пары: это пара чисел $(i, j)$, где $i < j$, но при этом $j$ предшествует $i$ в «порядке чтения» поля.

Доказано, что если $P(q_0)$ истинно и предикат сохраняется, то $P$ является инвариантом (принцип инвариантности). Используя этот принцип, профессор доказывает, что в «Восьмерке» невозможно перейти из состояния с нечетным количеством инверсий в состояние с четным количеством (или нулевым, как в решенной головоломке).

🔄 Завершаемость алгоритмов: «простой сортировщик» 57:36

Для проверки того, не будет ли алгоритм работать вечно, используется понятие производной переменной (derived variable).

  1. Производная переменная $x(q)$ — это функция, отображающая состояния в натуральные числа.
  2. Переменная является строго убывающей, если каждый допустимый переход уменьшает ее значение.
  3. Теорема завершаемости: если существует строго убывающая производная переменная, ограниченная снизу натуральными числами, то автомат обязан достичь финишного состояния и остановиться.

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

💬 Цитаты

«Инвариантность — это индукция в другом виде.»

Эрик Демейн 0:52

«Если существует строго убывающая производная переменная, то автомат обязан достичь финишного состояния.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Инвариант
Свойство, которое остается истинным для всех достижимых состояний автомата.
Исполнение (execution)
Последовательность состояний автомата, соединенных допустимыми переходами.
Производная переменная
Функция, сопоставляющая состояниям значения, используемая для доказательства завершения алгоритма.
📊 Цифры
⚖️ Другая сторона
Математика и физика Эрик Демейн Конечные автоматы Принцип инвариантности MIT OpenCourseWare Теорема завершаемости