jueves, 29 de agosto de 2013

Equipo Tarea 2

Diseño de algoritmo divide y vencerás

Descripción

Divide y vencerás es una técnica de diseño de algoritmos que ayuda a reducir la complejidad de el problema planteado, con base en resolver problemas más pequeños derivados del problema principal, todos de misma índole pero con un grado de complejidad mucho menor, que casi lleva a la solución obvia.

Problemas que conviene resolver

Conviene usarlo en problemas de lata complejidad en donde el tiempo de solución es excesivo siempre y cuando se conozca la solución más simple y rápida para los subproblemas derivados, como algoritmos de búsqueda y otros cuya solución sea exponencial.

Cuando conviene usarlo

Estos algoritmos pueden ser implementados más eficientemente que los algoritmos generales de “divide y vencerás”; en particular, si es usando una serie de recursiones que lo convierten en simples bucles. Bajo esta amplia definición, sin embargo, cada algoritmo que usa recursión o bucles puede ser tomado como un algoritmo de “divide y vencerás”. El nombre divide y vencerás ha sido propuesta para la subclase simple de problemas.

La corrección de un algoritmo de “divide y vencerás”, está habitualmente probada una inducción matemática, y su coste computacional se determina resolviendo relaciones de recurrencia.

Cuando no conviene usarlo

Cuando la solución del problema esta explicita o es de baja complejidad.

Diseño e implementación

La resolución de un problema mediante esta técnica consta fundamentalmente de los siguientes pasos:

Primero que nada el problema presentado ha de ser divisible en problemas de menor complejidad y éstos, a su vez y de igual manera, han de ser divisibles en problemas de menor complejidad. 

Después se tiene que resolver por si mismo todoos los subproblemas , que también son elementales o bien se va definiendo en si mismo. El tamaño de los subproblemas sea obligatoria mente menor que el tamaño original del problema nos da la seguridad de la convergencia hacia los casos elementales, también denominados casos base 

cuando concluyamos este procedimiento debemos combinar las soluciones obtenidas en el paso anterior para construir la solución del problema original.

Ejemplo de la implementación del algoritmo

Caso de un problema factorial

Es un problema que se puede resolver utilizando la técnica de divide y vencerás.
El factorial de un numero N  es presentado como el producto de todos los numeros naturales que existen desde uno hasta N.
ejemplo:
 4!= 4x3x2x1=24

Implementando el algoritmo tenemos lo siguiente:

  • Inicio 
  • Recibe N
  • Llamar función factorial(N)
  • Fin
  • Inicio Función factorial(N);
  • if N<2 Resultado=1;
  • else Resultado=N*factorial(N-1)
  • Retorna Resultado
  • Fin Función factorial

No hay comentarios:

Publicar un comentario