Die Fibonacci Zahlen einmal anders und in O( log(n) ) berechnet
Die Berechnung der n-ten Fibonacci Zahl hat mit der direkten Umsetzung der Rekursionsformel
die Laufzeit O(n). Im Idealfall verzichtet man auf die Rekursion und berechnet den n-ten Wert der Folge iterativ.
Es geht aber noch besser, nämlich in O( log(n) ). Betrachten wir dazu die Matrix
Multipliziert man F nun mit einer Matrix der folgenden Gestalt , so erhält man
Durch passende Wahl der Elemente der Matrix A, nämlich, wie auch schon deren Bezeichner suggerieren, als Elemente der Fibonnaci-Folge, erhält man ein neues Element der Fibonacci-Folge, denn
.
Und weiter ist wieder eine Matrix in der Gestalt von A, auf die wir F erneut von links multiplizieren können.
Insgesamt erhält man damit und mit
letztendlich
Durch Anwendung des Square & Multiply Algorithmus zum Potenzieren von F erhält man schließlich einen Algorithmus, der die n-te Fibonacci Zahl in O (log (n)) berechnet.
depkly
guter artikel. genau die art erklärung die ich gesucht habe
danke
N43
hi, danke für das Lob.
N43
keke
cool´!
infinity
Ein hervorragender Beitrag. Kurz und verständlich. Danke.
Kommentare