Sunteți pe pagina 1din 2

Universidad Nacional de Ingeniera

Ciencias de la Computacin
Medians and order Statistics
Yuri Nuez Medrano *
ynunezm@gmail.com

Resumen mnimo y el mximo con 3bn/2c comparaciones, teniendo


auxiliares para el mnimo y mximo que comparan de dos
El Orden estadstico i-esimo de un conjunto de n elementos indices y los siguientes dos indices siguientes y con los au-
es el i-esimo menor elemento, por ejemplo el minimo de un xiliares y nos quedamos tanto con el mnimo y el mximo.
conjunto de elementos es el primer orden estadstico (i =
1), y el mximo es el nesimo orden estadstico (i=n), la
mediana, es la mitad dependiendo si es par o impar, i = 1.2. Seleccion en tiempo lineal esperado
b(n + 1)/2c o d(n + 1)/2e dependiendo del caso. En general el problema de seleccin parece ms dificultoso
que encontrar el mnimo. Pero el tiempo de ejecucin O(n)
es sorprendente para ambos problemas.
1. Medianas y Orden Estadstico
El algortmo 2 tiene modelado despues del QUICKSORT.
Podemos encontrar el i-esimo elemento mediante el ordena- Como un QUICKSORT partimos el input array, pero con
miento previo de n elementos con un tiempo de ejecucin la diferencia que evaluamos slo una particin en vez de
(nlgn), mediante un algoritmo usando heapsort o mer- dos, esta diferencia nos da un tiempo de ejecucin de (n)
gesort, y luego encontrando el indice del i-esimo, veremos asumiendo que los elementos son distintos.
casos donde se puede encontrar el i-esimo elemento en un
tiempo de ejecucin de O(nlgn) en el peor de los casos. . Algorithm 2: RANDOMIZED_SELECT(A,p,r,i)
1 if p==r then
2 return A[p]
1.1. Mnimo y Maximo 3 q=RANDOMIZED_PARTITION(A,p,r)
4 k=q-p+1
Cuantas comparacione son necesarias para determinar el mi-
5 if i==k then
nimo de n elementos. Facilmente podemos tener un limite
6 return A[q]
superior de n 1 comparaciones, donde A.lenght = n.
7 else if i<k then
Algorithm 1: MINIMUN(A) 8 return RANDOMIZED_SELECT(A,p,q-1,i) ;
9 else return RANDOMIZED_SELECT(A,q+1,r,i-k) ;
1 min=A[1]
2 for i = 2 to A.lenght do
3 if min >A[i] then Intuicin para el Anlisis
4 min=A[i] Asumimos que todos los elementos son diferentes.
1 9
Caso lucky(suertudo) 10 : 10 .
5 return min
9
T (n) T ( ) + (n)
10n
Teorema Maestro caso 3
Simultaneamente mnimo y mximo.
(n)
En algunas aplicaciones se nos hace necesario encontrar el
Caso unlucky(sinsuerte) n : n 1
maximo como tambien el mnimo. Con el caso anterior po-
T (n) = T (n 1) + (n)
demos evaluar 2n 2 comparaciones. Nosotros podemos el
(n2 )
* Escuela de Ciencias de la Computacin, 27-08-15 Anlisis de tiempo Esperado

1
2

- T(n) es una variable aleatoria para el tiempo de ejecucin


RANDOMIZED_SELECT input de tamao n, asumiendo
que las variables aleatrias son independientes.
- Definimos
 el indicador aleatrio Xk para k= 0, 1, ..., n 1.
1 si genera part. k : n k 1
Xk =
0 para los demas
n 1}) + (n) si 0 : n 1

T (max{0,

T (max{1, n 2}) + (n) si 1 : n 2

T (n) =
...


...


T (max{n 1, 0}) + (n) si n 1 : 0
Pn1
E[T (n)] = k=0 E[Xk (T (max{k, n k 1}) + (n))]
Pn1
= k=0 E[Xk ]E[T (max{k, n k 1}) + (n)]
Pn1 Pn1
= n1 k=0 E[T (max{k, n k 1})] + n1 k=0 (n) Figura 1: Select
n1
= n2 k=bn/2c E[T (k)] + (n)
P

Necesita
Sino usar SELECT recursivamente al (i-k)esimo menor
E[T (n)] cn para una cte>0
elemento de la parte superior.
Probar por el Mtodo de Sustitucin
Pn1
= n2 k=bn/2c E[T (k)] +(n)
| {z }
cn
n1
= n2 k=bn/2c ck + (n)
P
Pn1
= 2c
n k=bn/2c k + (n)
n1
X
= 2c
n k +(n)
k=bn/2c
| {z }
< 38 n2
1
= cn ( cn (n))
4
| {z }
0
cn

1.3. Seleccion en el caso peor tiempo lineal


Se evaluar el algoritmo SELECT parecido al algoritmo 2 en
un tiempo de ejecucin de O(n) en el caso peor, Aqui sin em-
bargo se garantiza una buena particin del array, SELECT
usa el algoritmo determinista PARTITION del Quicksort.

Dividir los n elementos del arreglo, en b n5 c grupos de 5


elementos y un grupo de n mod 5 elementos.

Calcular la mediana de cada uno de los d n5 e grupos

Usar SELECT recursivamente para calcular las media-


nas de x, de las d n5 e medianas calculadas anteriormente.

Dividir el arreglo de entrada en 2 subarray utilizando la


version modificada de PARTITION, para que el pivote
sea x. Sea k el nmero de elementos del lado de abajo
de la particion y n-k del otro lado.

Si i = k retornar x
Si i < k usar SELECT recursivamente para el iesimo
elemento menor elemento en la parte inferior.

S-ar putea să vă placă și