Estructura de Datos Algoritmos II

De Computacion

El estudio de las Estructuras de Datos es sumamente importante, debido a la necesidad de manipular la información de manera adecuada y oportuna. El objetivo principal es el de procurar que los algoritmos aplicados funcionen en un adecuado tiempo de ejecución. Es por ello de la importancia de aprender acerca de las Estructuras de Datos, y de cómo manipular la información a través de ordenamientos, búsquedas, organización, métodos de acceso, etc. Esta guía está dedicada al estudio de las Estructuras de Datos y a dar una breve introducción al análisis de la eficiencia de algoritmos. El estudio de las Estructuras de Datos se hará desde algunos puntos de vista, analizándolos primero desde el punto de vista teórico pero sin perder de vista sus aplicaciones prácticas. En el primer bimestre nos centraremos en el estudio de temas importantes y básicos como son la recursividad y el estudio de archivos lo que permitirá introducirnos en el estudio de estructuras jerárquicas. El segundo bimestre, estudiaremos algunas estructuras jerárquicas que optimizan el tratamiento de registros para terminar con el estudio de grafos. Esta guía ha sido elaborada tratando de que la información en ella contenida se encuentre de la manera más entendible y amigable para los estudiantes, por lo cual estoy seguro que con su ayuda y la del libro base el estudiante superará fácilmente el reto planteado, buena suerte.

Referencias

http://www.conclase.net/c/edd/index.php?cap=007

http://www.monografias.com/trabajos10/esda/esda.shtml

http://dis.um.es/~ginesgm/temas/tema3-1/sld014.htm

http://articulos.conclase.net/arboles-b/

http://www.monografias.com/trabajos16/grafos/grafos.shtml

Tabla de contenidos



Objetivo General

Introducir al estudiante en la comprensión adecuada del manejo de las Estructuras de Datos y Algoritmos, en esencia en lo que se refiere al almacenamiento y procesamiento de información.

Objetivo Especificos

  • Conocer los pasos que siguen las funciones para realizar autollamadas y realizar el seguimiento de dichas funciones.
  • Conocer técnicas algorítmicas aplicando recursividad.
  • Conocer el tratamiento de archivos en C y C++.
  • Trabajar con algoritmos de ordenación en memoria y ordenación externa.
  • Estudiar las estructuras de datos más utilizadas.
  • Reconocer la naturaleza recursiva de las operaciones con árboles.
  • Conocer la eficiencia de los árboles de búsqueda.
  • Determinar el mejor algoritmo de almacenamiento en relación a la cantidad de datos.
  • Conocer los algoritmos utilizados para conservar el equilibrio de un árbol.
  • Definir un grafo e identificar sus componentes.
  • Conocer las operaciones básicas que se aplican sobre grafos.


Bibliografia

Texto Base

  • ALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez, 1ra Edición. Mc Graw Hill, 2004. España. ISBN 84-481-4077-X

Bibliografía Complementaria

  • PROGRAMACIÓN EN C++, Algoritmos, estructuras de datos y objetos, L. Joyanes Aguilar, Editorial Mc Graw-Hill, Madrid-España, 2000.

  • ESTRUCTURA DE DATOS, Algoritmos, abstracción y objetos. Luis Joyanes Aguilar e Ignacio Zahonero Martínez, Editorial McGraw-Hill, España, 1999.

Desarrollo del Aprendiza

Capitulo 1: Recursividad



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo5. Recursividad
Páginas122 – 160
Horas de estudio empleadas para el desarrollo del contenido10 horas

Propositos:

El propósito de este capítulo es introducir en el conocimiento de las funciones recursivas, diferencias, ventajas y desventajas frente a las funciones iterativas, entender los pasos que siguen los lenguajes de programación al llamar a subprogramas, hacer el seguimiento de una función que realiza llamadas recursivas, conocer técnicas algorítmicas aplicando recursividad, comparar la resolución de un mismo problema por iteración y por recursión.

Conceptos Clave:

  • RecursividadPropiedad que posee una función por la cual dicha función puede llamarse a sí misma
  • Parte recursiva:Es aquella sentencia encargada de realizar la llamada al proceso recursivo.

  • Componente Base:También conocida como condición de terminación, es una parte imprescindible de una función recursiva, ya que sin ella nunca se terminarían de realizar las autollamadas, y se terminaría por agotar la memoria de nuestro computador.

  • Recursión Directa:Cuando una función realiza un número determinado de llamadas a si misma hasta encontrar la condición de terminación de la recursión.

  • Recursión Indirecta:Cuando una función hace un llamado a otra, la que en un momento determinado hará un nuevo llamado a la función que la llamo en un principio.

Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
Cap 5. Introducción En este apartado se describe brevemente lo que significa la recursión, sus ventajas y desventajas frente a la iteración Proponga algún programa en el cual nos resulta más ventajoso utilizar recursividad que iteración.
5.1. Naturaleza de la recursividad Se amplía la descripción de la recursividad, así también, se trata algunos programas básicos en los cuales se trabaja utilizando la recursividad Realice una corrida manual de los programas presentados en este apartado (en sus dos modalidades), para entender las diferencias existentes en su funcionamiento.
5.2. Funciones recursivas Se estudia los tipos de recursividad existentes, así como las partes que la conforman. Elabore un programa con cada tipo de recursión.
5.3. Recursión versus iteración Se explica el trabajo y diferencia entre estos dos métodos, así como las directrices que nos servirán para escoger el método a utilizar según el programa a realizar. Plantee algunos problemas y evalúe que tipo de método de programación sería el más óptimo para su resolución.
5.4. Recursión infinita Explica el problema de prescindir del componente base en una función recursiva. Y se mencionan las partes fundamentales para su funcionamiento. Realice el problema propuesto en este apartado.
5.5. Algoritmos Divide y Vencerás Explica la facilidad de resolución de un problema al dividirlo en problemas más pequeños Revise los problemas planteados en este apartado, y de ser posible realice una corrida manual de ellos para su mejor entendimiento.
5.6 a 5.9 Casos de estudio Se presentan varios algoritmos y su resolución. Revise los casos propuestos en estos apartados.


Capitulo 2: Archivos (Ficheros)



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo7. Algoritmos de ordenación de archivos
Páginas200 – 235
Horas de estudio empleadas para el desarrollo del contenido20 horas

Propositos:

Este capítulo tiene como propósito introducir al estudiante en el conocimiento del tratamiento de archivos en C, procesar archivos de organización secuencial, procesar archivos de acceso directo, distinguir entre ordenación en memoria y ordenación externa, conocer los diferentes tipos de algoritmos de ordenación.

Conceptos Clave:

  • Registro:

    Se puede considerar a un registro como un tipo o colección de datos de tamaño fijo. Los campos de los registros pueden ser de diferentes tipos de datos.

  • Flujo:

    Conoceremos como flujo a la corriente de datos que fluyen entre un origen o fuente (productor) y un destino o sumidero (consumidor).

  • Acceso secuencial:

    Se refiere al acceso a un archivo según el orden de almacenamiento de sus registros, uno tras otro.

  • Acceso directo:

    Se refiere al acceso a un registro determinado, sin que ello implique la consulta de los registros precedentes.

Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
7.1. Archivos en C Se realiza una explicación completa acerca de el tratamiento de archivos en C, así como sus modos de tratamiento (acceso, flujo, apertura y cierre) Lea detenidamente este apartado y realice un programa en el cual se aplique la creación apertura y cierre de archivos
7.2. Lectura y escritura de archivos de texto En este capítulo ya se nos muestra como podemos trabajar con aquellos archivos que en el capítulo anterior aprendimos a abrir y cerrar En el programa creado en el ítem anterior, realice el ingreso y lectura de datos hacia y desde un archivo externo a nuestro programa.
7.3. Archivos binarios en C Explica las diferencias, ventajas y desventajas de trabajar con archivos binarios en lugar de archivos de texto. Así mismo se indican los parámetros necesarios para su tratamiento. Realice el mismo ejercicio planteado en los puntos anteriores, pero utilizando archivos binarios.
7.4. Ordenación externa: Métodos de ordenación Nos presenta información muy necesaria de conocer previa al estudio de los diferentes métodos de ordenación externa. Lea el apartado en mención, ya que es importante para la comprensión de los siguientes puntos.
7.5. Método de mezcla directa (mezcla simple) Explicación y codificación del algoritmo. Lea el apartado, realice la codificación indicada y realice una corrida manual del programa.
7.6. Fusión Natural Explicación y codificación del algoritmo. Lea el apartado, realice la codificación indicada y realice una corrida manual del programa.
7.7. Mezcla equilibrada múltiple Explicación y codificación del algoritmo. Lea el apartado, realice la codificación indicada y realice una corrida manual del programa.
7.8. Método polifásico de ordenación externa Explicación y codificación del algoritmo. Lea el apartado, realice la codificación indicada y realice una corrida manual del programa.


Capitulo 3: Estructuras Jerárquicas y Árbol Binario de Búsqueda



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo14. Árboles, árboles binarios y árboles ordenados
Páginas415 – 450
Horas de estudio empleadas para el desarrollo del contenido10 horas

Propositos:

A través de este capítulo, usted aprenderá a estructurar datos en orden jerárquico, distinguir los tipos de árboles binarios, recorrer árboles en tres formas diferentes, representar árboles utilizando estructuras enlazadas, evaluar expresiones algebraicas, definir y construir un árbol binario de búsqueda.

Conceptos Clave:

  • Jerarquía:

    Se utiliza esta terminología ya que los árboles están formados de tal manera que partiendo desde un nodo inicial, se va descendiendo por varios subniveles, los que le crea algunos rangos de jerarquía.

  • Raíz:Será conocido con este nombre el primer nodo que dará inicio a la formación de un nuevo árbol.
  • Hoja:Con este nombre se conocerán a aquellos nodos que no tengan más descendencia.
  • Recorrido:Serán las maneras de cómo vamos a presentar los datos almacenados en los árboles.


Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
Cap 14. Introducción En este apartado se describe brevemente las diferentes utilizaciones de los árboles en la computación. Analice esta lectura y piense en algunos otros usos que se le pudiera dar, aparte de los ya nombrados.
14.1. Árboles generales Se hace una relación de lo que son los árboles y como se los representa en la vida diaria, así mismo se explica la terminología que se utilizará en adelante en el tratamiento de árboles. Realice algunos gráficos representando este tipo de árboles e identifique cada uno de los términos en ellos.
14.2 Árboles binaros. Tad árbol binario. Se especifican las características propias de los árboles binarios, así como algunos términos que serán propios de este tipo de árboles. Analice los ejemplos planteados en este apartado y realice los ejercicios ahí propuestos.
14.3 Estructura de un árbol binario Se muestra como estará estructurados los diferentes elementos que formarán los árboles binarios. Así mismo su representación en lenguaje C. Revise los programas ahí indicados y luego codifíquelos en lenguaje C.
14.4 Operaciones en árboles. Nos muestra las operaciones que podemos realizar con árboles binarios. Lea el apartado en mención, ya que es importante para la comprensión de los siguientes puntos.
14.5 Árboles de expresión. Analizamos uno de los usos de los árboles binarios, como es el de resolución de ecuaciones. Realice los ejemplos ahí planteados, luego codifique el programa que resuelva una ecuación.
14.6 Recorrido de un árbol Analizamos las diferentes formas de presentar los datos almacenados en un árbol. Realice los programas que hagan los diferentes tipos de recorrido.
14.7 Árbol binario de búsqueda. Nos muestra las características de este tipo de árboles Analice las características especiales de este tipo de árbol.
14.8 Operaciones en un ABB En este capítulo se estudian todas las operaciones que podemos realizar con ABB. Desarrolle un programa que permita realizar todas las operaciones en ABB, (creación, inserción de elementos, eliminación de elemento dado, los diferentes recorridos y por último la eliminación del árbol completo)


Capitulo 4: Árboles balanceados



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo15. Árboles equilibrados de búsqueda
Páginas455 – 478
Horas de estudio empleadas para el desarrollo del contenido15 horas

Proposito:

Durante el estudio de este capítulo, conoceremos acerca de la eficiencia de los árboles de búsqueda, construir un árbol de búsqueda equilibrado, describir los tipos de movimientos que se realizan para equilibrar un árbol, realizar operaciones de inserción y eliminación de elementos del árbol.

Conceptos Clave:

  • Equilibrio:

    En este caso, el equilibrio será el grado de igualdad que existan entre los subárboles izquierdo y derecho de en árbol.

  • Factor de equilibrio:

    Será conocido con este nombre a un nuevo campo en el nodo, el cual nos indicará que tan equilibrado está ese nodo con respecto a los demás.

  • Rotaciones:

    Serán los movimientos que deberán realizarse para equilibrar el árbol luego de que se ingrese o se elimine un nodo del árbol AVL.

Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
15.1 Eficiencia de la búsqueda en un árbol binario ordenado Nos presenta las desventajas que se nos pueden presentar cuando trabajamos con un árbol binario ordenado. Realice el grafico que resulta de insertar los siguientes datos en un árbol binario de búsqueda: 12, 19, 10, 11, 7, 27, 15.

Ahora los mismos datos insértelos en un nuevo árbol en el siguiente orden y analice los resultados: 10, 7, 11, 12, 15, 19, 27.

15.2 Árbol binario equilibrado, árboles AVL Nos explica todas las características que debe tener un árbol para ser considerado como una árbol equilibrado o un árbol AVL Lugo de leer este apartado, usted debe revisar los gráficos planteados y revisar minuciosamente el programa expuesto para que vea su funcionamiento.
15.3 Inserción en árboles de búsqueda equilibrados. Rotaciones. La inserción de elementos puede causar que se produzca desequilibrio en el árbol. Aquí se nos muestra los procesos de rotación (simple y doble) que serán los que ayuden a solucionar el problema de desequilibrio. Usted debe realizar el ingreso de varios elementos en un árbol e ir verificando que siga manteniendo su estado de equilibrio, de no ser así, debe aplicar las rotaciones y observar como se realiza el redireccionamiento de los enlaces de cada uno de los nodos.
15.4 Realización en C de la inserción con balanceo y rotaciones Codificación del algoritmo explicado en el apartado anterior. Además de realizar el programa en su computadora, usted debe realizar una corrida manual y analizar su funcionamiento.
15.5 Eliminación de un nodo en un árbol equilibrado. Aquí se explica como es el procedimiento de eliminación de nodos de un árbol AVL. Se explica el algoritmo y el programa. Realice algunos gráficos de árboles, y valiéndose del programa del libro, haga algunas corridas manuales para observar el desequilibrio que se pueda crear y como se lo debe solucionar.


Capitulo 5: Árboles B



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo16. Árboles B
Páginas482 – 500
Horas de estudio empleadas para el desarrollo del contenido15 horas

Proposito:

El objetivo de este capítulo es de conocer las características de los árboles B, utilizar su estructura para organizar búsquedas eficientes en bases de datos, implementar algoritmos de búsqueda de una clave, conocer las estrategias que se siguen para la inserción y eliminación de elementos.

Conceptos Clave:

  • Orden:

    Es el máximo número de enlaces que puede tener un nodo, ya que en los árboles B ya no se trata con nodos que tienen solamente 2 enlaces.

  • Página:Es la denominación que se les da a cada uno de los nodos que conforman un árbol B.


Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
Cap 16 Introducción Nos muestra las diferentes aplicaciones que en la actualidad se les está dando a este tipo de estructuras. Opine acerca de algunos otros usos que se le pudiera dar, aparte de los ya nombrados.
16.1 Definición de un árbol B Nos da una completa definición de lo que es un árbol B, así como de las características con las qyue debe cumplir para ser considerado un árbol B. Lea detenidamente este apartado y fijándose en la figura de la parte inferior de la página compruebe que se cumplan todas las especificaciones requeridas.
16.2 TAD Árbol B y su representación Nos muestra las operaciones básicas que podemos realizar con este tipo de árbol, así como la estructura que deberá tener un nodo que lo conforme. Revise los programas presentados en este apartado, ya que le servirán luego en la implementación del programa.
16.3 Proceso de formación de un árbol B. Presenta todas las consideraciones que debería tener en cuenta para insertar un nuevo elemento. Realice los ejemplos presentados en el libro base. Para el mayor entendimiento se anexa a esta guía unos ejemplos con los casos que se pueden presentar cuando vamos a insertar un nuevo elemento. Usted debe estudiarlos y seguir la secuencia de gráficos presentados.
16.4 Búsqueda de una clave en un árbol B Analiza los procedimientos necesarios para buscar un elemento específico en el árbol. Analice como es el trabajo del programa de esta sección.
16.5 Operación de inserción en un árbol B. Aquí ya se analiza los algoritmos que se utilizan para la inserción. Realice la codificación y corrida manual de estos programas.
16.6 Eliminación de una clave en un árbol B. Presenta todas las consideraciones que debería tener en cuenta para eliminar un elemento del árbol. Realice los ejemplos presentados en el libro base. Para el mayor entendimiento se anexa a esta guía unos ejemplos con los casos que se pueden presentar cuando vamos a eliminar un elemento. Usted debe estudiarlos y seguir la secuencia de gráficos presentados.
16.7 Operación de eliminación de una clave en un árbol B. Aquí ya se analiza los algoritmos que se utilizan para la eliminación. Realice la codificación y corrida manual de estos programas.
16.8 Listado de las claves de un árbol B Nos presenta los programas que nos permiten visitar todos los elementos de un árbol B. Codifique y realice una corrida manual del programa.


Capitulo 6: Grafos



Datos Generales:

Texto BaseALGORITMOS Y ESTRUCTURAS DE DATOS, Una perspectiva en C, Luis Joyanes Aguilar / Ignacio Zahonero Martínez.
Capítulo17. Grafos
Páginas507 – 538
Horas de estudio empleadas para el desarrollo del contenido10 horas

Proposito:

Con el estudio de este capítulo se pretende distinguir entre relaciones jerárquicas y otras relaciones, definir un grafo e identificar sus componentes, conocer estructuras que nos permitan representar grafos y las operaciones básicas que se aplican sobre grafos.

Conceptos Clave:

  • Vértice:Con este nombre se conocerá a los nodos que componen los grafos.
  • Arco:También conocidos como aristas, representarán las relaciones existentes entre dos nodos.
  • Orden:Es el número de vértices que componen el grafo
  • Grado de un nodo:Representa al número de arcos que inciden sobre el nodo
  • Grafo completo:Es el grafo que contiene todos los posibles pares de relaciones.


Esquema de Estudio:

A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que estima que necesita tutoría y realizar anotaciones.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
17.1 Conceptos y definiciones. Nos permite el conocimiento de las generalidades de los grafos, así como la terminología que se utilizará en su tratamiento. Estudie bien este capítulo y sus representaciones gráficas, ya que nos servirán de mucho en adelante.
17.2 Representación de los grafos. En este apartado podemos encontrar las diferentes maneras como podemos representar a un grafo en la memoria de nuestros computadores. Revise con cuidado este ítem y sus subítems, observe los ejemplos planteados y compare los resultados obtenidos con los gráficos de donde se originaron.
17.3 TAD Grafo. Se definen las operaciones básicas para construir la estructura y en general modificar los elementos del grafo. Observe los programas aquí planteados, realice su codificación y observe como es su trabajo mediante corridas manuales.
17.4 Recorrido de un grafo. Al igual que en los capítulos estudiados anteriormente, se estudia como podemos visitar los nodos o vértices que componen el grafo. Lea detenidamente este apartado, codifique los programas planteados y entiéndalos ayudándose para ello de realizar corridas manuales.
17.5 Conexiones de un grafo. Estudia los diferentes tipos de conexiones existentes entre los vértices que componen el grafo. Revise este capítulo para lograr obtener un conocimiento general de estos conceptos.
17.6 Matriz de caminos: Cierre transitivo. Estudia los diferentes caminos que se pueden encontrar entre dos nodos determinados y como encontrarlos. Lea detenidamente este apartado y vaya comparado las explicaciones del texto con los gráficos presentados.
17.7 Puntos de articulación de un grafo. Nos permite conocer que son los puntos de articulación en un grafo y como encontrarlos. Así mismo nos presenta un programa que nos permite realizar este trabajo. Estudie el tema, codifique el programa y observe su trabajo mediante corridas manuales.
Herramientas personales
Sitios UTPL