Documente Academic
Documente Profesional
Documente Cultură
Tecnologías de la Información
ALGORITMOS
ANALISIS DE COMPLEJIDAD
Aunque las computadoras de hoy en día son muy rápidas comparadas con sus similares de
hace algunos años, y son capaces de llevar a cabo millones de operaciones en un segundo,
resulta fácil encontrar ejemplos de problemas y soluciones que tardarían años en
solucionarse.
Para analizar un algoritmo, los pasos a seguir son básicamente 2, el primer paso es
asignar un costo computacional a cada línea del código, este costo computacional, que en
la tabla está representado por c1, c2, ... , c7, está determinada por la velocidad de la
máquina y la naturaleza de la función, por ejemplo una suma requiere menos tiempo que
una multiplicación. * La línea 1 se ejecuta una vez por cada índice del arreglo, esto es
desde 2 hasta Longitud+1 por lo que en total será ejecutado n veces, donde n es el
número total de elementos del arreglo. * Entramos ahora a las líneas 4, 5 y 6 del
algoritmo, estas líneas son las que se encargan de buscar la posición correcta del
elemento j. Si recordamos el funcionamiento del algoritmo, para cada índice j se recorre
la parte del arreglo ordenada de derecha a izquierda buscando su posición, en el
momento en que se encuentra su posición se termina el ciclo mientras.
Por lo tanto, la función f dependerá de cuantas comparaciones se tengan que hacer para
encontrar la posición del elemento j. En la teoría de la computación lo más importante es
el análisis del peor caso, este análisis busca cual sería el tiempo de corrida del algoritmo
con la peor entrada posible. Al obtener este tiempo, nos damos una idea de que es lo
más que puede llegar a tardar nuestro algoritmo. Para el caso de la ordenación por
inserción, puede verse que el peor caso posible es que la entrada estuviera ordenada en
orden inverso, es decir, de grande a chico y nosotros lo queremos ordenar de chico a
grande, ya que, en este caso, las líneas 4, 5, 6 se ejecutarían j-1 veces para cada índice.
Cuando se analizan algoritmos, en general sólo importa el término de la función que crece
más rápido, y se eliminan las constantes, por lo tanto, en el caso del ordenamiento por
inserción, el término que crece más rápido es el término cuadrático, por lo que se dice que
el ordenamiento por inserción tiene una complejidad de O.
EJEMPLOS
ORDENAMIENTO-INSERCION (A)
1 desde j:=2 hasta Longitud(A) haz inicio
2 llave:=A[j]
3 i:=j - 1
4 mientras (i > 0) y (A[i] > llave) haz inicio
5 A[i + 1] := A[i]
6 i:=i - 1
7 fin-mientras
8 A[i + 1]:=llave
9 fin-desde
https://www.olimpiadadeinformatica.org.mx/omi/OMI/archivos/apuntes/AnalisisDeComplejidad.
htm
BUSQUEDA LINEAL
EJEMPLOS
Algoritmo básico
Dado una lista L de n elementos con valores o registros L0 ... Ln−1 y valor de objetivo T,
la subrutina siguiente utiliza búsqueda lineal para encontrar el índice del objetivo T en L.
1. Set i a 0.
3. Aumento i en 1.
1. Set i a 0.
2. Si Li = T, ir al paso 4.
3. Aumento i en 1 e ir al paso 2.
https://es.wikipedia.org/wiki/B%C3%BAsqueda_lineal
BUSQUEDA BINARIA
EJEMPLOS
Dado un arreglo A de n elementos con valores A0 ... An−1, ordenados tal que A0 ≤ ... ≤ An−1, y
un valor buscado T, el siguiente procedimiento usa búsqueda binaria para encontrar el
índice de T en A.
3. Sea m (la posición del elemento del medio) igual a la parte entera de (L + R) / 2.