Gibt es eine direkte Beziehung zwischen der Komplexität eines Algorithmus (z. B. Best / Worst-Fall der schnellen Sortierung) und der Klasse von Automaten, die den Algorithmus implementieren können?
Die Frage, welche Klasse von Automaten einen bestimmten Algorithmus wie die schnelle Sortierung implementieren kann, ist schwierig, da unklar ist, was als Implementierung dieses Algorithmus gelten würde. Für eine schnelle Sortierung sollten die durchgeführten Vergleiche sicherlich gleich sein, aber muss die Reihenfolge, in der die Vergleiche durchgeführt werden, auch dieselbe sein? Was ist mit der Reihenfolge der Lesezugriffe auf bestimmte Elemente der Eingabe? Die Reihenfolge der Kopier-, Verschiebungs- und Austauschvorgänge für bestimmte Elemente?
Sie müssten eine ganze Reihe von Orakeln für die Operationen angeben, die für Sie wichtig sind, aber dann befinden Sie sich bereits in einer sehr spezifischen Situation, die auf dem Algorithmus basiert, und sind weit entfernt von den allgemeinen Klassen von Automaten, die üblicherweise studiert werden. Der Weg um dieses Dilemma besteht darin, über Probleme anstelle von Algorithmen zu sprechen und Probleme zu formalisieren, indem über Sprachen gesprochen wird.
Gibt es zum Beispiel eine Reihe von Komplexität, die Push-Down-Automaten ausdrücken können?
Nicht wirklich, denn Push-Down-Automaten können ihre Eingabe nur einmal und nur in Vorwärtsrichtung lesen. Wenn Sie die Maschine jedoch in einen Teil aufteilen, der die Eingabe nach Belieben vorwärts und rückwärts lesen darf, und eine endliche Anzahl von Zeigern auf bestimmte Eingabepositionen (NL) beibehalten, und einen Teil, der Push-Down-Automaten empfängt Wenn Sie ihn vom anderen Teil eingeben , erhalten Sie die Komplexitätsklasse LOGCFL , die gleich SAC 1 (eine Schaltungsklasse) ist.
Wenn Sie diese beiden Teile nicht trennen und nur einen Stapel zu NL hinzufügen, erhalten Sie die Automatenklasse AuxPDA , die der Komplexitätsklasse P entspricht . Wenn Sie jedoch die Laufzeit dieser Automaten (mit Stapel und logarithmischem Hilfsspeicher ) auf die Polynomzeit beschränken, erhalten Sie NAuxPDA P , das wiederum LOGCFL entspricht. (Und wenn Sie auf einer deterministischen Polynomlaufzeit bestehen, den Stapel verschrotten, aber eine polylogarithmische Hilfsspeicherung zulassen, erhalten Sie SC .)
Wenn Sie jedoch die Einschränkung beibehalten, dass die Automaten ihre Eingabe nur einmal und nur in Vorwärtsrichtung lesen können, und zusätzlich verlangen, dass sie ihren Stapel nur auf sehr deterministische Weise direkt basierend auf der Eingabe (dh dem Eingabesymbol) verwenden können Bestimmt, ob diese Automaten etwas auf den Stapel schieben, etwas aus dem Stapel entfernen oder den Stapel unberührt lassen, erhalten Sie sichtbar Pushdown-Automaten, die genau die verschachtelten Wortsprachen erkennen , die auch im deterministischen logarithmischen Raum erkannt werden können .