Einer der Hauptgründe, warum ich die Computertheorie („mein“ Zweig der theoretischen Informatik) faszinierend und studienwürdig finde, ist der folgende: Sie gibt uns die Möglichkeit, einige tiefe (und manchmal rätselhafte) philosophische Fragen zu untersuchen.
Einer der Begründer der Berechnungstheorie, Alan Turing, versuchte, die Bedeutung von „Berechnen einer Funktion“ für einen Menschen, der mit einem Stück Papier ausgestattet war, durch eine mathematische Beschreibung des Prozesses zu bestimmen. Ich bin nicht der Einzige, der glaubt, dass er äußerst erfolgreich war, und Turing-Maschinen haben sich als genaues Modell für viele andere Computerprozesse erwiesen.
Jetzt, da wir eine Klasse mathematischer Objekte besitzen, die Berechnungen beschreiben, können wir Theoreme über sie beweisen und auf diese Weise herausfinden, was berechnet werden kann und wie es berechnet werden kann. Es stellte sich sofort heraus, dass viele absolut legitime Funktionen überhaupt nicht berechnet werden können und dass sie nach einem Grad an Unberechenbarkeit klassifiziert werden können (einige Funktionen sind einfach „unberechenbarer“ als andere).
Einige andere Typen, die ersten, die normalerweise mit Juris Hartmanis und Richard E. Stearns identifiziert wurden, versuchten mathematisch zu beschreiben, was es bedeutet, dass eine Funktion (bzw. ein Problem) schwer oder einfach zu berechnen (bzw. zu lösen) ist. Es gibt verschiedene Komplexitätsmaße, nach denen die Härte von Problemen beschrieben werden kann; Die häufigste ist, wie viel Zeit wir brauchen, um sie zu lösen. Alan Cobham und Jack Edmonds waren recht erfolgreich darin, einen vernünftigen Begriff von "effizienter Berechnung" zu identifizieren.
Innerhalb der Rechenkomplexität Rahmen können wir nun beweisen einige Ergebnisse , die mit unserer intuitiven Begriff der Berechnung konsistent sind. Mein Lieblingsbeispiel ist der Zeithierarchiesatz: Wenn wir mehr Zeit zum Berechnen haben, können wir schwierigere Probleme lösen.
Das zentrale offene Problem der Komplexitätstheorie, P vs NP , ist nur eine Formalisierung einer anderen philosophisch bedeutsamen Frage: Ist es wirklich schwieriger, ein Problem zu lösen, als zu überprüfen, ob eine angebliche Lösung tatsächlich korrekt ist? Ich glaube, diese Frage ist es wert, unabhängig von ihrer praktischen Bedeutung gestellt und beantwortet zu werden.