Was sind einige nicht-triviale Probleme, bei denen wir wissen, dass der derzeitige Algorithmus der asymptotisch optimale ist? (Für Turingmaschinen)
Und wie ist das bewiesen?
Was sind einige nicht-triviale Probleme, bei denen wir wissen, dass der derzeitige Algorithmus der asymptotisch optimale ist? (Für Turingmaschinen)
Und wie ist das bewiesen?
Antworten:
Jeder Algorithmus, der eine lineare Zeit benötigt und seine gesamte Eingabe lesen muss, muss asymptotisch optimal sein. Ebenso ist, wie Raphael bemerkt, jeder Algorithmus, dessen Laufzeit in der gleichen Größenordnung wie die Ausgabegröße liegt, optimal.
quelle
Wenn die Komplexitätsmessung, die Sie in Betracht ziehen, die Abfragekomplexität ist, dh die Häufigkeit, mit der die Maschine die Eingabe prüfen muss, um ein bestimmtes Problem zu lösen, gibt es viele Probleme, für die wir optimale Algorithmen haben. Der Grund dafür ist, dass niedrigere Grenzen für die Komplexität von Abfragen dank einiger gängiger Techniken, einschließlich der Methode des Gegners, leichter zu erreichen sind als niedrigere Grenzen für die Komplexität von Zeit oder Raum .
Der Nachteil ist jedoch, dass dieses Komplexitätsmaß in der Quanteninformationsverarbeitung fast ausschließlich verwendet wird, da es eine einfache Möglichkeit bietet, eine Lücke zwischen der Quanten- und der klassischen Rechenleistung zu beweisen. Der bekannteste Quantenalgorithmus in diesem Framework ist der von Grover . Bei einer gegebenen Binärzeichenfolge für die es ein einzelnes so dass , müssen Sie finden . Klassisch (ohne Quantencomputer) ist der trivialste Algorithmus optimal: Sie müssen diesen String durchschnittlich mal abfragen , um zu finden . Grover stellte einen Quantenalgorithmus zur Verfügung, der dies in tut. i x i = n i n / 2 i O ( √x1,…,xn i xi=n i n/2 i O(n−−√) Abfragen an die Zeichenfolge. Dies hat sich auch als optimal erwiesen.
quelle
quelle
Die Vergleichssortierung mit -Vergleichen (Sortierung zusammenfassen, um eins zu nennen) ist optimal, der Beweis besteht darin, einfach die Höhe eines Baumes mit n zu berechnen ! Blätter.O(nlogn) n!
Unter der Annahme der Unique Games Conjecture zeigten Khot, Kindler, Mossel und O'donnell, dass es NP-vollständig ist, um Max-Cut besser zu approximieren als Goemans und Williamsons Algorithmus. In diesem Sinne ist G & W also optimal (vorausgesetzt auch, dass ).P≠NP
Es kann sich herausstellen, dass einige verteilte Algorithmen in Bezug auf bestimmte Bedingungen (z. B. den Anteil der kontradiktorischen Prozessoren) optimal sind. Da Sie jedoch Turing-Maschinen erwähnt haben, ist dies vermutlich nicht die Art von Beispielen, die Sie suchen.
quelle
Angenommen , Sie Eingabe gegeben und werden gebeten , zu entscheiden , ob RAM Maschine M endet am Eingang x nach t Schritten. Nach dem Zeithierarchiesatz besteht der optimale Algorithmus, um dies zu entscheiden, darin, die Ausführung von M ( x ) für t Schritte zu simulieren , was in der Zeit O ( t ) erfolgen kann .w=⟨M,x,t⟩ M x t M(x) t O(t)
(Hinweis: für Turing - Maschinen, die Ausführung der Simulation von nimmt O ( t log t ) Schritte, wir kennen nur eine untere Schranke von Ω ( t ) Also, das optimal ist nicht ganz für Turing - Maschinen speziell.).M O(tlogt) Ω(t)
Es gibt einige andere Probleme, die die Version des Halteproblems als Unterfall enthalten. Die Entscheidung, ob ein Satz eine Konsequenz des WS1S ist, erfordert beispielsweise die Zeit 2 ↑ ↑ O ( | θ | ), und dies ist optimal.θ 2↑↑O(|θ|)
quelle
Ich bin mir nicht sicher, was Sie unter "nicht trivial" verstehen, aber wie steht es damit? . Diese Sprache ist nicht regulär, daher muss jedes TM, das entscheidet, dass es in Ω ( n log n ) läuft . Der einfache Algorithmus (Kreuzen jeder anderen 0) ist optimal.L={02k|k≥0} Ω(nlogn)
quelle
Wenn Sie dynamische Datenstrukturprobleme zulassen, kennen wir einige superlineare zeitoptimale Algorithmen. Dies ist im Zellsondenmodell so stark wie das Wort RAM, dh es ist kein eingeschränktes Modell wie algebraische Entscheidungsbäume.
Ein Beispiel ist das Beibehalten von Präfixsummen bei dynamischen Aktualisierungen. Wir beginnen mit einem Array von Zahlen , und das Ziel besteht darin, eine Datenstruktur beizubehalten, die die folgenden Operationen ermöglicht:A[1],…,A[n]
Sie können beide Operationen in problemlos mit einer Datenstruktur unterstützen, die auf einem erweiterten Binärbaum mit A [ i ] an den Blättern basiert . Patrascu und Demaine zeigten, dass dies optimal ist: Für jede Datenstruktur gibt es eine Folge von n Additionen und Präfixsummenabfragen, die insgesamt Ω ( n log n ) Zeit benötigen.O(logn) A[i] n Ω(nlogn)
quelle
Bei vielen Streaming-Algorithmen stimmen die Obergrenzen mit den Untergrenzen überein.
quelle
Es gibt zwei etwas ähnliche Suchalgorithmen, die meines Wissens auf der Grundlage bestimmter Einschränkungen bei der Reihenfolge / Verteilung der Eingaben optimal sind. Präsentationen der Algorithmen betonen diese Optimalität jedoch normalerweise nicht.
Suche im Goldenen Schnitt nach dem Maximum oder Minimum (Extremum) einer unimodalen Funktion. geht davon aus, dass die Eingabe eine unimodale Funktion ist. findet es in logarithmischer Zeit im Durchschnitt. Wie ich mich erinnere, hat das Buch Structure & Interpretation of computer programs von abelson & sussman möglicherweise einen Beweis für die Optimalität erbracht.
Die binäre Suche findet einen Punkt in der logarithmischen Zeit im Durchschnitt in einer sortierten Liste, erfordert jedoch die Sortierung der Eingabe.
Ich zitiere Wikipedia oben, aber es gibt nicht die Beweise, dass sie optimal sind. Vielleicht kann das Publikum einige andere Referenzen finden, die die Optimalität beweisen.
quelle
Bei vielen sublinearen Zeitalgorithmen stimmen die Obergrenzen mit den Untergrenzen überein.
quelle