Está en la página 1de 14

Medianas y Ordenes Estadsticas

Profesor: Julio Cesar Lopez


Home Page
Title Page
Contents

Page 1 of 13
Go Back
Full Screen
Close
Quit

jlopez@eisc.univalle.edu.co

4 de noviembre de 2003

Generalidades
El i-esimo orden estadstico de un conjunto de n elementos es el
i-esimo elemento mas peque
no.
Por ejemplo:
Home Page
Title Page
Contents

Mnimo: Primer orden estadstico


Maximo: n-esimo orden estadstico
Mediana: Si n es impar : ( n+1
stico
2 ) orden estad
n+1
Si n es par : n+1
y
orden
estadstico
2
2
El problema en esta unidad es seleccionar el i-esimo orden estadstico de un conjunto de n n
umeros distintos.
El problema de seleccion es especificado formalmente como:

Page 2 of 13
Go Back

Entrada: Un conjunto A de n n
umeros diferentes y un n
umero i, 1
i n.

Full Screen
Close
Quit

Salida: El elemento x A, tal que es mas grande que, exactamente,


i 1 elementos de A.
El problema de seleccion es solucionado en tiempo O(n lg n).

Mnimo y M
aximo
Cuantas comparaciones son necesarias para determinar el mnimo
de un conjunto de n elementos?.

Home Page

Podemos obtener un cota superior de n 1 comparaciones examinando cada elemento del conjunto y escogiendo el mas peque
no de
todos. El algoritmo para encontrar el mnimo recibe un arreglo A, donde
length[A]= n.

Title Page
Contents

Page 3 of 13
Go Back
Full Screen
Close
Quit

Minimo (A)
1 min A[1]
2 for i 2 to length [A]
3
do if min > A[i]
4
then min A[i]
5 return min
El elemento maximo de un conjunto de n elementos se puede realizar en
n 1 comparaciones.
Podemos obtener un cota inferior n 1 comparaciones para determinar el
mnimo de un conjunto de n elementos.
El algoritmo Mnimo es optimo con respecto al n
umero de comparaciones
realizadas.

Mnimo y M
aximo
Minimo y M
aximo simult
aneos
Podemos encontrar el mnimo y el maximo de n elementos.
Encontrar min y max : (n 1) + (n 1) = 2n 2 comparaciones.
Home Page
Title Page
Contents

Se puede mejorar estas comparaciones: realizando en 3 n/2 comparaciones.


La clave : Procesar elementos por pareejas: (ai , ai+1 )
Calcular min (ai , ai+1 ) y max (ai , ai+1 ) con una comparacion.
Comparar min (ai , ai+1 ) con min y max (ai , ai+1 ) con max.

Page 4 of 13
Go Back
Full Screen
Close
Quit

En total 3 comparaciones por 2 elementos.


Un analisis total del n
umero de comparaciones es :
Si n es impar, entonces se realizan 3 n/2 comparaciones.
Si n es par, entonces se realiza 1 comparacion inicial seguida de
3(n 2)/2 comparaciones, para un total de 3n/2 2.
El n
umero os total de comparaciones es 3 n/2 .

Selecci
on en tiempo lineal esperado
Aunque el problema general de selecci
on parece mas complicado que
el de encontrar el mnimo, ambos problemas son igualmente compleja: (n)
Se utiliza la tecnica de Dividir y Conquistar para resolver el problema
de selecci
on :
Home Page
Title Page
Contents

Page 5 of 13

Seleccion-Aleatoria (A, p, r, i)
1 if p = r
2 then return A[p]
3 q Particion-aleatoria (A, p, r)
4 k qp+1
5 if i = k
6 then return A[q]
7 elseif i < k
8 then return Seleccion-Aleatoria (A, p, q 1, i)
7 else return Seleccion-Aleatoria (A, q + 1, r, i k)

Go Back
Full Screen

El tiempo de ejecucion del algoritmo Selecci


on-Aleatoria en el Peor
Caso es :

Close
Quit

T (n) = T (n 1) + (n)
es decir T (n) = O(n2 )

Selecci
on en tiempo lineal esperado
El tiempo de ejecucion del algoritmo Selecci
on-Aleatoria en el
Caso promedio es :
Recordar que despues de la lnea 3:

Home Page
Title Page
Contents

Page 6 of 13
Go Back
Full Screen

Para k = 1, 2, ..., n, definimos un indicador de variable aleatoria Xk


donde
Xk = I{ Subarreglo A[p..q] con exactamente k elementos}
y por lo tanto tenemos que :
E[Xk ] = 1/n (1)
T (n)

n
k=1 Xk (T (max(k

1, n k)) + O(n))

n
k=1 (Xk (T (max(k

1, n k)) + O(n))

Si aplicamos la esperanza a ambos lados de la ecuacion, tenemos :


n
k=1 Xk

T (max(k 1, n k)) + O(n)]

n
k=1 E[Xk

T (max(k 1, n k))] + O(n)

n
k=1 E[Xk ] E[T (max(k

n
1
k=1 n

E[T (n)] E[

Close
Quit

1, n k))] + O(n)

E[T (max(k 1, n k))] + O(n)

Selecci
on en tiempo lineal esperado
Podemos considerar la expresion max(k 1, n k) como :
max(k 1, n k) =

k1
nk

Tenemos entonces que :


Home Page

E[T (n)]

n1
k= n/2

2
n

E[T (k)] + O(n)

Title Page
Contents

Por substitucion : T (n) cn:


T (n)

2
n

n1
k= n/2
n1
k=1 k

ck + an
n/2 1
k) + an
k=1

2c
n(

2c (n1)n
n[
2

( n/2 1) n/2
2

2c (n1)n
n[
2

(n/22)(n/21
)] + an
2

2c (n1)n
n[
2

(n2 /43n/2+2
] + an
2

Page 7 of 13
Go Back
Full Screen
Close
Quit
2

= nc [ 3n4 +

n
2

2] + an

] + an

si k > n/2
si k n/2

Selecci
on en tiempo lineal esperado
= c[ 3n
4 +

Home Page
Title Page
Contents

3cn
4

1
2

c
2

n2 ] + an

+ an

= cn [ cn
4

c
2

an]

Para completar la demostracion, necesitamos buscar un n suficientemente


grande, para que en la expresion
= cn [

cn c
an]
4
2

cn sea mas grande o equivalente a


Page 8 of 13
Go Back
Full Screen
Close
Quit

cn c
an] 0
4
2

Si sumamos c/2 a ambos lados de la desigualdad tenemos que


c
n( a) c/2
4

Selecci
on en tiempo lineal esperado
Home Page

Encontramos la constante c, 4c a 0, entonces c > 4a, podemos


dividir a ambos lados de la ecuacion por c/4 a, tenemos que

Title Page
Contents

c/2
2c
=
c/4 a
c 4a

Si se asume que T (n) = O(1) para n < 2c/(c 4a), entonces tenemos que:
T (n) = O(n)
Page 9 of 13
Go Back
Full Screen
Close
Quit

Lo que concluye que el orden estadstico y en particular la mediana, puede


se determinada en un promedio de tiempo lineal.

Selecci
on en tiempo lineal en el peor caso
La Idea: Parecido al Seleccion-Aleatorio, pero garantizando una buena
division del arreglo. Utiliza Particion del QuickSort modificado para
recibir el valor del pivote como parametro.
El algoritmo selecci
on consiste en:
Home Page
Title Page
Contents

1. Dividir los n elementos del arreglo en n/5 grupos de 5 elementos y


1 grupo de n mod 5 elementos.
2. Calcular la mediana de cada uno de los n/5 grupos (Por ejemplo
ordenando cada grupo, con el algoritmo de insetion y tomando el de
la mitad).
3. Usar Selecci
on recursivamente para calcular la mediana, x, de las
n/5 medianas calculadas en la etapa anterior.

Page 10 of 13
Go Back
Full Screen
Close
Quit

4. Dividir el arreglo de entrada, en 2 subarreglos, utilizando particion


modificada, para que el pivote sea x (calculado en etapa anterior).
Sea k el n
umero de elementos de un lado bajo de la particion y n k
el del lado alto de la particion.
5. Si i = k, entonces retorne x, en otro caso utilizar Selecci
on recursivamente para calcular el i-esimo orden estadstico de de la parte baja
si i < k, o de la parte alta si i > k.

Selecci
on en tiempo lineal en el peor caso
Representacion grafica del algoritmo Select

Home Page

Title Page
Contents

Page 11 of 13

Go Back

Full Screen

Close
Quit

fig 1: Operaci
on del Algoritmo Select

Selecci
on en tiempo lineal en el peor caso
Para analizar el tiempo de ejecucion del Select, se necesita determinar una cota inferior del n
umero de elementos que > x.

Home Page

Al menos la mitad de las medianas de la etapa 2 son mas mayores


que la mediana de la mediana de x .

Title Page
Contents

Por ser medianas, cada una de ellas, de un grupo, cada grupo tiene
por lo menos 3 elementos mas grandes que x.
Excepcion: el grupo de menos de 5 elementos, el grupo no particiona exactamente a n. Entonces:

Page 12 of 13

3(
Go Back

1 n
2 5

2)

3n
6
10

El n
umero de elementos que son menores que x es
Full Screen
Close
Quit

3n
10

6.

En el peor caso, Select es llamado recursivamente por unos 7n/10 + 6


elementos en la etapa 5.

Selecci
on en tiempo lineal en el peor caso
El Analisis de ejecucion del Select :
Home Page
Title Page
Contents

Etapa 1: O(n)
Etapa 2: O( n/5 ) O(1)
Etapa 3: T ( n/5 )
Etapa 4: O(n)
Etapa 5: T (7n/10 + 6).

Page 13 of 13

La relacion de recurrencia es la siguiente :


Go Back
Full Screen
Close
Quit

T (n) =

(1)
si n 140
T ( n/5 ) + T (7n/10 + 6) + O(n) si n > 140

Selecci
on en tiempo lineal en el peor caso
La recurrencia que se plantea para el peor caso es:
T (n) T ( n/5 ) + T (

7n
+ 6) + O(n)
10

Por sustitucion : T (n) cn :


Home Page
Title Page
Contents

T (n) c n/5 + c(7n/10 + 6) + an


= cn/5 + c + 7cn/10 + 6c + an
= 9cn/10 + 7c + an

Page 14 of 13
Go Back
Full Screen
Close
Quit

= cn + (cn/10 + 7c + an)
Se puede demostrar que su soluci?on es: T(n) = O(n)
Este algoritmo se basa en comparaciones y no en suposiciones sobre
la entrada.
Por tanto el algoritmo ingenuo de ordenar y buscar el i-esimo, es
realmente ineficiente para resolver este problema.