Komplexitätstheorie (2) - rekursive Funktionen
-
Welches Problem? Das war eine Aufgabe, ganz direkt wie sie im OP steht. Da gibt es keinen hoeheren Sachverhalt.
Dann solltest du die O-Notation noch irgendwie verwurschteln.
PS: Ich finde Fettdruck gleicht dem SCHREIEN.
-
Gut, ich höre auf zu Schreien.
Dann solltest du die O-Notation noch irgendwie verwurschteln.
Ganz einfach, ich setze die Konstante gleich 1. Fertig. Dann steht da "größer-gleich", wobei natürlich auch nur letzteres erfüllt sein kann. Also eine einfache Gleichung.
Gut, klar, mein Versuch glich wohl eher quod est dubitandum.
Hier mal deiner sauber aufgeschrieben:
___________________________________________________________________________________________________________________________________Es seien definiert als
wobei f(0) = 0.Behauptung:
Wir setzen und , dann ist zu zeigen dass
Beweis:
Für n=0 gilt ,
Nun ist zu zeigen, dass aus auch folgt.
Wenn man n+1 einsetzt, erhält man
f(n+1) = f(n) + 10
g(n+1) = 10(n+1) = 10n + 10 = g(n) + 10Das heißt, . Und diese Gleichung gilt bei der Voraussetzung .
Damit gilt .
-
sauber aufgeschrieben
Nee!
-
knivil schrieb:
sauber aufgeschrieben
Nee!
Ja wie denn nu? Wie muss ein Beweis denn aussehen? Dein Post oben hatte ja auch nur eine Beweisskizze!
-
Gut, ich habe es editiert und den unteren Teil, den "Beweis" selbst, zu einem (hoffentlich richtigem) vollständigen Induktionsbeweis gemacht.
-
Mach mal die Struktur richtig mit Induktionsanfang, Induktionsvoraussetzung und Induktionsschritt. Dein Aufschrieb ist mindestens schlampig.
-
Jester schrieb:
Dein Aufschrieb ist mindestens schlampig.
Mach mal die Struktur richtig mit Induktionsanfang, Induktionsvoraussetzung und Induktionsschritt.
Ich dachte, das soll man in Beweisen nicht explizit hinschreiben...
Induktionsvoraussetzung:
.Induktionsanfang:
Für n = 0 gilt
(per Definition)
Induktionsschritt:
Es kann die Gleichung folglich durch
ersetzt werden. Subtrahiert man nun 10, ergibt sich
Was wiederum die Induktionsvoraussetzung ist.Antwortsatz: Da f(0) = g(0) gilt, ist die Induktionsvoraussetzung für n=0 erfüllt. Damit gilt für beliebige n.
Daher gilt für alle n, .(Dass wird dadurch impliziert, dass f und g von ℕ nach ℕ abbilden).
-
Schon etwas besser, jetzt noch ein bisschen sortieren. Der Induktionsanfang kommt ganz nach vorne. Die Induktionsvoraussetzung gehört vor den Induktionsschritt -- dort wird sie schließlich auch benutzt.
Jetzt solltest Du noch den Induktionsschritt aufräumen, das geht bei dir grad ziemlich durcheinander. Du nimmst irgendwelche Gleichungen formst die scheinbar wahllos um kommst am Schluß irgendwie da an wo Du hin willst.
Zu zeigen: f(n+1) = g(n+1)
f(n+1) =(Def.) f(n) + 10 =(nach IV) g(n) + 10 =(Def.) 10n+10 = 10*(n+1) =(Def.) g(n+1)
Siehst Du wie gezielt die vorhandenen Informationen eingesetzt werden um genau die Aussage zu zeigen, die bewiesen werden soll.
Für die ersten ca. 100 Induktionsbeweise solltest Du die Struktur sauber ausarbeiten. Danach darfst Du dann irgendwann schlampiger werden.
-
f(n+1) =(Def.) f(n) + 10 =(nach IV) g(n) + 10 =(Def.) 10n+10 = 10*(n+1) =(Def.) g(n+1)
Ah, ich sehe, was du getan hast.
(Def.) f(n) + 10 =(nach IV) g(n) + 10
gilt natürlich direkt, wenn f(n) = g(n). Mein Induktionsschritt macht ja prinzipiell dasselbe.Gut, ich habe hier noch ein paar Funktionen, bei denen ich das gleich mal machen werde - beispielsweise:
Das Gegenstück ist, soweit ich sehe,
Wieder Induktionsanfang:
(per Definition)
Induktionsvoraussetzung:
Induktionsschritt:
Daher .Natürlich noch mit dem ganzen Tohuwabohu.
-
ja genau. viel mehr brauchts auch gar nicht.
-
Jester schrieb:
ja genau. viel mehr brauchts auch gar nicht.
Hier nicht, nein...
Aber ich habe hier eine Reihe von Funktionen, die nicht linear rekursiv implementiert sind, sondern exponentiell rekursiv (kann man das so sagen?):
Der ist noch einfach (), aber wie würde ich hier die Induktion vollbringen? Einsetzen von n+1 ergibt:
Beim Einsetzen bei g sieht es nicht rosiger aus.Einsetzen von ginge natürlich, bringt mir aber nichts, weil es nicht alle n berücksichtigt.
-
du bist auch nicht drauf angewiesen eine geschlossene darstellung von f zu finden. Du willst schließlich nur eine Aussage im O-Kalkül machen. Du mußt also nur eine Abschätzung induktiv beweisen, das kann deutlich einfacher sein.
-
Ich dachte, das soll man in Beweisen nicht explizit hinschreiben...
Wer sagt das? Ein Beweis ist etwas formales. Hat ein Zeitungsartikel eine Ueberschrift?
eine Beweisskizze!
Nein, es war der komplette Beweis. Mir faellt grad auf, wenn f(n) = g(n) ist, dann ist trivialerweise f(n) = O(f(n)).
Natürlich noch mit dem ganzen Tohuwabohu.
Bis auf Antwortsatz fehlt nix. Btw. bei mir war es ueblich, Funktionsparameter im Induktionsbehauptung/-schritt anders zu benennen. Da du ja erstmal nur zeigst, das aus f(k) = g(k) nur f(k+1) = g(k+1) folgt, das ist schon verschieden von f(n) = g(n) fuer alle n aus N.
aber wie würde ich hier die Induktion vollbringen?
n einfach 2^k setzen. Induktion bedeutet nicht immer von n nach n+1, hier muss von n nach 2n gegangen werden, da f nur Argumente aus N entgegennimmt.
IA: *hoffentlich bei 1 startend* f(1) = 0; g(1) = 10 log 1 = 0; => f(1) = g(1)
IB: f(2^k) = ... = g(2^k)
IS: f(2^(k+1)) = f(2^k) + 10 = g(2^k) + 10 = 10 log 2^k + 10 = 10k + 10 = 10(k+1) = 10 (k+1) log 2 = 10 log 2^(k+1) = g(k+1)Nun, jetzt gilt es streng genommen nicht mehr fuer alle n aus N. Macht aber nix, da f: N -> N abbildet und gar keine anderen Werte eigentlich zulaessig sind. Ausserdem kann gegebenes n durch die naechste Zweierpotenz nach oben bzw. unten abgeschaetzt werden.
-
Das abschätzen des parameters nützt aber nur was, wenn du schon weißt dass f monoton ist. Hier fehlen imo zu viele infos als dass man irgendwas anderes als 2er-Potenzen sinnvoll einsetzen kann.