Curso de Programación Estructurada

Slides:



Advertisements
Presentaciones similares
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Advertisements

Estructura de Datos Lineales
Ordenamiento, Heapsort y Colas de prioridad
Ordenación y Búsqueda.
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
Un grafo consta de un conjunto de vértices y un conjunto de aristas. Cada arista de un grafo se especifica mediante un par de vértices. Denotemos al conjunto.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
MATEMÁTICAS NM1 CONJUNTOS NUMÉRICOS. CONJUNTOS NUMÉRICOS 1 Matemáticas NM 1 Números Conjuntos Numéricos Números Naturales Números Enteros Regularidades.
BÚSQUEDA DE SOLUCIONES Soluciones no Informadas (cont.) Dra. Myriam Hernández A.
Búsqueda Binaria Castillo Soria Luis Fernando Méndez Tinajero Armando Pérez Ramos Susana.
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
Ingreso , proceso y salida de datos
MATEMÁTICA DISCRETA Y LÓGICA 1
Métodos para ejecutar la operación de reunión (join)
Repaso Programacion en C
Tarea II Matemáticas Francisco Raul Gandara Villaverde
ESTRUCTURAS CONDICIONALES
PHP Hypertext Preprocessor
Universidad Autónoma del Estado de México
El conjunto de los números naturales
Ingeniería en Sistemas
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
METODOLOGIA #include <stdio.h> #include <conio.h> main() {
Montículos Binarios (Binary Heaps)
TAD’s ARBOLES GENERALIZADOS
Estructuras de Datos Recursividad.
Complejidad Programación II de febrero de 2009.
5. Fundamentos de algoritmos
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
Unidad 7: Nivel Interno Algunos Conceptos Importantes
Tema 6. Conceptos básicos de programación (Clase 2)
TUTORIAL PSeint.
CREAR DIAGRAMA DE FLUJO
MATEMÁTICA DISCRETA Y LÓGICA 1
Tema 3 Fundamentos y diseño de algoritmos
Estadística Básica Curso de Estadística Básica MCC. Manuel Uribe Saldaña MCC. José Gonzalo Lugo Pérez SESION 3 MEDIDAS DE TENDENCIA CENTRAL Y MEDIDAS DE.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Índice temático 2.1 Análisis de problemas. 2.2 Representación de algoritmos: gráfica y pseudocódigo. 2.3 Diseño de algoritmos aplicados a problemas 2.4.
MATEMÁTICAS NM1 CONJUNTOS NUMÉRICOS. CONJUNTOS NUMÉRICOS 1 Matemáticas NM 1 Números Conjuntos Numéricos Números Naturales Números Enteros Regularidades.
Estructuras de control Resolución de problemas y algoritmos
HERRAMIENTAS DE PROGRAMACIÓN
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
Métodos de búsqueda. Introdución Esta operación se utiliza basicamente para recuperar datos que se habian almacenado con anticipación. El resultado puede.
MATEMÁTICAS NM1 CONJUNTOS NUMÉRICOS.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
MATEMÁTICAS NM1 CONJUNTOS NUMÉRICOS.
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Curso de Programación Estructurada
Tema 7 Arreglos Parte 3.
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Tema 6. Conceptos básicos de programación (Clase 2)
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Minimum Spanning Tree (Árbol de Expansión Mínima)
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof.
Espacio de estados: un problema se divide en un conjunto de pasos de resolución desde el inicio hasta el objetivo. Los estados y su relación de accesibilidad.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
UNIDAD IV ESTRUCTURAS DE DESICIÓN LÓGICA (Simple, Doble, Anidada o Múltiple ) Msc. Rina Arauz.
UNIDAD II Generalidades sobre Algoritmos
Estrategia algorítmica
Grafos. Concepto: Un Grafo no es más que un conjunto de nodos o vértices que se encuentran relacionados con unas aristas. Además, los vértices tienen.
Transcripción de la presentación:

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.

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.

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

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!

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.

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

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

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]) 5. menor=j; 6. temp=A[menor]; 7. A[menor]=A[i]; 8. A[i]=temp; }

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.

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.

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;

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

Á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.

Á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.

Á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.

Á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).

Árbol de decisión

Á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.

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

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.

¿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) = 2 T (n/2) + n de otra forma 0 si n=1 ordena las dos mitades unión/merge

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

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

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.

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 0+1+2+…+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

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