Ordenamiento en Tiempo Lineal - Medianas y Ordenes Estadísticas

Anuncio
Ordenamiento en
Tiempo Lineal
Medianas y Ordenes
Estadí
Estadísticas
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 algoritmo que pone elementos de una lista o
un vector en una secuencia dada por una relació
relación
de orden
El problema del ordenamiento ha atraí
atraído gran
cantidad de investigació
investigación
BubbleSort fue analizado desde 1956
El ordenamiento de biblioteca se publicó
publicó por
primera vez en el 2004
Clasificación
•
•
•
Segú
Según el lugar donde se realice el ordenamiento
Por el tiempo en que tardan en realizar el
ordenamiento dadas entradas ya ordenadas o
inversamente ordenadas
Por estabilidad : un ordenamiento estable mantiene
el orden relativo que tení
tenían originalmente los
elementos con claves iguales.
Listado de Algoritmos de
Ordenamiento
Listado de Algoritmos de
Ordenamiento
Counting Sort
En el ordenamiento por conteo se asume que :
* Los n elementos de entrada son enteros en el rango 0 y k.
* Si k = O(n), el algoritmo corre en tiempo O(n).
* Idea:
Idea: Determinar para cada x, cuantos elementos menores
que x hay,
por ejemplo, si existe 5 elementos menores que x, entonces x
debe ir
en la posició
posición 6.
* El algoritmo Counting Sort recibe un arreglo A[1..n] donde
se encuentran
los elementos a ordenar, un arreglos de salida donde
quedaran
los datos de ordenados B[1..n] y un arreglo C[0..k] que
trabaja
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 nú
números escoger el dí
dígito
menos significativo, ordenar cada uno de los resultados
recursivamente y entonces combinarlos en orden
Radix Sort
•
En el siguiente procedimiento se asume que los n
elementos de arreglo A tiene d dí
dígitos, donde el dí
dígito 1
es de inferior orden orden y el dí
dígito d de alto orden
•
El algoritmo Radix Sort se usa para ordenar registros
cuya clave es la composició
composición de varios campos por
ejemplo (añ
(año-mesmes-día).
Bucket Sort
•
Distribuye todos los elementos a ordenar entre un
número finito de casilleros. Cada casillero só
sólo puede
contener los elementos que cumplan unas determinadas
condiciones.
El algoritmo contiene los siguientes pasos:
1. Crear una colecció
colección de casilleros vací
vacíos
2. Colocar cada elemento a ordenar en un único casillero
3. Ordenar individualmente cada casillero
4. Devolver los elementos de cada casillero concatenados
por 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-esimo
má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ón
de 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 Sort
o 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];
para i ← 2 a longitud[A]
hacer si mini > A [i]
entonces mini ← A [i];
devolver mini
(1)
(2)
(3)
(4)
(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-1
comparaciones para el mínimo y n-1
comparaciones 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)/2
comparaciones 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áximo
de 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
Descargar