1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.

Slides:



Advertisements
Presentaciones similares
DISTRIBUCION EN PLANTA.
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
CENTRAL Y DE DISPERSIÓN
Complejidad de Algoritmos
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Ordenamiento Radix Equipo 3 Arenas Sapien Jorge Iván
Método de Ford-Fulkerson
ALGORITMOS 2 DIGITALES II
METODO DE ORDENAMIENTO POR SELECCIÓN.
Solución de problemas por búsqueda inteligente
Algoritmos de ordenación
UNIVERSIDAD AUTONOMA METROPOLITANA
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Análisis y Diseño de Algoritmos
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
Unidad II Aplicaciones con Arreglos en Java y C++
Resolución de Problemas Método Simplex
Ordenamiento, Heapsort y Colas de prioridad
Análisis de Algoritmos
Single-Source Shortest Paths “Camino más corto desde/hacia una fuente”

Estructuras de Datos Arreglos.
Sistemas decimal, binario, octal y hexadecimal
Tablas de Hash.
Mt. Martín Moreyra Navarrete.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Búsqueda y ordenación Programación II 7-8 de enero de 2009.
Divide y vencerás 1. Método general.
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Tema 2: Parámetros Estadísticos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Manejo de Punteros y objetos en memoria dinámica en C++
4.  Métodos matemáticos.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1er. Sem
Medianas y Estadísticas de Orden
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
1. Desarrollo de Programas iterativos usando invariante
Agustín J. González ELO320: Estructura de Datos y Algoritmos
ELO3201 Análisis de Algoritmos (Cont.) Agustín J. González ELO320 1º sem 2004.
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
Análisis y Diseño de Algoritmos
Algoritmos de Ordenamiento y Complejidad
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
1 Single-Source Shortest Paths “Camino más corto desde/hacia una fuente” Agustín J. González ELO320: Estructura de Datos y Algoritmos 1.er. Sem
1 Análisis de algoritmos Generalidades Agustín J. González 1er. Sem
Análisis de Algoritmos
ELO3201 Análisis de Algoritmos (cont.) Agustín J. González ELO320 1º sem 2002.
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
1 Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Análisis de algoritmos Generalidades
Identificación de Sistemas El problema de la Identificación de Sistemas.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Ordenamiento en lenguaje c
Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.
Lenguaje de Programación Computación y Programación
Malla asegurada en fase (Phase Locked Loops)
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Complejidad Programación II de febrero de 2009.
Curso de Programación Estructurada
Transcripción de la presentación:

1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002

2 Idea 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). Exploraremos dos algoritmos: CountingSort y RadixSort. Estos algoritmos suponen un rango acotado para la entrada y logran hacer un ordenamiento en tiempo cercano a lineal.

3 CountingSort Asume que cada uno de los n elementos a ordenar es un entero en el rango 1 a k, k  n. La idea es determinar, para cada entrada x, el número de elementos menor que x. Así es posible ubicar x directamente en la posición dentro del arreglo. Se A[1..n] el arreglo de entrada. CountingSort utiliza un arreglo C[1..k] y genera el resultado en otro arreglo, digamos B[1..n]. 3 | 6 | 4 | 1 | 3 | 4 | 1 | 4 2 | 0 | 2 | 3 | 0 | 1 A C 2 | 2 | 4 | 7 | 7 | 8 C | | | | | | 4 | 2 | 2 | 4 | 6 | 7 | 8 B C | 1 | | | | | 4 | 1 | 2 | 4 | 6 | 7 | 8 B C

4 Algoritmo CountingSort(A,B,k) { for (i=1; i 0; j--) { B[C[A[j]]] = A[j]; C[A[j]] --; } }  (k)  (n)  (n+k) =  (n), k<n  (n)

5 Radix Sort La idea es ordenar los números dígito por dígito Se ordena desde el menos al más significativo. Cada vez se aplica CountingSort. Para ordenar d dígitos se toma un tiempo  (dn+dk)

6 Algoritmo Radix sort RadixSort(A, d) { for (i=1; i <= d; i++) use un ordenamiento estable para ordenar arreglo A sobre digito i; } Un algoritmo de ordenamiento es estable si el orden de elementos iguales es preservado. Cuando se usa CountingSort el costo en tiempo es  (dn+dk). Si k es acotado y d también, esto conduce a un tiempo  (n). Desgraciadamente countingSort requiere espacios de memoria adicionales al requerido para mantener los datos a ordenar. Por ello, si la capacidad de memoria es un factor importante, quicksort es preferible. Otra característica interesante de los algoritmos de ordenamiento es si el ordenamiento es el el lugar o requiere memoria adicional. Cómo es heapsort? Quicksort? Insertion sort? Mergesort?

7 Medianas y Estadísticas de Orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1 er. Sem. 2002

8 Conceptos La estadística de orden i-ésimo de un conjunto de n elementos es el elemento i-ésimo más pequeño. El mínimo es la estadística de primer orden. La mediana es el punto en la “mitad del camino” La mediana se ubicas en i=  (n+1)/2  e i=  (n+1)/2  Problema de selección: Entrada: un conjunto de n números y un número i 1<= i <= n Salida: El elemento x tal que es mayor que exactamente otros i-1.

9 Mínimo y máximo Mínimo(A) min = A[1  ; for (i=2; i A[i  ) min = A[i  ; Puede ser hecho en tiempo  (n). Problema de selección : Basta usar una forma adaptada de Randomized_Quicksort. En ésta sólo nos preocupamos de donde se encuentra la estadística del orden que buscamos. Randomized_Select(A, p,r,i) if (p==r) return A[p  ; q = Randomized_Partition(A,p,r); k = q -p+1; if (i <= k) return Randomized_Select(A,p,q,i); else return Randomized_Select(A, q+1, r, i-k); El tiempo de este algoritmo es  (n) en promedio y su peor caso es  (n 2 ).