Los números de Fibonacci se han convertido en una introducción popular a la recursividad para los estudiantes de Ciencias de la Computación y hay un fuerte argumento de que persisten en la naturaleza. Por estas razones, muchos de nosotros estamos familiarizados con ellos.
También existen dentro de la informática en otros lugares también; en estructuras de datos y algoritmos sorprendentemente eficientes basados en la secuencia.
Hay dos ejemplos principales que me vienen a la mente:
- Montones de Fibonacci que tienen mejor amortizado el tiempo de ejecución que los montones binomiales.
- Búsqueda de Fibonacci que comparte el tiempo de ejecución O (log N) con la búsqueda binaria en una matriz ordenada.
¿Existe alguna propiedad especial de estos números que les dé una ventaja sobre otras secuencias numéricas? ¿Es una cualidad espacial? ¿Qué otras posibles aplicaciones podrían tener?
Me parece extraño porque hay muchas secuencias de números naturales que ocurren en otros problemas recursivos, pero nunca he visto un montón catalán .
fuente
Respuestas:
Los números de Fibonacci tienen todo tipo de propiedades matemáticas realmente agradables que los hacen excelentes en informática. Aquí hay algunos:
Estoy seguro de que hay más razones además de esta, pero estoy seguro de que algunas de estas razones son los factores principales. ¡Espero que esto ayude!
fuente
perl -Mbignum -le'$n=0;$c=1;while(1){$n++;$c*=(4*$n-2);$c/=($n+1);print"$n\t$c"}' | head -n 100
El mayor divisor común es otra magia; vea esto para demasiadas magias. Pero los números de Fibonacci son fáciles de calcular; también tiene un nombre específico. Por ejemplo, los números naturales 1, 2, 3, 4, 5 tienen demasiada lógica; todos los números primos están dentro de ellos; suma de 1..n es computable, cada uno puede producir con otros, ... pero nadie se ocupa de ellos :)
Una cosa importante que olvidé es Golden Ratio , que tiene un impacto muy importante en la vida real (por ejemplo, te gustan los monitores anchos :)
fuente
Si tiene un algoritmo que se puede explicar con éxito de una manera simple y concisa, o con ejemplos comprensibles de la informática y la naturaleza, ¿qué mejor herramienta de enseñanza se le podría ocurrir a alguien?
fuente
Las secuencias de Fibonacci se encuentran en todas partes en la naturaleza / vida. Son útiles para modelar el crecimiento de poblaciones animales, crecimiento de células vegetales, forma de copo de nieve, forma de planta, criptografía y, por supuesto, informática. Escuché que se lo conoce como el patrón de ADN de la naturaleza.
Ya se han mencionado los montones de Fibonacci; el número de hijos de cada nodo en el montón es como máximo log (n). Además, el subárbol que comienza un nodo con m hijos es al menos (m + 2) el número de fibonacci.
Los protocolos tipo Torrent que utilizan un sistema de nodos y supernodos utilizan un fibonacci para decidir cuándo se necesita un nuevo supernodo y cuántos subnodos gestionará. Realizan gestión de nodos basada en la espiral de fibonacci (proporción áurea). Vea la foto a continuación cómo se dividen / fusionan los nodos (divididos de un cuadrado grande a otros más pequeños y viceversa). Ver foto: http://smartpei.typepad.com/.a/6a00d83451db7969e20115704556bd970b-pi
fuente
No creo que haya una respuesta definitiva, pero una posibilidad es que la operación de dividir un conjunto S en dos particiones S1 y S2, una de las cuales se divide luego en subparticiones S11 y S12, una de las cuales tiene el mismo tamaño que S2: es un enfoque probable para muchos algoritmos y, a veces, puede describirse numéricamente como una secuencia de Fibonacci.
fuente
Permítanme agregar otra estructura de datos a la suya: árboles de Fibonacci. Son interesantes porque el cálculo de la siguiente posición en el árbol se puede hacer mediante la mera adición de los nodos anteriores:
http://xw2k.nist.gov/dads/html/fibonacciTree.html
Se relaciona bien con la discusión de templatetypedef sobre árboles AVL (un árbol AVL puede, en el peor de los casos, tener estructura de fibonacci). También he visto búferes extendidos en pasos de fibonacci en lugar de potencias de dos en algunos casos.
fuente
Solo para agregar una trivia sobre esto, los números de Fibonacci describen la cría de conejos. Empiezas con (1, 1), dos conejos, y luego su población crece exponencialmente.
fuente
Su cálculo como una potencia de la matriz [[0,1], [1,1]] puede considerarse como el problema más primitivo de la Investigación Operativa (algo así como el Dilema del Prisionero es el problema más primitivo de la Teoría de Juegos).
fuente
Los símbolos con frecuencias que son números de fibonacci sucesivos crean árboles huffman de profundidad máxima, cuyos árboles corresponden a los símbolos fuente que se codifican con códigos binarios de longitud máxima. Las frecuencias de los símbolos de origen que no son de Fibonacci crean árboles más equilibrados, con códigos más cortos. La longitud del código tiene implicaciones directas en la complejidad de la descripción de la máquina de estados finitos que es responsable de decodificar un código huffman dado.
Conjetura: La primera imagen (fib) se comprimirá a 38 bits, mientras que la segunda (uniforme) a 50 bits. Parece que cuanto más cerca estén las frecuencias de los símbolos de origen de los números de fibonacci, más corta será la secuencia binaria final, mejor será la compresión, quizás óptima en el modelo de huffman.
Otras lecturas:
fuente