Diferencia entre revisiones de «Fundamentos de programación/Algoritmos»

Contenido eliminado Contenido añadido
m Revertidos los cambios de 181.58.38.158 (disc.) a la última edición de 186.121.246.130
Etiqueta: Reversión
Línea 14:
La ejecución de un algoritmo por parte de una máquina es posible porque estos no requieren ninguna decisión subjetiva ni el uso de la intuición o de la creatividad. Sin embargo, eso no significa necesariamente que los pasos que ejecuta un algoritmo se puedan determinar con precisión de antemano o que siempre den una respuesta exacta y sin errores. Los algoritmos probabilistas realizan elecciones aleatorias en determinados momentos de su ejecución. Los algoritmos aproximados dan una solución a un problema dentro de un margen de error que puede ser establecido de antemano. Los algoritmos heurísticos son algoritmos que dan una solución aproximada a un problema donde no podemos controlar la magnitud del error. Lo importante al considerar estos tipos de algoritmos es que en ningún caso implican la ejecución de instrucciones o la toma de decisiones de forma arbitraria. Los mecanismos siempre están determinados de antemano, lo que varían son los resultados de ejecutarlos, por ejemplo al usar un generador de números pseudoaleatorios.<ref name="brassard1997" />
 
=== tiposTécnicas de garciadiseño de algoritmos ===
 
La creación de garciasalgoritmos, como todo proceso de resolución de problemas, es una actividad eminentemente creativa<ref name="joyanes2013" />, sin embargo la investigación en el campo ha identificado diversas técnicas comunes que facilitan la resolución de problemas. Entre las más comunes se encuentran las siguientes:<ref name="brassard1997" />
 
* '''losAlgoritmos flacosvoraces''': Los algoritmos voraces toman decisiones basándose en la información disponible en el momento y sin considerar sus consecuencias posteriores.
* '''losDivide gordosy conquista''': Los algoritmos que usan la técnica de división y conquista descomponen el problema en varios subproblemas más pequeños y fáciles de resolver y luego se aplican a si mismos a esos subproblemas hasta llegar a un caso altosbásico y fácil de resolver. Luego retroceden integrando las soluciones parciales para luego dar el resultado esperado.
* '''bajosProgramación dinámica''': El método dinámic0de programación dinámica permite el diseño de algoritmos que inician calculando las soluciones a un conjunto de casos básicos que luego van combinando hasta encontrar la solución al problema principal.
[[Imagen:MoralGraph-DAG1.png|miniaturadeimagen|Representación visual de un problema modelado como un grado.]]
* '''Recorridos sobre grafos''': Los algoritmos de este tipo expresan un problema como un conjunto de elementos interconectados entre sí y buscan la solución recorriendo la estructura resultante, llamada grafo.