2.3 Diseño de algoritmos aplicados a problemas.
2.3 Diseño de algoritmos aplicados a problemas.
Algoritmos diseño.
Para llegar a la realización de un
programa es necesario el diseño previo de algoritmo, de modo que sin algoritmo
no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadoraque lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño de algoritmos. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadoraque lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño de algoritmos. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación.
Técnicas de diseño de algoritmos
- 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.
- Divide
y vencerás:
dividen el problema en subconjuntos disjuntos obteniendo una solución de
cada uno de ellos para después unirlas, logrando así la solución al
problema completo.
- 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.
Características de algoritmo
La resolución de un problema exige el diseño
de un algoritmo que resuelva el problema, como lo muestra la siguiente figura:
Pasos para la resolución de un problema
1.- Diseño del
algoritmo que describe la secuencia ordenada de pasos �sin
ambigüedades- que conducen a la solución de un problema dado.(Análisis del
problema y desarrollo del algoritmo).
2.- Expresar el algoritmo como un programa
en un lenguaje adecuado. (Fase de codificación).
3.- Ejecución y
validación del programa por la computadora.
Características de los algoritmos
Un algoritmo debe:
- ser preciso e indicar el orden de realización de cada
paso.
- estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.
- ser finito. Si se sigue un algoritmo, se debe terminar
en algún momento; o sea, debe tener un número finito de pasos.
Existen dos herramientas utilizadas
conceptualmente para diseñar algoritmos: los diagramas de flujo y el pseudocodigo.
No comments