Estructura de Datos - Estructuras no lineales

JosAntonioSandovalAc 1,997 views 46 slides Oct 20, 2017
Slide 1
Slide 1 of 46
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46

About This Presentation

Tecnológico Nacional de México
Instituto Tecnológico Superior de Guasave
Ingeniería en Sistemas Computacionales
Estructura de Datos: AED-1026
Estructuras no lineales
Material de clase


Slide Content

Instituto Tecnológico Superior de Guasave Ingeniería en Sistemas Computacionales Estructura de Datos Unidad IV: Estructuras no Lineales Retícula ISIC-2010-224: Programa: AED-1026/2016 Itsguasave.edu.mx

Competencia de la Unidad Comprende y aplica estructuras no lineales para la solución de problemas. ESTRUCTURA DE DATOS

Estructuras NO Lineales A las estructuras de datos no lineales se les llama también estructuras de datos multi -enlazadas. Cada elemento o NODO puede estar enlazado a cualquier otro componentes. Se trata de estructuras de datos en las que cada elemento puede tener varios sucesores y/o varios predecesores. ESTRUCTURA DE DATOS

Árboles ESTRUCTURA DE DATOS

Árboles ESTRUCTURA DE DATOS

La estructura de un árbol se forma de  nodos  y  arcos  (línea que une dos nodos), el primero de los nodos del árbol recibe el nombre de  raíz , del cual se desprenden los nodos  interiores  y de éstos los nodos llamados  hoja , que son los nodos que se encuentran al final del árbol; todos ellos en conjunto forman un árbol. Además de comprender el concepto y la estructura de un árbol, debemos tomar en cuenta otros conceptos básicos que pueden ser útiles en el momento de construir o programar un árbol, estos conceptos los clasificaremos en tres rubros: Relación con otros nodos, Posición dentro del árbol y Tamaño del árbol ESTRUCTURA DE DATOS

En relación con otros nodos: Padre : es el nodo del cual se derivan otros nodos. Hijo : es el nodo que depende de otro. Hermano : es el nodo que se encuentra al lado del nodo hijo y que dependen del mismo nodo padre. En cuanto a la posición dentro del árbol: Raíz : es el primero de los nodos y el único que no contiene un padre. Hoja : es el nodo que se encuentra al final del árbol. Interior : nodos con uno o más subárboles; nodos que no son hojas. ESTRUCTURA DE DATOS

En relación a su tamaño: ESTRUCTURA DE DATOS

En relación a su tamaño: ESTRUCTURA DE DATOS

Un árbol binario sería un conjunto de 0 o más nodos en el cual existe un nodo raíz y cada uno de los nodos, incluido el raíz podrán tener 0, 1 o dos subárboles: Subárbol izquierdo y subárbol derecho. Cada nodo es como máximo de grado 2. ESTRUCTURA DE DATOS

Terminología ESTRUCTURA DE DATOS

ESTRUCTURA DE DATOS Terminología

ESTRUCTURA DE DATOS Terminología

ESTRUCTURA DE DATOS Terminología

ESTRUCTURA DE DATOS Terminología

ESTRUCTURA DE DATOS Terminología

TRABAJANDO CON ÁRBOLES BINARIOS Un árbol binario es una estructura recursiva. Cada nodo es el raíz de su propio subárbol y tiene hijos, que son raíces de árboles llamados los subárboles derecho e izquierdo del nodo, respectivamente. Un árbol binario se divide en tres subconjuntos disjuntos: ESTRUCTURA DE DATOS

RECORRIDO DE UN ÁRBOL BINARIO Para visualizar o consultar los datos almacenados en un árbol se necesita recorrer el árbol o visitar los nodos del mismo. Al contrario que las listas enlazadas, los árboles binarios no tienen realmente un primer valor, un segundo valor, tercer valor, etc. Se puede afirmar que el nodo raíz viene el primero, pero ¿quién viene a continuación? Existen diferentes métodos de recorrido de árbol ya que la mayoría de las aplicaciones binarias son bastante sensibles al orden en el que se visitan los nodos, de forma que será preciso elegir cuidadosamente el tipo de recorrido. ESTRUCTURA DE DATOS

RECORRIDO PREORDEN El recorrido preorden conlleva los siguientes pasos, en los que el nodo raíz va antes que los subárboles: Visitar el nodo raíz ( N ). Recorrer el subárbol izquierdo ( I ) en preorden . Recorrer el subárbol derecho ( D ) en preorden . Dado las características recursivas de los árboles, el algoritmo de recorrido tiene naturaleza recursiva. Primero se procesa la raíz, a continuación el subárbol izquierdo y a continuación el subárbol derecho. Para procesar el subárbol izquierdo se siguen los mismos pasos: raíz, subárbol izquierdo y subárbol derecho (proceso recursivo). Luego se hace lo mismo con el subárbol derecho. ESTRUCTURA DE DATOS

ESTRUCTURA DE DATOS Si utilizamos el recorrido preorden del árbol de la figura se visita primero el raíz (nodo A); a continuación, se visita el subárbol izquierdo de A, que consta de los nodos B, D y E. Dado que el subárbol es a su vez un árbol, se visitan los nodos utilizando el mismo preorden . Por consiguiente, se visita primero el nodo B, después D (izquierdo) y por último E (derecho ). A continuación, se visita subárbol derecho de A, que es un árbol que contiene los nodos C, F y G. De nuevo, siguiendo el mismo preorden , se visita primero el nodo C, a continuación F (izquierdo) y por último G (derecho).

Ejercicio : Realizar el recorrido en preorden del siguiente árbol binario. ESTRUCTURA DE DATOS

RECORRIDO ENORDEN El recorrido enorden ( inorder ) procesa primero el subárbol izquierdo, después el raíz y a continuación el subárbol derecho. El significado de en ( in ) es que la raíz se procesa entre los subárboles. Si el árbol no está vacío, el método implica los siguientes pasos: Recorrer el subárbol izquierdo ( I ) en enorden . Visitar el nodo raíz ( N ). Recorrer el subárbol derecho ( D ) en enorden . ESTRUCTURA DE DATOS

En el árbol de la figura ejemplo, los nodos se han numerado en el orden en que son visitados durante el recorrido enorden . El primer subárbol recorrido es el subárbol izquierdo del nodo raíz (árbol cuyo nodo contiene la letra B). Este subárbol es, a su vez, otro árbol con el nodo B como raíz, por lo que siguiendo el enorden , se visita primero D, a continuación B (nodo raíz) y por último E (derecha). Después, se visita el nodo raíz, A. Por último, se visita el subárbol derecho de A, siguiendo el enorden se visita primero F, después C (nodo raíz) y por último G. ESTRUCTURA DE DATOS

Ejercicio : Realizar el recorrido enorden del siguiente árbol binario. ESTRUCTURA DE DATOS

RECORRIDO POSTORDEN El recorrido postorden procesa el nodo raíz ( post ) después de que los subárboles izquierdo y derecho se han procesado. Se comienza situándose en la hoja más a la izquierda y se procesa. A continuación se procesa su subárbol derecho. Por último, se procesa el nodo raíz. Las etapas del algoritmo, si el árbol no está vacío, son: Recorrer el subárbol izquierdo ( I ) en postorden . Recorrer el subárbol derecho ( D ) en postorden . Visitar el nodo raíz ( N ). ESTRUCTURA DE DATOS

Si se utiliza el recorrido postorden del árbol ejemplo se visita primero el subárbol izquierdo de A. Este subárbol consta de los nodos B, D y E, y siguiendo el postorden , se visitará primero D (izquierdo), luego E (derecho) y, por último, B (nodo). A continuación, se visita el subárbol derecho de A que consta de los nodos C, F y G. Siguiendo el postorden para este árbol, se visita primero F (izquierdo), después G (derecho) y, por último, C (nodo). Finalmente se visita el nodo raíz A. ESTRUCTURA DE DATOS

Ejercicio : Realizar el recorrido postorden del siguiente árbol binario. ESTRUCTURA DE DATOS

El resultado para los 3 métodos es el siguiente: Preorden Postorden Enorden ESTRUCTURA DE DATOS

ÁRBOLES DESDE LA PROGRAMACIÓN CON MEMORIA DINÁMICA Y CLASES Para trabajar un árbol binario desde la programación es necesario crear una estructura que albergue la información y enlaces de los nodos, esto significa que nuestro árbol se trabajará por medio de memoria dinámica. Declaración la clase y variables tipo nodos: ESTRUCTURA DE DATOS

Estructura de la clase NODO ESTRUCTURA DE DATOS Estructura de la clase ARBOL

Módulo recursivo para insertar nodos en el árbol ESTRUCTURA DE DATOS

Recorrido Recursivo en PreOrden : ESTRUCTURA DE DATOS

Recorrido Recursivo en enOrden : ESTRUCTURA DE DATOS

Recorrido Recursivo en PostOrden : ESTRUCTURA DE DATOS

Ejercico : Enlazar los módulos vistos en clase en un solo programa y agregar a la rutina main () el llamado a los recorridos, preOrden , inOrden y postOrden . Entregar programa y código ya desarrollados. ESTRUCTURA DE DATOS

Grafos ESTRUCTURA DE DATOS

Un grafo G agrupa entes físico o conceptuales y las relaciones entre ellos. Por tanto, un grafo está formado por un conjunto de vértices o nodos V , que representan a los entes , y un conjunto de arcos A , que representan las relaciones entre vértices. Se representa con el par G = (V, A). La figura muestra un grafo G formado por los vértices V = {1,4,5,7,9} y el conjunto de arcos: A = {(1, 4), (4, 1), (5, 1), (1, 5), (7, 9), (9, 7), (7, 5), (5, 7), (4, 9), (9, 4)} ESTRUCTURA DE DATOS

Un arco o arista representa una relación entre dos nodos. Esta relación, al estar formada por dos nodos, se representa por (u, v) siendo u, v el par de nodos. El grafo es no dirigido si los arcos están formados por pares de nodos no ordenados, no apuntados; se representa con un segmento uniendo los nodos, u ⎯ v. ESTRUCTURA DE DATOS

Un grafo es dirigido, también denominado digrafo , si los pares de nodos que forman los arcos son ordenados; se representan con una flecha que indica la dirección de la relación, u --> v. El grafo de la sig. figura que consta de los vértices: V = {C, D, E, F, H}, y de los arcos A = {(C, D,), (D, F), (E, H), (H, E), (E, C)} forman el grafo dirigido G = {V, A} ESTRUCTURA DE DATOS ESTRUCTURA DE DATOS

En los modelos realizados con grafos, a veces, una relación entre dos nodos tiene asociada una magnitud , denominada factor de peso , en cuyo caso se dice que es un grafo valorado . Por ejemplo: los pueblos que forman una comarca junto a la relación entre un par de pueblos de estar unidos por un camino: esta relación tiene asociado el factor de peso, que es la distancia en kilómetros. La figura sig. muestra un grafo valorado en el que cada arco tiene asociado un peso que es la longitud entre dos nodos. ESTRUCTURA DE DATOS

Grado de entrada, grado de salida de un nodo El grado es una cualidad que se refiere a los nodos de un grafo. En un grafo no dirigido el grado de un nodo v , grado(v), es el número de arcos que contiene a v . En un grafo dirigido se distingue entre grado de entrada y grado de salida; grado de entrada de un nodo v , gradent (v) , es el número de arcos que llegan a v ; grado de salida de v , gradsal (v) , es el número de arcos que salen de v . ESTRUCTURA DE DATOS

Así, en el grafo no dirigido de la figura Comarcas, grado( Lupiana ) = 3. En el grafo dirigido de la figura Letras, gradent (E ) = 1 y el gradsal (E ) = 2. ESTRUCTURA DE DATOS

Camino Un camino P de longitud n desde el vértice v a v n en un grafo G , es la secuencia de n - 1 vértices v , v 1 , v 2 , ..., v n tal que ( v i , v i+1 ) Є A ( arcos ). Matemáticamente el camino se representa por P = (v , v 1 , v 2 ,..., v n ). En la sig. figura se pueden encontrar más de un camino; por ejemplo: P1 = (4, 6, 9, 7) es un camino de longitud 3. Otro de los caminos es P2 = (10, 11), que tiene de longitud 1. Por tanto, se puede afirmar que la longitud del camino es el número de arcos que lo forman. ESTRUCTURA DE DATOS

Un grafo no dirigido es conexo si existe un camino entre cualquier par de nodos que forman el grafo. En el caso de un grafo dirigido con esta propiedad se dice que es fuertemente conexo . Además, un grafo completo es aquél que tiene un arco para cualquier par de vértices. ESTRUCTURA DE DATOS

Ejercicio: Del siguiente ejemplo de grafo determine sus características de acuerdo a las definiciones ya vistas: Determine el conjunto V; Determine los arcos A; Determine si es dirigido o no dirigido Determine 3 caminos para llegar de Badajoz a Gerona y determine la longitud de cada camino. Determine el grado de los vértices Madrid, Murcia, Valladolid, Jaén, y Bilbao. ESTRUCTURA DE DATOS

Bibliografía Joyanes , Zahonero . Estructura de Datos en C++. McGraw Hill. Madrid, España. 2007. ISBN: 978-84-481-5645-9. ESTRUCTURA DE DATOS