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