Wenn wir versuchen, einen Algorithmus für ein neues Problem zu konstruieren, ist das Teilen und Erobern (unter Verwendung von Rekursion) einer der ersten Ansätze, die wir versuchen. In einigen Fällen scheint dieser Ansatz jedoch erfolglos zu sein, da das Problem mit zunehmendem Input viel komplizierter wird.
Meine Frage ist: Gibt es Probleme, für die wir beweisen können, dass ein Divide-and-Conquer-Ansatz nicht zur Lösung beitragen kann? In den folgenden Zeilen versuche ich, dies formeller zu gestalten.
Sei ein bestimmtes Problem, dessen Eingabe die Größe (z. B. ein Problem, das eine Eingabe eines Arrays von Zahlen akzeptiert ). Angenommen, wir haben einen rekursiven Algorithmus zum Lösen von . Die rekursive Laufzeit dieses Algorithmus wird unter der Annahme eines Orakels berechnet, das für jedes in konstanter Zeit lösen kann . Zum Beispiel:n n P ( n )k < n
- Die rekursive Laufzeit der binären Suche ist , da nur ein Vergleich und zwei rekursive Aufrufe verwendet werden.
- Das maximale Element in einem Array kann in der rekursiven Zeit .
- Die rekursive Laufzeit der Zusammenführungssortierung ist aufgrund des Zusammenführungsschritts .
Die rekursive Zeit ist normalerweise kleiner als die tatsächliche Laufzeit, was die Tatsache widerspiegelt, dass der rekursive Algorithmus einfacher ist als eine einfache nicht rekursive Lösung für dasselbe Problem.
Jetzt ist meine Frage:
Gibt es ein Problem, das in der Zeit gelöst werden kann , aber nachweislich keinen rekursiven Algorithmus mit einer rekursiven Laufzeit hat, die asymptotisch kleiner als ?f ( n )
Einige spezifische Varianten dieser Frage sind:
- Gibt es ein Problem in das keinen Algorithmus mit rekursiver Laufzeit ? (Vielleicht sortieren?)O ( 1 )
- Gibt es ein Problem mit einem Exponentialalgorithmus, der keinen Algorithmus mit polynomialer rekursiver Laufzeit hat?
EDIT: Entgegen meiner Vermutung hat die Sortierung einen Algorithmus mit rekursiver Laufzeit . Es ist also noch offen, ob es in ein Problem gibt, das keinen Algorithmus mit rekursiver Laufzeit .O ( 1 )
quelle
Antworten:
Ja. Beachten Sie, dass eine Tally-Sprache, wenn sie einen „rekursiven Algorithmus“ mit einem Polynom „rekursive Laufzeit“ hat, in P ist. In E ∖ P gibt es eine Tally-Sprache durch ein Standarddiagonalisierungsargument.
Es mag vom Rechenmodell abhängen, aber ich bezweifle, dass dies bekannt ist, da der Zeithierarchiesatz für Turing-Maschinen mit zwei Bändern nicht leistungsfähig genug ist, um beispielsweise O ( n 2 ) -Zeit und o ( n 2 ) -Zeit sogar zu unterscheiden ohne letzterem den zeitlich konstanten Zugriff auf die Antworten in kleineren Instanzen zu gewähren.
Zufällige Kommentare zu Ihren Fragen in diesem Beitrag:
quelle
Jede Frage, die eine rekursive Antwort hat, hat eine iterative Antwort und umgekehrt.
Jeder rekursive Algorithmus kann iterativ umgeschrieben werden und umgekehrt.
Daher steht Ihre Frage nicht gut.
quelle
Ich bin mir nicht sicher, ob ich Ihren Begriff "rekursive Komplexität" richtig verstehe.
Wenn alle meine Annahmen erfüllt sind, kann das gesuchte Beispiel nicht primitiv rekursiv sein.
quelle