Recurrencias y Jerarquía de Funciones
Algoritmo divide y vencerás
Divide y vencerás es un paradigma de diseño de algoritmos que consiste en resolver un problema dividiéndolo en subproblemas más pequeños, resolviendo los subproblemas y combinando sus soluciones para resolver el problema original.
El esquema de este algoritmo es el siguiente:
Los son subproblemas de , podemos considerarlos fracciones de :
Si tomamos por ejemplo el algoritmo Merge Sort:
- ” simple” fragmento de arreglo de tamaño
- “descomponer” dividir en dos mitades
- “combinar” intercalar
Recurrencias divide y vencerás
Para calcular el costo computacional de definimos una función recursiva de la siguiente forma:
Donde es una constante que representa el costo computacional de la función y es el costo computacional de procesos de descomposición/combinación.
Podemos determinar el orden de de la siguiente forma:
Ejemplo:
Siguiendo el anterior esquema, obtenemos:
El primer término de la sucesión corresponde a la cantidad de veces que se llama a la función y el segundo término corresponde a la cantidad de veces que se ejecuta la instrucción .
Planteada la recurrencia tenemos que:
- el orden de es
Algoritmo de búsqueda binaria
La búsqueda binaria es un algoritmo para encontrar un elemento en una lista ordenada. Dividiendo repetidamente la lista en mitades y comparando el elemento buscado con el elemento del medio.
Jerarquía de funciones
Es posible ordenar las funciones de acuerdo a su crecimiento. Se denota si crece más rápido que , y si crecen al mismo ritmo.
Podemos establecer la siguiente jerarquía de funciones:
Propiedades:
- No afectan las constantes multiplicativas
- Sea
- Sea para casi todo :
- Sea :
- Sean y existente: