Light-industry-up.ru

Экосистема промышленности

Проблема остановки

15-10-2023

В теории вычислимости проблема остановки — это проблема разрешимости, которая может неформально быть поставлена в виде:

Даны описание алгоритма и его начальные входные данные, требуется определить, сможет ли выполнение алгоритма с этими данными завершиться когда-либо. Альтернативой этому является то, что он работает всё время без остановки.

Алан Тьюринг доказал в 1936 году, что не существует общего алгоритма для решения проблемы остановки. Другими словами, проблема остановки неразрешима на машине Тьюринга.

Набросок доказательства

Рассмотрим множество алгоритмов, которые принимают на вход натуральное число и на выходе тоже выдают натуральное число. Выберем какой-нибудь полный по Тьюрингу язык программирования. Каждый алгоритм можно записать в виде конечной последовательности символов на этом языке. Упорядочим множество лексикографически (в словарном порядке), при этом каждый алгоритм получит свой порядковый номер. Назовем Анализатором гипотетический алгоритм, который получает на вход пару натуральных чисел , и:

  • останавливается и возвращает 1, если алгоритм с номером не останавливается, получив на вход
  • не останавливается в противном случае (если алгоритм с номером останавливается, получив на вход ).

Проблему остановки можно переформулировать следующим образом: существует ли Анализатор?

Теорема. Анализатор не существует.

Докажем это от противного. Допустим, Анализатор существует. Напишем алгоритм Диагонализатор, который принимает на вход число , передает пару аргументов Анализатору и возвращает результат его работы. Другими словами, Диагонализатор останавливается в том и только том случае, если не останавливается алгоритм с номером , получив на вход число . Пусть - это порядковый номер Диагонализатора в множестве . Запустим Диагонализатор, передав ему это число . Диагонализатор остановится в том и только том случае, если алгоритм с номером (то есть, он сам) не останавливается, получив на вход число (какое мы ему и передали). Из этого противоречия следует, что наше предположение неверно: Анализатор не существует, что и требовалось доказать.

См. также

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

Ссылки

  • On computable numbers, with an application to the Entscheidungsproblem // Proceedings of the London Mathematical Society, Series 2. — 1936. — Т. 42. — С. 230–265. (в этой публикации Тьюринг вводит определение машины Тьюринга, формулирует проблему зависания и показывает, что она (также как и проблема разрешения) неразрешима).
  • Wiki:HaltingProblem
  • Проблема зависания (англ.)

Проблема остановки.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06