Vielleicht ist die Antwort, dass Ihr Mitarbeiter richtig ist. Vielleicht hast du Turing falsch verstanden, oder wie trifft es hier zu?
Alle Maschinen sind endlich, daher gibt es keine "echten" Turing-Maschinen und keine Programme, die niemals anhalten. Ein triviales Programm, das eine einfache Endlosschleife ausführt, könnte 5 Minuten oder 50 Jahre laufen, aber auf einer endlichen Maschine wird es anhalten. Ein nicht triviales Problem, das nicht anhält, wie z. B. "pi genau berechnen", wird ebenfalls angehalten, da die Berechnung schließlich die Kapazität zum Speichern weiterer Ziffern überschreitet.
Das Turing-Ergebnis garantiert nichts, was auf endlichen Maschinen besonders nützlich ist, sodass Ihre Suche letztendlich erfolglos ist. Konzentrieren Sie sich lieber darauf, wie viel Zeit und wie viel Geld Sie den Mathematikern überlassen.
Sie können denken, dass ein Programm wie { while true: print "running"; print "halted"; }
ein Gegenbeispiel ist, aber es ist nicht. Dieses Programm hat Nebenwirkungen, die dazu führen können, dass es angehalten wird oder nicht. Wenn man die Nebenwirkungen ignoriert, ist es möglich, einen formalen Beweis dafür zu erarbeiten, dass dieses Programm nicht anhält. In dieser Frage geht es nur um Programme, die sich dem formellen Beweis der Nichtunterbrechung entziehen, wobei die Frage der Unterbrechung nicht zu entscheiden ist. Dies ist kein solches Programm.
Es kann hilfreich sein, "starkes" Turing von "schwachem" Turing zu unterscheiden. Starke Turing-Maschinen sind eigentlich unendlich und wenn sie nicht anhalten, laufen sie unendlich lange. Wir können diese nicht bauen.
Schwache Turingmaschinen sind zeitlich und räumlich begrenzt, und sie sind die einzige Art, die wir bauen können. Wir sind an Programmen interessiert, bei denen nicht nachgewiesen werden kann, dass sie innerhalb dieser Grenzen anhalten. Turing sagt uns, dass es solche Programme gibt, aber wir können sie nicht identifizieren. Wenn die Grenzen niedrig genug sind, können wir sie identifizieren, indem wir das Programm schreiben und es bis an seine Grenzen laufen lassen.
Das Wesen von Turing ist, dass es keine Abkürzungen gibt. Die einzige Möglichkeit, sicher zu sein, ob ein Problem rechnerisch realisierbar ist, besteht darin, das Programm zu schreiben, es auszuführen und herauszufinden. Mit genügend Zeit und Geld können Sie alle Programme schreiben, sie für immer und im Laufe der Zeit ausführen und diejenigen finden, die Ergebnisse liefern (die Halfter). Die anderen werden noch laufen. Haben Sie genug Zeit und Geld, um das zu tun?
Im Ernst, der Streit geht es um Grenzen. Turing und NP complete teilen uns mit, dass bestimmte Problemklassen nicht von Computern innerhalb eines bestimmten Budgets oder nach einem bestimmten Zeitplan gelöst werden können, unabhängig davon, wie groß dieses Budget oder wie großzügig dieser Zeitplan sein mag. Beispiele für diese Art von Problem gibt es zuhauf: Knacken von kryptografischen Schlüsseln; Optimierung der Routen für Lieferungen an Hunderte von Adressen; Verpackungskästen in Lastwagen; Fehler in großen Programmen finden!
Fragen Sie Ihren Kollegen nach einem Budget und einem Zeitplan und machen Sie das Versprechen, dass Sie ein Problem produzieren können, das innerhalb dieses Budgets oder Zeitplans nicht gelöst werden kann. Dieses Versprechen wird sehr einfach zu halten sein.