млита-пми / Программа экзамена МЛиТА
.pdf
21. Регулярные выражения. Теорема Клини.
ТеоремаКлини. “Каждомурегулярнвыражениюможноп мустравт,коитьраспознаетторыйматязык, задаваемданнымрегулярнымражениемйнаоборот."
Доказательсвто:
Часть I: От регулярных выражений к конечным автоматам
Утверждение: Для любого регулярного выражения R существует НКА (с ε-переходами), распознающий в точности язык L(R).
1.Базис индукции:
Для R = строим НКА без конечных состояний.
Для R = ε строим НКА с двумя состояниями и ε-переходом от начального к конечному.
Для R = a (символ алфавита) строим НКА: начальное состояние →(a)→ конечное состояние.
2.Индукционный шаг: Предполагаем, что для подвыражений уже построены НКА.
Объединение R |R (+):
Создаём новое начальное состояние и новое конечное состояние. Добавляем ε-переходы:
1.Из нового начального → в начальные НКА для R и R .
2.Из конечных состояний НКА R и R → в новое конечное состояние.
Конкатенация R R (*):
Начальное состояние = начальное состояние НКА для R . Конечное состояние = конечное состояние НКА для R .
Соединяем ε-переходом конечное состояние R с начальным состоянием R .
Итерация Клини R*:
Создаём новое начальное и новое конечное состояние. Добавляем ε-переходы:
1.Из нового начального → в начальное состояние R.
2.Из конечного состояния R → в новое конечное.
3.Из конечного состояния R → обратно в начальное состояние R (цикл).
4.Из нового начального → в новое конечное (для нуля повторений).
Эта конструкция гарантирует, что полученный НКА распознаёт язык, задаваемый регулярным выражением.
22. Машина Тьюринга. Построение композиций машин Тьюринга и соединения их условными операциями.
23. Нормальная схема алгоритма Маркова и примеры его работы. Идея о переводе команд машины Тьюринга в правила нормальной схемы Маркова.
Суть идеи перевода:
Конфигурацию машины Тьюринга (MT) — ленту, состояние и положение головки — кодируем в единую строку для алгоритма Маркова (НАМ). Символ состояния записывается в строке непосредственно слева от символа, на который указывает головка.
Каждая команда MT вида «в состоянии q, видя символ a, перейти в q', записать a', сдвинуться D» превращается в одно или несколько правил подстановки в НАМ.
Движение вправо (R): Команда q a -> q' a' R моделируется простым правилом q a -> a' q'. Состояние «перескакивает» через изменённый символ вправо.
Движение влево (L): Требует более сложных правил. Команда q a -> q' a' L моделируется набором правил вида x q a -> q' x a' для каждого возможного символа x слева. Состояние «перескакивает» через левый символ.
Завершение работы MT (достижение допускающего состояния q_yes) моделируется заключительным правилом в НАМ (например, q_yes ->.), которое очищает служебные символы и оставляет итоговое содержимое ленты.
Таким образом, один шаг MT имитируется одним применением правила НАМ к строке-конфигурации. Так как НАМ может точно воспроизвести все действия MT, это доказывает их вычислительную эквивалентность.
24. Алгоритмически неразрешимые задачи. Проблема останова и её связь с другими задачами.
Проблема останова формулируется просто: существует ли алгоритм , который по описанию произвольной программы и входа всегда и правильно отвечает, остановится ли ( ) когда-нибудь или будет выполняться бесконечно? Ответ — нет: предположение о существовании такого ведёт к конструктивному противоречию. Конструируют программу , которая на входе вызывает ( , ) и затем делает ровно противоположное тому, что предсказывает : если предсказывает «останется»,зацикливается, и наоборот. При самоприменении ( ) получается противоречие, поэтому универсального решателя останова не существует. Это не практическое ограничение мощности компьютеров, а логическое ограничение вычислимости: некоторые вопросы о поведении программ принципиально неразрешимы алгоритмически.
FRACTRAN (пасьянс Конвея) — простая формальная система: программа — упорядоченный список положительных дробей !, … , "и начальное натуральное число ; шаг: найти первый дробь #такой, что#— целое, заменить на #; если ни один дробь не применим, процесс останавливается. Суть связи FRACTRAN и проблемы останова в том, что FRACTRAN тьюринг-полон: для любой машины (регистровой / Тьюринга) можно эффективно построить список дробей и начальное , которые симулируют эту машину шаг в шаг. Тогда вопрос «останется ли FRACTRAN-процесс?» эквивалентен вопросу «останется ли исходная машина?», и из неразрешимости общей проблемы останова следует неразрешимость задачи останова в FRACTRAN.
Идея формирования эквивалента FRACTRAN сводится к трём моментам. Первый: кодировать конфигурацию машины через разложение числа на простые — каждой «ячейке» состояния (регистру, счётчику) соответствует фиксированное простое число, а значение ячейки равно степени этого простого в факторизации . Второй: кодировать текущее управляющее состояние (номер инструкции) отдельным простым, присутствующим в факторизации с ненулевой степенью — таким образом в всегда хранится и вектор регистров, и указатель на текущую инструкцию. Третий: дроби выполняют инструкции: дробь numden применима тогда и только тогда, когда в содержатся все простые из знаменателя в достаточных
степенях (это — условие), и при применении степени простых из знаменателя уменьшаются, а простых из числителя — увеличиваются, что реализует изменения регистров и переход в новое состояние. Упорядоченность списка дробей даёт семантику «первого подходящего перехода», а отсутствие применимого дроби соответствует состоянию halt.
Особенность — реализация проверки «регистр = 0» и ветвления. Нельзя одним дробем сделать проверку нуля, но можно сконструировать цепочки дробей и дополнительные вспомогательные простые-состояния так, чтобы последовательность попыток применить дроби и переходы между вспомогательными состояниями различала случаи «есть требуемый множитель» и «его нет», и направляла поток в соответствующую ветку. В результате для каждой инструкции типа «если регистр = 0 → goto A, иначе декремент и goto B» собирают набор дробей и промежуточных состояний, который по порядку проверяет и реализует нужный переход. В финале получают эффективную процедуру: из описания машины и входа строят список дробей и стартовое так, что FRACTRAN останавливается тогда и только тогда, когда останавливается имитируемая машина.
Связь с теорией чисел и примером вроде Большой теоремы Ферма — это не прямая математическая зависимость, а иллюстрация силы и пределов алгоритмов. Если бы существовал универсальный «решатель останова», то для любой полуразрешимой задачи можно было бы написать программу-перебор, которая останавливается при нахождении контрпримера, и спросить у решателя: остановится ли она. Положительный ответ дал бы автоматическое свидетельство существования решения, отрицательный — его отсутствие. До доказательства Ферма этот метод теоретически мог бы решить вопрос о существовании контрпримера к $ + $ = $для ≥ 3; но так как универсального решателя не существует, такие автоматические процедуры недоступны в общем случае. Более формально, результаты типа MRDP показывают, что общая задача о целочисленных решениях диофантовых уравнений эквивалентна проблемам с той же степенью неразрешимости, что и halting, поэтому многие утверждения теории чисел в общем виде алгоритмически неразрешимы — хотя отдельные конкретные утверждения (как теорема Ферма) могут быть доказаны классическими математическими средствами.
25. Теория сложности алгоритмов. Полиномиальная сводимость. Задачи 3-SAT и 3-COLOR.
