Fibonacci-Zahlen sind für Informatikstudenten zu einer beliebten Einführung in die Rekursion geworden, und es gibt ein starkes Argument dafür, dass sie in der Natur bestehen bleiben. Aus diesen Gründen sind viele von uns mit ihnen vertraut.
Sie existieren auch anderswo in der Informatik; in überraschend effizienten Datenstrukturen und Algorithmen basierend auf der Sequenz.
Es gibt zwei Hauptbeispiele, die mir in den Sinn kommen:
- Fibonacci-Haufen, die eine bessere Laufzeit als Binomialhaufen haben.
- Fibonacci-Suche, die die Laufzeit von O (log N) mit der binären Suche in einem geordneten Array teilt.
Gibt es eine spezielle Eigenschaft dieser Zahlen, die ihnen einen Vorteil gegenüber anderen numerischen Sequenzen verschafft? Ist es eine räumliche Qualität? Welche anderen möglichen Anwendungen könnten sie haben?
Es scheint mir seltsam, da es viele natürliche Zahlenfolgen gibt, die bei anderen rekursiven Problemen auftreten, aber ich habe noch nie einen katalanischen Haufen gesehen.
quelle
Antworten:
Die Fibonacci-Zahlen haben alle möglichen wirklich schönen mathematischen Eigenschaften, die sie in der Informatik ausgezeichnet machen. Hier sind einige:
Ich bin sicher, dass es mehr Gründe als nur das gibt, aber ich bin sicher, dass einige dieser Gründe die Hauptfaktoren sind. Hoffe das hilft!
quelle
perl -Mbignum -le'$n=0;$c=1;while(1){$n++;$c*=(4*$n-2);$c/=($n+1);print"$n\t$c"}' | head -n 100
Der größte gemeinsame Teiler ist eine andere Magie; sehen Sie dies für zu viele Magie. Fibonacci-Zahlen sind jedoch leicht zu berechnen. es hat auch einen bestimmten Namen. Zum Beispiel haben natürliche Zahlen 1,2,3,4,5 zu viele Logik; alle Primzahlen sind in ihnen; Die Summe von 1..n ist berechenbar, jeder kann mit anderen produzieren, ... aber niemand kümmert sich um sie :)
Eine wichtige Sache, die ich vergessen habe, ist der Goldene Schnitt , der im wirklichen Leben sehr wichtige Auswirkungen hat (zum Beispiel mögen Sie breite Monitore :)
quelle
Wenn Sie einen Algorithmus haben, der auf einfache und prägnante Weise mit verständlichen Beispielen in CS und Natur erfolgreich erklärt werden kann, welches bessere Lehrmittel könnte sich jemand einfallen lassen?
quelle
Fibonacci-Sequenzen sind in der Tat überall in der Natur / im Leben zu finden. Sie sind nützlich bei der Modellierung des Wachstums von Tierpopulationen, des Pflanzenzellwachstums, der Schneeflockenform, der Pflanzenform, der Kryptographie und natürlich der Informatik. Ich habe gehört, dass es als DNA-Muster der Natur bezeichnet wird.
Fibonacci-Haufen wurden bereits erwähnt; Die Anzahl der untergeordneten Knoten jedes Knotens im Heap beträgt höchstens log (n). Auch der Teilbaum, der einen Knoten mit m Kindern startet, ist mindestens (m + 2) die Fibonacci-Zahl.
Torrent-ähnliche Protokolle, die ein System von Knoten und Superknoten verwenden, verwenden Fibonacci, um zu entscheiden, wann ein neuer Superknoten benötigt wird und wie viele Unterknoten er verwalten wird. Sie führen ein Knotenmanagement basierend auf der Fibonacci-Spirale (Goldener Schnitt) durch. Auf dem Foto unten sehen Sie, wie Knoten aufgeteilt / zusammengeführt werden (von einem großen Quadrat in kleinere aufgeteilt und umgekehrt). Siehe Foto: http://smartpei.typepad.com/.a/6a00d83451db7969e20115704556bd970b-pi
quelle
Ich glaube nicht, dass es eine endgültige Antwort gibt, aber eine Möglichkeit besteht darin, dass die Operation zum Teilen einer Menge S in zwei Partitionen S1 und S2, von denen eine in Unterpartitionen S11 und S12 unterteilt wird, von denen eine die gleiche Größe hat wie S2 - ist ein wahrscheinlicher Ansatz für viele Algorithmen und kann manchmal numerisch als Fibonacci-Sequenz beschrieben werden.
quelle
Lassen Sie mich Ihrer Daten eine weitere Datenstruktur hinzufügen: Fibonacci-Bäume. Sie sind interessant, weil die Berechnung der nächsten Position im Baum durch einfaches Hinzufügen der vorherigen Knoten erfolgen kann:
http://xw2k.nist.gov/dads/html/fibonacciTree.html
Es passt gut zur Diskussion von templatetypedef über AVL-Bäume (ein AVL-Baum kann im schlimmsten Fall eine Fibonacci-Struktur haben). Ich habe auch Puffer gesehen, die in einigen Fällen eher in Fibonacci-Schritten als in Zweierpotenzen erweitert wurden.
quelle
Um nur eine Kleinigkeit hinzuzufügen, beschreiben Fibonacci-Zahlen die Panade von Kaninchen. Sie beginnen mit (1, 1), zwei Kaninchen, und dann wächst ihre Population exponentiell.
quelle
Ihre Berechnung als Potenz der [[0,1], [1,1]] - Matrix kann als das primitivste Problem der operativen Forschung angesehen werden (ähnlich wie das Gefangenendilemma ist das primitivste Problem der Spieltheorie).
quelle
Symbole mit Frequenzen, die aufeinanderfolgende Fibonacci-Zahlen sind, erzeugen Huffman-Bäume mit maximaler Tiefe. Diese Bäume entsprechen Quellensymbolen, die mit Binärcodes maximaler Länge codiert werden. Nicht-Fibonacci-Quellensymbolfrequenzen erzeugen ausgeglichenere Bäume mit kürzeren Codes. Die Codelänge hat direkte Auswirkungen auf die Beschreibungskomplexität der Finite-State-Maschine, die für die Decodierung eines bestimmten Huffman-Codes verantwortlich ist.
Vermutung: Das 1. (Fib) Bild wird auf 38 Bit komprimiert, während das 2. (Uniform) mit 50 Bit komprimiert wird. Es scheint, dass je näher Ihre Quellensymbolfrequenzen an Fibonacci-Zahlen liegen, desto kürzer die endgültige Binärsequenz ist, desto besser ist die Komprimierung, möglicherweise optimal im Huffman-Modell.
Weiterführende Literatur:
quelle