Lösungen Dynamisches Programmieren

Aus ProgrammingWiki
Archivierte Version vom 2009-05-25T11:45:19+00:00. Aktuelle Version

Inhaltsverzeichnis

Lösungen zu Fibonacci

Die ersten 2 Lösungen sind bereits aus der Vorlesung bekannt, werden hier aber der Vollständigkeit wegen nochmal aufgeführt.

Fibonacci ohne Memoizing

<eval> System.out.println(""+fib(11)); </eval>

Fibonacci mit Memoizing

<eval> System.out.println(""+fibMemo(250)); </eval>

Iterative Lösung von Fibonacci

Wie bereits erwähnt, ist ein wenig Denkaufwand erforderlich um auf die iterative Lösung zu kommen. Dabei wird der Wert Top-Down mit Hilfe einer for-Schleife berechnet. Da zum berechnen von fib(n) nur fib(n-1) und fib(n-2) benötigt wird, müssen auch nur diese Werte zwischen gespeichert werden. Der aufmerksame Leser wird sich an das Rucksackproblem erinnern in dem wir genauso verfahren sind.

Mithilfe dieser Informationen kommt man nun auf folgendes Ergebnis:

<eval> System.out.println(fibIterativ(200)); </eval>

Zusatz: mit fast konstantem Speicheraufwand (und ohne Stackoverflow)

<eval> System.out.println(optimizedFib(50000)); </eval>