Está en la página 1de 69

Tema 4

Estructuras no lineales
Tema 4. Estructuras no lineales.

4.1 Árboles.
4.1.1 Clasificación de árboles.
• Árboles binarios
• Árboles generales
4.1.2 Operaciones básicas sobre árboles.
4.1.3 Aplicaciones

4.2 Grafos.
4.2.1 Representación de grafos.
4.2.2 Operaciones básicas.
4.1 Árboles.
Unidad 4. Estructuras no lineales.
4.1 Árboles.

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

 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.
Unidad 4. Estructuras no lineales.
4.1 Árboles.
 Un árbol se caracteriza por estar formado por un
conjunto finito de nodos, conectados por una serie
de aristas, tales que verifican que:

Esta foto de Autor desconocido está bajo licencia CC BY-SA


Unidad 4. Estructuras no lineales.
4.1 Árboles.
 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.

Esta foto de Autor desconocido está bajo licencia CC BY-SA


Unidad 4. Estructuras no lineales.
4.1 Árboles.
 Un árbol se caracteriza por estar formado por un
conjunto finito de nodos, conectados por una serie
de aristas, tales que verifican que:
 los nodos
restantes se
dividen en
árboles mas
pequeños
llamados
subárboles.

Esta foto de Autor desconocido está bajo licencia CC BY-SA


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:
 los nodos
 por ello es una restantes se
estructura dividen en
recursiva. árboles mas
pequeños
llamados
subárboles.

Esta foto de Autor desconocido está bajo licencia CC BY-SA


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:
 cada nodo,
excepto la raíz,
tiene un único
nodo padre.

Esta foto de Autor desconocido está bajo licencia CC BY-SA


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
camino desde la
raíz hasta cada
nodo.
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
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.
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 3 + 1 = 4.
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


4.1.1
Clasificación
de árboles.
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Árboles generales
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Árboles generales
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Árboles binarios
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Árboles binarios
En cualquier nivel n, un árbol binario tiene de
n
1a2 nodos.
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Á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)
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Ejemplo:
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Ejemplo:
Ejemplo:
Construir un ABB
con la siguiente
secuencia de
letras:
NOEMILARCJ

http://madebyevan.com/fsm/
Indicar todos los conjuntos
de nodos hermanos que
existen en el árbol: { E, O },
{ A, M }
¿Cuántos nodos puede tener
este árbol si fuera un árbol
completo? 63 nodos

Camino (N, J) donde N es


la raíz, y J es el nodo más
profundo = { N, E, M, I,
L, J }
• Indicar la longitud de
este camino = 5  
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

En algunos casos se exige que el árbol sea


completo: que todo nodo interno tenga sus
dos descendientes.
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.

Ejemplo: expresiones aritméticas


 nodos internos: operadores.
 nodos hoja: operandos.

2(a – 1) + 3b
Unidad 4. Estructuras no lineales.
4.1.1 Clasificación de Árboles.
Unidad 4. Estructuras no lineales.
4.1 Árboles.

Ejercicio: Construir los árboles binarios


correspondientes a las siguientes expresiones:
4.1.2
Operaciones
básicas sobre
árboles
e s
i on
r ac Eliminación
p e
O
Inserción.

Búsqueda.

Recorrido
Unidad 4. Estructuras no lineales.
4.1.2 Operaciones en Árboles.

Representación en memoria
Unidad 4. Estructuras no lineales.
4.1 Árboles.

Árbol binario: operaciones del TAD


Unidad 4. Estructuras no lineales.
4.1 Árboles.

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

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

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

Árboles Equilibrados
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.
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.
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.
Unidad 4. Estructuras no lineales.
4.1 Árboles.

Eliminación
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 sustituyó al nodo X se
manda a eliminar partiendo del subárbol donde se encuentra.
Unidad 4. Estructuras no lineales.
4.1 Árboles.

Eliminación
 Borrar 8

Sustituir por 6 Sustituir por 12


Unidad 4. Estructuras no lineales.
4.1 Árboles.

Eliminación
 Borrar 1
 Borrar 20
 Borrar 5

Borrar 1 Borrar 20 Borrar 5


Unidad 4. Estructuras no lineales.
4.1.2 Operaciones en Árboles.

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

Búsqueda
4.2
Grafos
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
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Introducción: aplicaciones
• Circuitos electrónicos
– Tarjetas impresas lab-a01 Lab-a02

– Circuitos integrados it.uc3m.es

• Redes de transporte
– Autopistas inf.uc3m.es

– Vuelos
• Redes de ordenadores uc3m.es

telefonica.net
– LANs rediris.net

– Internet
– Web
otro.net
• Bases de datos juan

– Diagramas pablo david

entidad/relación
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.
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Fundamentos: grafos dirigidos


b
Grafo no dirigido
V(G1) = {a,b,c,d} d
A(G1) = {(a,b),(a,d),(b,c),(b,d)}
a
c

3
Grafo dirigido 9
V(G2) = {1,3,5,7,9} 5
A(G2) = {(1,3),(3,1),(9,1),
(3,5),(5,7)} 1
7
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
– En un grafo dirigido
• 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


grafo conexo componentes conexas
4.2.1
Representación de
grafos
Unidad 4. Estructuras no lineales.
4.2 Grafos.

TAD GRAFO
• Composición:

<grafo> :: = {<vertice>} + {<arista>}


<vertice> ::= <refVertice> + [<info>]
<arista> ::= <refVertice> + <refVertice>

<grafoEtiquetado> :: = {<vertice>} + {<aristaEtiquetada>}


<vertice> ::= <refVertice> + [<info>]
<aristaEtiquetada> ::= <refVertice> + <refVertice> + <et>
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)
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Representación: matriz de adyacencia


3 1 3 2
1 1 2
5 4 5
1 6

2 2 2 1

4 3 4

0 1 0 0 0 0 1 0 0 0
0 1 1 1
0 0 1 0 0 0 0 2 0 0
1 0 0 1
0 1 0 0 1 0 6 0 0 2
1 0 0 0
0 0 0 0 0 0 0 0 0 0
1 1 0 0
0 0 0 1 0 0 0 0 1 0
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Representación: listas de adyacencia

• Ejemplo 1 3 4

3 2 3
2
3 1
1
5 4

4 5 1 2 4
4.2.2 Operaciones básicas
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)
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

asignarEtiqueta(referenciaArista, valorEtiqueta)
Modificación de aristas
Unidad 4. Estructuras no lineales.
4.2 Grafos.

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

Recorridos
• Profundidad • Anchura
RPA(vi)
RPP(vi) {
{ marcar vi como visitado
marcar vi como visitado meter vi en cola q
para cada vk adyacente a v mientras cola q no vacía
si vk no visitado sacar v de cola q
entonces RPP(vk) para cada vk adyacente a
v
}
si vk no visitado
entonces
marcar vk visitado
meter vk en cola q
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
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Recorrido primero en profundidad


2
6 3
1 3
10
1 7
10 4

4
11 12 11
9 13
8
5
2 8
5 7
6 12
9

1, 3, 6, 10, 13, 12, 9, 5, 2, 4, 7, 8, 11


Unidad 4. Estructuras no lineales.
4.2 Grafos.

Recorrido primero en profundidad


1 2 3 4 5 6 7 8 9 10 11 12 13 1
1 0 1 1 1 0 0 0 0 0 0 0 0 0 2
2 1 0 0 1 1 0 0 0 0 0 0 0 0 4
3 1 0 0 1 0 1 1 0 0 0 0 0 0
4 1 1 1 0 0 1 1 1 0 0 0 0 0
3
5 0 1 0 0 0 0 0 1 1 0 0 0 0 6
6 0 0 1 1 0 0 0 0 0 1 0 0 0 10
7 0 0 1 1 0 0 0 0 0 1 0 0 0 7
8 0 0 0 1 1 0 0 0 0 0 1 0 0 11
9 0 0 0 0 1 0 0 0 0 0 1 1 0
10 0 0 0 0 0 1 1 0 0 0 1 0 1
8
11 0 0 0 0 0 0 0 1 1 1 0 0 1 5
12 0 0 0 0 0 0 0 0 1 0 0 0 1 9
13 0 0 0 0 0 0 0 0 0 1 1 1 0 12
13
Unidad 4. Estructuras no lineales.
4.2 Grafos.

Recorrido primero en anchura


4
6 8
1 3 5
10
1 2 7
11

4
3 6 9 11
13
8

2 7
5 10
12 12
9

1, 3, 4, 2, 6, 7, 8, 5, 10, 11, 9, 13, 12


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
1 0 1 1 1 0 0 0 0 0 0 0 0 0 2
2 1 0 0 1 1 0 0 0 0 0 0 0 0
3 1 0 0 1 0 1 1 0 0 0 0 0 0
3
4 1 1 1 0 0 1 1 1 0 0 0 0 0 4
5 0 1 0 0 0 0 0 1 1 0 0 0 0 5
6 0 0 1 1 0 0 0 0 0 1 0 0 0 6
7 0 0 1 1 0 0 0 0 0 1 0 0 0 7
8 0 0 0 1 1 0 0 0 0 0 1 0 0
9 0 0 0 0 1 0 0 0 0 0 1 1 0
8
10 0 0 0 0 0 1 1 0 0 0 1 0 1 9
11 0 0 0 0 0 0 0 1 1 1 0 0 1 10
12 0 0 0 0 0 0 0 0 1 0 0 0 1 11
13 0 0 0 0 0 0 0 0 0 1 1 1 0 12
13
¡A practicar!

También podría gustarte