ALGORITMO:
Un algoritmo es un procedimiento esquemático que
comprende un conjunto de pasos secuenciales ordenados,
para realizar una actividad específica.
CARACTERÍSTICAS DE UN ALGORITMO:
- Preciso: Cada instrucción tiene que ser clara y determinada a una acción.
- Definido: Por que deben obtenerse los resultados determinados con las instrucciones de entrada.
- Finito: Por que su diseño debe tener un número limitado en cuanto a los pasos.
- Ordenado: Por que tienen una secuencia de pasos.
EJEMPLO: Algoritmo para ir a la escuela..
Inicio.
1. Me despierto.
2. Me levanto de la cama.
3. Me lavo los dientes.
4. Me desvisto.
5. Me baño.
6. Me visto.
7. Desayuno.
8. Tomo el transporte a la escuela.
9. Camino a la escuela.
Fin.
DIAGRAMA DE FLUJO
El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.
EJEMPLO: Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona.
TÉCNICAS PARA DISEÑAR ALGORITMOS:
Existen varias técnicas de diseño de algoritmos que permiten desarrollar la solución al problema planteado, algunas de ellas son:
- 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: 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 ancesor.
- 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: 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: 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.