Каков результат X (X, X)? - PullRequest
7 голосов
/ 23 марта 2010

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

Предположим, что существует алгоритм с именем X, который имеет 2 входа: A и a_1 ... a_n, где 'A' обозначает произвольный алгоритм, а 'a_1..a_n' - входы A. X получает A и его входы и возвращает true, если A с a_1..a_n может быть прекращено, и false, если A с a_1..a_n входами попадает в бесконечный цикл (никогда не заканчивается). Как это:

A(n):
   while(n<5):
      write "I'm immortal!"

и результат X(A,6) равен true, а X(A,2) равен false.

Так каков результат X(X,X)?

Кроме того, вы знаете, кто первым представил эту проблему?

отредактировано после одного часа глубокого размышления: не могли бы вы увидеть здесь нечто, эквивалентное парадоксу Рассела?

Ответы [ 7 ]

19 голосов
/ 23 марта 2010

Если он существует, он возвращает истину.Доказательство: предположим, он возвращает false.Тогда он попадает в бесконечный цикл и никогда не заканчивается.Это противоречие.

Но более интересной является программа Y, которая может быть получена из X и которая останавливается тогда и только тогда, когда ее параметры не останавливаются.Тогда Y (Y, Y) приводит к противоречию: либо он останавливается (имеется в виду, что он не останавливается), либо нет (в этом случае это происходит).Следовательно, X не существует.Детали опущены, например, мы немного махали рукой, что X и Y принимают один или два параметра.

Вопросы, связанные с этим вопросом, обсуждались в 19 веке: 10-я проблема Дэвида Гильберта (задается в 1900 г.) запрашивает алгоритм, чтобы определить, имеет ли решение какое-либо данное диофантово уравнение.Оглядываясь назад, это может быть выражено как частный случай проблемы остановки: найдите алгоритм, чтобы определить, останавливается ли поиск грубой силы для решения или нет.Таким образом, X решит 10-ю проблему, но отсутствие X оставило 10-ю проблему открытой.Он был окончательно закрыт в 1970 году, после 20 лет работы Мартина Дэвиса, Джулии Робинсон, Юрия Матиясевича и других.Гильберт полностью сформулировал «проблему Entscheidungs» в 1928 году, которая является той же идеей, что и проблема остановки, но для проверки правильности утверждений в арифметике, а не для проверки, останавливаются ли программы.

Я думаю, что Алан Тьюринг изобрел необходимую терминологиюсформулировать проблему остановки, как у вас, и доказал результат (1936).Но Алонзо Чёрч доказал существование неразрешимых проблем в лямбда-исчислении (также 1936), и теоремы Курта Гёделя о неполноте (1931) сделали так много, что использование его методов для получения результатов вычислимости, вероятно, было меньшим достижением в обоих случаях, чем формулировкапроблемы были (например, изобретение лямбда-исчисления и вычислительной модели Тьюринга).

Актуальность для парадокса Рассела (1901): да, доказательства имеют нечто похожее на них.В обоих случаях вы рассматриваете объект, который представляет предикат, оцененный в классе, включая сам объект («набор всех наборов, программа, которая действует на программы»).Вы предполагаете его существование, позволяя вам создать новый объект путем изменения предиката («набор всех наборов, которые не являются членами самих себя, программа, которая останавливается тогда и только тогда, когда ее ввод не останавливается»), приводя к противоречию при попыткеоценить новый предикат, «примененный к себе».Это опровергает предпосылку («существует множество всех наборов», «существует алгоритм для проверки остановки»).

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

Между результатами есть существенная практическая разница: несуществование X просто доказывает, что проблема остановки не решаема алгоритмомтак что если вы Дэвид Гильберт, вам придется пересмотреть свои ожидания относительно того, что возможно в математике.Парадокс Рассела доказал, что теории множеств , используемые в то время, были противоречивы, поэтому, если вы Георг Кантор, вам придется переоценивать каждое доказательство, которое вы когда-либо написали.Это спровоцировало первые формальные аксиоматические теории множеств и переосмысление работ Кантора, Дедекинда и других теоретиков множеств, которые работали с наивными определениями множеств, которые допускали парадокс.

11 голосов
/ 23 марта 2010

Взгляните на проблему остановки .

8 голосов
/ 23 марта 2010

Разве это не просто проблема остановки ?

4 голосов
/ 23 марта 2010

Там нет ответа на вопрос. Программа X не существует. Алан Тьюринг доказал, что:

Нет общей вычислимой функции который решает, является ли произвольным программа i останавливается на произвольном вводе x

Смотрите доказательство здесь: http://en.wikipedia.org/wiki/Halting_problem

Таким образом, Алан Тьюринг определил проблему остановки как «учитывая описание программы, решите, будет ли программа завершена или будет работать вечно». Вопрос здесь заключается в том, что будет выводом этой программы, если вводом будет сама программа. Причина, по которой нет фактического ответа на этот вопрос, заключается в том, что, как доказал Алан Тьюринг (см. Ссылку в этом ответе), такой программы не существует: «не существует общей вычислимой функции, которая решает, останавливается ли произвольная программа i на произвольной вход х "

3 голосов
/ 23 марта 2010

X имеет два входа, поэтому X(X) не имеет смысла, поэтому X(X,X) не имеет особого смысла.

Это нормально, потому что X все равно не существует (см. Другие ответы):)

1 голос
/ 23 марта 2010

Это звучит как проблема остановки, и, отвечая на ваш вопрос, я полагаю, что это был Алан Тьюринг, который впервые обсудил ее (хотя я не уверен, что он на самом деле назвал ее «проблемой остановки»).

0 голосов
/ 23 марта 2010

Вопрос предполагает, что X существует, поэтому:

Допустим, X является нашим «невозможным» алгоритмом, который сообщает, завершается ли какой-либо другой алгоритм A для данного ввода.Если мы предоставим X сам X в качестве алгоритма для анализа и набор входных данных Y для тестирования в X, например:

X (X, Y)

Мы знаем, что этовернет true .Теперь предположим, что X получает в качестве входных данных сам X, что означает,

Давайте посмотрим, закончится ли X, когда X анализирует X ... Это правда, поскольку X может анализировать что угодно.Другими словами, если бы X существовал, то X (X, X) было бы истинным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...