La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Material de apoyo Unidad 4 Estructura de datos

Presentaciones similares


Presentación del tema: "Material de apoyo Unidad 4 Estructura de datos"— Transcripción de la presentación:

1 Material de apoyo Unidad 4 Estructura de datos
Instituto Tecnológico de Culiacán Ingeniería en Sistemas Computacionales y Licenciatura en Informatica Estructura de datos Material de apoyo Unidad 4 Prof. Felipe E. Muñiz R.

2 TEMARIO Unidad 4.- Estructuras no lineales. 4.1 Árboles.
4.1.1 Definición. 4.1.2 Representación en memoria de árboles. Árboles generales. Árboles binarios. 4.1.3 Recorridos en un árbol binario. Preorden. Inorden. Posorden. 4.1.4 Balanceo de árboles binarios. 4.1.5 Clases para la implementación de árboles. 4.2 Grafos. 4.2.1 Definición. 4.2.2 Tipos de grafos. 4.2.3 Representación de grafos en memoria. 4.2.4 Clases para la implementación de grafos.

3 Unidad 4. Estructuras no lineales.
4.1 Árboles. Definición Un árbol es una colección de elementos, llamados nodos, uno de los cuales se distingue con el nombre de raíz, los cuales mantienen una relación (parentezco) que define una estructura jerárquica entre ellos.

4 Concepto de árbol Estructura Jerárquica no lineal, dinámica.
Unidad 4. Estructuras no lineales. 4.1 Árboles. Concepto de árbol Estructura Jerárquica no lineal, dinámica. Relaciones padre-hijo entre nodos. Ejemplos: sistema de archivos, estructura de un libro, diagrama organizacional, árboles genealógicos, etc.

5 Unidad 4. Estructuras no lineales.
4.1 Árboles. Concepto de árbol Un árbol se caracteriza por estar formado por un conjunto finito de nodos, conectados por una serie de aristas, tales que verifican que: hay un único nodo especial llamado raíz. los nodos restantes se dividen en árboles mas pequeños llamados subárboles. cada nodo, excepto la raíz, tiene un único nodo padre. la definición de árbol implica tener una estructura recursiva (por la división en subárboles). la representación de los árboles se realiza con notaciones típicas de los árboles genealógicos. hay un único camino desde la raíz hasta cada nodo.

6 Terminología básica Raíz: único nodo sin padre. Ej.: nodo A
Unidad 4. Estructuras no lineales. 4.1 Árboles. Terminología básica Raíz: único nodo sin padre. Ej.: nodo A Nodo interno: tiene al menos un hijo. Ej.: nodos B, F, C Nodo hoja (externo): nodo sin hijos. Ej.: nodos E, I, J, K, G, H, D Descendiente directo: hijo. Ej.: B es descendiente directo de A Descendiente: hijo, nieto, etc… Ej.: I es descendiente de F, B y A Subárbol: árbol formado por un nodo y sus descendientes. Ej.: los nodos encerrados en el triangulo

7 Unidad 4. Estructuras no lineales.
4.1 Árboles.

8 Unidad 4. Estructuras no lineales.
4.1 Árboles. Terminología básica Grado de un nodo: Num. de descendientes directos. Ej.: el nodo B es grado 2. Grado de un árbol: el grado mayor de sus nodos. Ej.: el nodo A y F son los de mayor grado (3), por lo tanto el árbol es grado 3. Árbol binario: árbol de grado 2, cada nodo tiene como mucho dos descendientes directos. Árbol multicamino: árbol de grado mayor que 2, cada nodo puede tener n descendientes directos.

9 Unidad 4. Estructuras no lineales.
4.1 Árboles. Terminología básica Profundidad de un nodo: Num. de predecesores. Ej.: profundidad de A es 0, profundidad de H es 2. Altura del árbol: es igual a la profundidad de su nodo mas profundo + 1. Ej.: la profundidad de I, J y K que son los nodos mas profundos es 3 por lo tanto la altura de árbol es = 4.

10 Unidad 4. Estructuras no lineales.
4.1 Árboles. Terminología básica Camino: existe un camino del nodo X al nodo Y, si existe una sucesión de nodos que permita llegar desde X hasta Y, su longitud es el número de aristas que lo conforman. camino(A,K)= {A, B, F, K} longitud 3 camino(C,K)= {} no hay camino

11 Unidad 4. Estructuras no lineales.
4.1 Árboles. Recorrido Preorden Se visita primero la raíz, luego el subárbol izquierdo y por ultimo el subárbol derecho, esto de manera recursiva para cada subárbol partiendo de la raíz.

12 Unidad 4. Estructuras no lineales.
4.1 Árboles. Recorrido Inorden Se visita primero el subárbol izquierdo, luego la raíz y por ultimo el subárbol derecho, esto de manera recursiva para cada subárbol partiendo de la raíz.

13 Unidad 4. Estructuras no lineales.
4.1 Árboles. Recorrido Postorden Se visita primero el subárbol izquierdo luego el subárbol derecho y por ultimo la raíz, esto de manera recursiva para cada subárbol partiendo de la raíz.

14 Ejemplo: expresiones aritméticas
Unidad 4. Estructuras no lineales. 4.1 Árboles. Ejemplo: expresiones aritméticas nodos internos: operadores. nodos hoja: operandos. 2(a – 1) + 3b

15 Unidad 4. Estructuras no lineales.
4.1 Árboles.

16 Unidad 4. Estructuras no lineales.
4.1 Árboles. Ejemplo:

17 Implementación basada en enlaces
Unidad 4. Estructuras no lineales. 4.1 Árboles. Implementación basada en enlaces

18 Árboles Binarios de Búsqueda
Unidad 4. Estructuras no lineales. 4.1 Árboles. Árboles Binarios de Búsqueda Un árbol binario de búsqueda es un árbol binario en el que para cada nodo n, todas las claves de los nodos del subárbol izquierdo son menores que la clave de n (o igual). y todas las del subárbol derecho mayores (o igual)

19 Unidad 4. Estructuras no lineales.
4.1 Árboles. Ejemplo:

20 Unidad 4. Estructuras no lineales.
4.1 Árboles. Ejemplo:

21 Unidad 4. Estructuras no lineales.
4.1 Árboles. En algunos casos se exige que el árbol sea completo, es decir que todo nodo interno tenga sus dos descendientes.

22 Operaciones: Búsqueda. Inserción. Eliminación
Unidad 4. Estructuras no lineales. 4.1 Árboles. Operaciones: Búsqueda. Inserción. Eliminación

23 Unidad 4. Estructuras no lineales.
4.1 Árboles. Búsqueda

24 Unidad 4. Estructuras no lineales.
4.1 Árboles. Búsqueda

25 Unidad 4. Estructuras no lineales.
4.1 Árboles. Inserción

26 Unidad 4. Estructuras no lineales.
4.1 Árboles. Inserción

27 Unidad 4. Estructuras no lineales.
4.1 Árboles. Ejemplo de Inserción

28 Unidad 4. Estructuras no lineales.
4.1 Árboles. Ejemplo de Inserción

29 Unidad 4. Estructuras no lineales.
4.1 Árboles. Eliminación

30 Algoritmo para borrar un nodo de un árbol binario de búsqueda.
Unidad 4. Estructuras no lineales. 4.1 Árboles. Algoritmo para borrar un nodo de un árbol binario de búsqueda. Para borrar un nodo con información X se presentan los siguientes casos. 1.- Que el nodo no exista: no se realiza ninguna acción. 2.- El nodo a eliminar tiene 0 o 1 hijo: El padre del nodo a eliminar (abuelo) toma como hijo al nodo nieto. 3.-El nodo a eliminar tiene 2 hijos: El nodo con la información X no se borra físicamente, se realiza una sustitución de información, (solo datos) con una de las siguientes acciones. a) La información mayor del subárbol izquierdo. b) La información menor del subárbol derecho. c) Después de la sustitución el valor que sustituyo al nodo X se manda a eliminar partiendo del subárbol donde se encuentra.

31 Unidad 4. Estructuras no lineales.
4.1 Árboles. Eliminación

32 Unidad 4. Estructuras no lineales.
4.1 Árboles. Eliminación

33 Árbol binario: operaciones del TAD
Unidad 4. Estructuras no lineales. 4.1 Árboles. Árbol binario: operaciones del TAD

34 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

35 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

36 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

37 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

38 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

39 Unidad 4. Estructuras no lineales.
4.1 Árboles. Árboles Equilibrados

40 Unidad 4. Estructuras no lineales.
4.2 Grafos. Introducción Los grafos sirven para representar relaciones arbitrarias (no necesariamente jerárquicas) entre objetos de datos PLAZA DE CASTILLA NUEVOS MINISTERIOS GREGORIO MARAÑÓN CANAL GUZMAN EL BUENO CUATRO CAMINOS AVDA. DE AMÉRICA

41 Introducción: aplicaciones
Unidad 4. Estructuras no lineales. 4.2 Grafos. Introducción: aplicaciones Circuitos electrónicos Tarjetas impresas Circuitos integrados Redes de transporte Autopistas Vuelos Redes de ordenadores LANs Internet Web Bases de datos Diagramas entidad/relación

42 Fundamentos: definiciones
Unidad 4. Estructuras no lineales. 4.2 Grafos. Fundamentos: definiciones Un grafo consiste en un conjunto de vértices o nodos y un conjunto de arcos. Se representa con el par G = (V,A). Un arco o arista está formado por un par de nodos u y v, y se representa por (u,v) Un grafo es dirigido si los pares de nodos que forman los arcos son ordenados y se representan u  v. Un grafo no dirigido es aquel que los arcos están formados por pares de nodos no ordenados, se representa u  v. Si (u,v) es una arista en A(G), entonces u y v se dice que son vértices adyacentes. Un arco tiene, a veces, asociado un factor de peso, en cuyo caso se dice que es un grafo valorado.

43 Fundamentos: grafos dirigidos
Unidad 4. Estructuras no lineales. 4.2 Grafos. Fundamentos: grafos dirigidos a b d c Grafo no dirigido V(G1) = {a,b,c,d} A(G1) = {(a,b),(a,d),(b,c),(b,d)} 1 3 5 7 9 Grafo dirigido V(G2) = {1,3,5,7,9} A(G2) = {(1,3),(3,1),(9,1), (3,5),(5,7)}

44 grafo no conexo con dos componentes conexas
Unidad 4. Estructuras no lineales. 4.2 Grafos. Fundamentos Grado de un nodo En un grafo dirigido Grado de un nodo u = nº de aristas que contienen a u Grado de entrada de u = nº de arcos que llegan a u Grado de salida de u = nº de arcos que salen de u Grafos conexos Un grafo no dirigido es conexo si existe un camino entre cualquier par de nodos que forman el grafo Ejemplos: grafo no conexo con dos componentes conexas grafo conexo

45 Unidad 4. Estructuras no lineales.
4.2 Grafos. Fundamentos: camino Un camino P de longitud n en el grafo G desde u0 a un es la secuencia de n+1 vértices P = (u0, u1, ..., un) tal que (ui,ui+1) son arcos de G para 0  i  n Un camino es simple si todos los nodos que forman el camino son distintos, pudiendo ser iguales los extremos del camino Ejemplo: P1 es simple P2 no es simple P1 X U V W Z Y a c b e d f g h P2

46 Fundamentos: ciclos y bucles
Unidad 4. Estructuras no lineales. 4.2 Grafos. Fundamentos: ciclos y bucles Un ciclo es un camino simple cerrado con u0=un, compuesto al menos por tres nodos Un ciclo es simple si todos sus vértices y arcos son distintos Un arco que va desde un vértice a sí mismo (u,u) se denomina bucle Ejemplo C1 es un ciclo simple C2 es un ciclo no simple C1 X U V W Z Y a c b e d f g h C2

47 TAD GRAFO Composición:
Unidad 4. Estructuras no lineales. 4.2 Grafos. TAD GRAFO Composición: <grafo> :: = {<vertice>} + {<arista>} <vertice> ::= <<refVertice>> + [<<info>>] <arista> ::= <<refVertice>> + <<refVertice>> <grafoEtiquetado> :: = {<vertice>} + {<aristaEtiquetada>} <aristaEtiquetada> ::= <<refVertice>> + <<refVertice>> + <<etiqueta>>

48 TAD GRAFO: Operaciones
Unidad 4. Estructuras no lineales. 4.2 Grafos. TAD GRAFO: Operaciones Creación del grafo crearGrafo (grafo) Inclusión de vértices insertarVertice(grafo, vertice) Eliminación de vértices borrarVertice(grafo, referenciaVertice) Inclusión de aristas insertarArista(grafo, vertice1, vertice2) Borrar aristas borrarArista(grafo,arista) Recorrido del grafo recorrer(grafo,tipoRecorrido)

49 TAD GRAFO: Operaciones
Unidad 4. Estructuras no lineales. 4.2 Grafos. TAD GRAFO: Operaciones Acceso a los vertices info(referenciaVertice)  Informacion grado(referenciaVertice)  Entero gradoEntrante(referenciaVertice)  Entero gradoSaliente(referenciaVertice)  Entero adyacentes(referenciaVertice)  {referenciaVertice} incidentes{referenciaVertice)  {referenciaVertice} esAdyacente(refenciaVertice1, referenciaVertice2) Boolean Modificación de vertices asignarInfo(referenciaVertice, valorInformacion) Acceso a las aristas vertices(referenciaArista)  (refVertice, refVertice) destino(referenciaArista)  refVertice origen(referenciaArista)  refVertice etiqueta((referenciaArista)  etiqueta Modificación de aristas asignarEtiqueta(referenciaArista, valorEtiqueta)

50 Representación: matriz de adyacencia
Unidad 4. Estructuras no lineales. 4.2 Grafos. Representación: matriz de adyacencia Matriz de adyacencias Sea G = (V,A) un grafo de n nodos, suponemos que los nodos V = {u1,...,un} están ordenados y podemos representarlos por sus ordinales {1,2,...,n}. La representación de los arcos se hace con una matriz A de nxn elementos aij definida: 1 si hay arco (ui,uj) aij 0 si no hay arco (ui,uj) Optimización Usar la diagonal principal de la matriz de adyacencia para representar la existencia de un vértice

51 Representación: matriz de adyacencia
Unidad 4. Estructuras no lineales. 4.2 Grafos. Representación: matriz de adyacencia 2 3 5 4 1 2 1 4 3 2 3 5 4 1 6

52 Representación Matriz de adyacencia
Unidad 4. Estructuras no lineales. 4.2 Grafos. Representación Matriz de adyacencia Poco eficiente si el nº de vértices varía a lo largo del tiempo de vida del grafo Puede darse el caso de que el nº de vértices sea mayor del previsto inicialmente Poco eficiente cuando el grafo tiene pocos arcos (la matriz es “dispersa”) Listas de adyacencia Representar una lista de todos los vértices Cada objeto vértice guarda una lista de adyacencia con un objeto arista para cada vértice alcanzable desde él

53 Representación: listas de adyacencia
Unidad 4. Estructuras no lineales. 4.2 Grafos. Representación: listas de adyacencia 1 2 5 4 3 Ejemplo 1 3 2 5 4

54 Recorridos Primero en anchura Primero en profundidad
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorridos Primero en profundidad Visitar vértice inicial vi Visitar vértice adyacente a vi ... proceder así hasta encontrar uno ya visitado... Volver atrás hasta llegar a un vértice con adyacentes sin visitar El recorrido termina cuando volviendo atrás llegamos al vértice innicial vi y no quedan adyacentes por recorrer Primero en anchura Visitar vértice inicial vi Visitar todos los vértices adyacentes a vi Al terminar, comenzar a visitar los adyacentes a los adyacentes a vi ... proceder así hasta que no queden vértices por visitar

55 Recorridos Profundidad Anchura RPA(vi) { RPP(vi)
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorridos Profundidad RPP(vi) { marcar vi como visitado para cada vk adyacente a v si vk no visitado entonces RPP(vk) } Anchura RPA(vi) { marcar vi como visitado meter vi en cola q mientras cola q no vacía sacar v de cola q para cada vk adyacente a v si vk no visitado entonces marcar vk visitado meter vk en cola q }

56 Recorridos: operaciones auxiliares
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorridos: operaciones auxiliares Marcar vértice como visitado Si los vértices están identificados por algún tipo ordinal, emplear un conjunto que contenga los identificadores de los vértices visitados Encontrar los vértices adyacentes Con matrices de adyacencia: recorrer la fila correspondiente al vértice, buscando columnas a TRUE Con listas de adyacencia: recorrer la lista Cola de vértices visitados en anchura Operaciones del TAD Cola

57 Recorrido primero en profundidad
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorrido primero en profundidad 1 2 3 4 6 7 8 5 10 11 9 13 12 1, 3, 6, 10, 13, 12, 9, 5, 2, 4, 7, 8, 11

58 Recorrido primero en profundidad
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorrido primero en profundidad 1 2 4 3 6 10 7 11 8 5 9 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13

59 Recorrido primero en anchura
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorrido primero en anchura 1 2 3 4 6 7 8 5 10 11 9 13 12 1, 3, 4, 2, 6, 7, 8, 5, 10, 11, 9, 13, 12

60 Recorrido primero en anchura
Unidad 4. Estructuras no lineales. 4.2 Grafos. Recorrido primero en anchura 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13

61 Árbol reducido/de expansión
Unidad 4. Estructuras no lineales. 4.2 Grafos. Árbol reducido/de expansión Un árbol puede verse como un caso particular de un grafo: un grafo conexo acíclico Para obtener el árbol reducido de un grafo hay que eliminar todas las aristas que producen ciclos, pero manteniéndolo conexo Aplicación: encaminamiento en redes de comunicaciones No existe un único árbol reducido de un grafo, pues dependerá del nodo de partida y de la forma de recorrerlo Cuando el grafo es valorado, puede calcularse el árbol de expansión de coste mínimo grafo Árbol de expansión

62 Árbol reducido (anchura)
Unidad 4. Estructuras no lineales. 4.2 Grafos. Árbol reducido (anchura) 1 2 3 4 6 7 8 5 10 11 9 13 12

63 Árbol reducido (profundidad)
Unidad 4. Estructuras no lineales. 4.2 Grafos. Árbol reducido (profundidad) 1 2 3 4 6 7 8 5 10 11 9 13 12


Descargar ppt "Material de apoyo Unidad 4 Estructura de datos"

Presentaciones similares


Anuncios Google