Чи існують програми, які ніколи не зупиняються і не мають доказів без припинення?


23

Як чорні діри в інформатиці. Ми можемо лише знати, що вони існують, але коли ми маємо одну з них, ми ніколи не дізнаємось, що це одна з них.


1
Вирішити задачу зупинки є принаймні настільки ж важко, як і доведення теорем (з урахуванням теореми ви можете просто написати програму типу , програма припиняється, якщо і лише якщо теорема є правдивою). Якщо таких програм не було, це означало б, що ви можете довести всі теореми, що, як відомо, помилкові. Tif T is true then halt else loop forever
Бакуріу

@Bakuriu: Як би ти писав if T is true?
ruakh

@ruakh: Традиційний методFor each string S in the (countable) universe of possible strings: If S is a syntactically valid proof of T, halt.
Quuxplusone

@Quuxplusone: Ну, так, але це, схоже, не вписується в конструкцію Бакуріу. . .
ruakh

Це цікаво, але поза моїми знаннями. Чи можете ви детальніше розібратися?
Еворлор

Відповіді:


23

Дійсно є такі програми. Щоб довести це, припустимо протилежне, що для кожної машини, яка не зупиняється, існує доказ, що вона не зупиняється.

Ці докази є рядками кінцевої довжини, тому ми можемо перерахувати всі докази довжини менше для деяких цілих .sss

Потім ми можемо використовувати це для вирішення проблеми зупинки наступним чином: Враховуючи машину Тюрінга та вхід , ми використовуємо такий алгоритм:хMx

s := 0
while (True)
    test if machine M halts on input x in s steps
    look at all proofs of length s and see if they prove M doesn't halt on input x
    set s := s + 1

Якщо зупиняється на вході , то він зупиняється на деякій кінцевій кількості кроків , тому наш алгоритм припиняється.х сMxs

Якщо не зупиняється на вході , то, за нашим припущенням, існує деяка довжина доказу де є доказ того, що не зупиняється. Тож у цьому випадку наш алгоритм завжди припиняється.х с МMxsM

Таким чином, у нас є алгоритм, який вирішує проблему зупинки, яка завжди припиняється. Але ми знаємо, що це не може існувати, тому наше припущення про те, що завжди є доказ неприпинення, повинно бути помилковим.


2
Я думаю, що з цього випливає і слабша форма теореми про незавершеність Годеля. В основному, існують речі, які є правдивими, але їх неможливо довести. Це один з моїх нових улюблених експериментів з думками.
Джейк

Як ви вважаєте, спроба довести P = NP або намагатися знайти непарне ідеальне число може бути однією з цих програм?
Otakar Molnár López

1
Це не зовсім має сенс, оскільки програми, що не припиняються, не є доказами, і не є їхніми цифрами, але ідея, на яку ви потрапляєте, була висунута. Деякі кажуть, що PvsNP є недоказувальним
Джейк

1
@Jake Я вважаю, що частина мотивації машин Тьюрінга була більш чітким вираженням ідеї теореми Годеля.
cpast

6

Для дещо конкретнішого прикладу припустимо, що теорія, яку ми використовуємо для наших доказів, має такі (цілком розумні, ІМО) особливості:

  1. Це послідовно ; тобто це не може довести протиріччя.
  2. Його набір аксіом рекурсивно перелічується.
  3. Її докази можна записати у вигляді кінцевих шнурів.
  4. Питання про те, чи кодує дана рядок добре сформований і правильний доказ, алгоритмічно вирішується за обмежений час.
  5. Досить виразно визнати доказ другої теореми про незавершеність Геделя , яка говорить про те, що вона не може довести власну послідовність.

З урахуванням цих припущень наступна програма ніколи не зупиниться, але не може бути доведена (в рамках теорії, яку ми використовуємо), щоб вона не припинялася:

let k := 0;
repeat:
    let k := k + 1;
    let s := binary expansion of k, excluding leading 1 bit;
while s does not encode a proof of a contradiction;
halt.

Ключовою деталлю є перше вище припущення, а саме те, що теорія, яку ми використовуємо для наших доказів, є узгодженою. Очевидно, нам потрібно припустити це, щоб наші докази чогось варті, але друга теорема про незавершеність Геделя говорить, що для будь-якої досить виразної та ефективно аксіоматизованої теорії ми насправді цього не можемо довести (крім, можливо, в якійсь іншій теорії, чию послідовність ми тоді потрібно припустити і т. д. тощо).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.