Вы находитесь на странице: 1из 5

ALGORITMO Y COMPLEJIDAD

Definicin de Algoritmo
Un algoritmo implica la descripcin precisa de los pasos a seguir para alcanzar la
solucin de un problema dado.
Por pasos se entiende el conjunto de acciones u operaciones que se efectan sobre
ciertos objetos.
Algoritmo: Entrada Proceso Salida
CARACTERSTICAS DE UN ALGORITMO
Un algoritmo debe poseer las siguientes caractersticas:
Precisin: Un algoritmo debe expresarse sin ambigedad.
Determinismo: Todo algoritmo debe responder del mismo modo antes las mismas
condiciones.
Finito: La descripcin de un algoritmo debe ser finita.
CUALIDADES DE UN ALGORITMO
Un algoritmo debe ser adems:
General: Es deseable que un algoritmo sea capaz de resolver una clase de problemas
lo ms amplia posible.
Eficiente: Un algoritmo es eficiente cuantos menos recursos en tiempo, espacio (de
memoria) y procesadores consume.
Por lo general es difcil encontrar un algoritmo que rena ambas por lo que se debe
alcanzar un compromiso que satisfaga lo mejor posible los requisitos del problema.
COMPLEJIDAD ALGORITMICA.
La complejidad algortmica representa la cantidad de recursos (temporales) que
necesita un algoritmo para resolver un problema y por tanto permite determinar la
eficiencia de dicho algoritmo.
Los criterios que se van a emplear para evaluar la complejidad algortmica no
proporcionan medidas absolutas sino medidas relativas al tamao del problema.

La complejidad algortmica es una mtrica terica que se aplica a los algoritmos en


este sentido. Es un concepto que fundamental para todos los programadores, pero sin
embargo, a menudo se desconoce por completo. En muchos cursos y libros se elude el
tema porque a menudo se considera farragoso.
Pero eso no es necesariamente cierto. La complejidad de un algoritmo es un concepto
complicado pero slo desde un punto de vista estrictamente formal. La obtencin y el
estudio de la complejidad de un algoritmo requiere ciertamente de unas cuantas
destrezas matemticas que no todos tenemos y la aplicacin de una serie de tcnicas
bastante particulares. Sin embargo, no es un concepto difcil de entender.
EL TAMAO DE UN PROBLEMA

La idea que subyace tras el concepto de complejidad temporal de un algoritmo es,


bsicamente, medir cunto tarda en resolver el problema.

Para resolver cualquier problema, son necesarios unos datos de entrada sobre los que
trabaja el algoritmo y que describen una ocurrencia concreta del problema que
queremos resolver. El algoritmo, finalmente obtiene una o varias soluciones al
problema (si es que el problema tiene soluciones).

Sin embargo, debemos tener en cuenta algunas consideraciones. Por ejemplo, piensa
en un tpico algoritmo para ordenar los elementos de un vector. Seguro que conoces
alguno. El algoritmo consta de una serie de instrucciones que se repiten una y otra vez
(bucles), y probablemente, de una serie de selecciones (comparaciones) que hacen
que se ejecute uno u otro camino dentro del algoritmo.

Un algoritmo de ordenacin debera ser capaz de ordenar un vector con cualquier


nmero de elementos. Sin embargo, el tamao del vector incide directamente en el
tiempo que tarda el algoritmo en resolverse.

Pues cualquier problema tiene un tamao, que es un valor o un conjunto de valores


que se pueden obtener de los datos de entrada y que si varan, normalmente tienen
una repercusin en el tiempo que tardar el algoritmo en finalizar (aunque en algunos
casos no).

Cada problema tiene uno o varios valores que determinan su talla.

La complejidad se calcula en funcin de una talla genrica, y no concreta. La


complejidad no es un nmero: es una funcin

Otra consideracin a tener en cuenta a la hora de tratar con la complejidad es que si


estamos contando el tiempo que tarda un algoritmo en resolver un problema En qu
ordenador lo ejecutamos? Parece obvio que el mismo algoritmo ejecutado en un
ordenador el doble de rpido que otro tardar la mitad en encontrar la solucin.
Cul debera ser entonces la unidad de medida de la complejidad? Ninguna unidad de
tiempo nos vale: ni segundos ni milisegundos, porque el resultado variara de un
ordenador a otro.

Adems... parece obvio tambin que el mismo algoritmo tardar ms o menos en


solucionar un problema de una talla u otra. Es decir, no puede tardarse lo mismo en
ordenar un array de 100 valores que uno de 100000.

Adoptamos una simplificacin que nos permita no tener en cuenta en qu ordenador


se ejecutar el algoritmo: en lugar de medir tiempos, vamos a contar las instrucciones
que debe realizar el algoritmo. Supondremos que cada instruccin se ejecuta en un
tiempo constante.

Nos podemos permitir esa simplificacin porque lo que realmente queremos saber
es cmo crece el nmero de instrucciones necesarias para resolver el problema con
respecto a la talla del problema. Eso es realmente la complejidad.
EL TIEMPO EMPLEADO POR EL ALGORITMO SE MIDE EN PASOS
La medida del tiempo tiene que ser independiente:
De la mquina
Del lenguaje de programacin
Del compilador
De cualquier otro elemento hardware o software que influya en el anlisis.
Para conseguir esta independencia una posible medida abstracta puede consistir en
determinar cuantos pasos se efectan al ejecutarse el algoritmo.
COMPLEJIDAD ALGORITMICA.
Conceptos bsicos a
* El tiempo empleado por el algoritmo se mide en pasos.
* El coste depende del tamao de los datos.
A la hora de evaluar el coste se debe de tener en consideracin tres posibles casos:
El coste esperado o promedio
El coste mejor
El coste peor
Si el tamao de los datos es grande lo que importa es el comportamiento asinttico de
la eficiencia.

Conclusiones.
Un algoritmo que resuelve un problema con una determinada talla, tarda un
tiempo mayor en obtener la solucin. La complejidad es una medida que nos da
una idea de cmo es ese crecimiento, resultando que para la mayor parte de
algoritmos, ese crecimiento se puede enmarcar en un determinado "orden", ya
que todas las funciones que estn en un orden crecen de manera similar cuando
los valores de la talla se van haciendo grandes.

Para cada algoritmo, son interesantes un par de medidas de complejidad: en el


peor caso y en el mejor. En especial, suele ser ms imprescindible conocer el
peor caso, ya que nos da una idea de qu es lo que puede pasar cuando las
cosas van realmente mal.
Bibliografa
http://www.infor.uva.es/~jvalvarez/docencia/tema5.pdf
http://latecladeescape.com/h/2015/07/que-es-la-complejidad-de-un-algoritmo

Вам также может понравиться