Проблема будущего

топ 100 блогов gatoazul07.02.2025 Одна из фундаментальных вещей информатики - это проблема останова. Возможно ли написать такую программу, которая проверит другую программу и скажет, зависнет та или нет. Ответ на этот вопрос в общем случае отрицательный, увы. Такую программу сочинить невозможно. Не сейчас, а в принципе.

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

function will_halt(fun):boolean
{
  // тут идут миллионы строк хитрейшего алгоритма
}


А теперь напишем такую программу-обманщицу:

function deceiver()
{
  if (!will_halt(deceiver))
  {
    while(1);
  }
}


Для тех, кто не умеет читать код, объясню словами. Обманщица спрашивает у нашей сложной программы: а я зависну, если меня исполнить? Если та отвечает "да", то обманщица отвечает: а фиг тебе, я не буду зависать, и заканчивает работу. Если программа проверки отвечает "нет", обманщица говорит: а дулю, и назло зависает, входя в бесконечный цикл.

Но ведь ровно тот же ход рассуждений объясняет, почему в общем случае невозможно предсказывать будущее! Потому что если у нас есть предсказание, мы можем сделать все наоборот, так, чтобы оно стало неверным.

В художественной литературе, начиная с "Царя Эдипа", конечно, любят опровергать эту идею, показывая, как именно что попытки избежать предсказания позволяют ему сбыться. Но это не более, чем литературный прием, искусственное подыгрывание, хотя и поражающее воображение читателя.

Впрочем, есть один вариант: сделать предсказание так, чтобы о нем не знал никто - или по крайней мере, не знали заинтересованные лица. Аналог в случае программ - запретить программа проверять самих себя. Скорее всего, и это не поможет, потому что проблема останова фундаментальна, но интересно было бы увидеть ее доказательство с учетом такого ограничения.

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
Когда Трамп только начал свое президентство, в Сети был популярным такой анекдот: «Мне одному кажется, что американцы слишком давно не стреляли в своих президентов?» Трамп выжил. Строго говоря, это была «любительщина», вроде четырех выстрелов в Рейгана в марте 1981. 25-летний Джон ...
Ну что, все уже уехали из Москвы? Куда? Одни или с детьми? Когда возвращаетесь? Где Новый год встречать будете? Мне вчера дали американскую визу - тянули до последнего дня - так что я 3-го января улетаю в США, вначале в Лас-Вегас, а потом опять ...
Ведьмы из Сугаррамурди / Las brujas de Zugarramurdi, 2013, Испания, режиссер Алекс де ла Иглесиа "Трое незадачливых воришек попадают в заколдованный город, где на протяжении веков правят бал коварные ведьмы. Задача героев проста — унести ноги из страшного места. Сюжет основан на ...
Год назад был в городке Амерсфорт. Заскочили туда с сыном по дороге в Амстердам.  Город мало примечательный, всего 140 тысяч жителей. Единственно чем знаменит, так это тем, что от его названия, по утверждению Владимира Даля, произошло слово ...
...