SlideShare una empresa de Scribd logo
Estructuras no lineales estáticas
y dinámicas
1. Conceptos de árbol
1. Árboles binarios
2. Árboles generales
2. Operaciones básicas sobre árboles binarios
1. Creación
2. Inserción, eliminación y búsqueda
3. Recorridos sistemáticos
4. Balanceo
3. Conceptos de grafos
1. Grafos simples
2. Grafos dirigidos
3. Representación de grafos
4. Operaciones básicas sobre grafos
1. Creación
2. Inserción, eliminación y búsqueda
3. El camino mas corto
Conceptos de Árboles
• Un árbol es una estructura de datos no lineal que
representa una relación jerárquica de sus
elementos.
• Los árboles se utilizan para representar
información ordenada, relaciones estructurales y
para modelar situaciones que se expresan en
términos de jerarquías.
• Tipos de árboles
– Generales
– Binarios
– Binarios de búsqueda
– AVL, Rojo y Negro, B+, etc.
Árboles binarios
• Un árbol binario T es un conjunto finito de elementos
llamados nodos, tal que:
– T es vacío (árbol nulo o vacío): No contiene elementos.
– T contiene un nodo llamado Raíz de T y los nodos
restantes de T forman un par ordenado de árboles
binarios disjuntos T1 y T2.
Si T contiene una raíz R los 2 árboles T1 y T2 se llaman
respectivamente subárbol izquierdo y derecho de la raíz R.
-
5 1
-
5
-
1
-raíz
Subárbol
izquierdo
Subárbol
derecho
Ejemplo de estructuras que NO
son árboles binarios
+
* -
/ 2 1
12 4
+
* -
/ 2 5 1
12 4
TERMINOLOGIA DE ÁRBOLES
• Hijo: Nodo que desciende de otro nodo.
• Padre: Nodo que tiene hijos (descendientes).
• Raíz: Único nodo que no tiene padre y tiene nivel 0.
• Hoja (Terminal): Nodo que sus árboles izquierdo y
derecho están vacíos.
• Camino: Un camino entre dos elementos e1 y e2 de un
árbol binario es una secuencia <x1,x2,..,xn> donde x1 es
e1 y xn es e2 y cada elemento xi es padre de xi+1.
• La longitud de un camino <x1,x2,..,xn> es n-1
• Rama: Camino que termina en una hoja.
• Subárbol: es un árbol que depende de otro árbol.
• Arista: Línea que une a 2 nodos.
• Nivel: Es el número de aristas entre ese nodo y la
raíz.
• Profundidad (Altura): Máximo número de nodos de
una rama desde la raíz ( Máximo Nivel + 1 ).
• Generación: Todos los nodos que tienen el mismo
número de nivel.
• Ancestro de X: Cualquier nodo del cuál X es
descendiente.
• Descendiente de X: Cualquier nodo que se encuentre
en el subárbol donde X es raíz.
• Peso: es el numero de elementos de un árbol.
• Número de Sucesores de cualquier nodo en un árbol
binario = 0, 1, 2.
Ejemplo de Árbol y Sus Componentes.
Pedro
Juan Maria
Ana Raúl
Silvia Sofía
Tito Eli
hoja
raíz
arista
hermanos
Nivel 0
Nivel 1
Nivel 2
Ancestro?
Descendiente?
# de nodos?
Altura?
Generación?
Subárbol derecho de Pedro
• Árboles Similares: Son aquellos que tienen la
misma estructura.
• Árboles Copia: Aquellos que son similares y
tienen el mismo contenido en sus correspondientes
nodos.
A
B C
D G
*
* 5
4 3
A
B C
D G
Árbol A1 Árbol A2 Árbol A3
A1 similar a A2 A3 copia de A1
Aplicaciones de árboles
Estatuto if de un LP
Aplicaciones de árboles
+
* -
/ 2 5 1
12 4
/
- +
a b * e
c d
(a-b)/((c*d)+e)12/4*2 + (5-1)
Representación Gráfica de AB
1) Diagrama de
Venn
3) Grafo no dirigido
4)Notación Identada
2) Notación Decimal Dewey
1A
1.1B
1.1.1D
1.1.1.1H
1.1.2E
1. 2C
1.2.1 F
1.2.1.1I
1.2.1.2 J
1.2.2G
5) Anidación de paréntesis
( A ( B ( D ( H ),E ), C ( F ( I, J), G ) ) )
Árbol Binario de Búsqueda
Un árbol binario de búsqueda (ABB) es un árbol binario creado
de manera especial para facilitar la localización de sus
elementos.
Se pueden realizar eficientemente operaciones de:
• Inserción
• Eliminación
• Búsqueda
• Recorrido
Un ABB cumple con las siguientes reglas para todo nodo T del
árbol:
• Todos los valores de los nodos del subárbol izquierdo son
menor o igual al valor del nodo T.
• Todo los valores de los nodos del subárbol derecho son mayor
o igual al valor del nodo T.
Inserción en un Árbol Binario de Búsqueda.
• Si el árbol esta vacío, el elemento se inserta en la
raíz.
• Si el árbol no esta vacío el elemento se compara
con la raíz si es menor se inserta en el subárbol
izquierdo, si es mayor se inserta en el subárbol
derecho.
El proceso de insertar un elemento es recursivo, ya
que la inserción en el subárbol izquierdo o
derecho sigue la misma filosofía.
Insertar elementos
Insertar 45
Insertar 23
Insertar 2
Insertar 7
Insertar 65
Insertar 38
Insertar 96
Insertar 52
Insertar 48
45
23 65
7
2 38 9652
48
raíz
Eliminación de un Árbol Binario de
Búsqueda.
Casos: N- Nodo a eliminar:
• Si N es hoja (no tiene hijos) entonces N se elimina haciendo
nulo el enlace del padre de N hacia N.
• Si N tiene exactamente un hijo, N se elimina reemplazando
el enlace del padre de N con el enlace del hijo de N.
• Si N tiene 2 hijos, sustituir por el nodo que se encuentra
mas a la izquierda en el subárbol derecho de N o por el
nodo que esta mas a la derecha en el subárbol izquierdo.
Eliminación de un Árbol BB.
45
23 65
7
2 38 9652
48
raíz
Caso 1: Eliminar 48
(enlace padre n = null)
45
23 65
7
2 38 9652
raíz
Caso 2: Eliminar 2
(enlace padre n = enlace hijo n)
45
23 65
7
2 38 9652
48
raíz 45
23 65
7 38 9652
48
raíz
Eliminación de un Árbol BB.
Caso 3: Eliminar 65
(sustituir nodo por uno de:
nodo +Izq de subárbol derecho
nodo +Der de subárbol izquierdo )
45
23 65
7
2 38 9652
48
raíz
45
23 52
7
2 38 9648
raíz 45
23 96
7
2 38 52
48
raíz
Árboles Binarios
• Cuales son los elementos necesarios para
definir un árbol binario?
• Cuales son las operaciones asociadas a un árbol
binario?
• Será posible usar la misma implementación de
las operaciones para todas las aplicaciones?
Interfase de un árbol binario
public interface IBinaryTree {
public boolean buscar(int d);
public void insertar(int d);
public int tamaño();
public void remover(int d);
public boolean vacio();
…
// recorridos
public void inorden();
public void postorden();
public void preorden();
…
}
public class SBinaryTree implements IBinaryTree{
private Nodo raiz;
// constructor para un arbol vacio
public void BinaryTree() {
raiz = null;
}
public boolean busca(int d) {…}
public void inserta(int d) {…}
public int tamaño() {..}
public void remover(int d){…}
public boolean vacio(){…}
// recorridos
public void inorden(){…}
public void postorden(){…}
public void preorden(){…}
…
}
class Nodo {
Nodo izquierdo;
Nodo derecho;
int dato;
Nodo(int d) {
izquierdo = null;
derecho = null;
dato = d;
}
}
Implementación usando recursión
• Los árboles binarios son estructuras definidas
recursivamente con dos reglas:
– Una raíz nula
– Una raíz no nula que contiene dos subárboles que a
su vez son también árboles binarios.
• Cual es el caso base?
• Como se podría definir el progreso de los
métodos?
Implementación usando recursión
• Las operaciones sobre un árbol inician siempre en
la raíz.
• Pero, el campo raíz de la clase esta declarado
como privado, lo que indica que no esta
disponible fuera de la clase.
• Los métodos de la interfase sirven para establecer
la forma de ejecución para los usuarios de la clase.
• En la clase se pueden definir métodos recursivos
que inicien el procesamiento desde la raíz.
Buscar un elemento en un ABB
// método para el usuario
public boolean busca(int d) {
return busca(raiz, d);
}
// metodo auxiliar para el procesamiento
private boolean busca(Nodo nodo, int d) {
if (nodo==null)
return false;
if (d==nodo.dato)
return true;
else
if (d<nodo.dato)
return busca(nodo.izquierdo, d);
else
return busca(nodo.derecho, d);
}
Obtener el número de elementos
// método para el usuario
public int tamaño(){
return tamaño(raiz);
}
// metodo auxiliar para el procesamiento
private int tamaño(Nodo raiz){
if (raiz == null)
return 0;
else
return 1+ tamaño(raiz.izquierdo)+ tamaño(raiz.derecho);
}
Insertar elementos en un ABB
public void insertar(int n){
raiz = insertar(raiz, n);
}
//método auxiliar
private Nodo insertar(Nodo r, int n){
if (r == null)
r = new Nodo(n);
else
if (n<=r.dato)
r.izquierda = insertar(r.izquierda, n);
else
r.derecha = insertar(r.derecha, n);
return r;
}
Recorridos de un AB
• Inorden = 2,7,23,38,45,48,52,65,96
– Visitar el subarbol izquieredo en inorden
– Visitar el nodo raiz
– Visitar el subarbol derecho en inorden
• Preorden= 45,23,2,7,38,65,52,48,96
– Visitar el nodo raiz
– Visitar el subarbol izquieredo en preorden
– Visitar el subarbol derecho en preorden
• Postorden= 7,2,38,23,48,52,96,65,45
– Visitar el subarbol izquieredo en postorden
– Visitar el subarbol derecho en postorden
– Visitar el nodo raiz
45
23 65
7
2 38 9652
48
raíz
Recorridos de un AB
A
B C
G
D
I
FE
H
raíz
• Inorden = D,G,B,A,H,E,I,C,F
– Visitar el subarbol izquieredo en inorden
– Visitar el nodo raiz
– Visitar el subarbol derecho en inorden
• Preorden= A,B,D,G,C,E,H,I,F
– Visitar el nodo raiz
– Visitar el subarbol izquieredo en preorden
– Visitar el subarbol derecho en preorden
• Postorden= G,D,B,H,I,E,F,C,A
– Visitar el subarbol izquieredo en postorden
– Visitar el subarbol derecho en postorden
– Visitar el nodo raiz
Implementación de Inorden
public void inorden(){
inorden(raiz);
System.out.println();
}
public void inorden(Nodo r){
if (r!=null) {
inorden(r.izquierda);
System.out.print (r.dato+" ");
inorden(r.derecha);
}
}
Implementación de Preorden
public void preorden(Nodo r){
if (r!=null) {
System.out.print (r.dato+" ");
preorden(r.izquierda);
preorden(r.derecha);
}
}
public void preorden(){
preorden(raiz);
System.out.println();
}
Implementación de Postorden
public void postorden(){
postorden(raiz);
System.out.println();
}
public void postorden(Nodo r){
if (r!=null) {
postorden(r. izquierda);
postorden(r.derecha);
System.out.print (r.info+" ");
}
}
Ejercicios para ABB
• Escribe un método que regrese el número de hijos de n
• Escribe un método que obtenga el padre de n
• Escribe un método que obtenga para cada nodo su balance
(#nodos subárbol izquierdo - #nodos subárbol derecho)
• Escribe un método para Obtener los nodos de una generación
• Escribe un método para Buscar el elemento mayor de un árbol
binario
• Escribe un método para encontrar el promedio de los
elementos de un árbol que contiene datos enteros.
Arboles Generales
Un árbol general, es un conjunto finito no vacío
T de elementos llamados nodos, tales que:
1. T contiene un elemento R, llamado Raíz de T.
2. Los restantes elementos de T forman una
colección ordenada de 0 o más a árboles
disjuntos T1, T2, … Tm.
Los árboles T1,T2,…Tm son llamados subárboles
de R.
Árboles binarios Vs Generales:
Un AB puede estar vacío y el AG no.
En un AB un nodo distingue entre sus hijos como
izquierdo y derecho; en un AG no hay distinción para
hijos.
Ejemplo: Suponer que existen 2 árboles:
A
B
DC
A
B
DC
•Si los 2 son AB son diferentes.
•Si los 2 son AG son iguales.
Árboles Generales
Terminología:
• Padre: Nodo del cual dependen otros nodos.
• Hijo: Nodo sucesor de otro nodo.
• Grado de un árbol: Máximo número de sucesores de
un nodo.
• Hermanos: Nodos con el mismo padre.
• Generación: Todos los nodos de un mismo nivel.
• Bosque: es una colección de 0 o mas árboles
distintos.
Bosque:
Es una colección de 0 o más árboles distintos.
Ejemplo:
Si se elimina la raíz R de un árbol general T se
obtiene un bosque que consiste en los subárboles de
R.
A
M
E
N
F H
B
G
C
I
D
J LK
Conversión de un árbol en
bosque
M
E
N
F H
B
G
C
I
D
J LK
Arbol 1 Arbol 2 Arbol 3
Conversión de Árboles Generales a Árboles
Binarios.
1.-Enlazar los hijos de cada nodo de forma horizontal de
izquierda a derecha.
2.-Enlazar de forma vertical el nodo padre con el hijo que se
encuentra mas a la izquierda.
3.-Eliminar los vínculos viejos entre hijos y padres.
4.-Rotar el diagrama 45º.
A
B C D
A
B C D
A
B
C
D
A
B C D
Ejemplo 2.
A
C
L
XHG
B
D E F
J K
I
Raiz
A
E
D
I
F
G
B
C
K
J
H
L X
Raiz
Convertir un bosque a AB:
1) Enlazar en forma horizontal las raíces de los distintos
árboles generales.
2) Enlazar los hijos de cada nodo en forma horizontal.
3) Enlazar en forma vertical el nodo padre con el hijo mas a
la izquierda.
4) Eliminar los vínculos del padre con los hijos.
5) Rotar el diagrama resultante.
M
E
N
F H
B
G
C
I
D
J LK
Arbol 1 Arbol 2 Arbol 3
L
M
E
N
F H
B
G
C
I
D
J LK
Arbol 1 Arbol 2 Arbol 3
M
E
N
F
H
B
G
C
I
D
J
K
Arbol General
Convertir un bosque a AB:
A
B
C D
GFE
H
I J
K ML
P
SRQ
T
XU
A
B
E
F
C
D
G
H
I P
QJ
K
L
M
T R
X
J
S
AB:
Representación en memoria de
Árboles generales.
• Los hijos de un nodo se pueden representar de
diversas formas:
– Cada nodo contiene un campo de liga para cada
hijo.
– Cada nodo contiene un arreglo de hijos.
– Cada nodo contiene un vector de hijos.
– Cada nodo contiene una lista de hijos.
Representación gráfica
Cada nodo contiene un
arreglo o vector de hijos
Cada nodo contiene un
campo de liga para
cada hijo.
Info h1 h2 ... hn
Info hijos
Info hijos
Cada nodo contiene
una lista de hijos
Info hijos
Info hijos
Aplicaciones de árboles
generales
• Directorio de archivos
• Organigrama de una empresa
• Contenido de un documento.
• Diseño por componentes.
• Juegos
• Estructuras de un lenguaje de
programación.
Recorridos de un arbol general
• Inorden.Inorden.
– Recorrer en Inorden T1Recorrer en Inorden T1
– Visitar la RaizVisitar la Raiz
– Recorrer en Inorden T2Recorrer en Inorden T2
– ……
– Recorrer en Inorden TnRecorrer en Inorden Tn
 Preorden.Preorden.
 Visitar la RaizVisitar la Raiz
 Recorrer en Preorden T1Recorrer en Preorden T1
 Recorrer en Preorden T2Recorrer en Preorden T2
 ……
 Recorrer en Preorden TnRecorrer en Preorden Tn
 Postorden.Postorden.
 Recorrer en Postorden T1Recorrer en Postorden T1
 Visitar la RaizVisitar la Raiz
 Recorrer en Postorden T2Recorrer en Postorden T2
 ……
 Recorrer en Postorden TnRecorrer en Postorden Tn
Otros árboles
• Árboles balanceados
– Por altura (AVL)
– Por peso (perfectamente balanceados)
– Rojinegros
Árboles Balanceados
• Árboles balanceados son aquellos ABB que
cumplen con una condición de equilibrio (que sus
subárboles izquierdo y derecho tengan la misma
profundidad)
• Los árboles balanceados optimizan la búsqueda de
elementos.
• Árboles AVL (1962- Adelson, Velskii y Landis)
la altura de los subárboles asociados a cada
elemento no pueden diferir en más de 1 y los dos
subárboles son también AVL.
Ejemplos de árboles AVL
15
185
Altura = 2
Altura = 1 Altura = 1
20
15
185
30
Altura = 1 Altura = 1
Altura = 1Altura = 2
Altura = 3
Inserción en árboles balanceados
35
20
2515
40
Insertar 10,18,27
35
20
2515
40
1810 27
Insertar 37,45 35
20
2515
4020
4537
Inserción en árboles balanceados
35
20 40
Caso 1.
Las ramas izquierda y derecha del árbol tienen la misma altura.
(HRI = HRD )
15
35
20 40
Caso 1.1 Inserta
elemento en rama
izquierda (RI)
50
35
20 40
Caso 1.2 Inserta
elemento en rama
derecha (RD)
Inserción en árboles balanceados
Caso 2.
Las ramas izquierda y derecha del árbol tienen altura diferente.
(HRI ≠ HRD )
Caso 2.1 suponer
HRI < HRD
50
35
20 40
15
35
20 40
Caso 2.1.1 Inserta en RI
50
Caso 2.1.2 Inserta en RD
50
35
20 40
75
Inserción en árboles balanceados
Caso 2. (continuación)
Las ramas izquierda y derecha del árbol tienen altura diferente.
(HRI ≠ HRD )
Caso 2.2 suponer
HRI > HRD
15
35
20 40
15
35
20 40
Caso 2.2.1 Inserta en RI
5
Caso 2.1.2 Inserta en RD
15
35
20 40
50
Reestructuración
• Factor de equilibrio: Es la
diferencia entre la altura de la rama
derecha y la altura de la rama
izquierda. FE = HRD - HRI
• Cada nodo tiene asociado un factor
de equilibrio que se calcula para
todos los elementos de la rama
donde se realizó la inserción. Este
se utiliza para saber si el árbol esta
balanceado o debe reestructurarse.
65
45
5433
70
50
68
0
-10 0
-1
-1
1
Rotaciones
Caso 1 Rotación simple por la rama izquierda
15
35
20
0
-1
-2
20
15 35
0
0
0
Caso 2 Rotación simple por la rama derecha
75
35
50
0
1
2
50
35 75
0
0
0
padre.fe = -2
hijo.fe = -1
padre.fe = 2
hijo.fe = 1
padre.izq = hijo.der
hijo.der = padre
padre = hijo
padre.der = hijo.izq
hijo.izq = padre
padre = hijo
Rotaciones
Caso 3 Rotación compuesta Derecha Izquierda
25
45
35 50
0
0
0
35
20
0
1
-2
Caso 4 Rotación compuesta Izquierda Derecha
45
35
50
0
-1
2
25
20 35
0
0
0
padre.fe = 2
hijo.fe = -1
padre.fe = -2
hijo.fe = 1
hijo.der = n.izq
n.izq= hijo
padre.izq = n.der
n.der = padre
padre = n
p
h
n
5.3 Grafos
Un grafo es una estructura de datos no lineal que
consta de:
1) Un conjunto finito V de elementos llamados
vértices (Nodos, Puntos).
2) Un conjunto E de aristas tales que cada arista
e ε E esta identificada por un único par
(desordenado) [u,v] de nodos de V denotado
como e = [u,v].
Un grafo se denota como G = (V, E).
NODOS VECINOS O ADYACENTES: Dos nodos son
vecinos si existe una arista que los una.
E = (u, v) los vértices u, v son vecinos.
EL GRADO DE UN NODO U: es el número de
aristas que contienen a u.
NODO AISLADO: Son aquellos nodos que tienen
grado 0.
GRAFO ETIQUETADO: Es un grafo donde cada
arista tiene un valor asignado.
Ejemplo de grafos:
Miami
Las Vegas
Los Ángeles
Portland Chicago
New
York
V(G)= Los Ángeles, Portland, Chicago, New York, Las Vegas,
Miami.
E(G)={(Los ángeles, Chicago),(Los ángeles, New York),
(Chicago, New York), (Chicago, Las Vegas), (Las vegas, New
York), (Las Vegas, Miami)}
Las aristas no están ordenadas lo que significa que:
( Los Ángeles, Chicago) = ( Chicago, Los Ángeles)
( u1, v2) = (u2, v1)
Grado (Los Ángeles) = 2
Grado (Chicago) = 3
Grado de Portland = 0
Grafo dirigido
Un grafo dirigido es una estructura de datos no lineal
que consta de:
• Un conjunto finito de elementos llamados vértices.
• Un conjunto E de aristas con orientación (flechas)
que conectan a 2 nodos.
Las Vegas
Miami
Los Ángeles
Portland Chicago
New York
Terminología:
Un camino P de longitud n desde U hasta V es una
secuencia de n+1 nodos escrita como: P (V0,V1,…,Vn).
Donde:
•U = V0
•Vi es adyacente a Vi-1 para toda i = 1, 2, …, n
•V = Vn
Bucle: Conexión de un vértice consigo mismo.
Camino Cerrado: Es un camino donde V0 = Vn , el vértice
inicial y el final son el mismo.
Camino Simple: Es aquel donde todos los vértices son
distintos (Solo V0 puede ser = a Vn).
Ciclo: Camino simple cerrado de longitud 3 o mayor.
K-Ciclo: Es un ciclo de longitud K.
Grafo Convexo: Grafo donde existe un camino entre
cualesquiera dos de sus nodos.
Grafo Completo: Un grafo es completo si cada nodo U de
G es adyacente a todos los demás nodos de G.
Multigrafo: Es una generalización de un grafo que:
1) Contiene bucles y /o
2)Contiene aristas múltiples que conectan a los
mismos extremos.
G1 G2 Grafo Completo
G3
Grafo Completo
Dirigido
G4
Máximo Numero De Aristas:
•GRAFO:
Gn = n ( n - 1 ) G3 = 4(3) = 12 = 6
2 2 2
•GRAFO DIRIGIDO:
GDn = n ( n – 1 ) G4 = 4 (3) = 12
G1: CICLO A, B, C, A
•GRAFO ACICLICO: Es un grafo que no contiene ciclos.
(Un árbol es un grafo aciclico). F
E
A B
C
D
Un Subgrafo S1 de un grafo G se define como:
V (S1) Є V (G)
E (S1) Є E (G)
S1 es un subconjunto de G si y solo si V (S1) Є V (G) y E
(S1) Є E (G).
Ejemplo:
Grafo G Subgrafo S1 Subgrafo S2 Subgrafo S3
Grafo débilmente conectado:
Para cada par de vértices (u,v) existe un
camino de u a v tal que vo = u y vn= v y para cada
componente de la ruta (vi, vi+1) existe en E(G) el
componente (vi, vi+1) o (vi+1,vi).
El camino quizá no puede recorrerse debido a la
orientación de sus aristas.
Representación secuencial de grafos:
•Se basa en una matriz de adyacencia.
•Suponga que G es un grafo dirigido simple de m nodos y
que los nodos de G han sido ordenados y llamados V1, V2,
… , Vn. La matriz de adyacencia para G es de tamaño m x
m definiendo cada elemento como:
aij = 1 : si Vi es adyacente a vj. Existe e = (vi, vj)
0 : en caso contrario.
Ejemplo 1:
X
WZ
Y
V1 = X
V2 = Y
V3 = Z
V4 = W
0 0 0 1
1 0 1 1
1 0 0 1
0 0 1 0
A =
V1 V2 V3 V4
V1
V2
V3
V4
X
Y
Z
W
X Y Z W
= A1
Para un grafo no dirigido, la matriz de adyacencia es
una matriz simétrica: ai,j = aj,i
X
WZ
Y
0 1 1 1
1 0 1 1
1 1 0 2
1 1 2 0
X
Y
Z
W
X Y Z W
Considere las potencias A1, A2, A3 … de la matriz de
adyacencia ak(i,j) = la entrada i,j de la matriz Ak.
A1 – Representa el número de caminos de longitud 1
desde el nodo vi hasta vj.
Ak – Representa el número de caminos de longitud k
desde el nodo vi hasta el nodo vj.
0 0 0 1
1 0 1 2
0 0 1 1
1 0 0 1
A2
=
1 0 0 1
1 0 2 2
1 0 1 1
0 0 1 1
A3
=
0 0 1 1
2 0 2 3
1 0 1 2
1 0 1 1
A4
=
Caminos de long. 2 Caminos de long. 3 Caminos de long. 4
Representación en memoria dinámica:
Un grafo se puede representar con una LISTA DE
ADYACENCIA.
Una lista de adyacencia para un vértice a es una lista
ordenada de todos los vértices adyacentes a a.
• Si el Número de nodos es fijo se pueden almacenar
en un arreglo.
Ejemplo:
a
dc
b
Arreglo de
nodos
Lista de nodos
adyacentes a
cada nodo.
bca
b
c
d
a
d
b
* Si el número de nodos puede variar, se deben
almacenar en una lista.
Lista de
Nodos
a b c
b a
c d
d b
a
dc
b
1) Buscar un vértice/arista.
2) Insertar un vértice/arista.
3) Eliminar un vértice/arista.
4) Recorrer el grafo.
5) Número de vértices
6) Vacío.
• Los vértices se mantienen en una lista de vértices.
No pueden existir vertices repetidos.
• Los aristas se mantienen en una lista ordenada
para cada vértice.
Operaciones sobre grafos:
Búsqueda de el camino más corto:
Encontrar el camino más corto desde A (nodo inicial)
hasta I (nodo final):
1) Marcar todos los nodos con infinito, y seleccionar nodo inicial
(iniciar con 0) como nodo actual
2) Calcular los caminos del nodo actual a los nodos adyacentes,
reemplazar el camino actual por el nuevo solo si este es menor.
3) Marcar el nodo actual como “visitado”.
4) Seleccionar como nodo actual el nodo con camino de valor
mínimo.
5) Repetir para el nodo actual seleccionado los pasos 2, 3, 4 hasta
llegar al nodo final o hasta agotar todos los nodos.
Ejemplo:
A
B E
C
F
D
H
I
3
5
4
1
2
1
7
2
2
∞
∞
∞
∞
∞
∞
∞
G
2
∞3
1
∞
*
*
*
* *
*
*
*
*
(3,A)
(5,A)
(4,A)∞
∞
∞
∞
∞
∞
∞
∞
(5,A, B)
(7,A, B, E)
(5,A, D)
(8, A, B, E, G)
(10,A, D, H)
(8, A, B, E, G)
5

Más contenido relacionado

La actualidad más candente

Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
DARKGIRL93
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
José Antonio Sandoval Acosta
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
Victor Quintero
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Rubi Veronica Chimal Cuxin
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
Kamila Nicole Molina Orellana
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
Adal Dg
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
Junior Soto
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismo
Edwin Loayza
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
Josue Lara Reyes
 
Semana 2 tecnicas y lenguajes de trazabilidad
Semana 2 tecnicas y lenguajes de trazabilidadSemana 2 tecnicas y lenguajes de trazabilidad
Semana 2 tecnicas y lenguajes de trazabilidad
Giovani Ramirez
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
miranda271999
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
Arboles ppt
Arboles pptArboles ppt
Arboles pptINFOP
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
karlalopezbello
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
Angel Vázquez Patiño
 

La actualidad más candente (20)

Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Jerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismoJerarquía de clases, herencia, polimorfismo
Jerarquía de clases, herencia, polimorfismo
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Semana 2 tecnicas y lenguajes de trazabilidad
Semana 2 tecnicas y lenguajes de trazabilidadSemana 2 tecnicas y lenguajes de trazabilidad
Semana 2 tecnicas y lenguajes de trazabilidad
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Arboles ppt
Arboles pptArboles ppt
Arboles ppt
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
 

Similar a 3 estructuras no lineales estáticas y dinámicas

Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
Angel Vázquez Patiño
 
Estructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no LinealesEstructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no Lineales
José Antonio Sandoval Acosta
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
José Antonio Sandoval Acosta
 
Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5pootalex
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
Noel E Jimenez
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
nukeeHE
 
Sustentacion arboles
Sustentacion arbolesSustentacion arboles
Sustentacion arbolesrafyel2000
 
Arboles.pdf
Arboles.pdfArboles.pdf
Arboles.pdf
gabrielarauz3
 
04 curso-prope-py ed-arboles
04 curso-prope-py ed-arboles04 curso-prope-py ed-arboles
04 curso-prope-py ed-arbolesAarón Jiménez
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosfavi_hola
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
Alvaro Enrique Ruano
 
Árboles Binarios
Árboles BinariosÁrboles Binarios
Árboles Binarios
ElmerPichiy
 
Abb árboles de búsqueda binaria
Abb árboles de búsqueda binariaAbb árboles de búsqueda binaria
Abb árboles de búsqueda binaria
Gloria Isabel Bautista Lasprilla
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
Angeles Quezada
 
Arboles
ArbolesArboles
ArbolesUTCH
 

Similar a 3 estructuras no lineales estáticas y dinámicas (20)

Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Estructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no LinealesEstructura de Datos - Unidad IV: Estructuras no Lineales
Estructura de Datos - Unidad IV: Estructuras no Lineales
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
 
Arboles02
Arboles02Arboles02
Arboles02
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Arboles
Arboles Arboles
Arboles
 
Sustentacion arboles
Sustentacion arbolesSustentacion arboles
Sustentacion arboles
 
Arboles.pdf
Arboles.pdfArboles.pdf
Arboles.pdf
 
04 curso-prope-py ed-arboles
04 curso-prope-py ed-arboles04 curso-prope-py ed-arboles
04 curso-prope-py ed-arboles
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Árboles Binarios
Árboles BinariosÁrboles Binarios
Árboles Binarios
 
Abb árboles de búsqueda binaria
Abb árboles de búsqueda binariaAbb árboles de búsqueda binaria
Abb árboles de búsqueda binaria
 
ARBOLES BINARIOS
ARBOLES BINARIOSARBOLES BINARIOS
ARBOLES BINARIOS
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Arboles
ArbolesArboles
Arboles
 

Más de Eliezer Cordova

Tipos de comunicacion
Tipos de comunicacionTipos de comunicacion
Tipos de comunicacion
Eliezer Cordova
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
Eliezer Cordova
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
Eliezer Cordova
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
Eliezer Cordova
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
Eliezer Cordova
 
Introduccion publisher
Introduccion publisherIntroduccion publisher
Introduccion publisher
Eliezer Cordova
 
Presentaciones efectivas
Presentaciones efectivasPresentaciones efectivas
Presentaciones efectivas
Eliezer Cordova
 
Resolucion de problemas
Resolucion de problemasResolucion de problemas
Resolucion de problemas
Eliezer Cordova
 
Programación
ProgramaciónProgramación
Programación
Eliezer Cordova
 
Presentacion aula virtual videoconferencia
Presentacion aula virtual videoconferenciaPresentacion aula virtual videoconferencia
Presentacion aula virtual videoconferencia
Eliezer Cordova
 
Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0
Eliezer Cordova
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
Eliezer Cordova
 
Presentacion uno
Presentacion unoPresentacion uno
Presentacion uno
Eliezer Cordova
 
Intro
IntroIntro
2 arboles
2 arboles2 arboles
2 arboles
Eliezer Cordova
 
1 árbol
1 árbol1 árbol
1 árbol
Eliezer Cordova
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
Eliezer Cordova
 
3 funciones
3 funciones3 funciones
3 funciones
Eliezer Cordova
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
Eliezer Cordova
 
1 estructura programa-c
1 estructura programa-c1 estructura programa-c
1 estructura programa-c
Eliezer Cordova
 

Más de Eliezer Cordova (20)

Tipos de comunicacion
Tipos de comunicacionTipos de comunicacion
Tipos de comunicacion
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
 
Introduccion publisher
Introduccion publisherIntroduccion publisher
Introduccion publisher
 
Presentaciones efectivas
Presentaciones efectivasPresentaciones efectivas
Presentaciones efectivas
 
Resolucion de problemas
Resolucion de problemasResolucion de problemas
Resolucion de problemas
 
Programación
ProgramaciónProgramación
Programación
 
Presentacion aula virtual videoconferencia
Presentacion aula virtual videoconferenciaPresentacion aula virtual videoconferencia
Presentacion aula virtual videoconferencia
 
Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
Presentacion uno
Presentacion unoPresentacion uno
Presentacion uno
 
Intro
IntroIntro
Intro
 
2 arboles
2 arboles2 arboles
2 arboles
 
1 árbol
1 árbol1 árbol
1 árbol
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
3 funciones
3 funciones3 funciones
3 funciones
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
1 estructura programa-c
1 estructura programa-c1 estructura programa-c
1 estructura programa-c
 

Último

El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Monseespinoza6
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
Alejandrino Halire Ccahuana
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
MasielPMP
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
CESAR MIJAEL ESPINOZA SALAZAR
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
nievesjiesc03
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
LilianaRivera778668
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
MaribelGaitanRamosRa
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
YasneidyGonzalez
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
FelixCamachoGuzman
 
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docxSESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
QuispeJimenezDyuy
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
JAVIER SOLIS NOYOLA
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
https://gramadal.wordpress.com/
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 

Último (20)

El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
 
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docxSESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
SESION ORDENAMOS NÚMEROS EN FORMA ASCENDENTE Y DESCENDENTE 20 DE MAYO.docx
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 

3 estructuras no lineales estáticas y dinámicas

  • 1. Estructuras no lineales estáticas y dinámicas
  • 2. 1. Conceptos de árbol 1. Árboles binarios 2. Árboles generales 2. Operaciones básicas sobre árboles binarios 1. Creación 2. Inserción, eliminación y búsqueda 3. Recorridos sistemáticos 4. Balanceo 3. Conceptos de grafos 1. Grafos simples 2. Grafos dirigidos 3. Representación de grafos 4. Operaciones básicas sobre grafos 1. Creación 2. Inserción, eliminación y búsqueda 3. El camino mas corto
  • 3. Conceptos de Árboles • Un árbol es una estructura de datos no lineal que representa una relación jerárquica de sus elementos. • Los árboles se utilizan para representar información ordenada, relaciones estructurales y para modelar situaciones que se expresan en términos de jerarquías. • Tipos de árboles – Generales – Binarios – Binarios de búsqueda – AVL, Rojo y Negro, B+, etc.
  • 4. Árboles binarios • Un árbol binario T es un conjunto finito de elementos llamados nodos, tal que: – T es vacío (árbol nulo o vacío): No contiene elementos. – T contiene un nodo llamado Raíz de T y los nodos restantes de T forman un par ordenado de árboles binarios disjuntos T1 y T2. Si T contiene una raíz R los 2 árboles T1 y T2 se llaman respectivamente subárbol izquierdo y derecho de la raíz R. - 5 1 - 5 - 1 -raíz Subárbol izquierdo Subárbol derecho
  • 5. Ejemplo de estructuras que NO son árboles binarios + * - / 2 1 12 4 + * - / 2 5 1 12 4
  • 6. TERMINOLOGIA DE ÁRBOLES • Hijo: Nodo que desciende de otro nodo. • Padre: Nodo que tiene hijos (descendientes). • Raíz: Único nodo que no tiene padre y tiene nivel 0. • Hoja (Terminal): Nodo que sus árboles izquierdo y derecho están vacíos. • Camino: Un camino entre dos elementos e1 y e2 de un árbol binario es una secuencia <x1,x2,..,xn> donde x1 es e1 y xn es e2 y cada elemento xi es padre de xi+1. • La longitud de un camino <x1,x2,..,xn> es n-1 • Rama: Camino que termina en una hoja. • Subárbol: es un árbol que depende de otro árbol.
  • 7. • Arista: Línea que une a 2 nodos. • Nivel: Es el número de aristas entre ese nodo y la raíz. • Profundidad (Altura): Máximo número de nodos de una rama desde la raíz ( Máximo Nivel + 1 ). • Generación: Todos los nodos que tienen el mismo número de nivel. • Ancestro de X: Cualquier nodo del cuál X es descendiente. • Descendiente de X: Cualquier nodo que se encuentre en el subárbol donde X es raíz. • Peso: es el numero de elementos de un árbol. • Número de Sucesores de cualquier nodo en un árbol binario = 0, 1, 2.
  • 8. Ejemplo de Árbol y Sus Componentes. Pedro Juan Maria Ana Raúl Silvia Sofía Tito Eli hoja raíz arista hermanos Nivel 0 Nivel 1 Nivel 2 Ancestro? Descendiente? # de nodos? Altura? Generación? Subárbol derecho de Pedro
  • 9. • Árboles Similares: Son aquellos que tienen la misma estructura. • Árboles Copia: Aquellos que son similares y tienen el mismo contenido en sus correspondientes nodos. A B C D G * * 5 4 3 A B C D G Árbol A1 Árbol A2 Árbol A3 A1 similar a A2 A3 copia de A1
  • 11. Aplicaciones de árboles + * - / 2 5 1 12 4 / - + a b * e c d (a-b)/((c*d)+e)12/4*2 + (5-1)
  • 12. Representación Gráfica de AB 1) Diagrama de Venn 3) Grafo no dirigido 4)Notación Identada 2) Notación Decimal Dewey 1A 1.1B 1.1.1D 1.1.1.1H 1.1.2E 1. 2C 1.2.1 F 1.2.1.1I 1.2.1.2 J 1.2.2G 5) Anidación de paréntesis ( A ( B ( D ( H ),E ), C ( F ( I, J), G ) ) )
  • 13. Árbol Binario de Búsqueda Un árbol binario de búsqueda (ABB) es un árbol binario creado de manera especial para facilitar la localización de sus elementos. Se pueden realizar eficientemente operaciones de: • Inserción • Eliminación • Búsqueda • Recorrido Un ABB cumple con las siguientes reglas para todo nodo T del árbol: • Todos los valores de los nodos del subárbol izquierdo son menor o igual al valor del nodo T. • Todo los valores de los nodos del subárbol derecho son mayor o igual al valor del nodo T.
  • 14. Inserción en un Árbol Binario de Búsqueda. • Si el árbol esta vacío, el elemento se inserta en la raíz. • Si el árbol no esta vacío el elemento se compara con la raíz si es menor se inserta en el subárbol izquierdo, si es mayor se inserta en el subárbol derecho. El proceso de insertar un elemento es recursivo, ya que la inserción en el subárbol izquierdo o derecho sigue la misma filosofía.
  • 15. Insertar elementos Insertar 45 Insertar 23 Insertar 2 Insertar 7 Insertar 65 Insertar 38 Insertar 96 Insertar 52 Insertar 48 45 23 65 7 2 38 9652 48 raíz
  • 16. Eliminación de un Árbol Binario de Búsqueda. Casos: N- Nodo a eliminar: • Si N es hoja (no tiene hijos) entonces N se elimina haciendo nulo el enlace del padre de N hacia N. • Si N tiene exactamente un hijo, N se elimina reemplazando el enlace del padre de N con el enlace del hijo de N. • Si N tiene 2 hijos, sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho de N o por el nodo que esta mas a la derecha en el subárbol izquierdo.
  • 17. Eliminación de un Árbol BB. 45 23 65 7 2 38 9652 48 raíz Caso 1: Eliminar 48 (enlace padre n = null) 45 23 65 7 2 38 9652 raíz Caso 2: Eliminar 2 (enlace padre n = enlace hijo n) 45 23 65 7 2 38 9652 48 raíz 45 23 65 7 38 9652 48 raíz
  • 18. Eliminación de un Árbol BB. Caso 3: Eliminar 65 (sustituir nodo por uno de: nodo +Izq de subárbol derecho nodo +Der de subárbol izquierdo ) 45 23 65 7 2 38 9652 48 raíz 45 23 52 7 2 38 9648 raíz 45 23 96 7 2 38 52 48 raíz
  • 19. Árboles Binarios • Cuales son los elementos necesarios para definir un árbol binario? • Cuales son las operaciones asociadas a un árbol binario? • Será posible usar la misma implementación de las operaciones para todas las aplicaciones?
  • 20. Interfase de un árbol binario public interface IBinaryTree { public boolean buscar(int d); public void insertar(int d); public int tamaño(); public void remover(int d); public boolean vacio(); … // recorridos public void inorden(); public void postorden(); public void preorden(); … }
  • 21. public class SBinaryTree implements IBinaryTree{ private Nodo raiz; // constructor para un arbol vacio public void BinaryTree() { raiz = null; } public boolean busca(int d) {…} public void inserta(int d) {…} public int tamaño() {..} public void remover(int d){…} public boolean vacio(){…} // recorridos public void inorden(){…} public void postorden(){…} public void preorden(){…} … } class Nodo { Nodo izquierdo; Nodo derecho; int dato; Nodo(int d) { izquierdo = null; derecho = null; dato = d; } }
  • 22. Implementación usando recursión • Los árboles binarios son estructuras definidas recursivamente con dos reglas: – Una raíz nula – Una raíz no nula que contiene dos subárboles que a su vez son también árboles binarios. • Cual es el caso base? • Como se podría definir el progreso de los métodos?
  • 23. Implementación usando recursión • Las operaciones sobre un árbol inician siempre en la raíz. • Pero, el campo raíz de la clase esta declarado como privado, lo que indica que no esta disponible fuera de la clase. • Los métodos de la interfase sirven para establecer la forma de ejecución para los usuarios de la clase. • En la clase se pueden definir métodos recursivos que inicien el procesamiento desde la raíz.
  • 24. Buscar un elemento en un ABB // método para el usuario public boolean busca(int d) { return busca(raiz, d); } // metodo auxiliar para el procesamiento private boolean busca(Nodo nodo, int d) { if (nodo==null) return false; if (d==nodo.dato) return true; else if (d<nodo.dato) return busca(nodo.izquierdo, d); else return busca(nodo.derecho, d); }
  • 25. Obtener el número de elementos // método para el usuario public int tamaño(){ return tamaño(raiz); } // metodo auxiliar para el procesamiento private int tamaño(Nodo raiz){ if (raiz == null) return 0; else return 1+ tamaño(raiz.izquierdo)+ tamaño(raiz.derecho); }
  • 26. Insertar elementos en un ABB public void insertar(int n){ raiz = insertar(raiz, n); } //método auxiliar private Nodo insertar(Nodo r, int n){ if (r == null) r = new Nodo(n); else if (n<=r.dato) r.izquierda = insertar(r.izquierda, n); else r.derecha = insertar(r.derecha, n); return r; }
  • 27. Recorridos de un AB • Inorden = 2,7,23,38,45,48,52,65,96 – Visitar el subarbol izquieredo en inorden – Visitar el nodo raiz – Visitar el subarbol derecho en inorden • Preorden= 45,23,2,7,38,65,52,48,96 – Visitar el nodo raiz – Visitar el subarbol izquieredo en preorden – Visitar el subarbol derecho en preorden • Postorden= 7,2,38,23,48,52,96,65,45 – Visitar el subarbol izquieredo en postorden – Visitar el subarbol derecho en postorden – Visitar el nodo raiz 45 23 65 7 2 38 9652 48 raíz
  • 28. Recorridos de un AB A B C G D I FE H raíz • Inorden = D,G,B,A,H,E,I,C,F – Visitar el subarbol izquieredo en inorden – Visitar el nodo raiz – Visitar el subarbol derecho en inorden • Preorden= A,B,D,G,C,E,H,I,F – Visitar el nodo raiz – Visitar el subarbol izquieredo en preorden – Visitar el subarbol derecho en preorden • Postorden= G,D,B,H,I,E,F,C,A – Visitar el subarbol izquieredo en postorden – Visitar el subarbol derecho en postorden – Visitar el nodo raiz
  • 29. Implementación de Inorden public void inorden(){ inorden(raiz); System.out.println(); } public void inorden(Nodo r){ if (r!=null) { inorden(r.izquierda); System.out.print (r.dato+" "); inorden(r.derecha); } }
  • 30. Implementación de Preorden public void preorden(Nodo r){ if (r!=null) { System.out.print (r.dato+" "); preorden(r.izquierda); preorden(r.derecha); } } public void preorden(){ preorden(raiz); System.out.println(); }
  • 31. Implementación de Postorden public void postorden(){ postorden(raiz); System.out.println(); } public void postorden(Nodo r){ if (r!=null) { postorden(r. izquierda); postorden(r.derecha); System.out.print (r.info+" "); } }
  • 32. Ejercicios para ABB • Escribe un método que regrese el número de hijos de n • Escribe un método que obtenga el padre de n • Escribe un método que obtenga para cada nodo su balance (#nodos subárbol izquierdo - #nodos subárbol derecho) • Escribe un método para Obtener los nodos de una generación • Escribe un método para Buscar el elemento mayor de un árbol binario • Escribe un método para encontrar el promedio de los elementos de un árbol que contiene datos enteros.
  • 33. Arboles Generales Un árbol general, es un conjunto finito no vacío T de elementos llamados nodos, tales que: 1. T contiene un elemento R, llamado Raíz de T. 2. Los restantes elementos de T forman una colección ordenada de 0 o más a árboles disjuntos T1, T2, … Tm. Los árboles T1,T2,…Tm son llamados subárboles de R.
  • 34. Árboles binarios Vs Generales: Un AB puede estar vacío y el AG no. En un AB un nodo distingue entre sus hijos como izquierdo y derecho; en un AG no hay distinción para hijos. Ejemplo: Suponer que existen 2 árboles: A B DC A B DC •Si los 2 son AB son diferentes. •Si los 2 son AG son iguales.
  • 35. Árboles Generales Terminología: • Padre: Nodo del cual dependen otros nodos. • Hijo: Nodo sucesor de otro nodo. • Grado de un árbol: Máximo número de sucesores de un nodo. • Hermanos: Nodos con el mismo padre. • Generación: Todos los nodos de un mismo nivel. • Bosque: es una colección de 0 o mas árboles distintos.
  • 36. Bosque: Es una colección de 0 o más árboles distintos. Ejemplo: Si se elimina la raíz R de un árbol general T se obtiene un bosque que consiste en los subárboles de R. A M E N F H B G C I D J LK
  • 37. Conversión de un árbol en bosque M E N F H B G C I D J LK Arbol 1 Arbol 2 Arbol 3
  • 38. Conversión de Árboles Generales a Árboles Binarios. 1.-Enlazar los hijos de cada nodo de forma horizontal de izquierda a derecha. 2.-Enlazar de forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda. 3.-Eliminar los vínculos viejos entre hijos y padres. 4.-Rotar el diagrama 45º. A B C D A B C D A B C D A B C D
  • 39. Ejemplo 2. A C L XHG B D E F J K I Raiz A E D I F G B C K J H L X Raiz
  • 40. Convertir un bosque a AB: 1) Enlazar en forma horizontal las raíces de los distintos árboles generales. 2) Enlazar los hijos de cada nodo en forma horizontal. 3) Enlazar en forma vertical el nodo padre con el hijo mas a la izquierda. 4) Eliminar los vínculos del padre con los hijos. 5) Rotar el diagrama resultante. M E N F H B G C I D J LK Arbol 1 Arbol 2 Arbol 3
  • 41. L M E N F H B G C I D J LK Arbol 1 Arbol 2 Arbol 3 M E N F H B G C I D J K Arbol General
  • 42. Convertir un bosque a AB: A B C D GFE H I J K ML P SRQ T XU
  • 44. Representación en memoria de Árboles generales. • Los hijos de un nodo se pueden representar de diversas formas: – Cada nodo contiene un campo de liga para cada hijo. – Cada nodo contiene un arreglo de hijos. – Cada nodo contiene un vector de hijos. – Cada nodo contiene una lista de hijos.
  • 45. Representación gráfica Cada nodo contiene un arreglo o vector de hijos Cada nodo contiene un campo de liga para cada hijo. Info h1 h2 ... hn Info hijos Info hijos Cada nodo contiene una lista de hijos Info hijos Info hijos
  • 46. Aplicaciones de árboles generales • Directorio de archivos • Organigrama de una empresa • Contenido de un documento. • Diseño por componentes. • Juegos • Estructuras de un lenguaje de programación.
  • 47. Recorridos de un arbol general • Inorden.Inorden. – Recorrer en Inorden T1Recorrer en Inorden T1 – Visitar la RaizVisitar la Raiz – Recorrer en Inorden T2Recorrer en Inorden T2 – …… – Recorrer en Inorden TnRecorrer en Inorden Tn  Preorden.Preorden.  Visitar la RaizVisitar la Raiz  Recorrer en Preorden T1Recorrer en Preorden T1  Recorrer en Preorden T2Recorrer en Preorden T2  ……  Recorrer en Preorden TnRecorrer en Preorden Tn  Postorden.Postorden.  Recorrer en Postorden T1Recorrer en Postorden T1  Visitar la RaizVisitar la Raiz  Recorrer en Postorden T2Recorrer en Postorden T2  ……  Recorrer en Postorden TnRecorrer en Postorden Tn
  • 48. Otros árboles • Árboles balanceados – Por altura (AVL) – Por peso (perfectamente balanceados) – Rojinegros
  • 49. Árboles Balanceados • Árboles balanceados son aquellos ABB que cumplen con una condición de equilibrio (que sus subárboles izquierdo y derecho tengan la misma profundidad) • Los árboles balanceados optimizan la búsqueda de elementos. • Árboles AVL (1962- Adelson, Velskii y Landis) la altura de los subárboles asociados a cada elemento no pueden diferir en más de 1 y los dos subárboles son también AVL.
  • 50. Ejemplos de árboles AVL 15 185 Altura = 2 Altura = 1 Altura = 1 20 15 185 30 Altura = 1 Altura = 1 Altura = 1Altura = 2 Altura = 3
  • 51. Inserción en árboles balanceados 35 20 2515 40 Insertar 10,18,27 35 20 2515 40 1810 27 Insertar 37,45 35 20 2515 4020 4537
  • 52. Inserción en árboles balanceados 35 20 40 Caso 1. Las ramas izquierda y derecha del árbol tienen la misma altura. (HRI = HRD ) 15 35 20 40 Caso 1.1 Inserta elemento en rama izquierda (RI) 50 35 20 40 Caso 1.2 Inserta elemento en rama derecha (RD)
  • 53. Inserción en árboles balanceados Caso 2. Las ramas izquierda y derecha del árbol tienen altura diferente. (HRI ≠ HRD ) Caso 2.1 suponer HRI < HRD 50 35 20 40 15 35 20 40 Caso 2.1.1 Inserta en RI 50 Caso 2.1.2 Inserta en RD 50 35 20 40 75
  • 54. Inserción en árboles balanceados Caso 2. (continuación) Las ramas izquierda y derecha del árbol tienen altura diferente. (HRI ≠ HRD ) Caso 2.2 suponer HRI > HRD 15 35 20 40 15 35 20 40 Caso 2.2.1 Inserta en RI 5 Caso 2.1.2 Inserta en RD 15 35 20 40 50
  • 55. Reestructuración • Factor de equilibrio: Es la diferencia entre la altura de la rama derecha y la altura de la rama izquierda. FE = HRD - HRI • Cada nodo tiene asociado un factor de equilibrio que se calcula para todos los elementos de la rama donde se realizó la inserción. Este se utiliza para saber si el árbol esta balanceado o debe reestructurarse. 65 45 5433 70 50 68 0 -10 0 -1 -1 1
  • 56. Rotaciones Caso 1 Rotación simple por la rama izquierda 15 35 20 0 -1 -2 20 15 35 0 0 0 Caso 2 Rotación simple por la rama derecha 75 35 50 0 1 2 50 35 75 0 0 0 padre.fe = -2 hijo.fe = -1 padre.fe = 2 hijo.fe = 1 padre.izq = hijo.der hijo.der = padre padre = hijo padre.der = hijo.izq hijo.izq = padre padre = hijo
  • 57. Rotaciones Caso 3 Rotación compuesta Derecha Izquierda 25 45 35 50 0 0 0 35 20 0 1 -2 Caso 4 Rotación compuesta Izquierda Derecha 45 35 50 0 -1 2 25 20 35 0 0 0 padre.fe = 2 hijo.fe = -1 padre.fe = -2 hijo.fe = 1 hijo.der = n.izq n.izq= hijo padre.izq = n.der n.der = padre padre = n p h n
  • 58. 5.3 Grafos Un grafo es una estructura de datos no lineal que consta de: 1) Un conjunto finito V de elementos llamados vértices (Nodos, Puntos). 2) Un conjunto E de aristas tales que cada arista e ε E esta identificada por un único par (desordenado) [u,v] de nodos de V denotado como e = [u,v].
  • 59. Un grafo se denota como G = (V, E). NODOS VECINOS O ADYACENTES: Dos nodos son vecinos si existe una arista que los una. E = (u, v) los vértices u, v son vecinos. EL GRADO DE UN NODO U: es el número de aristas que contienen a u. NODO AISLADO: Son aquellos nodos que tienen grado 0. GRAFO ETIQUETADO: Es un grafo donde cada arista tiene un valor asignado.
  • 60. Ejemplo de grafos: Miami Las Vegas Los Ángeles Portland Chicago New York V(G)= Los Ángeles, Portland, Chicago, New York, Las Vegas, Miami. E(G)={(Los ángeles, Chicago),(Los ángeles, New York), (Chicago, New York), (Chicago, Las Vegas), (Las vegas, New York), (Las Vegas, Miami)}
  • 61. Las aristas no están ordenadas lo que significa que: ( Los Ángeles, Chicago) = ( Chicago, Los Ángeles) ( u1, v2) = (u2, v1) Grado (Los Ángeles) = 2 Grado (Chicago) = 3 Grado de Portland = 0
  • 62. Grafo dirigido Un grafo dirigido es una estructura de datos no lineal que consta de: • Un conjunto finito de elementos llamados vértices. • Un conjunto E de aristas con orientación (flechas) que conectan a 2 nodos. Las Vegas Miami Los Ángeles Portland Chicago New York
  • 63. Terminología: Un camino P de longitud n desde U hasta V es una secuencia de n+1 nodos escrita como: P (V0,V1,…,Vn). Donde: •U = V0 •Vi es adyacente a Vi-1 para toda i = 1, 2, …, n •V = Vn Bucle: Conexión de un vértice consigo mismo. Camino Cerrado: Es un camino donde V0 = Vn , el vértice inicial y el final son el mismo. Camino Simple: Es aquel donde todos los vértices son distintos (Solo V0 puede ser = a Vn).
  • 64. Ciclo: Camino simple cerrado de longitud 3 o mayor. K-Ciclo: Es un ciclo de longitud K. Grafo Convexo: Grafo donde existe un camino entre cualesquiera dos de sus nodos. Grafo Completo: Un grafo es completo si cada nodo U de G es adyacente a todos los demás nodos de G. Multigrafo: Es una generalización de un grafo que: 1) Contiene bucles y /o 2)Contiene aristas múltiples que conectan a los mismos extremos.
  • 65. G1 G2 Grafo Completo G3 Grafo Completo Dirigido G4
  • 66. Máximo Numero De Aristas: •GRAFO: Gn = n ( n - 1 ) G3 = 4(3) = 12 = 6 2 2 2 •GRAFO DIRIGIDO: GDn = n ( n – 1 ) G4 = 4 (3) = 12 G1: CICLO A, B, C, A •GRAFO ACICLICO: Es un grafo que no contiene ciclos. (Un árbol es un grafo aciclico). F E A B C D
  • 67. Un Subgrafo S1 de un grafo G se define como: V (S1) Є V (G) E (S1) Є E (G) S1 es un subconjunto de G si y solo si V (S1) Є V (G) y E (S1) Є E (G). Ejemplo: Grafo G Subgrafo S1 Subgrafo S2 Subgrafo S3
  • 68. Grafo débilmente conectado: Para cada par de vértices (u,v) existe un camino de u a v tal que vo = u y vn= v y para cada componente de la ruta (vi, vi+1) existe en E(G) el componente (vi, vi+1) o (vi+1,vi). El camino quizá no puede recorrerse debido a la orientación de sus aristas.
  • 69. Representación secuencial de grafos: •Se basa en una matriz de adyacencia. •Suponga que G es un grafo dirigido simple de m nodos y que los nodos de G han sido ordenados y llamados V1, V2, … , Vn. La matriz de adyacencia para G es de tamaño m x m definiendo cada elemento como: aij = 1 : si Vi es adyacente a vj. Existe e = (vi, vj) 0 : en caso contrario. Ejemplo 1: X WZ Y V1 = X V2 = Y V3 = Z V4 = W 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 A = V1 V2 V3 V4 V1 V2 V3 V4 X Y Z W X Y Z W = A1
  • 70. Para un grafo no dirigido, la matriz de adyacencia es una matriz simétrica: ai,j = aj,i X WZ Y 0 1 1 1 1 0 1 1 1 1 0 2 1 1 2 0 X Y Z W X Y Z W
  • 71. Considere las potencias A1, A2, A3 … de la matriz de adyacencia ak(i,j) = la entrada i,j de la matriz Ak. A1 – Representa el número de caminos de longitud 1 desde el nodo vi hasta vj. Ak – Representa el número de caminos de longitud k desde el nodo vi hasta el nodo vj. 0 0 0 1 1 0 1 2 0 0 1 1 1 0 0 1 A2 = 1 0 0 1 1 0 2 2 1 0 1 1 0 0 1 1 A3 = 0 0 1 1 2 0 2 3 1 0 1 2 1 0 1 1 A4 = Caminos de long. 2 Caminos de long. 3 Caminos de long. 4
  • 72. Representación en memoria dinámica: Un grafo se puede representar con una LISTA DE ADYACENCIA. Una lista de adyacencia para un vértice a es una lista ordenada de todos los vértices adyacentes a a. • Si el Número de nodos es fijo se pueden almacenar en un arreglo. Ejemplo: a dc b Arreglo de nodos Lista de nodos adyacentes a cada nodo. bca b c d a d b
  • 73. * Si el número de nodos puede variar, se deben almacenar en una lista. Lista de Nodos a b c b a c d d b a dc b
  • 74. 1) Buscar un vértice/arista. 2) Insertar un vértice/arista. 3) Eliminar un vértice/arista. 4) Recorrer el grafo. 5) Número de vértices 6) Vacío. • Los vértices se mantienen en una lista de vértices. No pueden existir vertices repetidos. • Los aristas se mantienen en una lista ordenada para cada vértice. Operaciones sobre grafos:
  • 75. Búsqueda de el camino más corto: Encontrar el camino más corto desde A (nodo inicial) hasta I (nodo final): 1) Marcar todos los nodos con infinito, y seleccionar nodo inicial (iniciar con 0) como nodo actual 2) Calcular los caminos del nodo actual a los nodos adyacentes, reemplazar el camino actual por el nuevo solo si este es menor. 3) Marcar el nodo actual como “visitado”. 4) Seleccionar como nodo actual el nodo con camino de valor mínimo. 5) Repetir para el nodo actual seleccionado los pasos 2, 3, 4 hasta llegar al nodo final o hasta agotar todos los nodos.