Diseño de algoritmos
# Diseño de algoritmos

En ciencias de la computación, el diseño de algoritmos es un método específico para poder crear un modelo matemático ajustado a un problema específico para resolverlo. El diseño de algoritmos o algorítmica es un área central de las ciencias de la computación, también muy importante para la investigación de operaciones (también conocida como investigación operativa), en ingeniería del software y en otras disciplinas afines.

## Técnicas de Diseño de algoritmos

Existen varias técnicas de diseño de algoritmos que permiten desarrollar la solución al problema planteado, algunas de ellas son:

* Algoritmo divide y vencerás: El método está basado en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de igual tipo o similar.
* Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima.
* Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.
* Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios
* Algoritmos determinísticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor.
* Algoritmos no determinísticos: El comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente.
* Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.
* Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.
* Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.
* Vuelta Atrás (Backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
* Datos: Q2971515
