ordenamiento en tiempo lineal ---- medianas y … · clasificaciÓn en tiempo lineal. 1.-cota...

58
Ordenamiento en Ordenamiento en Ordenamiento en Ordenamiento en Tiempo Lineal Tiempo Lineal Tiempo Lineal Tiempo Lineal - - - Medianas y Ordenes Medianas y Ordenes Medianas y Ordenes Medianas y Ordenes Estad Estad Estad Estadí í ísticas sticas sticas sticas

Upload: hoangbao

Post on 27-Sep-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Ordenamiento en Ordenamiento en Ordenamiento en Ordenamiento en

Tiempo LinealTiempo LinealTiempo LinealTiempo Lineal

----

Medianas y Ordenes Medianas y Ordenes Medianas y Ordenes Medianas y Ordenes

EstadEstadEstadEstadíííísticassticassticassticas

CLASIFICACIÓN EN TIEMPO LINEAL.

1.- Cota Inferior para Ordenamiento por comparaciones .

-árbol de decisión.

- limite inferior para el peor caso.

2.-CountingSort.

3.- RadixSort.

4.- BucketSort.

MEDIANA Y ORDEN ESTADISTICO.

1.- Mínimos y máximos.

- Mínimos y máximos simultáneos.

2.- Selección en tiempo lineal adecuado.

3.- Selección en tiempo lineal en el peor caso.

CLASIFICACIÓN EN TIEMPO LINEAL.

• Hasta ahora los algoritmos vistos se basan en la comparación de números para obtener el orden.

• Se puede probar que los algoritmos basados en esta técnica tienen como cota inferior un costo Θ(n lg n) .

• Merge sort y heapsort alcanzar este límite superior en el peor de los casos; quicksort se logra en promedio.

• En este tema, vamos a demostrar que cualquier tipo de comparación debe hacer Θ (n lg n) comparaciones en la peor de los casos, para ordenar n elementos.

• y examinaremos 3 algoritmos de clasificación :

• CountingSort, • RadixSort, y • BucketSort• Estos se ejecutan en tiempo lineal. • Demás esta decir que estos algoritmos usan distintas operaciones de comparaciones para determinar el orden de clasificación.

• En consecuencia, el Θ(n lg n) límite inferior no les son aplicables.

Algoritmo De Ordenamiento

• Es un Es un Es un Es un algoritmoalgoritmoalgoritmoalgoritmo que pone elementos de una que pone elementos de una que pone elementos de una que pone elementos de una listalistalistalista o o o o

un un un un vectorvectorvectorvector en una secuencia dada por una en una secuencia dada por una en una secuencia dada por una en una secuencia dada por una relacirelacirelacirelacióóóón n n n

de ordende ordende ordende orden

• El problema del ordenamiento ha atraEl problema del ordenamiento ha atraEl problema del ordenamiento ha atraEl problema del ordenamiento ha atraíííído gran do gran do gran do gran

cantidad de investigacicantidad de investigacicantidad de investigacicantidad de investigacióóóónnnn

• BubbleSortBubbleSortBubbleSortBubbleSort fue analizado desde 1956fue analizado desde 1956fue analizado desde 1956fue analizado desde 1956

• El El El El ordenamiento de bibliotecaordenamiento de bibliotecaordenamiento de bibliotecaordenamiento de biblioteca se publicse publicse publicse publicóóóó por por por por

primera vez en el 2004primera vez en el 2004primera vez en el 2004primera vez en el 2004

Clasificación

• SegSegSegSegúúúún el lugar donde se realice el ordenamienton el lugar donde se realice el ordenamienton el lugar donde se realice el ordenamienton el lugar donde se realice el ordenamiento

• Por el tiempo en que tardan en realizar el Por el tiempo en que tardan en realizar el Por el tiempo en que tardan en realizar el Por el tiempo en que tardan en realizar el

ordenamiento ordenamiento ordenamiento ordenamiento dadas entradas ya ordenadas o dadas entradas ya ordenadas o dadas entradas ya ordenadas o dadas entradas ya ordenadas o

inversamente ordenadasinversamente ordenadasinversamente ordenadasinversamente ordenadas

• Por estabilidad : un ordenamiento estable mantiene Por estabilidad : un ordenamiento estable mantiene Por estabilidad : un ordenamiento estable mantiene Por estabilidad : un ordenamiento estable mantiene

el orden relativo que tenel orden relativo que tenel orden relativo que tenel orden relativo que teníííían originalmente los an originalmente los an originalmente los an originalmente los

elementos con claves iguales.elementos con claves iguales.elementos con claves iguales.elementos con claves iguales.

Listado de Algoritmos de

Ordenamiento

Listado de Algoritmos de

Ordenamiento

Counting SortEn el ordenamiento por conteo se asume que :En el ordenamiento por conteo se asume que :En el ordenamiento por conteo se asume que :En el ordenamiento por conteo se asume que :

* Los n elementos de entrada son enteros en el rango 0 y k.* Los n elementos de entrada son enteros en el rango 0 y k.* Los n elementos de entrada son enteros en el rango 0 y k.* Los n elementos de entrada son enteros en el rango 0 y k.

* Si k = O(n), el algoritmo corre en tiempo O(n).* Si k = O(n), el algoritmo corre en tiempo O(n).* Si k = O(n), el algoritmo corre en tiempo O(n).* Si k = O(n), el algoritmo corre en tiempo O(n).

* * * * IdeaIdeaIdeaIdea: Determinar para cada x, cuantos elementos menores : Determinar para cada x, cuantos elementos menores : Determinar para cada x, cuantos elementos menores : Determinar para cada x, cuantos elementos menores que x hay,que x hay,que x hay,que x hay,

por ejemplo, si existe 5 elementos menores que x, entonces x por ejemplo, si existe 5 elementos menores que x, entonces x por ejemplo, si existe 5 elementos menores que x, entonces x por ejemplo, si existe 5 elementos menores que x, entonces x debe irdebe irdebe irdebe ir

en la posicien la posicien la posicien la posicióóóón 6.n 6.n 6.n 6.

* El algoritmo * El algoritmo * El algoritmo * El algoritmo CountingCountingCountingCounting SortSortSortSort recibe un arreglo A[1..n] donde recibe un arreglo A[1..n] donde recibe un arreglo A[1..n] donde recibe un arreglo A[1..n] donde se encuentranse encuentranse encuentranse encuentran

los elementos a ordenar, un arreglos de salida donde los elementos a ordenar, un arreglos de salida donde los elementos a ordenar, un arreglos de salida donde los elementos a ordenar, un arreglos de salida donde quedaranquedaranquedaranquedaran

los datos de ordenados B[1..n] y un arreglo C[0..k] que los datos de ordenados B[1..n] y un arreglo C[0..k] que los datos de ordenados B[1..n] y un arreglo C[0..k] que los datos de ordenados B[1..n] y un arreglo C[0..k] que trabajatrabajatrabajatrabaja

como almacenamiento temporal.como almacenamiento temporal.como almacenamiento temporal.como almacenamiento temporal.

Counting Sort

Ejemplo De Counting Sort

Ejemplo De Counting Sort

Costo de Ejecucion De

Counting Sort

Radix Sort

• Una forma de ordenar los nUna forma de ordenar los nUna forma de ordenar los nUna forma de ordenar los núúúúmeros escoger el dmeros escoger el dmeros escoger el dmeros escoger el díííígito gito gito gito

menos significativo, ordenar cada uno de los resultados menos significativo, ordenar cada uno de los resultados menos significativo, ordenar cada uno de los resultados menos significativo, ordenar cada uno de los resultados

recursivamenterecursivamenterecursivamenterecursivamente y entonces combinarlos en ordeny entonces combinarlos en ordeny entonces combinarlos en ordeny entonces combinarlos en orden

Radix Sort• En el siguiente procedimiento se asume que los n En el siguiente procedimiento se asume que los n En el siguiente procedimiento se asume que los n En el siguiente procedimiento se asume que los n

elementos de arreglo elementos de arreglo elementos de arreglo elementos de arreglo AAAA tiene d dtiene d dtiene d dtiene d díííígitos, donde el dgitos, donde el dgitos, donde el dgitos, donde el díííígito 1 gito 1 gito 1 gito 1

es de inferior orden orden y el des de inferior orden orden y el des de inferior orden orden y el des de inferior orden orden y el díííígito d de alto ordengito d de alto ordengito d de alto ordengito d de alto orden

• El algoritmo El algoritmo El algoritmo El algoritmo RadixRadixRadixRadix SortSortSortSort se usa para ordenar registros se usa para ordenar registros se usa para ordenar registros se usa para ordenar registros

cuya clave es la composicicuya clave es la composicicuya clave es la composicicuya clave es la composicióóóón de varios campos por n de varios campos por n de varios campos por n de varios campos por

ejemplo (aejemplo (aejemplo (aejemplo (aññññoooo----mesmesmesmes----ddddíííía).a).a).a).

Bucket Sort• Distribuye todos los elementos a ordenar entre un Distribuye todos los elementos a ordenar entre un Distribuye todos los elementos a ordenar entre un Distribuye todos los elementos a ordenar entre un

nnnnúúúúmero finito de casilleros. Cada casillero smero finito de casilleros. Cada casillero smero finito de casilleros. Cada casillero smero finito de casilleros. Cada casillero sóóóólo puede lo puede lo puede lo puede contener los elementos que cumplan unas determinadas contener los elementos que cumplan unas determinadas contener los elementos que cumplan unas determinadas contener los elementos que cumplan unas determinadas condiciones.condiciones.condiciones.condiciones.

El algoritmo contiene los siguientes pasos:El algoritmo contiene los siguientes pasos:El algoritmo contiene los siguientes pasos:El algoritmo contiene los siguientes pasos:

1.1.1.1. Crear una colecciCrear una colecciCrear una colecciCrear una coleccióóóón de casilleros vacn de casilleros vacn de casilleros vacn de casilleros vacííííos os os os

2.2.2.2. Colocar cada elemento a ordenar en un Colocar cada elemento a ordenar en un Colocar cada elemento a ordenar en un Colocar cada elemento a ordenar en un úúúúnico casillero nico casillero nico casillero nico casillero

3.3.3.3. Ordenar individualmente cada casillero Ordenar individualmente cada casillero Ordenar individualmente cada casillero Ordenar individualmente cada casillero

4.4.4.4. Devolver los elementos de cada casillero concatenados Devolver los elementos de cada casillero concatenados Devolver los elementos de cada casillero concatenados Devolver los elementos de cada casillero concatenados por ordenpor ordenpor ordenpor orden

Ejemplo De Bucket Sort

Bucket Sort

Bucket Sort

Bucket Sort

Medianas y Ordenes

Estadísticas

ORDEN ESTADISTICO:

• i-esimo orden estadístico es el i-esimomás pequeño elemento de un conjunto de n elementos .

• Por ejemplo, el mínimo de un conjunto de elementos es el primer orden estadístico (i = 1), y el máximo es el n-ésimo orden estadístico (i = n).

MEDIANA

• Una mediana , informalmente, es el “punto medio”; de una serie.

• Si n es impar, la mediana es única, que se producen en i = (n + 1) / 2.

• Si n es par, hay dos medianas, ocurriendo a i=n/2 y i=(n/2) +1.

• Por lo tanto, independientemente de la paridad de n, se producen las medianas en:

• i=[n /2] (mediana de la parte inferior o mediana inferior) y

• i=�(n/2)+1� (mediana de la parte superior o mediana superior ).

• Llamaremos “la mediana” a la mediana inferior.

• se aborda el problema de la selecciónde i-ésimo orden estadístico a partir de un conjunto de n distintos números.

• Suponemos por conveniencia que el conjunto contiene números distintos, aunque prácticamente todo lo que hacemos se extiende a la situación en la que un conjunto contiene repetidos valores.

• examinamos el problema de la selección de los mínimos y máximos de un conjunto de elementos.

• A continuación, veremos un simple algoritmo general de selección con una duración de O(n) en el caso promedio.

• Por último, veremos un poco más complicada un algoritmo general de selección con límites de tiempo de O(n) en el peor de los casos.

El problema de selección puede ser especificado formalmente de la siguiente manera:

• Entrada: Un conjunto A de n números diferentes y un número i, con 1 ≤ i ≤ n.

• Salida: El elemento x de A que es más grande que exactamente i - 1 otros elementos en A. En otras palabras, el elemento más pequeño de A.

• El problema de selección puede ser resuelto en tiempo O(n lgn). – Ordenar los números usando un tiempo

O(n lgn) algoritmo, tales como Merge Sorto heapsort.

– Luego, retorna el i-ésimo elemento en el arreglo ordenado.

• Sin embargo, existen algoritmos más rápido.

Máximos y mínimos:

• ¿Cuántas comparaciones son necesarias para determinar el mínimo de un conjunto de n elementos?

• Podemos fácilmente obtener un límite superior de n - 1 comparaciones: – Examinar cada uno de los elementos, a su vez, y llevar un registro de la más pequeña.

• Esto es lo mejor que podemos hacer, porque cada uno de los elementos, excepto el mínimo, debe ser comparado con un elemento más pequeños por lo menos una vez.

Sea un arreglo A[1..n]

MÍNIMO (A)

mini ← A [1]; (1)

para i ← 2 a longitud[A] (2)

hacer si mini > A [i] (3)

entonces mini ← A [i]; (4)

devolver mini (5)

• Es lo mejor que podemos hacer?

• Sí, puesto que podemos obtener un límite inferior de n-1 comparaciones para el problema de determinar el mínimo.

• Piense en cualquier algoritmo que determina el mínimo como un torneo entre los elementos. Cada comparación es un partido en el torneo en el que el menor de los dos elementos gana. La observación clave es que cada elemento menos el ganador debe perder al menos en un partido.

• Por lo tanto, n - 1 comparaciones son necesarias para determinar el mínimo, y el algoritmo mínimo es optimo con respecto al numero de comparaciones realizadas.

Minimos y maximos simultaneos

• Algunas aplicaciones requieren a la vez el mínimo y el máximo de un conjunto de elementos.

• Por ejemplo, un programa de gráficos a escala puede tener un conjunto de (x, y) de datos en una pantalla rectangular. Para ello, el programa debe encontrar primero el mínimo y máximo de cada coordenada.

• Un simple algoritmo encontrara el mínimo y el máximo cada uno independientemente. Habrá n-1comparaciones para el mínimo y n-1comparaciones para el máximo, para un total de 2n - 2 comparaciones. Esto resultara en tiempo (n).

• De hecho, a lo sumo 3n/2 comparaciones son necesarias, para encontrar tanto el mínimo y máximo: – Mantener el mínimo y el máximo de elementos que se observan hasta el momento.

– No comparar cada uno de los elementos a la mínima y máxima por separado.

– Procesar los elementos en parejas.

– Comparar los elementos de un par con los demás.

– A continuación, comparar el elemento más grande con el mayor hasta el momento, y comparar el elemento menor con el mínimo hasta el momento.

• Esto conduce a comparaciones sólo de 3 por cada 2 elementos.

• Configuración de los valores iniciales para el min y max depende de si n es impar o par. – Si n es par, comparar los 2 primeros elementos y asigne el más grande al máximo y los más pequeños al mínimo. Entonces proceso el resto de los elementos de dos en dos.

– Si n es impar, establecer tanto el máximo y mínimo para el primer elemento. Luego, proceso el resto de los elementos en parejas.

El análisis del número total de comparaciones

• Si n es par, hacemos la 1 comparación inicial y luego 3(n-2)/2comparaciones más. – # de comparaciones = (3n/2) -2

• Si n es impar, que hacemos 3(n-1)/2 comparaciones.

En cualquier caso, el número máximode comparaciones es ≤ 3n / 2.

• Ejercicio: Demuestre que el segundo

elemento más pequeño de n elementos

puede ser encontrado con n + [lg n] - 2

comparaciones en el peor caso.

(Sugerencia: también encuentra el

elemento más pequeño.)

• El más pequeño de n números puede ser encontrado con n-1 comparaciones para guiar un torneo como sigue:

• - Compare todos los números en pares. Sólo el más pequeño de cada par posiblemente podría ser el más pequeño de los n, así es que el problema se ha reducido a encontrar el más pequeño de n/2 números. Compare esos números en pares, hasta que aya simplemente un número a la izquierda, el cual será la respuesta.

A lo sumo lg n (altura del árbol de

comparaciones) los elementos fueron

comparados con el más pequeño,

entonces encontrar el más pequeño de

estas toma lg n - 1 comparaciones en el

peor caso