tcnicas generales que a menudo producen algoritmos eficientes para la resolucin de muchas clases de problemas. Es una herramienta poderosa que sirve para resolver cierto tipo de problemas reduciendo la complejidad y ocultando los detalles del problema. Esta herramienta consiste en que una funcin o procedimiento se llama a s mismo.
Una gran cantidad de algoritmos pueden ser descritos con mayor claridad en trminos de recursividad, tpicamente el resultado ser que sus programas sern ms pequeos.
Existen numerosas definiciones de recursividad , una de las ms importantes o sencillas :
La caracterstica importante de la recursividad es que siempre existe un medio de salir de la definicin, mediante la cual se termina el proceso recursivo. Directa o simple: un subprograma se llama a si mismo una o ms veces directamente.
un subprograma A llama a otro subprograma B y ste a su vez llama al subprograma A. Muchos algoritmos tiles tienen una estructura recursiva, de modo que para resolver un problema se llaman recursivamente a s mismos una o ms veces para solucionar su problemas muy similares. Esta estructura obedece a una estrategia dividir-y-conquistar, en que se ejecuta tres pasos en cada nivel de la recursin:
Dividir. Dividen el problema en varios su problemas similares al problema original pero de menor tamao;
Conquistar. Resuelven recursivamente los su problemas si los tamaos de los su problemas son suficientemente pequeos, entonces resuelven los su problemas de manera directa; y luego,
Combinar. Combinan estas soluciones para crear una solucin al problema original.
Programacin: Es el proceso de hacer un diseo, hacer el cdigo y depurar una aplicacin computacional. Algoritmo: Mtodo para resolver un determinado problema mediante una serie de pasos precisos, definidos y finitos. Carcter finito: Todos los algoritmos debern de tener cierto nmero de pasos a seguir hasta llegar a un Fin. Precisin: Cada paso del algoritmo tendr que estar especificado para llevarlo a cabo. Entrada: Cada algoritmo tiene entradas, es decir, datos dados antes o mientras se est realizando el proceso del algoritmo. Salida: El algoritmo tiene una o varias salidas especificadas relacionadas con la entrada. Eficacia: Se prefiere que el algoritmo sea lo ms bsico posible, en donde las instrucciones de los pasos sean fciles de entender. Todo en conjunto debe ser eficaz. Pseudocdigo: Es la manera en la que se describe un algoritmo con un lenguaje natural, de manera breve y detallada. Diagrama de flujo: Es la manera de poder visualizar un algoritmo grficamente. En estos se utilizan smbolos conectados para dar a conocer un flujo o una secuencia. Problema: Es una situacin o una cuestin en donde se presenta un dilema y es necesario una solucin para resolverla.
Algoritmo Lenguaje de computacin Cdigo objeto Escritura en lenguaje especifico Compilacin Mapa conceptual acerca de la metodologa para resolver un problema:
Para el diseo de los algoritmos, se suelen utilizar: Diseo de diagramas de flujo. Pseudocdigo.
Terminal Subprograma Entrada/Salida Decisin Conectores El pseudocdigo se conoce como una herramienta de programacin en las que las instrucciones se escriben en palabras similares al ingls o al espaol. Si hablamos del mismo problema, desarrollando el pseudocdigo se obtendra algo como: Inicio Leer: 2+2 Procesar: 2+2 = Resultado Imprimir: Resultado = 4 Fin. Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene nicamente un paso sucesor y otro ancesor. Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas se ejecutan simultneamente.
Diseo de algoritmos Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo. Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones. Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un rbol que se examina completamente, almacenando las soluciones menos costosas. http://es.wikipedia.org/wiki/Dise%C3%B1o_ de_algoritmos