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 )