Selección directa “Heapsort”

Slides:



Advertisements
Presentaciones similares
Ordenamiento, Heapsort y Colas de prioridad
Advertisements

Estructura de Datos En C++
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
Algoritmos de Ordenamiento y Complejidad
Programa de Estudios por Competencias “Estructuras de Datos” Programa educativo: “Ingeniería en Computación” Área de docencia: Programación e Ingeniería.
Algoritmos voraces Códigos de Huffman. Descripción del problema Tenemos un archivo de entrada. Asumiremos que el archivo está compuesto de bytes (enteros.
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: ESTRUCTURAS DE DATOS Créditos institucionales.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Escuela de Ciencias Básicas Tecnologías e Ingeniería INGENIERÍA INDUSTRIAL PRESENTACION DEL CURSO ADMINISTRACION DE INVENTARIOS Ing.Esp. Msc. César.
SECUENCIAS DIDACTICAS CON REDA LA ESCALA INTEGRANTES: GENARO ROJAS ROJAS JORGE ISMAEL VALLEJO RENE EDUARDO DULCE.
Diseño, implementación y aplicación de un proceso para evaluación diagnóstica en las asignaturas contables en la Universidad Tecnológica de León.
Búsqueda Binaria Castillo Soria Luis Fernando Méndez Tinajero Armando Pérez Ramos Susana.
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
TEMA 1. COMPETENCIAS DEL PROFESORADO EN EL MANEJO DE LAS TIC
REFERENCIAS BIBLIOGRAFICAS
Universidad autónoma del estado de México
RELACIÓN MÉTODO-CONTENIDOS
¿QUÉ ES? Adobe® Captivate® 3 es una poderosa herramienta de creación de aprendizaje en línea para crear y entregar simulaciones basadas en el ordenador.
ESTRATEGIAS DE ENSEÑANZA
Nuevas tecnologías aplicadas en el proceso enseñanza aprendizaje en la asignatura de tecnología Materia Comunicación Educativa Héctor Poletti García.
APRENDIZAJE BASADO EN PROBLEMAS ABP
Análisis y catalogación de las fuentes que definen las competencias demandadas en el campo de la Interacción Persona-Ordenador Raquel Lacuesta Jesús Gallardo.
Universidad Autónoma del Estado de México
Marianela Hernández Mendoza
Ingeniería en Sistemas
“POLIMORFISMO PARAMETRICO”
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
Montículos Binarios (Binary Heaps)
Complejidad Programación II de febrero de 2009.
Unidad 3: Eficiencia de Algoritmos Tema VI: Ordenamiento.
Listas Dinámicas.
Continuación Unidad 4. Control de flujo
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.
Competitividad y Gestión educativa
Continuación Unidad 4. Control de flujo
Seminario de titulación 2
Introducción a las estructuras de datos
Á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.
Agentes que planifican. 1. Introduccion En la actualidad todas la mayoría de actividades en un empresa o compañía, como en el hogar o el medio ambiente.
Cover Análisis y diseño de sistemas 7. Métricas en el proceso de software personal.
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
Método de ordenamiento SHELL Aparicio Pérez Antonio Habacuc Domínguez Hernández Jonathan Gallegos Matinés Josué Roberto Rincón Solís Adriana Elizabeth.
Curso de Programación Estructurada
Fundamentos de Informática
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Listas ligadas Dra. María de Lourdes López García
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
INTRODUCCIÓN A LA PROGRAMACIÓN ABRAHAM SOPLA MASLUCÁN MAESTRO EN CIENCIAS DE LA COMPUTACIÓN INSTITUTO TECNOLÓGICO DE MONTERREY.
PLANIFICACIÓN DE LA CLASE “INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Ing. Mariana Zúñiga Yáñez UNIVERSIDAD AUTÓNOMA “JUAN MISAEL SARACHO”
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Árboles Binarios Estructuras de Datos.
FUNDAMENTOS DE PROGRAMACIÓN (IS ) SESIÓN 1 CONCEPTOS BASICOS SOBRE PROGRAMACIÓN.
Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel
INTRODUCCIÓN A LA INFORMÁTICA
Implementación de cursos virtuales para la disciplina Sistemas de Telecomunicaciones en la Plataforma Moodle Autor:. Pytsou-Guychel Engoua Tutor:. Yudisleidy.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
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.
ORDENAMIENTO POR EL MÉTODO DEL SHAKER SORT (SACUDIDA)
Estrategia algorítmica
Ordenación Por Inserción
UNIVERSIDAD AÚTONOMA DE SINALOA “Facultad de Informática Culiacán”
UNIVERSIDAD Autónoma DE SINALOA
Transcripción de la presentación:

Selección directa “Heapsort” Universidad Autónoma del Estado de México Centro Universitario UAEM Ecatepec Programa de Estudios por Competencias “Estructuras de Datos” Programa educativo: “Ingeniería en computación” Área de docencia: Programación e Ingeniería de Software Créditos: 8. Semestre 2016-B Tema: Unidad 3. Árboles Binarios de Búsqueda. Selección directa “Heapsort” Autora: Dra. Ana Luisa Ramírez Roja.

ÍNDICE PRESENTACIÓN UBICACIÓN ESPACIAL DE LA ASIGNATURA OBJETIVOS DE LA ASIGNATURA CONOCIMIENTOS GUIÓN EXPLICATIVO ÁRBOLES BINARIOS DE BÚSQUEDA “EAPSORT” Antecedentes Definición Características Algoritmo Ejemplos Programa CONCLUSIONES REFERENCIAS BIBLIOGRÁFICAS

1. Presentación EL ESTUDIO DE LA ESTRUCTURA DE DATOS, SIN DUDA ES UNO DE LOS MÁS IMPORTANTES DENTRO DE LAS CARRERAS RELACIONADAS CON LA COMPUTACIÓN, YA QUE EL CONOCIMIENTO EFICIENTE DE LAS ESTRUCTURAS DE DATOS SUELE SER VITAL EN LA FORMACIÓN DE LOS ALUMNOS DEBIDO A LA TRASCENDENCIA QUE UN APRENDIZAJE TEÓRICO-PRÁCTICO DE LAS MISMAS SUPONDRÁ PARA SU CARRERA. LAS ESTRUCTURAS DINÁMICAS NOS PERMITEN CREAR ESTRUCTURAS DE DATOS QUE SE ADAPTEN A LAS NECESIDADES REALES A LAS QUE SUELEN ENFRENTARSE NUESTROS PROGRAMAS. PERO NO SÓLO ESO, TAMBIÉN NOS PERMITIRÁN CREAR ESTRUCTURAS DE DATOS MUY FLEXIBLES, YA SEA EN CUANTO AL ORDEN, LA ESTRUCTURA INTERNA O LAS RELACIONES ENTRE LOS ELEMENTOS QUE LAS COMPONEN.

2. Ubicación espacial de la Unidad de aprendizaje

2. Ubicación espacial de la Unidad de aprendizaje

3. Objetivo General: Conocer, analizar y aplicar estructuras de datos estáticas y dinámicas mediante programas para la solución de problemas informáticos.

4. Conocimientos: Aplicar la estructura de datos árbol en el desarrollo de soluciones a problemas informáticos.

5. Guion Explicativo El proceso de enseñanza-aprendizaje se realizará mediante sesiones de explicación temática de los diferentes métodos de ordenamiento, como antecedentes temáticos para dar paso a la explicación visual y expositiva complementaria del tema con este material de solo visión proyectable, dando pauta a la realización de los ejercicios y prácticas de laboratorio que complementen lo visto en el aula.

6. ÁRBOLES BINARIOS DE BÚSQUEDA “HEAPSORT” (Algoritmo de ordenamiento ý búsqueda mediante el método de Heapsort o Selección Directa. HEAPSORT

ANTECEDENTES… Heapsort de Williams (1964). Nace como una sofisticación de selección directa. La idea sigue siendo la misma (buscar en la zona desordenada e insertar en la ordenada), pero con una mejora sustancial en el proceso de búsqueda de la zona desordenada.

Definición El algoritmo emplea una estructura especial denominada montículo (“heap” en inglés, de ahí el nombre del algoritmo).

Definición… Está basado en el uso de un tipo especial de árbol binario (llamado apilamiento) para estructurar el proceso de ordenamiento. La estructura de ramificación del árbol conserva el número de comparaciones necesarias en: O(n log n).

Consiste en ordenar en un montículo y luego extraer del nodo que queda como raíz en sucesivas iteraciones obteniendo el conjunto ordenado.

CARACTERÍSTICAS… Es un algoritmo que se construye utilizando las propiedades de los montículos binarios. El orden de ejecución para el peor caso es O(N·log(N)), siendo N el tamaño de la entrada. Teóricamente es más rápido que los algoritmos de ordenación vistos hasta este momento, en la práctica es más lento que el algoritmo de ordenación de Shell utilizando la secuencia de incrementos de Sedgewick.

¿COMO FUNCIONA?... Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo y luego extraer el nodo que queda como raíz en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima siempre (depende de como se defina) contendrá el mayor o menor elemento del montículo.

A cada elemento de la mitad superior del array (posiciones 0,1, A cada elemento de la mitad superior del array (posiciones 0,1,...,N/2) se le aplica un filtrado descendente se "baja" el elemento por el árbol binario hasta que tenga dos hijos que cumplan con el orden del montículo. Esto bastará para hacer que el array cumpla con ser un montículo binario.

Fases del algoritmo fase de construcción de un montículo La implementación del almacén de datos en el montículo (heap), pese a ser conceptualmente un árbol, puede realizarse en un vector de forma fácil. Cada nodo tiene dos hijos y por tanto, un nodo situado en la posición i del vector, tendrá a sus hijos en las posiciones 2 x i, y 2 x i +1 suponiendo que el primer elemento del vector tiene un índice = 1. Es decir, la cima ocupa la posición inicial del vector y sus dos hijos la posición segunda y tercera, y así, sucesivamente.

Fases del algoritmo fase de extracción sucesiva de la cima del montículo En la fase de ordenación, el intercambio ocurre entre el primer elemento del vector (la raíz o cima del árbol, que es el mayor elemento del mismo) y el último elemento del vector que es la hoja más a la derecha en el último nivel. El árbol pierde una hoja y por tanto reduce su tamaño en un elemento. El vector definitivo y ordenado, empieza a construirse por el final y termina por el principio.

Numeración de los nodos Ejemplo paso a paso Contenido de los nodos Recordemos que para construir y numerar el árbol es con base en la prioridad de los nodos (primero nodo izquierdo y luego derecho) Numeración de los nodos

Comparo e intercambio el montículo, si este es menor Revisemos ahora y recuperemos la condición del heap entre los nodos 1 y 5 Comparo e intercambio el montículo, si este es menor

EJEMPLOS… Ejemplo 1:  Supongamos que tenemos una serie de números desordenada: 10, 5, 7, 9, 13, 20, 50,45 Esta lista la acomodamos en un árbol donde cada padre tiene 2 hijos

Ahora se intercambian los números hasta que el padre sea mayor que sus hijos: Después el primer elemento del árbol es el primero en agregarse al vector ordenado 50 Ahora el último elemento del árbol pasa a ser la raíz principal:

Y se vuelven a acomodar los elementos del árbol hasta que quede listo el vector ordenado. Nuevo Vector: 45, 50.

Nuevo Vector: 20, 45, 50 Nuevo Vector: 13, 20, 45, 50

Vector: 9, 10, 13, 20, 45, 50 Vector: 7, 9, 10, 13, 20, 45, 50 Al ser el último elemento dentro del árbol, el número 5 se queda en el vector ordenado como el primer elemento, dando como resultado el vector ordenado: 5, 7, 9, 10, 13, 20, 45, 50.

EJEMPLO 2: Supongamos que tenemos una serie de números desordenada: 80, 80, 50, 60, 10, 30, 5, 3 Esta lista la acomodamos en un árbol donde cada padre tiene 2 hijos:

Después el primer elemento del árbol es el primero en agregarse al vector ordenado 80 Ahora el último elemento del árbol pasa a ser la raíz principal: Y se vuelven a acomodar los elementos del árbol hasta que quede listo el vector ordenado

Vector: 80, 80 Vector: 60, 80, 80

Vector: 50, 60, 80, 80 Vector: 30, 50, 60, 80, 80

Vector: 10, 30, 50, 60, 80, 80 Vector: 5, 10, 30, 50, 60, 80, 80 Al ser el último elemento dentro del árbol, el número 3 se queda en el vector ordenado como el primer elemento, dando como resultado el vector ordenado: 3, 5, 10, 30, 50, 60, 80, 80.

EJEMPLO 3: Supongamos que tenemos una serie de números desordenada: 40, 9, 10, 8, 7, 2, 90, 50 Esta lista la acomodamos en un árbol donde cada padre tiene 2 hijos:

Ahora se intercambian los números hasta que el padre sea mayor que sus hijos: Después el primer elemento del árbol es el primero en agregarse al vector ordenado 90 Ahora el último elemento del árbol pasa a ser la raíz principal:

Y se vuelven a acomodar los elementos del árbol hasta que quede listo el vector ordenado

Vector: 40, 50, 90 Vector: 10, 40, 50, 90

Vector: 9, 10, 40, 50, 90 Vector: 8, 9, 10, 40, 50, 90 Vector: 7, 8, 9, 10, 40, 50, 90 Al ser el último elemento dentro del árbol, el número 2 se queda en el vector ordenado como el primer elemento, dando como resultado el vector ordenado: 2, 7, 8, 9, 10, 40, 50, 90

descripción en pseudocódigo del algoritmo function heapsort(array A[0..n]): montículo M integer i := 124578 for i = 0 .. n: insertar_en_monticulo(M, A[i]) for i = 0..n: A[i] = extraer_cima_del_monticulo(M) return A

CÓDIGO DE IMPLEMENTACIÓN:

¿Dudas?

7. Conclusiones

Video de apoyo: https://www.cs.usfca.edu/~galles/visualization/HeapSort.html

8. Referencias Bibliográficas JOYANES, AGUILAR LUIS Y ZAHONERO, MARTÍNEZ IGNACIO. ESTRUCTURA DE DATOS. ALGORITMOS, ABSTRACCIÓN Y OBJETOS. EDIT MC GRAW-HILL, MADRID, 1998. JOYANES, AGUILAR LUIS. FUNDAMENTOS DE PROGRAMACIÓN. 2ª ED. EDIT. MCGRAW-HILL, MADRID, 1996. 3) LANGSAM, YEDIDYAH; AUGENSTEIN, MOSHE y TENEMBAUM, AARON M. . ESTRUCTURAS DE DATOS EN C 2ª ED. EDIT. PRENTICE-HALL . MÉXICO, 1996. 4) CAIRÓ, OSVALDO y GUARDATI SILVIA. ESTRUCTURAS DE DATOS. EDIT. McGRAW-HILL. MÉXICO, 1992. 5) DALE, NELL y LILLY SUSAN. PASCAL Y ESTRUCTURAS DE DATOS. 2ª ED. EDIT. McGRAW-HILL. MÉXICO, 1992. Plan 1998 Programas Ingeniería en Computación 6) LIPSCHUTZ SEYMOUR. ESTRUCTURA DE DATOS. EDIT. McGRAW-HILL, SERIE SCHAUM. MÉXICO,1992. G) BRASSARD, P. BRATLEY. FUNDAMENTOS DE ALGORITMIA,. EDIT. PRENTICE may. ESPAÑA 1998.

Gracias por su atención