viernes, 22 de julio de 2011

TIPOS DE ALGORITMOS Y SU COMPLEJIDAD

TIPOS DE ALGORITMOS

Existen distintos tipos de algoritmos de razonamiento:

Algoritmos estáticos, es decir, 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, es decir, algoritmos que no utilizan valores de verdad booleanos sino continuos. Por ejemplo, los sistemas basados en lógica difusa.

Algoritmos adaptativos, es decir, algoritmos con cierta capacidad de aprendizaje. Por ejemplo, los sistemas basados en redes neuronales. 



EFICIENCIA Y COMPLEJIDAD
Una vez dispongamos de un algoritmo que funciona correctamente, es necesario
definir criterios para medir su rendimiento o comportamiento. Estos criterios se
centran principalmente en su simplicidad y en el uso eficiente de los recursos.
A menudo se piensa que un algoritmo sencillo no es muy eficiente. Sin
embargo, la sencillez es una característica muy interesante a la hora de diseñar un
algoritmo, pues facilita su verificación, el estudio de su eficiencia y su
mantenimiento. De ahí que muchas veces prime la simplicidad y legibilidad del
código frente a alternativas más crípticas y eficientes del algoritmo. Este hecho se
pondrá de manifiesto en varios de los ejemplos mostrados a lo largo de este libro,
en donde profundizaremos más en este compromiso.
Respecto al uso eficiente de los recursos, éste suele medirse en función de dos
parámetros: el espacio, es decir, memoria que utiliza, y el tiempo, lo que tarda en
ejecutarse. Ambos representan los costes que supone encontrar la solución al
problema planteado mediante un algoritmo. Dichos parámetros van a servir además
para comparar algoritmos entre sí, permitiendo determinar el más adecuado de
entre varios que solucionan un mismo problema. En este capítulo nos centraremos
solamente en la eficiencia temporal.
El tiempo de ejecución de un algoritmo va a depender de diversos factores
como son: los datos de entrada que le suministremos, la calidad del código
generado por el compilador para crear el programa objeto, la naturaleza y rapidez
de las instrucciones máquina del procesador concreto que ejecute el programa, y la
complejidad intrínseca del algoritmo.

No hay comentarios:

Publicar un comentario