Algoritmos Iterativos — Patrones y Costos

Patrones de ciclos, búsqueda secuencial, crecimiento de funciones y comparación formal mediante límites.

3.1 Patrones típicos de ciclos

Patrones típicos de ciclos iterativos

PatronEstructuraEjecuciones del cuerpoCosto típico
for simplefor i <- 1 to n
for anidado (límite fijo)for i... for j <- 1 to n
for anidado (límite variable)for i... for j <- 1 to i
while con duplicaciónwhile j<=n: j<-j*2
for + while internofor i... while j<=n: j*=2

3.2 Busqueda Secuencial — Análisis por casos

BusquedaSecuencial
int BusquedaSecuencial (E int A[n], E int x) {
  i <- 1                             # C1 * 1
  while (A[i]<>x) and (i<=n)         # C2 * (n+1) en peor caso
    i <- i + 1                       # C3 * n
  endwhile
  if (i <= n) then                   # C4 * 1
    return i
  else
    return -1                        # C5 * 1
}
Precondiciones

,. Sino está en el arreglo, retorna.

Análisis por casos de búsqueda secuencial

CasoDistribucion de entradaFunción de Eficiencia
Mejor casoestá en(primera posición)
Peor casono está en el arreglo(lineal)
Caso promediopuede estar en cuálquier posición con igual probabilidad(lineal)
Nota

¿Es tan malo como que esté en la última posición? No. Si no está en el arreglo, el algoritmo llega al final y hace una verificación más (la que causa la salida). Por eso el peor caso es que no esté.

3.3 Tabla de Crecimiento de Funciones Comunes

Esta tabla es fundamental para comparar funciones rápidamente. Cuanto más arriba en la tabla, más lenta crece la función (mejor). Cuanto más abajo, más rápido crece (peor).

Tabla de crecimiento de funciones comunes

OrdenNombren=10n=100n=1000Comportamiento
Constante111Ideal. No depende de n.
Logaritmica3.326.649.97Excelente. Crece muy lento.
Lineal101001, 000Bueno. Crece proporcional.
Linealitmica336649, 966Aceptable (ej: Merge Sort).
Cuadratica10010, 0001, 000, 000Lento para n grande.
Cubica1, 0001, 000, 000Muy lento.
Exponencial1, 024Inmanejable para n grande.
Factorial3, 628, 800inmensoinmensoPracticamente imposible.

Orden de crecimiento (de menor a mayor)

Nota

En logaritmos, si no aparece la base, se asume base 2 (convención del curso).

3.4 Como comparar funciones correctamente

La manera correcta de comparar funciones no es graficando ni tabulando. Se usan desigualdades y límites.

Método de los límites

Para comparary, calculamos:

Interpretación del límite para comparar funciones

Resultado LSignificadoRelacion
crece más rápido quecrece más lento que
L = constanteycrecen a la misma velocidadSon del mismo orden
crece más rápido quedomina a

Ejemplo

Comparary.

Cálculo del límite

Plantear el cociente
Dividir por n^2
Evaluar el límite
Conclusión

es una constante positiva. Entoncesyson del mismo orden. Crecen a la misma velocidad.