SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
Tema: Grafos
Tema 4: Grafos
Contenido
• Definición de grafo.
• Operaciones sobre grafos.
• Representación matricial de grafos en un lenguaje
de programación.
• Grafos (representación enlazada)
• Operaciones sobre grafos representados de
manera enlazada.
• Representación enlazada de grafos en un
lenguaje de programación
Objetivos
Conozcan las estructuras de datos arbóreas y las
formas de trabajar con ellas en la solución de
problemas de mediana complejidad
Introducción
En ocasiones, incluso, se requiere tener acceso a un
nodo determinado a partir de más de un nodo de la
estructura. Existen varios caminos entre un nodo y
otro.
Ejemplo:
• Una red hidráulica,
• Caminos entre ciudades,
• Afinidad entre miembros de un colectivo, entre
otros.
Introducción
Caminos entre ciudades
Ciudad A
Ciudad B
Ciudad C
Ciudad F
Ciudad D
Ciudad E
Definición de Árbol
Un árbol (tree) es un T.D.A. que consta de un
conjunto finito T de nodos y una relación R
(paternidad) entre los nodos tal que:
• Hay un nodo, especialmente designado, llamado la
raíz del árbol T.
A
D E F G
CB
A
D E F G
CB
Definición de Árbol
• Los nodos restantes, excluyendo la raíz, son
particionados en m (m  0) conjuntos disjuntos T1,
T2, ..., Tm, cada uno de los cuales es, a su vez, un
árbol, llamado subárbol de la raíz del árbol T.
A
D E F G
CB
Definición de Árbol
• A los nodos que no son raíces de otros subárboles
se les denomina hojas del árbol T, o sea, no tienen
sucesores o hijos.
A
D E F G
CB
Grafos
Un grafo (en inglés graph) es un T.D.A. que
representa un conjunto finito N de nodos, llamados
vértices, relacionados entre sí por un conjunto R de
arcos.
A
B
D
C
E
Grafo con 5 vértices y 6 arcos.
• Vértices del Grafo
N ={ A, B, C, D, E }
• Arcos del Grafo
R={(A, A), (A, B), (A, D), (A, C), (D, C), (C, E)}
Grafos: Aclaraciones
•Si el conjunto N es vacío, el grafo será vacío.
• Cada arco de un grafo establece una única relación
entre dos vértices.
• No existe restricción en la relación que establece
un arco, o sea, un vértice puede estar relacionado
consigo mismo o con otro vértice.
• Cada arco se representa a través de un par, donde
cada elemento determina uno de los vértices.
Observación
Dado que no hay restricciones en cuanto a los arcos
de un grafo, todas las estructuras vistas con
anterioridad pueden ser consideradas como un
grafo.
Ejemplo, una lista lineal puede ser vista como un
grafo donde cada nodo está relacionado con
exactamente un nodo distinto de él.
Clasificación de los Grafos
Un grafo es no orientado o no dirigido (en inglés
not directed o not oriented graph) si el hecho de
que el arco (Nj, Nk) pertenezca a R implica que el
arco (Nk, Nj) pertenece a R, para todo j y k.
• Es irrelevante el sentido de las saetas en los arcos
• Al representarlos, los arcos se grafican sin saeta.
• El arco que los relaciona aparece una sola vez en
el conjunto R de arcos del grafo.
Si el grafo es no orientado, al arco se le llama arista.
Clasificación de los Grafos
Un grafo es orientado o dirigido (en inglés:
oriented graph o directed graph) si el hecho de
que el arco (Nj, Nk) pertenezca a R no implica que el
arco (Nk, Nj) pertenece también a R, para todo j y k.
• El sentido de las saetas en los arcos es importante.
• Es importante la dirección del arco, o sea, el vértice
origen del arco y el vértice destino.
• El hecho que exista un arco de Nj a Nk no implica
que exista de Nk a Nj.
Se conocen como digrafos (en inglés: digraph).
A
B
D
C
E
Grafo No Orientado
o No Dirigido
Clasificación de los Grafos
A
B
D
C
E
Grafo Orientado o
Dirigido
Adyacencia
El vértice n es adyacente al m, si existe un arco o
arista de m a n.
A
B
D
C
E
Adyacencia:
• B es adyacente a A
• D es adyacente a A
• C es adyacente a A
• A es adyacente a A
• C es adyacente a D
• E es adyacente a C
Incidencia
A
B
D
C
E
Incidencia:
• B es incidente al arco (A,B)
• (A,B) es incidente a B
El vértice n es incidente al arco o arista x, si n es
uno de los vértices relacionados con el arco o arista
x. Del mismo modo, se dice que el arco o arista x es
incidente al vértice n.
Así, todos los arcos que llegan o salen de un nodo
son incidentes a él
.
Sobre el Vértice D:
• Grado de Entrada: 3
• Grado de Salida: 2
• Grado del Nodo: 5
A
B
D
C
E
F
Grado de un Vértice
Grado de un Vértice
El grado de un vértice n es el número de arcos
incidentes a él.
En el caso de los grafos orientados, el grado de
entrada de un vértice n es el número de arcos que
llegan a él y el grado de salida de un vértice n es el
número de arcos que salen de él.
Por lo tanto, el grado de un vértice es la suma de
los grados de entrada y de salida del vértice.
Ponderando arcos y vértices
En muchas aplicaciones resulta de interés asignar
valores de ponderación, también llamados pesos,
a los arcos o a los vértices, obteniéndose así:
• Grafos ponderados por los arcos
• Grafos ponderados por los vértices
Ejemplo: Grafo ponderado por los arcos
Problema del agente viajero
Un agente necesita repartir paquetes en diferentes
ciudades. Se sabe en qué ciudades el agente debe
repartir los paquetes, así como la distancia entre
cada ciudad y las otras.
El problema consiste en saber cuál es la mejor ruta a
seguir por el agente para repartir todos los paquetes.
Ejemplo: Grafo ponderado por los arcos
El problema se puede modelar con un grafo, donde:
• Las ciudades son vértices.
• Los caminos entre las ciudades son arcos.
Si para todas las ciudades se cumple que la
distancia entre una ciudad origen y una ciudad
destino y la distancia de la ciudad destino a la ciudad
origen es la misma, entonces, se puede utilizar un
grafo no orientado.
Podemos ponderar los arcos con la distancia que
existe entre las ciudades.
Ejemplo: Grafo ponderado por los arcos
El agente debe visitar tres ciudades A, B y C,
partiendo de la ciudad A. Entre las ciudades A y B
hay 50 km, entre las ciudades B y C hay 20 km y
entre las ciudades A y C hay 15 km.
El camino más corto es de A a C y de C a B.
A B
C
50 Km
Caminos:
A-B-C: 70 Km
A-C-B: 35 Km
Ejemplo: Grafo ponderado por los vértices
Se tiene una secuencia de actividades, de las que se
conoce su duración y se quiere saber, en un
momento dado, en qué orden debieran realizarse, de
forma tal que se realicen primero las de menor
duración.
• Las actividades se pueden representar por los
vértices de un grafo no orientado.
• En cada vértice se puede almacenar la duración de
la actividad como factor de ponderación.
Ejemplo: Grafo ponderado por los vértices
Resulta más conveniente realizar la actividad A,
luego la C y, por último, la B.
A
10
B
25
C
20
Camino entre vértices
Existe un camino de longitud k desde el vértice A
al B, si existe una secuencia de k+1 vértices n1, n2,
..., nk+1, donde n1 = A, nk+1 = B y (ni, ni+1) son
adyacentes para todo i entre 1 y k.
En un grafo no orientado, al camino se le llama
cadena.
A
B
D
C
E
Caminos entre los vértices A y C:
Camino de longitud 1: (A,C)
Camino de longitud 2: (A,D,C)
Camino de longitud 2: (A,A,C)
Camino de longitud 3: (A,A,D,C)
Ejemplo: Camino entre nodos
¿Existe un camino de longitud mayor que 1 entre los
vértices C y B?
• Camino de longitud 3: (C, B, A, B)
• Camino de longitud 4: (C, B, A, C, B)
A
B
D
C
Camino simple
Entre dos vértices existe un camino simple si todos
los vértices, excepto posiblemente el primero y el
último, son distintos dos a dos.
O sea, un camino simple es aquel en el que no se
repiten los arcos.
Ejemplo:
(A, B, D)
(A, B, A, C)
A
B
D
C
Camino simple
Un ciclo, o también circuito, es un camino simple
de cualquier longitud de un vértice a sí mismo. Si el
ciclo es de longitud 1, entonces se denomina bucle o
lazo.
Ejemplo:
Ciclo: A,D,C,A
Bucle: A,A
A
B
D
C
E
Grafo cíclico y acíclico
Si un grafo contiene al menos un ciclo se llama
cíclico.
Un grafo acíclico es aquel que no tiene ningún
circuito o ciclo.
A
B
D
C
E
A
B
D
C
Grafo cíclico Grafo acíclico
Operaciones sobre Grafos
• Construir un grafo dada la información de sus
vértices. (Convenio: se crea inicialmente vacío).
• Verificar si un grafo está vacío o no.
• Insertar vértices y arcos.
• Eliminar vértices y arcos.
• Dados dos vértices, determinar si son adyacentes.
• Dado un vértice, determinar cuáles vértices son
adyacentes a él.
Operaciones sobre Grafos
• Dados dos vértices, determinar un camino de
longitud k entre ellos.
• Dado un arco, determinar vértices incidentes a él.
• Determinar si el grafo es cíclico.
Representación matricial de Grafos
• La representación matricial permite establecer si
hay relación entre cada vértice del grafo y los
demás.
• Para ello, se utiliza una matriz cuadrada.
• Se utiliza un arreglo bidimensional.
• Esto significa que la representación matricial es
una representación secuencial.
Representación matricial de Grafos
A partir de un grafo, siempre es posible definir un
orden arbitrario de los vértices.
A B C D E
0 1 2 3 4
AB
D
C
E
Matriz de Adyacencia
La matriz de adyacencia representa para cada
nodo cuáles son sus vértices adyacentes.
• Cada fila y cada columna de la matriz se
corresponde con un vértice en particular.
• Los elementos de la matriz son booleanos
• Si el elemento (i, j) es verdadero, existe un arco
que va del vértice i al vértice j y, si el elemento (i, j)
es falso, no existe arco del vértice i al vértice j.
• Si el grafo es no orientado, si existe el arco del
vértice i al vértice j existe el arco del vértice j al
vértice i.
Representación matricial de Grafos
A B C D E
0 1 2 3 4
0 1 2 3 4
01000
10000
11000
00100
011000
1
2
3
4
AB
D
C
E
Vértices
Matriz de Adyacencia
Implementación en C++
class TVertex
{
private:
void* aInfo;
public:
TVertex(void* pInfo) : aInfo(pInfo){}
void* Info(){return aInfo;}
};
Implementación en C++
class TSeqGraph
{
private:
bool** aAdjacent;
bool aDirected;
int aOrder;
TGSeqList* aVertexList;
public:
TSeqGraph(int, bool);
~TSeqGraph();
TGSeqList* Adjacents(int);
bool AreAdjacents(int, int);
bool Cyclic();
int Degree(int);
… };
Implementación en C++
class TSeqGraph
{
public:
…
bool DeleteEdge(int, int);
bool DeleteVertex(int);
bool Directed() {return aDirected;}
bool Empty(){return aVertexList->Empty();}
bool InsertEdge(int, int);
bool InsertVertex(void*);
bool IsEdge(int, int);
bool IsPathWithLength(int, int, int);
int Order() {return aOrder;}
TGSeqList* VertexList(){return aVertexList;}
};
Problemas
La representación de la matriz de adyacencia de
un grafo exige conocer por adelantado la cantidad
de vértices del grafo.
Esta representación no es suficientemente flexible
cuando la cantidad de vértices varía con relativa
frecuencia o cuando la estructura del grafo cambia
durante la ejecución de la aplicación que lo usa.
Esto implica crear la matriz cada vez que se inserte
o elimine un nuevo vértice.
Problema: Solución costosa en tiempo y recursos.
Representación enlazada de Grafos
AB
D
C
E
Variante 1:
A
B
C
D
E
C D
C
D E
E
D
Una lista de vértices y cada uno tiene
una lista de los vértices adyacentes a él.
Problemas
• Es difícil saber cuántos arcos
llegan a un vértice.
• Se repite la información del
vértice
• Las listas pueden ser
indistintamente secuenciales o
enlazadas o una combinación.
• El grafo está vacío si no
existen vértices.
Representación enlazada de Grafos
Variante 2: Representación multienlazada
• Cada vértice se representa a través de un nodo que
contiene:
• Apuntador a su información,
• Apuntador a una lista de arcos
• Apuntador al siguiente vértice en la lista
•Cada arco se representa por un nodo que contiene:
• Apuntador al próximo arco de su vértice origen
• Apuntador al nodo de su vértice destino
Representación enlazada de Grafos
Variante 2: Representación multienlazada
AB
D
C
E
• El grafo está vacío si no hay
vértices.
A B C D E
c
D
C D
E
E
Representación enlazada de Grafos
Contador de referencia formar parte de la
información de los vértices y mantiene actualizado
la cantidad de arcos llegan a él.
• Los contadores de referencia facilitan algunas
operaciones del grafo:
• Al eliminar un vértice se deben decrementar los
contadores de referencia de los vértices adyacentes.
Si el contador del vértice adyacente se hace cero, se
puede eliminar ese vértice si la lista de arcos está
vacía.
Implementación en C++
La representación multienlazada de grafos debe
considerar si el grafo es ponderado por los
vértices o por los arcos.
En estos casos habría que agregar a los nodos de
vértices y arcos respectivamente el peso o factor
de ponderación.
Representación enlazada de Grafos
class TVertex
{
private:
void* aInfo;
TGLinkedList* aEdgeList;
public:
TVertex(void* pInfo) : aInfo(pInfo)
{aEdgeList = new TGLinkedList();}
void* Info() {return aInfo;}
void Info(void* pInfo) {aInfo = pInfo;}
TGLinkedList* EdgeList(){return
aEdgeList;}
};
Implementación en C++
class TEdge
{
private:
TVertex* aVertex;
public:
TEdge(TVertex* pVertex){aVertex =
pVertex;}
TVertex* Vertex(){return aVertex;}
void Vertex(TVertex* pVertex)
{aVertex = pVertex;}
};
Implementación en C++
class TLinkedGraph
{
private:
bool aDirected;
TGLinkedList* aVerticesList;
public:
TLinkedGraph(bool pDirected);
~TLinkedGraph();
TGLinkedList* Adjacents(int);
bool AreAdjacents(int, int);
bool Cyclic();
int Degree(int);
…
};
Implementación en C++
class TLinkedGraph
{
…
bool DeleteEdge(int, int);
TVertex* DeleteVertex(int);
bool Directed (){return aDirected;}
bool Empty(){return aVertexList-
>Empty();}
int InDegree(int);
bool InsertEdge(int, int);
bool InsertVertex(void*);
TSEdge* IsEdge (int, int);
int OutDegree(int);
bool Path(int, int, int);
bool PathWithLength (int, int, int);
TGLinkedList* VerticesList();
Inserción en grafos multienlazados
Inserción un arco de V1 a V2:
1-Verificar la existencia de los vértices V1 y V2
2-Hay dos posibilidades:
2.1 De no existir uno o ninguno, no se
puede insertar el arco.
2.2 Insertarlos.
• Insertar un arco en la lista de arcos de V1 y
poner su apuntador al vértice adyacente
apuntando al nodo que contiene a V2 en la lista
de vértices.
• Si tiene contador de referencia incrementar en 1,
el contador de referencia del vértice V2.
Eliminación en grafos multienlazados
Eliminar el vértice V:
1-Verificar la existencia del vértice V.
2-Para cada arco de V:
-Si en el vértice apuntado por ese arco hay
contador de referencia, decrementarlo en uno y
si éste toma el valor cero, verificar si la lista de
arcos está vacía, para eliminarlo.
-Eliminar el arco.
Eliminación en grafos multienlazados
Eliminar el vértice V:
3-Para cada Vértice excepto V
-Buscar si existe algún arco que apunte a V
-i existe eliminarlo y si la lista queda vacía,
verificar el contador de referencia y si es cero,
analizar de acuerdo a la política si se elimina o
no.
4-Eliminar el vértice V.
5-Devolver la información del vértice V.

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 DatosDARKGIRL93
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Planificacion y modelado para una ferreteria
Planificacion y modelado para una ferreteriaPlanificacion y modelado para una ferreteria
Planificacion y modelado para una ferreteriaErick Domínguez Canseco
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalMaria Garcia
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Maria Garcia
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Rodolfo Alcantara Rosales
 
Algebra de boole y simplificacion logica
Algebra de boole y simplificacion logicaAlgebra de boole y simplificacion logica
Algebra de boole y simplificacion logicaEdgar Rivera
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de pruebaJPi2013
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacionjenny
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regularesKenia Adams
 
Tema2 modelo entidad relación
Tema2   modelo entidad relaciónTema2   modelo entidad relación
Tema2 modelo entidad relaciónAlvaro Loustau
 

La actualidad más candente (20)

Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
grafos conexos
grafos conexosgrafos conexos
grafos conexos
 
Planificacion y modelado para una ferreteria
Planificacion y modelado para una ferreteriaPlanificacion y modelado para una ferreteria
Planificacion y modelado para una ferreteria
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1
 
Arboles con raiz
Arboles con raizArboles con raiz
Arboles con raiz
 
Algebra de boole y simplificacion logica
Algebra de boole y simplificacion logicaAlgebra de boole y simplificacion logica
Algebra de boole y simplificacion logica
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Árboles Rojo - Negro
Árboles Rojo - NegroÁrboles Rojo - Negro
Árboles Rojo - Negro
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de prueba
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacion
 
Modelo jerarquico
Modelo jerarquicoModelo jerarquico
Modelo jerarquico
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 
C11.1. árboles
C11.1. árbolesC11.1. árboles
C11.1. árboles
 
Tema2 modelo entidad relación
Tema2   modelo entidad relaciónTema2   modelo entidad relación
Tema2 modelo entidad relación
 

Destacado

Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosale8819
 
Utpl Contabilidad Comercial
Utpl Contabilidad ComercialUtpl Contabilidad Comercial
Utpl Contabilidad ComercialNathalie Aguirre
 
Asientos de cierre--pasos_2012_
Asientos de cierre--pasos_2012_Asientos de cierre--pasos_2012_
Asientos de cierre--pasos_2012_Jesús Pérez
 
Sistema contable
Sistema contableSistema contable
Sistema contableaudicon2011
 
Estados Financieros y Análisis de Punto de Equilibrio
Estados Financieros y Análisis de Punto de EquilibrioEstados Financieros y Análisis de Punto de Equilibrio
Estados Financieros y Análisis de Punto de EquilibrioJuan Carrasco
 
Contabilidad inventario
Contabilidad   inventarioContabilidad   inventario
Contabilidad inventariorobertoc71
 
Elementos de los estados financieros
Elementos de los estados financieros Elementos de los estados financieros
Elementos de los estados financieros sotello76
 

Destacado (20)

Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
1. teoría listas enlazadas
1. teoría listas enlazadas1. teoría listas enlazadas
1. teoría listas enlazadas
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Pilas en Java
Pilas en JavaPilas en Java
Pilas en Java
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Taller 1 3
Taller 1 3Taller 1 3
Taller 1 3
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Yeison
YeisonYeison
Yeison
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Utpl Contabilidad Comercial
Utpl Contabilidad ComercialUtpl Contabilidad Comercial
Utpl Contabilidad Comercial
 
Cuenta contable
Cuenta contableCuenta contable
Cuenta contable
 
Historia de la contabilidad
Historia de la contabilidadHistoria de la contabilidad
Historia de la contabilidad
 
Asientos de cierre--pasos_2012_
Asientos de cierre--pasos_2012_Asientos de cierre--pasos_2012_
Asientos de cierre--pasos_2012_
 
Sistema contable
Sistema contableSistema contable
Sistema contable
 
Resumen
ResumenResumen
Resumen
 
Estados Financieros y Análisis de Punto de Equilibrio
Estados Financieros y Análisis de Punto de EquilibrioEstados Financieros y Análisis de Punto de Equilibrio
Estados Financieros y Análisis de Punto de Equilibrio
 
Contabilidad inventario
Contabilidad   inventarioContabilidad   inventario
Contabilidad inventario
 
Elementos de los estados financieros
Elementos de los estados financieros Elementos de los estados financieros
Elementos de los estados financieros
 

Similar a Grafos avanzado (20)

Grafos
GrafosGrafos
Grafos
 
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOSMETODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
 
Capitulo1 grafos
Capitulo1 grafosCapitulo1 grafos
Capitulo1 grafos
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafos
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Teoría de Grafos.
Teoría de Grafos.Teoría de Grafos.
Teoría de Grafos.
 
Grafos
GrafosGrafos
Grafos
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de grafos
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 
Grafos2010
Grafos2010Grafos2010
Grafos2010
 
Trabajo estructura de_datos_subir
Trabajo estructura de_datos_subirTrabajo estructura de_datos_subir
Trabajo estructura de_datos_subir
 
Trabajo estructura de_datos2
Trabajo estructura de_datos2Trabajo estructura de_datos2
Trabajo estructura de_datos2
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos_presentación con ejercicios.pdf
Grafos_presentación con ejercicios.pdfGrafos_presentación con ejercicios.pdf
Grafos_presentación con ejercicios.pdf
 
Grafoscuestionario
GrafoscuestionarioGrafoscuestionario
Grafoscuestionario
 

Más de menamigue

1.1 Fundamentos de TI
1.1 Fundamentos de TI1.1 Fundamentos de TI
1.1 Fundamentos de TImenamigue
 
SI para obtener ventaja estrategica
SI para obtener ventaja estrategicaSI para obtener ventaja estrategica
SI para obtener ventaja estrategicamenamigue
 
SI para apoyo a la toma de decisiones
SI para apoyo a la toma de decisionesSI para apoyo a la toma de decisiones
SI para apoyo a la toma de decisionesmenamigue
 
sistemas de informacion
sistemas de informacionsistemas de informacion
sistemas de informacionmenamigue
 
Planificación Estratégica de Sistemas de Información
Planificación Estratégica de Sistemas de InformaciónPlanificación Estratégica de Sistemas de Información
Planificación Estratégica de Sistemas de Informaciónmenamigue
 
Tecnicas UML
Tecnicas UMLTecnicas UML
Tecnicas UMLmenamigue
 
Emisor Receptor AM
Emisor Receptor AMEmisor Receptor AM
Emisor Receptor AMmenamigue
 
Grafos propuestos
Grafos propuestosGrafos propuestos
Grafos propuestosmenamigue
 
Grafos resueltos
Grafos resueltosGrafos resueltos
Grafos resueltosmenamigue
 
Analisis de Senales
Analisis de SenalesAnalisis de Senales
Analisis de Senalesmenamigue
 
Instructivo iupsm.gnomio.com
Instructivo iupsm.gnomio.comInstructivo iupsm.gnomio.com
Instructivo iupsm.gnomio.commenamigue
 
Notas electrotecnia
Notas electrotecniaNotas electrotecnia
Notas electrotecniamenamigue
 
Proyecto electrotecnia franyer velasquez
Proyecto electrotecnia franyer velasquezProyecto electrotecnia franyer velasquez
Proyecto electrotecnia franyer velasquezmenamigue
 
Proyecto electrotenia milay cala
Proyecto electrotenia milay calaProyecto electrotenia milay cala
Proyecto electrotenia milay calamenamigue
 
Organizacion y metodos
Organizacion y metodosOrganizacion y metodos
Organizacion y metodosmenamigue
 
Ejercicios C#
Ejercicios C#Ejercicios C#
Ejercicios C#menamigue
 
Enunciados de Sistemas de Información
Enunciados de Sistemas de InformaciónEnunciados de Sistemas de Información
Enunciados de Sistemas de Informaciónmenamigue
 

Más de menamigue (20)

1.1 Fundamentos de TI
1.1 Fundamentos de TI1.1 Fundamentos de TI
1.1 Fundamentos de TI
 
SI para obtener ventaja estrategica
SI para obtener ventaja estrategicaSI para obtener ventaja estrategica
SI para obtener ventaja estrategica
 
SI para apoyo a la toma de decisiones
SI para apoyo a la toma de decisionesSI para apoyo a la toma de decisiones
SI para apoyo a la toma de decisiones
 
sistemas de informacion
sistemas de informacionsistemas de informacion
sistemas de informacion
 
Planificación Estratégica de Sistemas de Información
Planificación Estratégica de Sistemas de InformaciónPlanificación Estratégica de Sistemas de Información
Planificación Estratégica de Sistemas de Información
 
Tecnicas UML
Tecnicas UMLTecnicas UML
Tecnicas UML
 
Emisor Receptor AM
Emisor Receptor AMEmisor Receptor AM
Emisor Receptor AM
 
Grafos propuestos
Grafos propuestosGrafos propuestos
Grafos propuestos
 
Grafos resueltos
Grafos resueltosGrafos resueltos
Grafos resueltos
 
Sql
SqlSql
Sql
 
Fourier
FourierFourier
Fourier
 
Analisis de Senales
Analisis de SenalesAnalisis de Senales
Analisis de Senales
 
Instructivo iupsm.gnomio.com
Instructivo iupsm.gnomio.comInstructivo iupsm.gnomio.com
Instructivo iupsm.gnomio.com
 
Notas electrotecnia
Notas electrotecniaNotas electrotecnia
Notas electrotecnia
 
Proyecto electrotecnia franyer velasquez
Proyecto electrotecnia franyer velasquezProyecto electrotecnia franyer velasquez
Proyecto electrotecnia franyer velasquez
 
Proyecto electrotenia milay cala
Proyecto electrotenia milay calaProyecto electrotenia milay cala
Proyecto electrotenia milay cala
 
Organizacion y metodos
Organizacion y metodosOrganizacion y metodos
Organizacion y metodos
 
Ejercicios C#
Ejercicios C#Ejercicios C#
Ejercicios C#
 
Satelites
SatelitesSatelites
Satelites
 
Enunciados de Sistemas de Información
Enunciados de Sistemas de InformaciónEnunciados de Sistemas de Información
Enunciados de Sistemas de Información
 

Último

SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxMaria Jimena Leon Malharro
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuelabeltranponce75
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxpaogar2178
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 

Último (20)

SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 

Grafos avanzado

  • 2. Tema 4: Grafos Contenido • Definición de grafo. • Operaciones sobre grafos. • Representación matricial de grafos en un lenguaje de programación. • Grafos (representación enlazada) • Operaciones sobre grafos representados de manera enlazada. • Representación enlazada de grafos en un lenguaje de programación
  • 3. Objetivos Conozcan las estructuras de datos arbóreas y las formas de trabajar con ellas en la solución de problemas de mediana complejidad
  • 4. Introducción En ocasiones, incluso, se requiere tener acceso a un nodo determinado a partir de más de un nodo de la estructura. Existen varios caminos entre un nodo y otro. Ejemplo: • Una red hidráulica, • Caminos entre ciudades, • Afinidad entre miembros de un colectivo, entre otros.
  • 5. Introducción Caminos entre ciudades Ciudad A Ciudad B Ciudad C Ciudad F Ciudad D Ciudad E
  • 6. Definición de Árbol Un árbol (tree) es un T.D.A. que consta de un conjunto finito T de nodos y una relación R (paternidad) entre los nodos tal que: • Hay un nodo, especialmente designado, llamado la raíz del árbol T. A D E F G CB A D E F G CB
  • 7. Definición de Árbol • Los nodos restantes, excluyendo la raíz, son particionados en m (m  0) conjuntos disjuntos T1, T2, ..., Tm, cada uno de los cuales es, a su vez, un árbol, llamado subárbol de la raíz del árbol T. A D E F G CB
  • 8. Definición de Árbol • A los nodos que no son raíces de otros subárboles se les denomina hojas del árbol T, o sea, no tienen sucesores o hijos. A D E F G CB
  • 9. Grafos Un grafo (en inglés graph) es un T.D.A. que representa un conjunto finito N de nodos, llamados vértices, relacionados entre sí por un conjunto R de arcos. A B D C E Grafo con 5 vértices y 6 arcos. • Vértices del Grafo N ={ A, B, C, D, E } • Arcos del Grafo R={(A, A), (A, B), (A, D), (A, C), (D, C), (C, E)}
  • 10. Grafos: Aclaraciones •Si el conjunto N es vacío, el grafo será vacío. • Cada arco de un grafo establece una única relación entre dos vértices. • No existe restricción en la relación que establece un arco, o sea, un vértice puede estar relacionado consigo mismo o con otro vértice. • Cada arco se representa a través de un par, donde cada elemento determina uno de los vértices.
  • 11. Observación Dado que no hay restricciones en cuanto a los arcos de un grafo, todas las estructuras vistas con anterioridad pueden ser consideradas como un grafo. Ejemplo, una lista lineal puede ser vista como un grafo donde cada nodo está relacionado con exactamente un nodo distinto de él.
  • 12. Clasificación de los Grafos Un grafo es no orientado o no dirigido (en inglés not directed o not oriented graph) si el hecho de que el arco (Nj, Nk) pertenezca a R implica que el arco (Nk, Nj) pertenece a R, para todo j y k. • Es irrelevante el sentido de las saetas en los arcos • Al representarlos, los arcos se grafican sin saeta. • El arco que los relaciona aparece una sola vez en el conjunto R de arcos del grafo. Si el grafo es no orientado, al arco se le llama arista.
  • 13. Clasificación de los Grafos Un grafo es orientado o dirigido (en inglés: oriented graph o directed graph) si el hecho de que el arco (Nj, Nk) pertenezca a R no implica que el arco (Nk, Nj) pertenece también a R, para todo j y k. • El sentido de las saetas en los arcos es importante. • Es importante la dirección del arco, o sea, el vértice origen del arco y el vértice destino. • El hecho que exista un arco de Nj a Nk no implica que exista de Nk a Nj. Se conocen como digrafos (en inglés: digraph).
  • 14. A B D C E Grafo No Orientado o No Dirigido Clasificación de los Grafos A B D C E Grafo Orientado o Dirigido
  • 15. Adyacencia El vértice n es adyacente al m, si existe un arco o arista de m a n. A B D C E Adyacencia: • B es adyacente a A • D es adyacente a A • C es adyacente a A • A es adyacente a A • C es adyacente a D • E es adyacente a C
  • 16. Incidencia A B D C E Incidencia: • B es incidente al arco (A,B) • (A,B) es incidente a B El vértice n es incidente al arco o arista x, si n es uno de los vértices relacionados con el arco o arista x. Del mismo modo, se dice que el arco o arista x es incidente al vértice n. Así, todos los arcos que llegan o salen de un nodo son incidentes a él .
  • 17. Sobre el Vértice D: • Grado de Entrada: 3 • Grado de Salida: 2 • Grado del Nodo: 5 A B D C E F Grado de un Vértice
  • 18. Grado de un Vértice El grado de un vértice n es el número de arcos incidentes a él. En el caso de los grafos orientados, el grado de entrada de un vértice n es el número de arcos que llegan a él y el grado de salida de un vértice n es el número de arcos que salen de él. Por lo tanto, el grado de un vértice es la suma de los grados de entrada y de salida del vértice.
  • 19. Ponderando arcos y vértices En muchas aplicaciones resulta de interés asignar valores de ponderación, también llamados pesos, a los arcos o a los vértices, obteniéndose así: • Grafos ponderados por los arcos • Grafos ponderados por los vértices
  • 20. Ejemplo: Grafo ponderado por los arcos Problema del agente viajero Un agente necesita repartir paquetes en diferentes ciudades. Se sabe en qué ciudades el agente debe repartir los paquetes, así como la distancia entre cada ciudad y las otras. El problema consiste en saber cuál es la mejor ruta a seguir por el agente para repartir todos los paquetes.
  • 21. Ejemplo: Grafo ponderado por los arcos El problema se puede modelar con un grafo, donde: • Las ciudades son vértices. • Los caminos entre las ciudades son arcos. Si para todas las ciudades se cumple que la distancia entre una ciudad origen y una ciudad destino y la distancia de la ciudad destino a la ciudad origen es la misma, entonces, se puede utilizar un grafo no orientado. Podemos ponderar los arcos con la distancia que existe entre las ciudades.
  • 22. Ejemplo: Grafo ponderado por los arcos El agente debe visitar tres ciudades A, B y C, partiendo de la ciudad A. Entre las ciudades A y B hay 50 km, entre las ciudades B y C hay 20 km y entre las ciudades A y C hay 15 km. El camino más corto es de A a C y de C a B. A B C 50 Km Caminos: A-B-C: 70 Km A-C-B: 35 Km
  • 23. Ejemplo: Grafo ponderado por los vértices Se tiene una secuencia de actividades, de las que se conoce su duración y se quiere saber, en un momento dado, en qué orden debieran realizarse, de forma tal que se realicen primero las de menor duración. • Las actividades se pueden representar por los vértices de un grafo no orientado. • En cada vértice se puede almacenar la duración de la actividad como factor de ponderación.
  • 24. Ejemplo: Grafo ponderado por los vértices Resulta más conveniente realizar la actividad A, luego la C y, por último, la B. A 10 B 25 C 20
  • 25. Camino entre vértices Existe un camino de longitud k desde el vértice A al B, si existe una secuencia de k+1 vértices n1, n2, ..., nk+1, donde n1 = A, nk+1 = B y (ni, ni+1) son adyacentes para todo i entre 1 y k. En un grafo no orientado, al camino se le llama cadena. A B D C E Caminos entre los vértices A y C: Camino de longitud 1: (A,C) Camino de longitud 2: (A,D,C) Camino de longitud 2: (A,A,C) Camino de longitud 3: (A,A,D,C)
  • 26. Ejemplo: Camino entre nodos ¿Existe un camino de longitud mayor que 1 entre los vértices C y B? • Camino de longitud 3: (C, B, A, B) • Camino de longitud 4: (C, B, A, C, B) A B D C
  • 27. Camino simple Entre dos vértices existe un camino simple si todos los vértices, excepto posiblemente el primero y el último, son distintos dos a dos. O sea, un camino simple es aquel en el que no se repiten los arcos. Ejemplo: (A, B, D) (A, B, A, C) A B D C
  • 28. Camino simple Un ciclo, o también circuito, es un camino simple de cualquier longitud de un vértice a sí mismo. Si el ciclo es de longitud 1, entonces se denomina bucle o lazo. Ejemplo: Ciclo: A,D,C,A Bucle: A,A A B D C E
  • 29. Grafo cíclico y acíclico Si un grafo contiene al menos un ciclo se llama cíclico. Un grafo acíclico es aquel que no tiene ningún circuito o ciclo. A B D C E A B D C Grafo cíclico Grafo acíclico
  • 30. Operaciones sobre Grafos • Construir un grafo dada la información de sus vértices. (Convenio: se crea inicialmente vacío). • Verificar si un grafo está vacío o no. • Insertar vértices y arcos. • Eliminar vértices y arcos. • Dados dos vértices, determinar si son adyacentes. • Dado un vértice, determinar cuáles vértices son adyacentes a él.
  • 31. Operaciones sobre Grafos • Dados dos vértices, determinar un camino de longitud k entre ellos. • Dado un arco, determinar vértices incidentes a él. • Determinar si el grafo es cíclico.
  • 32. Representación matricial de Grafos • La representación matricial permite establecer si hay relación entre cada vértice del grafo y los demás. • Para ello, se utiliza una matriz cuadrada. • Se utiliza un arreglo bidimensional. • Esto significa que la representación matricial es una representación secuencial.
  • 33. Representación matricial de Grafos A partir de un grafo, siempre es posible definir un orden arbitrario de los vértices. A B C D E 0 1 2 3 4 AB D C E
  • 34. Matriz de Adyacencia La matriz de adyacencia representa para cada nodo cuáles son sus vértices adyacentes. • Cada fila y cada columna de la matriz se corresponde con un vértice en particular. • Los elementos de la matriz son booleanos • Si el elemento (i, j) es verdadero, existe un arco que va del vértice i al vértice j y, si el elemento (i, j) es falso, no existe arco del vértice i al vértice j. • Si el grafo es no orientado, si existe el arco del vértice i al vértice j existe el arco del vértice j al vértice i.
  • 35. Representación matricial de Grafos A B C D E 0 1 2 3 4 0 1 2 3 4 01000 10000 11000 00100 011000 1 2 3 4 AB D C E Vértices Matriz de Adyacencia
  • 36. Implementación en C++ class TVertex { private: void* aInfo; public: TVertex(void* pInfo) : aInfo(pInfo){} void* Info(){return aInfo;} };
  • 37. Implementación en C++ class TSeqGraph { private: bool** aAdjacent; bool aDirected; int aOrder; TGSeqList* aVertexList; public: TSeqGraph(int, bool); ~TSeqGraph(); TGSeqList* Adjacents(int); bool AreAdjacents(int, int); bool Cyclic(); int Degree(int); … };
  • 38. Implementación en C++ class TSeqGraph { public: … bool DeleteEdge(int, int); bool DeleteVertex(int); bool Directed() {return aDirected;} bool Empty(){return aVertexList->Empty();} bool InsertEdge(int, int); bool InsertVertex(void*); bool IsEdge(int, int); bool IsPathWithLength(int, int, int); int Order() {return aOrder;} TGSeqList* VertexList(){return aVertexList;} };
  • 39. Problemas La representación de la matriz de adyacencia de un grafo exige conocer por adelantado la cantidad de vértices del grafo. Esta representación no es suficientemente flexible cuando la cantidad de vértices varía con relativa frecuencia o cuando la estructura del grafo cambia durante la ejecución de la aplicación que lo usa. Esto implica crear la matriz cada vez que se inserte o elimine un nuevo vértice. Problema: Solución costosa en tiempo y recursos.
  • 40. Representación enlazada de Grafos AB D C E Variante 1: A B C D E C D C D E E D Una lista de vértices y cada uno tiene una lista de los vértices adyacentes a él. Problemas • Es difícil saber cuántos arcos llegan a un vértice. • Se repite la información del vértice • Las listas pueden ser indistintamente secuenciales o enlazadas o una combinación. • El grafo está vacío si no existen vértices.
  • 41. Representación enlazada de Grafos Variante 2: Representación multienlazada • Cada vértice se representa a través de un nodo que contiene: • Apuntador a su información, • Apuntador a una lista de arcos • Apuntador al siguiente vértice en la lista •Cada arco se representa por un nodo que contiene: • Apuntador al próximo arco de su vértice origen • Apuntador al nodo de su vértice destino
  • 42. Representación enlazada de Grafos Variante 2: Representación multienlazada AB D C E • El grafo está vacío si no hay vértices. A B C D E c D C D E E
  • 43. Representación enlazada de Grafos Contador de referencia formar parte de la información de los vértices y mantiene actualizado la cantidad de arcos llegan a él. • Los contadores de referencia facilitan algunas operaciones del grafo: • Al eliminar un vértice se deben decrementar los contadores de referencia de los vértices adyacentes. Si el contador del vértice adyacente se hace cero, se puede eliminar ese vértice si la lista de arcos está vacía.
  • 44. Implementación en C++ La representación multienlazada de grafos debe considerar si el grafo es ponderado por los vértices o por los arcos. En estos casos habría que agregar a los nodos de vértices y arcos respectivamente el peso o factor de ponderación.
  • 45. Representación enlazada de Grafos class TVertex { private: void* aInfo; TGLinkedList* aEdgeList; public: TVertex(void* pInfo) : aInfo(pInfo) {aEdgeList = new TGLinkedList();} void* Info() {return aInfo;} void Info(void* pInfo) {aInfo = pInfo;} TGLinkedList* EdgeList(){return aEdgeList;} };
  • 46. Implementación en C++ class TEdge { private: TVertex* aVertex; public: TEdge(TVertex* pVertex){aVertex = pVertex;} TVertex* Vertex(){return aVertex;} void Vertex(TVertex* pVertex) {aVertex = pVertex;} };
  • 47. Implementación en C++ class TLinkedGraph { private: bool aDirected; TGLinkedList* aVerticesList; public: TLinkedGraph(bool pDirected); ~TLinkedGraph(); TGLinkedList* Adjacents(int); bool AreAdjacents(int, int); bool Cyclic(); int Degree(int); … };
  • 48. Implementación en C++ class TLinkedGraph { … bool DeleteEdge(int, int); TVertex* DeleteVertex(int); bool Directed (){return aDirected;} bool Empty(){return aVertexList- >Empty();} int InDegree(int); bool InsertEdge(int, int); bool InsertVertex(void*); TSEdge* IsEdge (int, int); int OutDegree(int); bool Path(int, int, int); bool PathWithLength (int, int, int); TGLinkedList* VerticesList();
  • 49. Inserción en grafos multienlazados Inserción un arco de V1 a V2: 1-Verificar la existencia de los vértices V1 y V2 2-Hay dos posibilidades: 2.1 De no existir uno o ninguno, no se puede insertar el arco. 2.2 Insertarlos. • Insertar un arco en la lista de arcos de V1 y poner su apuntador al vértice adyacente apuntando al nodo que contiene a V2 en la lista de vértices. • Si tiene contador de referencia incrementar en 1, el contador de referencia del vértice V2.
  • 50. Eliminación en grafos multienlazados Eliminar el vértice V: 1-Verificar la existencia del vértice V. 2-Para cada arco de V: -Si en el vértice apuntado por ese arco hay contador de referencia, decrementarlo en uno y si éste toma el valor cero, verificar si la lista de arcos está vacía, para eliminarlo. -Eliminar el arco.
  • 51. Eliminación en grafos multienlazados Eliminar el vértice V: 3-Para cada Vértice excepto V -Buscar si existe algún arco que apunte a V -i existe eliminarlo y si la lista queda vacía, verificar el contador de referencia y si es cero, analizar de acuerdo a la política si se elimina o no. 4-Eliminar el vértice V. 5-Devolver la información del vértice V.