Wir können solche Dinge absolut beweisen.
Viele Probleme haben triviale Untergrenzen, so dass das Auffinden des Minimums einer Menge von Zahlen (die in keiner Weise sortiert / strukturiert sind) mindestens Zeit benötigt. Der Beweis dafür ist einfach: Ein hypothetischer Algorithmus, der in Zeit abläuft, kann nicht alle Zahlen in der Eingabe untersuchen. Wenn wir also den Algorithmus für eine Eingabe ausführen, können wir feststellen, dass er niemals ein bestimmtes Element der Eingabe untersucht hat. Wenn Sie dieses Element auf ein Minimum reduzieren, kann der Algorithmus fehlschlagen.nΩ ( n )o ( n )
Eine weniger triviale Untergrenze ist die -Untergrenze für die Sortierung im vergleichsbasierten Modell. Der Beweis dafür lautet wie folgt: Bei einer Eingabe von Zahlen gibt esMögliche Ausgaben (die Eingabe kann eine beliebige Permutation der sortierten Liste sein, die Ausgabe kann also auch eine beliebige Permutation der Eingabe sein). Wenn wir uns darauf beschränken, nur Vergleiche anzustellen, muss unser Algorithmus (im Durchschnitt) mindestens Vergleiche durchführen, umverschiedene Ausgänge.n n ! log 2 ( n ! ) = Ω ( n log n ) n !Ω ( n logn )nn !Log2( n ! ) = Ω ( n logn )n !
Untergrenzen können noch stärker sein. Es gibt mehrere Probleme (insbesondere die harten Probleme), für die es eine exponentielle Untergrenze gibt. Zu den Problemen in dieser Klasse gehört die Berechnung optimaler Strategien für Spiele wie (allgemeines) Schach, Dame und Los. Der Beweis hierfür ist über das Zeithierarchietheorem , das (vorbehaltlich einiger Einschränkungen von ) lautet :fEXPTichMEf
Bei gegebener Funktion gibt es ein Rechenproblem, das in der Zeit gelöst werden kann, aber nicht in der Zeit gelöst werden kann .O ( f ( n ) ) o ( f ( n )fO ( f( n ) )o ( f( n )Logn)
Wenn Sie sich also eine Funktion gibt es ein Problem, für dessen Lösung so viel Zeit erforderlich ist.f
Schließlich zeigt eine andere Möglichkeit, nicht notwendigerweise eine Zeituntergrenze, sondern etwas noch Stärkeres zu beweisen, die Unentscheidbarkeit eines Problems (z. B. Anhalten, Nachkorrespondenz).
Tom van der Zanden
quelle
Auf der anderen Seite hat Ryan Williams eine schöne Abhandlung (und einen Vortrag, den ich einige Male gehört habe) mit dem Titel Algorithmen für Schaltkreise und Schaltkreise für Algorithmen , in der er argumentiert, dass das Finden von Untergrenzen und das Finden von Algorithmen nicht grundsätzlich alles sind das anders. Zum Beispiel nennt er den Beweis der Unentscheidbarkeit des Halteproblems als ein Beispiel für einen Algorithmus (die universelle Turing-Maschine), der genau zum Nachweis einer Untergrenze (Unentscheidbarkeit) verwendet wird.
quelle
Es gibt jedoch einen Punkt in der Frage, der weitere Bemerkungen zur Untergrenze (oder zur Komplexitätsgrenze im Allgemeinen) erfordert.
Tatsächlich ist die Wahl eines einzelnen Rechenschritts irrelevant, solange man davon ausgehen kann, dass Rechenschritte eine konstante Obergrenze (und Untergrenze) haben. Das Komplexitätsergebnis ist dasselbe, da es bis zu einer Konstanten definiert ist. Es macht keinen Unterschied, 3 Vergleiche als Einheitsoperationen oder nur eine einzige zu betrachten.
Gleiches gilt für die Datenmenge, die als Referenz für die Bewertung der Berechnungskosten dient. Es macht keinen Unterschied, eine einzelne Ganzzahl oder zwei Ganzzahlen als Einheit für die Größe zu verwenden.
Die beiden Möglichkeiten müssen jedoch zusammenhängen.
Ob für einen Vorgang Stückkosten in Betracht gezogen werden können, hängt eng mit den Daten zusammen, die als Stückgröße angesehen werden können. Und das hängt davon ab, welche Abstraktionsebene Sie für Ihr Berechnungsmodell auswählen.
quelle