Konstante Zeit ist die absolut niedrige Komplexität der Endzeit. Man mag sich fragen: Gibt es etwas Nichttriviales, das in konstanter Zeit berechnet werden kann? Wenn wir uns an das Modell der Turingmaschine halten, kann nicht viel getan werden, da die Antwort nur von einem Anfangssegment konstanter Länge der Eingabe abhängen kann, da weitere Teile der Eingabe nicht einmal in konstanter Zeit erreicht werden können.
Wenn wir andererseits das etwas leistungsfähigere (und realistischere) Stückkosten-RAM-Modell anwenden , bei dem Elementaroperationen mit -Bit-Zahlen als Einzelschritte gezählt werden, können wir möglicherweise nicht-triviale Probleme lösen Aufgaben, auch in konstanter Zeit. Hier ist ein Beispiel:
Instanz: Ganzzahlen , jeweils im Binärformat durch O ( log n ) Bits gegeben.
Frage: Gibt es einen Vertex-Graphen mit einer Vertex-Konnektivität von k , einer Kanten-Konnektivität von l und einem minimalen Grad von d ?
Beachten Sie, dass aus der Definition nicht einmal ersichtlich ist, dass das Problem in NP liegt . Der Grund dafür ist, dass der natürliche Zeuge (der Graph) möglicherweise eine lange Beschreibung von -Bit benötigt, während die Eingabe nur aus O ( log n ) -Bits besteht. Andererseits hilft der folgende Satz (siehe Extremal Graph Theory von B. Bollobas).
Satz: Sei ganze Zahlen. Es existiert ein n- Vertex-Graph mit Vertex-Konnektivität k , Kanten-Konnektivität l und minimalem Grad d , wenn und nur wenn eine der folgenden Bedingungen erfüllt ist:
- ,
Da diese Bedingungen in konstanter Zeit überprüft werden können (im Stückkosten-RAM-Modell), führt der Satz in diesem Modell zu einem Algorithmus mit konstanter Zeit.
Frage: Was sind andere nicht triviale Beispiele für Algorithmen mit konstanter Zeit?
quelle
Antworten:
Die Arbeit Algorithmen zur Approximation konstanter Zeit mittels lokaler Verbesserungen von Nguyen und Onak enthält viele Beispiele für zufällige Näherungsverfahren konstanter Zeit: Maximum Matching (die Laufzeit hängt nur vom maximalen Grad des Graphen ab), Set Cover usw. Die Autoren präsentieren eine Methode, um solche Algorithmen zu entwerfen.
quelle
Es gibt viele Beispiele für Spiele, die in der kombinatorischen Spieltheorie untersucht wurden, bei denen der Zustand eines Spiels durch eine konstante Anzahl von ganzzahligen Werten beschrieben werden kann. Für einige davon kann eine Gewinnstrategie für das Spiel in konstanter Zeit berechnet werden. Sie werfen aber auch Fragen auf, was genau Ihr Rechenmodell ist.
Eines der einfachsten und grundlegendsten kombinatorischen Spiele ist Nim: Man hat eine konstante Anzahl von Bohnenstapeln, und in einem Zug können Sie eine beliebige Anzahl von Bohnen von einem Stapel entfernen, entweder gewinnen oder verlieren (abhängig von Ihrer Wahl der Regeln). wenn Sie die letzte Bohne nehmen. Die optimale Strategie kann in konstanter Zeit berechnet werden, wenn Sie bitweise boolesche xor-Operationen zulassen (dh den Operator ^ in Programmiersprachen wie C / C ++ / Java / etc.). Ist dies ein Algorithmus mit konstanter Zeit in Ihrem Modell?
Hier ist einer, bei dem bekannt ist, dass es einen zeitlich konstanten deterministischen Algorithmus gibt (in einem möglicherweise unrealistischen erweiterten Berechnungsmodell, mit dem Sie die Primalität einer Zahl in konstanter Zeit testen können) bewege dich im Spiel mit Sylver-Münzen , um festzustellen, ob es sich um einen Gewinn- oder einen Verlustzug handelt. Ein Flussdiagramm für dieses Problem finden Sie in Berlecamp, Conway und Guy, Winning Ways . Es hängt jedoch von einer endlichen Menge von Gegenbeispielen für eine allgemeine Charakterisierung der Gewinnzüge ab, und es ist nicht bekannt, um welche Menge es sich handelt (oder ob es sich überhaupt handelt) leeren).
Ein weiteres interessantes Beispiel aus der kombinatorischen Spieltheorie ist Wythoffs Spiel. Jede Spielposition kann durch ein Paar von Ganzzahlen beschrieben werden (dh konstanter Raum in Ihrem Rechenmodell). Bei Bewegungen im Spiel wird eine dieser beiden Ganzzahlen auf einen kleineren Wert reduziert, und bei der Gewinnstrategie wird zu einer Position gewechselt, an der Das Verhältnis zwischen diesen beiden ganzen Zahlen liegt so nahe wie möglich am goldenen Schnitt. In vielen Spielpositionen haben Sie jedoch die Wahl: Sie können die größere der beiden Ganzzahlen entweder bis zu dem Punkt reduzieren, an dem sie (fast) die kleinere Ganzzahl multipliziert mit dem Goldenen Schnitt oder die kleinere Ganzzahl dividiert durch den Goldenen Schnitt ist. Nur eine dieser beiden Entscheidungen wird ein Gewinn sein. Die optimale Strategie kann also anhand einer konstanten Anzahl von arithmetischen Operationen definiert werden, wobei diese Operationen jedoch eine irrationale Zahl, den Goldenen Schnitt, beinhalten. Ist das ein konstanter Zeitalgorithmus in Ihrem Modell? Vielleicht ist es (eine Annäherung an das goldene Verhältnis genau log n Bits)nicht aber konstante Zeit unter Verwendungnur arithmetische Operationen (keine Quadratwurzeln) und ganzzahlige Konstanten Werte festgelegt?n logn
quelle
quelle