jueves, 10 de octubre de 2013

Los Conejos de Fibonacci

Nuestro siguente algoritmo trata sobre dinámica de poblaciones, pero no se asuste el lector, porque se trata de un algoritmo muy sencillito. La dinámica de poblaciones se encarga del análisis de las poblaciones biológicas, y entre otras cosas, estudia como varía el tamaño de una población con el tiempo. Uno de los primeros modelos matemáticos de cómo crece una población fue propuesto por Leonardo Pisano (también conocido como Fibonacci) en el año 1202, en su libro Liber Abaci.
Fibonacci propuso el siguiente modelo para la cría de conejos:

  • Empezamos con una pareja de conejos recién nacidos,
  • los conejos nacen de dos en dos, y de sexo opuesto,
  • los conejos alcanzan la madurez sexual al mes de vida, y 
  • el tiempo de gestación es de 1 mes.

De acuerto con este modelo en el primer mes tendremos una única pareja de conejos, la pareja de conejos con la que partimos, luego:

    F[1] = 1

En el segundo mes, tendremos nuevamente a nuestra pareja de conejos. Pero en este caso ya están maduros sexualmente, y por tanto, pueden reproducirse:

    F[2] = 1

En el tecer mes tendremos a nuestra pareja original, junto con una nueva pareja de conejos recién nacidos:

    F[3] = 1+1 = 2

En el cuarto mes nuestra pareja original vuelve a tener otra descendencia, y la primera descendencia ya estarán maduros sexualmente. Es decir:

    F[4] = 2+1 = 3

En el quinto mes, las cosas se empiezan a complicar un poco. Tenemos a la pareja original que vuelven a tener descendencia, a los primeros conejos que acaban de tener su primera descendencia, y a los segundos conejos que ya están maduros sexualmente. Simplificando:

    F[5] = 3+2 = 5

Los lectores más atentos, y aquellos que ya conociese la sucesión de Fibonacci, habrán notado que F[5] = F[4] + F[3], al igual que F[4] = F[3] + F[2], y en general, podemos decir que en el mes N tenemos:

    F[N] = F[N-1]+F[N-2]

Lo cual se puede razonar diciendo que en un mes dado, habrá tantos conejos como en el mes anterior (F[N-1]) a los que habrá que sumarle los nacimientos de la generación de hace dos meses (F[N-2]). El algoritmo que calcula la sucesión de Fibonacci es muy sencillo:

leer(N)
f1 := 1
escribir(f1)
f2 := 1
escribir(f2)
para i desde 3 hasta N hacer
    f := f1 + f2
    escribir(f)
    f2 := f1
    f1 := f
fin para

El algoritmo empieza leyendo el número de elementos de la sucesión que queremos calcular. A continuación incializa y muestra los dos primeros términos de la sucesión, que como hemos dicho, ambos son la unidad. Y finalmente, entramos en un bucle de tipo para que va calculando sistemáticamente cada nuevo valor de la sucesión, mediante la suma de los dos valores anteriores (almacenados en las variables f1 y f2), y actualizando los valores de f1 y f2 con los nuevos términos de la serie recién calculados.
La serie de Fibonacci ha sido ampliamente estudiada tanto por matemáticos como por informáticos, y son muchas las propiedades interesantes que se le han encontrado, como su relación con el número áureo, o sus aplicaciones prácticas, que van desde la generación de números pseudoaleatorios, hasta los algoritmos de ordenación. También se han encontrado numerosos ejemplos de la serie de Fibonacci en la naturaleza, como en la ramificación de los árboles, o la distribución de las hojas de una alcachofa. El interés por la serie de Fibonacci ha llegado tan lejos como los mercados financieros, donde son muchos los traders que creen que los precios de los activos financieros evolucionan según la serie. Pero lo más curioso de todo es que seguramente Fibonacci nunca llegó a imaginar que uno de los ejercicios propuestos en su libro, algo a lo que él no le dio la mayor importancia, iba a despertar tanto interés.

No hay comentarios:

Publicar un comentario