La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de Programación Estructurada

Presentaciones similares


Presentación del tema: "Curso de Programación Estructurada"— Transcripción de la presentación:

1 Curso de Programación Estructurada
Maestría en Robótica y Manufactura Avanzada Curso de Programación Estructurada Dra. L. Abril Torres Méndez Saltillo Clase 4: Algoritmos de Ordenamiento Periodo: Sep-Dic, 2010.

2 Algoritmos de ordenamiento
Analizaremos el desempeño de diferentes algoritmos de ordenamiento de números, cadenas de números o caracteres. Determinar cuál algoritmo es más eficiente para un problema particular dado.

3 a(1), a(2),…,a(n) tal que a(i)  a(i+1) 1 i<n
Ordenamientos Dada una secuencia de n datos a1, a2,…,an tomados de un conjunto con orden lineal, el ordenamiento consiste en encontrar una permutación  de los elementos que asocie la secuencia dada en una secuencia no decreciente: a(1), a(2),…,a(n) tal que a(i)  a(i+1) 1 i<n

4 a(4), a(1), a(5), a(3), a(2)
Ordenamientos Para la entrada 2,5,4,1,3 la permutación resultante que produce el ordenamiento es: a(4), a(1), a(5), a(3), a(2) 1  2  3  4  5 Para una secuencia de n elementos, el número máximo de permutaciones considerando n elementos es: n!

5 Clasificación Internos. Los datos residen en la memoria principal y son pocos. Externos. Los datos residen en la memoria secundaria (por lo general son muchos). Datos con estructura. Aprovechan la estructura de los datos a ordenar. Datos sin estructura. Se asume que los datos no tienen estructura.

6 Algoritmos de Ordenamiento
Es necesario realizar comparaciones entre elementos Los más clásicos son: Ordenamiento por selección Ordenamiento por inserción MergeSort Heapsort Quicksort

7 Ordenamiento por selección
Seleccionar de manera repetida el elemento más pequeño que queda, intercambiándolo con el primero en caso de que sea menor: SOYESTUDIANTEDELCINVESTAV AOYESTUDISNTEDELCINVESTAV AAYESTUDISNTEDELCINVESTOV AACESTUDISNTEDELYINVESTOV AACDSTUEISNTEDELYINVESTOV

8 Ordenamiento por selección
1. for (i:=1; i<=(n-1); i++) { 2. menor=i; 3. for (j:=i+1; j<=n; j++) 4. if (A[j]<A[menor]) menor=j; 6. temp=A[menor]; 7. A[menor]=A[i]; 8. A[i]=temp; }

9 Ordenamiento por selección
El método es simple fuerza bruta, y requiere de comparaciones, y intercambios. (n-1)+(n-2)+ …+2+1=n2/2 n Como cada elemento se mueve a lo más una vez, este algoritmo es ideal para ordenar archivos con registros muy grandes y campos de ordenamiento pequeños.

10 Ordenamiento por inserción
Este es el que se usa en el juego de naipes: el elemento a ser considerado se inserta en el lugar apropiado en una secuencia ordenada. Desventaja: A veces hay que mover a la derecha muchos elementos. SOYESTUDIANTEDELCINVESTAV OSYESTUDIANTEDELCINVESTAV EOSYS EOSSYT EOSSTYU EOSSTUYD …etc.

11 Ordenamiento por inserción
1. for j = 2 to n (n es el total de números en A) 2. Key = A[j]; 3. i = j-1; 4. while (i > 0) y (A[i] > Key) { 5. A[i+1]=A[i]; 6. i=i-1; 7. } 8. A[i+1] = Key;

12 Ordenamiento por inserción
Este ordenamiento usa: Caso promedio: n2/4 comparaciones y n2/8 intercambios, Peor caso: el doble. (TAREA) Ventaja: es de orden lineal cuando los elementos están casi ordenados

13 Árboles Un árbol es un grafo dirigido acíclico que satisface las siguientes propiedades: Existe exactamente un vértice, llamado raíz, al que no llega ningún arco. Cada vértice excepto la raíz tiene exactamente un arco entrante. Existe un camino único de la raíz a cada vértice.

14 Árboles La profundidad del nodo v es la longitud del camino de la raíz a v. La profundidad del nodo raíz es cero. La altura de un árbol es la altura de la raíz al nodo más profundo. El nivel del nodo v en un árbol está indicado por su profundidad.

15 Árbol de decisión Consideración de las instrucciones de ramificación (condicionales). En los ordenamientos, es razonable considerar un modelo en el cual todos los pasos de progresión sean ramificaciones de dos vías basadas en una comparación entre dos cantidades.

16 Árbol de decisión La representación para un programa de ramificaciones es un árbol binario llamado árbol de decisión. Cada vértice interior representa una decisión. La prueba representada por la raíz se hace primero, y el control pasa, dependiendo del resultado, a uno de sus hijos. En general, el control continúa pasando de un vértice a uno de sus hijos hasta que se alcanza una hoja (salida).

17 Árbol de decisión

18 Árbol de decisión Lema. Un árbol binario de altura h tiene a lo más 2h hojas. Teorema. Un árbol para ordenar n elementos debe tener al menos n! hojas. Teorema. Un árbol de decisión para ordenar n datos tiene altura de al menos log n. Corolario. Cualquier algoritmo de ordenamiento por comparaciones requiere al menos de cn log n comparaciones para ordenar n datos para alguna c>0 y n grande.

19 MergeSort (enfoque: Divide y vencerás)
Ordena Une

20 MergeSort Mergesort es el caso típico de “divide y vencerás” y tiene la relación de recurrencia: T(n)= 2 T(n/2) + n es decir, 2n+O(logn) aún en el peor caso, pero requiere de espacio extra. El secreto está en que la unión de dos secuencias ordenadas se puede hacer en tiempo lineal.

21 ¿Cuánto tiempo toma MergeSort?
Análisis del MergeSort (sin realizar aún el pseudocódigo del algoritmo!) ¿Cuánto tiempo toma MergeSort? Cuello de botella = uniendo (y copiando) Unir dos arreglos de tamaño n/2 requiere ≤ n comparaciones T(N) = comparaciones para ordenar n elementos Asumir n es potencia de 2 Asumir que la unión requiere exactamente n comparaciones T(n) = T (n/2) n de otra forma si n=1 ordena las dos mitades unión/merge

22 Tiempo de ejecución? T(n) = n log (n)
Nota: el mismo número de comparaciones, independientemente si el arreglo está o no ordenado.

23 Prueba gráfica T(n) n 2(n/2) 4(n/2) … 2k(n/2k) n/2(2) T(n/2) T(n/2)
log2 n T(n/2k) n log2 n

24 Inducción Matemática Inducción matemática es una técnica de prueba poderosa y general en el área de las matemáticas discretas. Para probar que un teorema se cumple para todos los enteros k≥0. Caso base: probar que es verdadero para n=0. Hipótesis de inducción: asume que es verdadero para un valor de n arbitrario. Paso de inducción: mostrar que se cumple para n+1.

25 Inducción Matemática Ejemplo: 0+1+2+3+…+n = n(n+1)/2 para toda n≥0.
Prueba (por inducción matemática) Caso base (n=0): 0 = 0(0+1)/2 Hipótesis de inducción: asume …+n = n(n+1)/2 Paso de inducción: 0+1+…+n+n+1 = (0+1+…+n)+n+1 = n(n+1)/2 + n + 1 = (n+2)(n+1)/2

26 1er. Examen - Jueves Noviembre 11
Puntos a cubrir: Tipos de programación, ventajas y desventajas Escribir pseudocódigo para resolver un problema mediante un algoritmo y su análisis (complejidad del algoritmo) Obtención de la función recurrente de un algoritmo dado y su fórmula general o cerrada. Algoritmos de ordenamiento (variaciones y su análisis) A libro cerrado No calculadoras/computadoras 25


Descargar ppt "Curso de Programación Estructurada"

Presentaciones similares


Anuncios Google