jueves, 16 de abril de 2015

ALGORITMOS Y DIAGRAMAS DE FLUJO.

Resultado de imagen para ALGORITMOS


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.