Últimos temas
» ïàðêåòíàÿ äîñêà óêëàäêà
Miér Ago 03, 2011 5:38 pm por Invitado

» slots free downloads
Miér Ago 03, 2011 6:06 am por Invitado

» red fish oil pills
Mar Ago 02, 2011 11:10 pm por Invitado

» ñâåæèå íîâîñòè â ìèðå
Mar Ago 02, 2011 1:11 pm por Invitado

» unlock iphone 4 3y
Lun Ago 01, 2011 6:18 pm por Invitado

» ãäå õîðîøèé ãèíåêîëîã
Lun Ago 01, 2011 1:28 pm por Invitado

» Decomaster Êèòàé
Lun Ago 01, 2011 11:30 am por Invitado

» When the first Whirlpool Duet album was released in December 2001
Lun Ago 01, 2011 12:42 am por Invitado

» She Lost It
Dom Jul 31, 2011 3:33 pm por Invitado

Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
Compañeros
Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Análisis de algoritmos: complejidad algorítmica

Sáb Mar 29, 2008 5:30 am por Admin

Concepto Complejidad Algoritmos
La resolución práctica de un problema exige por una parte un algoritmo o método de resolución y por otra un programa o codificación de aquel en un ordenador real.
Ambos componentes tienen su importancia, pero la del algoritmo es absolutamente esencial, mientras que la codificación puede muchas veces pasar a nivel de anécdota.
A efectos prácticos o ingenieriles, nos deben preocupar los recursos físicos necesarios para que un programa se ejecute.
Aunque puede haber muchos parametros, los mas usuales son el tiempo de ejecución y la cantidad de memoria (espacio).
Ocurre con frecuencia que ambos parametros están fijados por otras razones y se plantea la pregunta inversa: ¿cual es el tamano del mayor problema que puedo resolver en T segundos y/o con M bytes de memoria?
En lo que sigue nos centramos casi siempre en el parametro tiempo de ejecución, si bien las ideas desarrolladas son fácilmente aplicables a otro tipo de recursos.
Para cada problema determinaremos un medida N de su tamaño (por número de datos) e intentaremos hallar respuestas en función de dicho N.
El concepto exacto que mide N depende de la naturaleza del problema.
Así, para un vector se suele utizar como N su longitud; para una matriz, el número de elementos que la componen; para un grafo, puede ser el número de nodos (a veces es mas importante considerar el número de arcos, dependiendo del tipo de problema a resolver), en un archivo se suele usar el número de registros, etc.
Es imposible dar una regla general, pues cada problema tiene su propia lógica de coste.
Tiempo de Ejecución
Una medida que suele ser útil conocer es el tiempo de ejecución de un programa en función de N, lo que denominaremos T(N).
Esta función se puede medir físicamente (ejecutando el programa, reloj en mano), o calcularse sobre el código contando instrucciones a ejecutar y multiplicando por el tiempo requerido por cada instrucción.
Así, un trozo sencillo de programa como:
S1; for (int i= 0; i < N; i++) S2;
requiere
T(N)= t1 + t2*N
siendo t1 el tiempo que lleve ejecutar la serie “S1” de sentencias, y t2 el que lleve la serie “S2”.
Prácticamente todos los programas reales incluyen alguna sentencia condicional, haciendo que las sentencias efectivamente ejecutadas dependan de los datos concretos que se le presenten.
Esto hace que mas que un valor T(N) debamos hablar de un rango de valores
Tmin(N) ⇐ T(N) ⇐ Tmax(N)
los extremos son habitualmente conocidos como “caso peor” y “caso mejor”.
Entre ambos se hallara algun “caso promedio” o más frecuente.
Cualquier fórmula T(N) incluye referencias al parámetro N y a una serie de constantes “Ti” que dependen de factores externos al algoritmo como pueden ser la calidad del código generado por el compilador y la velocidad de ejecución de instrucciones del ordenador que lo ejecuta.
Dado que es fácil cambiar de compilador y que la potencia de los ordenadores crece a un ritmo vertiginoso (en la actualidad, se duplica anualmente), intentaremos analizar los algoritmos con algun nivel de independencia de estos factores; es decir, buscaremos estimaciones generales ampliamente válidas.

Comentarios: 0

Sondeo
¿Quién está en línea?
En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado :: 1 Motor de búsqueda

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 8 el Lun Feb 21, 2011 6:43 am.
Estadísticas
Tenemos 16 miembros registrados.
El último usuario registrado es Kuro18.

Nuestros miembros han publicado un total de 113 mensajes en 105 argumentos.