Professional Documents
Culture Documents
Operaciones bsicas
Comparacin: una comparacin binaria entre dos valores de clave. Intercambio: intercambiar dos elementos en el arreglo.
.
A[0] A[n-1]
Este algoritmo ordena de izquierda a derecha Supongamos que los n-1 elementos ya estn ordenados. Al ordenar el n-simo elemento, ste es insertado en la posicin correspondiente (lneas 2-4), quedando ordenado lo n elementos
i=n-1 T(n) =
i=1
T(n) =
n(n-1) 2
Debemos obtener c y no talque T(n) c g(n) para todo n no Desarrollo: n(n-1)/2 c g(n) (n2- 1) 2c n2 luego g(n) = n2 Por lo tanto T(n) = O(n2), con c=1/2 y n0 =1
n2- 1 n2
con c=1/2 y n0 =1
Debemos obtener c y no talque T(n) c g(n) para todo n no Desarrollo: n(n-1)/2 c n2 n2- n 2c n2 n2(1- 2c) n n(1- 2c) 1 n(1-2c) 1 con c=1/4 y n0 =2
B. calcular T(n) :nmero de Intercambios, tambin para n = 5. Se supone que las entrada son totalmente aleatorias, as que podemos pensar que los intercambios ocurren de manera intercalada
i 1 j 1 Comparaciones A[1] con A[0] Intercam. 1
2
3
2
1 3 2 1
0
1 0 1 0 1 0 1 0
i=n-1 T(n) =
i=1
i 2
4 3 2 1
T(n) =
n(n-1) 4
TOT AL
Debemos obtener c y no talque T(n) c g(n) para todo n no Desarrollo: n(n-1)/2 c g(n) (n2- 1) 4c n2 luego g(n) = n2 Por lo tanto T(n) = O(n2), con c=1/4 y n0 =1
n2- 1 n2
con c=1/4 y n0 =1
Debemos obtener c y no talque T(n) c g(n) para todo n no Desarrollo: n(n-1)/4 c n2 n2- n 4c n2 n2(1- 4c) n n(1- 4c) 1 n(1-4c) 1 con c=1/8 y n0 =2
Este algoritmo utiliza la estrategia dividir para conquistar. Divide recursivamente el arreglo en dos partes iguales de tamao n/2. Ordena cada cada subarreglo y luego los une mezclndolos ordenadamente. Ejemplo: Ordenar un mazo de cartas Este algoritmo posee dospartes
OrdenaMezcla() Mezclar()
Mezclar(elemento A[], entero a, entero p, entero b) 1 k 0 ; i a; j p +1; n b - a 2 mientras i < p + 1 y j < b + 1 hacer 3 si clave[A[i]] < clave[A[i]] entonces 4 B[k] A[i]; i i + l; k k + 1 5 sino 6 B[k] A[j]; j j + l; k k + 1 7 mientras i < p + 1 hacer copiar el restode A[a..p] 8 B[k] A[i]; i i+1; k k+1 9 mientras j < b + 1 hacer copiar el resto de A[p+1..b] 10 B[k] A[j]; j j + 1; k k +1 11 i a 12 para k 0 hasta n hacer T(n) = (n) ? 13 A[i] B[k]; i i +1
Anlisis de la eficiencia
(1) Si n = 1 Si n > 1
T(n) =
2T(n/2) + (n)
Anlisis de la eficiencia
(1) Si n = 1 Si n > 1
T(n) =
2T(n/2) + (n)
Considerando la solucin general para algoritmos dividir para conquistar, Con a = b , b = 2 , k=1
T(n) = (n log n)
El primer elemento del arreglo se elije como elemento pivote A[a]. Mueve hacia la izquierda todos los elementos menores a A[a], y a la derecha los mayores El pivote A[a] se inserta en medio de ambos grupos Se ordena el subarreglo izquierdo Se ordena el subarreglo derecho
El algoritmo
Particion (elemento A[], entero a, entero b) 1 pivoteclave[A[a]]; inferior a +1; superior b 2 hacer 3 mientras clave[A[inferior]] pivote y inferior superior hacer 4 inferior inferior + 1 5 mientras clave[A[superior]] > pivote y inferior superior hacer 6 superior superior - 1 7 si inferior superior entonces 8 intercambiar A[inferior] con A[superior] 9 inferior inferior + 1; superior superior - 1 10 mientras inferior superior 11 intercambiar A [a] con A [superior] mover el pivote a la componente apropiada 12 devolver superior
Anlisis de la eficiencia
Caso peor: el pivote elegido siempre es el menor quedando en el extremo izquierdo
(1) T(n) = T (n-1) + (n) Si n = 1 Si n > 1
T(n) = (n2) ?
Anlisis de la eficiencia
Caso Mejor: el pivote elegido siempre queda ubicado en el centro del arreglo
(1) T(n) = Si n = 1
T(n) = (n log n) ?
2T (n/2) + (n)
Si n > 1
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio) Se supone que cualquier combinacin de entrada de n elementos son equiprobables Supongamos que el pivote queda insertado en la posicin p Quedan dos subarreglos:
p-1
n-p
a=0
b=n-1
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
(1) T(n) =
Si n = 1
Si n > 1
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
Tm(n) = cn + 1/n
[T
p=1
m(p-1)
+ Tm(n-p)]
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
Tm(n) = cn + 1/n
[T
p=1
m(p-1)
+ Tm(n-p)]
Tiempo requerido para ordenar todas las particiones posibles multiplicado por la probabilidad de cada particin (1/n)
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
Como
p=1
Tm(p-1) =
T
p=1 n
m(n-p)
entonces
Tm(n) = cn + 2/n
p=1
Tm(p-1)
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
n
Tm(n) = cn + 2/n
p=1
Tm(p-1)
/* n
Tambin
n-1
Tm(p-1) /* (n-1) / Tm(n-1)-Tm(n-1)
p=1
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
n Tm(n) = cn2 + 2
p=1
Restar
(n-1) Tm(n-1) = c(n-1)2 + 2
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
nTm(n) = (n+1) Tm(n-1) + c (2n-1)
Tm(n)
(n+1) Tm(n) (n+1) Tm(n) (n+1) = /* (n+1)/2
Tm(n-1)
n Tm(n-2) n-1 Tm(2) 3
c(2n-1)
+ n (n+1) c(2(n-1)-1) + (n-1) n n + + n (n+1) c(2n-1)
i=3
c(2i-1) i (i+1)
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
n+1 c(2x-1) x(x+1)
n
dx
n c(2i-1) i (i+1)
i=3
c(2x-1) x(x+1)
dx
i=3
c(2i-1) i (i+1)
= (log n)
Anlisis de la eficiencia
Caso promedio (Tm(n) = Tiempo promedio)
Tm(n) (n+1) Tm(2) 3
n
+
i=3
c(2i-1) i (i+1)
= (log n)
/ * (n+1)
Tm(n) = ( n log n)