Está en la página 1de 14

Algoritmos: An alisis de Algoritmos

Ordenaci on por Inserci on y Ordenaci on por Selecci on


Reglas para calcular O
Alberto Valderruten
Dept. de Computaci on, Universidade da Coru na
alberto.valderruten@udc.es
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Inserci on (1)
procedimiento Ordenacion por Insercion (var T[1..n])
para i:=2 hasta n hacer
x:=T[i];
j:=i-1;
mientras j>0 y T[j]>x hacer
T[j+1]:=T[j];
j:=j-1
fin mientras;
T[j+1]:=x
fin para
fin procedimiento
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Inserci on (2)
3 1 4 1 2 9 5 6 5 3
1 3 4 1 2 9 5 6 5 3
1 3 4 1 2 9 5 6 5 3
1 1 3 4 2 9 5 6 5 3
1 1 2 3 4 9 5 6 5 3
1 1 2 3 4 9 5 6 5 3
1 1 2 3 4 5 9 6 5 3
1 1 2 3 4 5 6 9 5 3
1 1 2 3 4 5 5 6 9 3
1 1 2 3 3 4 5 5 6 9
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Inserci on (3) - An alisis de casos
Peor caso insertar siempre en la primera posici on
entrada en orden inverso
el bucle interno se ejecuta 1 vez en la primera iteraci on,
2 veces en la segunda, . . . , n 1 veces en la ultima:

n1
i =1
i =
n(n1)
2
iteraciones del bucle interno

n
i =1
i =
n(n+1)
2
T(n) =
n(n1)
2
c
1
+(n 1)c
2
+c
3
: polinomio de grado 2
T(n) = (n
2
)
Mejor caso no insertar nunca entrada ordenada
el bucle interno no se ejecuta
T(n) = (n 1)c
1
+c
2
: polinomio de grado 1
T(n) = (n)
T(n) depende tambi en del estado inicial de la entrada
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Selecci on (1)
procedimiento Ordenacion por Seleccion (var T[1..n])
para i:=1 hasta n-1 hacer
minj:=i;
minx:=T[i];
para j:=i+1 hasta n hacer
si T[j]<minx entonces
minj:=j;
minx:=T[j]
fin si
fin para;
T[minj]:=T[i];
T[i]:=minx
fin para
fin procedimiento
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Selecci on (2)
3 1 4 1 2 9 5 6 5 3
1 3 4 1 2 9 5 6 5 3
1 1 4 3 2 9 5 6 5 3
1 1 2 3 4 9 5 6 5 3
1 1 2 3 4 9 5 6 5 3
1 1 2 3 3 9 5 6 5 4
1 1 2 3 3 4 5 6 5 9
1 1 2 3 3 4 5 6 5 9
1 1 2 3 3 4 5 5 6 9
1 1 2 3 3 4 5 5 6 9
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Selecci on (3) - An alisis de casos
T(n) = (n
2
) sea cual sea el orden inicial (ejercicio)
la comparaci on interna se ejecuta las mismas veces
Empricamente: T(n) no uct ua m as del 15%
algoritmo mnimo m aximo
Inserci on 0,004 5,461
Selecci on 4,717 5,174
Tabla: Tiempos (en segundos) obtenidos para n = 4000
Comparaci on:
algoritmo peor caso caso medio mejor caso
Inserci on (n
2
) (n
2
) (n)
Selecci on (n
2
) (n
2
) (n
2
)
Quicksort O(n
2
) O(nlogn) O(nlogn)
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Reglas para calcular O (1)
1. operaci on elemental = 1 Modelo de Computaci on
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Reglas para calcular O (2)
2. secuencia: S
1
= O(f
1
(n)) S
2
= O(f
2
(n))
S
1
; S
2
= O(f
1
(n) +f
2
(n)) = O(max(f
1
(n), f
2
(n)))
Tambi en con
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Reglas para calcular O (3)
3. condici on: B = O(f
B
(n)) S
1
= O(f
1
(n)) S
2
= O(f
2
(n))
si B entonces S
1
sino S
2
= O(max(f
B
(n), f
1
(n), f
2
(n)))
Si f
1
(n) = f
2
(n) y max(f
1
(n), f
2
(n)) > f
B
(n) Peor caso
Caso medio?
f (n): promedio de f
1
y f
2
ponderado con las frecuencias de
cada rama
O(max(f
B
(n), f (n)))
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Reglas para calcular O (4)
4. iteraci on: B; S = O(f
B,S
(n)) n
o
iter= O(f
iter
(n))
mientras B hacer S = O(f
B,S
(n) f
iter
(n))
ssi el coste de las iteraciones no vara, sino:

costes indiv.
para i x hasta y hacer S = O(f
S
(n)n
o
iter)
ssi el coste de las iteraciones no vara, sino:

costes indiv.
B es comparar 2 enteros = O(1); n
o
iter = y x +1
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Reglas para calcular O (5)
Uso de las reglas:
an alisis de adentro hacia afuera
analizar primero los subprogramas
recursividad: intentar tratarla como un ciclo, sino resolver relaci on
de recurrencia
Ejemplo:

n
i =1
i
3
funcion suma (n:entero) : entero
{1} s:=0;
{2} para i:=1 hasta n hacer
{3} s:=s+i*i*i;
{4} devolver s
fin funcion
(1) en {3} y no hay variaciones
(n) en {2} (regla 4)
T(n) = (n) (regla 2)
El razonamiento ya incluye las aproximaciones
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Selecci on (3)
procedimiento Ordenacion por Seleccion (var T[1..n])
{1} para i:=1 hasta n-1 hacer
{2} minj:=i; minx:=T[i];
{3} para j:=i+1 hasta n hacer
{4} si T[j]<minx entonces
{5} minj:=j; minx:=T[j]
fin si
fin para;
{6} T[minj]:=T[i]; T[i]:=minx
fin para
fin procedimiento
Alberto Valderruten Algoritmos: An alisis de Algoritmos
Ordenaci on por Selecci on (4)
(1) en {5} (regla 2)
O(max((1), (1), 0)) = (1) en {4}
(regla 3: no estamos en peor caso)
S = (1); n
o
iter=n i (n i ) en {3} (regla 4)
(1) en {2} y en {6} (regla 2)
(n i ) en {2-6} (regla 2)
S = (n i ) vara:

i = 1 (n)
i = n 1 (1)

n1
i =1
(n i ) =

n1
i =1
n

n1
i =1
i en {1} (regla 4)
= (n 1)n
n(n1)
2
: polinomio de grado 2
T(n) = (n
2
) en cualquier caso
Alberto Valderruten Algoritmos: An alisis de Algoritmos

También podría gustarte