Upload
mike-garcia
View
308
Download
0
Embed Size (px)
Citation preview
Universidad Mariano Gálvez
Ingeniería en Sistemas
Semestre II
Algoritmos
Sección “C”
Sede Villa Nueva
Ing. Alexis Juarez
Algoritmos
Miguel Ernesto García Bolaños
5190-11-8951
16/07/2011
Algoritmos
Los Algoritmos permiten resolver problemas computacionales mediante lenguajes de
programación. Como Ejemplo podemos poner dos de los más usuales:
Divide y Vencerás: Consiste en descomponer un problema en subproblemas, resolver cada
subproblema y combinar las soluciones. El resultado, es la solución del problema original.
Si los subproblemas son todavía demasiado grandes, se utiliza la misma táctica con ellos,
esto es, dividirlos a ellos también, utilizando un algoritmo recursivo que vaya dividiendo
más el sub-problema hasta que su solución sea trivial
Backtracking: El Backtracking o esquema de vuelta atrás, es un esquema que de forma
sistemática y organizada, genera y recorre un espacio que contiene todas las posibles
secuencias de decisiones. Este espacio se denomina el espacio de búsqueda del problema, y
se representa como un árbol sobre el que el algoritmo hace un recorrido en profundidad
partiendo de la raíz. Se conoce de antemano el orden en que se van a generar y recorrer sus
nodos, y se continúa recorriendo el árbol mientras se cumplan las restricciones. Éste
método tiene tres posibles esquemas: encontrar una solución factible, encontrar todas las
soluciones factibles, encontrar la mejor solución factible.
Tipos de Algoritmos
Existen distintos tipos de algoritmos de razonamiento:
Cualitativos:
Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos:
Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
Algoritmos estáticos:
Algoritmos que funcionan siempre igual, independientemente del tipo de problema tratado.
Por ejemplo, los sistemas basados en el método de resolución.
Algoritmos probabilísticos:
Algoritmos que no utilizan valores de verdad booleanos sino continuos. Por ejemplo, los
sistemas basados en lógica difusa.
Algoritmos adaptativos:
Algoritmos con cierta capacidad de aprendizaje. Por ejemplo, los sistemas basados en redes
neuronales.
Un algoritmo puede además ser:
Deterministico:
Sí en cada paso del algoritmo, es posible predecir la salida para una entrada dada.
No determinísticos:
Sí existe uno ó más pasos en el algoritmo, para el cual es posible predecir cual será la
salida.
Por esa razón se tienen los siguiente tipos de problemas:
1. Polinomial:
Existe al menos un algoritmo polinomial determinístico que lo resuelve.
2. No –Polinomiales:
Solo existen algoritmos polinomiales del tipo no deterministico que los resuelven.
Como determinar la complejidad de un algoritmo
El tiempo de ejecución de cada sentencia simple puede tomarse como complejidad de T(1).
Para sentencias de bifurcación (IF, CASE) el resultante de la complejidad será T(1).
La complejidad para los bucles (FOR, REPEAT, WHILE) independientes será T(n).
La complejidad para los bucles anidados será T(n^m) donde m nos representa el numero de
bucles anidados.
Ciencias en la que se apoya la algoritmia para producir
soluciones ingeniosas
Computación
Matemáticas
Ciencias Sociales
Ciencias Políticas