SlideShare una empresa de Scribd logo
1 de 23
GRAFOS
ESTRUCTURA DE DATOS
INTRODUCCION
 Los grafos son estructuras de datos
 Representan relaciones entre objetos
 Relaciones arbitrarias, es decir
 No jerárquicas
 Son aplicables en
 Química
 Geografía
 Ing. Eléctrica e Industrial, etc.
 Modelado de Redes
 De alcantarillado
 Eléctricas
 Etc.
Impresora
Modem
PC2
Servidor
PC1
Dado un escenario
donde ciertos objetos
se relacionan, se
puede “modela el
grafo” y luego aplicar
algoritmos para
resolver diversos
problemas
DEFINICION
 Un grafo G = (V,A)
 V, el conjunto de vértices o nodos
 Representan los objetos
 A, el conjunto de arcos
 Representan las relaciones
V = {1, 4, 5, 7, 9}
A= {(1,4), (5,1), (7,9), (7,5), (4,9), (4,1), (1,5), (9,7), (5, 7), (9,4)}
1 4
5
7 9
TIPOS DE GRAFOS
 Grafos dirigidos
 Si los pares de nodos que forman
arcos
 Son ordenados. Ej.: (u->v)
 Grafos no dirigidos
 Si los pares de nodos de los arcos
 No son ordenados Ej.: u-v
C E
D
F
H
V = {C, D, E, F, H}
A= {(C,D), (D,F), (E,H), (H,E), (E,C)}
1 4
5
7 9
Grafo del ejemplo anterior
OTROS CONCEPTOS
 Arista
 Es un arco de un grafo no dirigido
 Vertices adyacente
 Vertices unidos por un arco
 Factor de Peso
 Valor que se puede asociar con un
arco
 Depende de lo que el grafo represente
 Si los arcos de un grafo tienen F.P.
 Grafo valorado
Guayaquil Quito
Cuenca
Ambato
Riobamba
5
5
7
9
8
7
GRADOS DE UN NODO
 En Grafo No Dirigido
 Grado(V)
 Numero de aristas que contiene a V
 En Grafo Dirigido
 Grado de entrada, Graden(V)
 Numero de arcos que llegan a V
 Grado de Salida, Gradsal(V)
 Numero de arcos que salen de V
C E
D
F
H
Guayaquil Quito
Cuenca
Ambato
Riobamba
5
5
7
9
8
7
Gradoent(D) = 1 y Gradsal(D) = 1
Grado(Guayaquil) = 3
CAMINOS
 Definicion
 Un camino P en un grafo G, desde
V0 a Vn
 Es la secuencia de n+1 vertices
 Tal que (Vi, Vi+1)  A para 0 i  n
 Longitud de camino
 El numero de arcos que lo
forman
 Camino Simple
 Todos los nodos que lo
forman son distintos
 Ciclo
 Camino simple cerrado
de long. >= 2
 Donde V0 = Vn
4 7
9
6
10
11
Camino entre 4 y 7
P = {4, 6, 9, 7}
Longitud: 3
A B C
D E F
Camino A y A
P = {A, E, B, F, A}
Longitud: 4 – 4ciclo
CONECTIVIDAD
 Grafo No Dirigido
 Conexo
 Existe un camino entre
cualquier par de nodos
 Grafo Dirigido
 Fuertemente Conexo
 Existe un camino entre cualquier par
de nodos
 Conexo
 Existe una cadena entre cualquier
par de nodos
3
9
5
7
2
4
5
6
8
H
A
B
D
TDA GRAFO
 Datos
 Vertices y
 Arcos(relacion entre vertices)
 Operaciones
 void AñadirVertice(Grafo G, Vertice V)
 Añadir un nuevo vertice
 void BorrarVertice(Grafo G, Generico clave)
 Eliminar un vertice existente
 void Union(Grafo G, Vertice V1, Vertice V2)
 Unir dos vertices
 Void BorrarArco(Grafo G, Vertice V1, Vertice V2)
 Eliminar un Arco
 bool EsAdyacente(Grafo G, Vertice V1, Vertice V2)
 Conocer si dos vertices son o no adyacentes
REPRESENTACION
 Dos posibles representaciones
 Estatica: Matriz de Adyacencia
 Los vertices se representan por indices(0…n)
 Las relaciones de los vertices se almacenan en una Matriz
 Dinamica: Lista de Adyacencia
 Los vertices forman una lista
 Cada vertice tiene una lista para representar sus
relaciones(arcos)
MATRIZ DE ADYACENCIA
 Dado un Grafo G = (V, A)
 Sean los Vertices V = {V0, V1,
… Vn}
 Se pueden representar por
ordinales 0,1,..n
 Como representar los Arcos?
 Estos son enlaces entre vertices
 Puede usarse una matriz



)
,
(
arco
hay
no
si
,
0
)
,
(
arco
hay
si
,
1
Vj
Vi
Vj
Vi
aij




















0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
0
0
1
0
1
0
0
0
0
1
0
5
4
3
2
1
0
5
4
3
2
1
0
V
V
V
V
V
V
V
V
V
V
V
V
Si el grafo fuese valorado, en vez
de 1, se coloca el factor de peso
4 7
9
6
10
11
V0
V1 V2
V3
V4
V5
EL TIPO DE DATO
 Los Vertices
 Se definen en un
Arreglo
 Los Arcos
 Se definen en una
Matriz
#define MAX 20
typedef int [MAX][MAX] MatrizAdy;
typdef Generico[MAX] Vertices;
typedef struct Grafo{
Vertices V;
MatrizAdy A;
int nvertices;
bool Dirigido;
};
UNIR VERTICE
void Union(Grafo G, int v1, int v2){
G->A[v1][v2] = 1;
if(!G->dirigido)
G->A[v2][v1] = 1;
}
LISTA DE ADYACENCIA
 Si una matriz
 Tiene muchos vertices y
 Pocos arcos
 La Matriz de Adyacencia
 Tendra demasiados ceros
 Ocupara mucho espacio
 Los vertices
 Pueden formar una lista, no un vector
 Los arcos
 Son relaciones entre vertices
 Se pueden representar con una lista x cada
vertice
4 7
9
6
10
11
4
6
9
7
10
11
6
4
6
9
11
10
9
7
EL TIPO DE DATO
 Cada vertice tiene
 Contenido
 Siguiente
 Una lista de adyacencia
 Cada nodo en la lista de
adyacencia
 Peso del arco
 Siguiente
 Una referencia al vertice(arco)
typedef struct Vertice{
Generico contenido;
LSE *LA;
};
typedef Vertice *Arco;
typedef struct Grafo{
LSE LVertices;
bool dirigido;
};
ALGUNAS
IMPLEMENTACIONES
void Union(Grafo G, Vertice V1, Vertice V2){
LSE_InsertarNodoFin(V1->Larcos, LSE_CrearNodo(V2));
if(!G->dirigido)
LSE_InsertarNodoFin(V2->Larcos,
LSE_CrearNodo(V1);
}
EJERCICIO
 Complete la implementacion de las operaciones del
grafo con lista de adyacencia
RECORRIDOS DEL GRAFO
 Se busca
 Visitar todos los nodos posibles
 Desde un vertice de partida D
 Cualquiera
 Existe dos posibles recorridos
 En Anchura y
 En Profundidad
RECORRIDO EN ANCHURA
 Encolar vertice de partida
 Marcarlo como “visitado”
 Mientras la cola no este vacia
 Desencolar vertice W
 Mostrarlo
 Marcar como visitados
 Los vertices adyacentes de W
 Que no hayan sido ya visitados
 Encolarlos
EJEMPLO
A
T
H
B
D
C
R
D
Cola
Se Muestra:
D
B C
B C
C H
H R
H
R
A
R A
T
T
A
T T
IMPLEMENTACION
LSE *RecorrerEnAnchura(Grafo G, Vertice V){
LSE *L;
LSE_nodo *sacado, *parco;
Vertice *vsacado, *varco;
Cola Q;
L = malloc(sizeof(LSE));
LSE_Inicializar(L);
Cola_Inicializar(&Q);
V.visitado = TRUE;
EnColar(&Q, LSE_NodoCrear(&V));
while(!Cola_EstaVacia(Q)){
sacado = DesEnColar(&Q);
vsacado = Generico_ObtenerVertice(sacado->G);
LSE_InsertarNodoFin(L, LSE_NodoCrear(vsacado));
for(parco = vsacado->LArcos->header; parco!=NULL; parco = parco->sig){
varco = Generico_ObtenerVertice(parco->G);
if(!varco->visitado){
varco->visitado = TRUE;
EnColar(&Q, LSE_NodoCrear(varco));
}
}
}
return L;
}
RECORRIDO EN
PROFUNDIDAD
 Marcar vertice origen V como visitado
 Recorrer en Profundidad
 Cada vertice adyacente de V
 Que no haya sido visitado
 Ejemplo
A
T
H
B
D
C
R
Se Muestra:
Pila
D
D
B
C
C
R
R
H
H
A
T
T A B
EJERCICIO
Escriba la implementacion del recorrido en
profundidad de un grafo a partir de un
vertice inicial

Más contenido relacionado

Similar a 19. Grafos.ppt

Similar a 19. Grafos.ppt (20)

Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
S8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informáticaS8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informática
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 
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
 
Teoría de Grafos en sage
 Teoría de Grafos en sage Teoría de Grafos en sage
Teoría de Grafos en sage
 
Grafos en sage
Grafos en sageGrafos en sage
Grafos en sage
 
Grafos
GrafosGrafos
Grafos
 
Grafoscuestionario
GrafoscuestionarioGrafoscuestionario
Grafoscuestionario
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Fundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisFundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de Educagratis
 
Grafos
GrafosGrafos
Grafos
 
Vectores ...
Vectores ...Vectores ...
Vectores ...
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafos
 
Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@
 

Último

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 

Último (20)

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 

19. Grafos.ppt

  • 2. INTRODUCCION  Los grafos son estructuras de datos  Representan relaciones entre objetos  Relaciones arbitrarias, es decir  No jerárquicas  Son aplicables en  Química  Geografía  Ing. Eléctrica e Industrial, etc.  Modelado de Redes  De alcantarillado  Eléctricas  Etc. Impresora Modem PC2 Servidor PC1 Dado un escenario donde ciertos objetos se relacionan, se puede “modela el grafo” y luego aplicar algoritmos para resolver diversos problemas
  • 3. DEFINICION  Un grafo G = (V,A)  V, el conjunto de vértices o nodos  Representan los objetos  A, el conjunto de arcos  Representan las relaciones V = {1, 4, 5, 7, 9} A= {(1,4), (5,1), (7,9), (7,5), (4,9), (4,1), (1,5), (9,7), (5, 7), (9,4)} 1 4 5 7 9
  • 4. TIPOS DE GRAFOS  Grafos dirigidos  Si los pares de nodos que forman arcos  Son ordenados. Ej.: (u->v)  Grafos no dirigidos  Si los pares de nodos de los arcos  No son ordenados Ej.: u-v C E D F H V = {C, D, E, F, H} A= {(C,D), (D,F), (E,H), (H,E), (E,C)} 1 4 5 7 9 Grafo del ejemplo anterior
  • 5. OTROS CONCEPTOS  Arista  Es un arco de un grafo no dirigido  Vertices adyacente  Vertices unidos por un arco  Factor de Peso  Valor que se puede asociar con un arco  Depende de lo que el grafo represente  Si los arcos de un grafo tienen F.P.  Grafo valorado Guayaquil Quito Cuenca Ambato Riobamba 5 5 7 9 8 7
  • 6. GRADOS DE UN NODO  En Grafo No Dirigido  Grado(V)  Numero de aristas que contiene a V  En Grafo Dirigido  Grado de entrada, Graden(V)  Numero de arcos que llegan a V  Grado de Salida, Gradsal(V)  Numero de arcos que salen de V C E D F H Guayaquil Quito Cuenca Ambato Riobamba 5 5 7 9 8 7 Gradoent(D) = 1 y Gradsal(D) = 1 Grado(Guayaquil) = 3
  • 7. CAMINOS  Definicion  Un camino P en un grafo G, desde V0 a Vn  Es la secuencia de n+1 vertices  Tal que (Vi, Vi+1)  A para 0 i  n  Longitud de camino  El numero de arcos que lo forman  Camino Simple  Todos los nodos que lo forman son distintos  Ciclo  Camino simple cerrado de long. >= 2  Donde V0 = Vn 4 7 9 6 10 11 Camino entre 4 y 7 P = {4, 6, 9, 7} Longitud: 3 A B C D E F Camino A y A P = {A, E, B, F, A} Longitud: 4 – 4ciclo
  • 8. CONECTIVIDAD  Grafo No Dirigido  Conexo  Existe un camino entre cualquier par de nodos  Grafo Dirigido  Fuertemente Conexo  Existe un camino entre cualquier par de nodos  Conexo  Existe una cadena entre cualquier par de nodos 3 9 5 7 2 4 5 6 8 H A B D
  • 9. TDA GRAFO  Datos  Vertices y  Arcos(relacion entre vertices)  Operaciones  void AñadirVertice(Grafo G, Vertice V)  Añadir un nuevo vertice  void BorrarVertice(Grafo G, Generico clave)  Eliminar un vertice existente  void Union(Grafo G, Vertice V1, Vertice V2)  Unir dos vertices  Void BorrarArco(Grafo G, Vertice V1, Vertice V2)  Eliminar un Arco  bool EsAdyacente(Grafo G, Vertice V1, Vertice V2)  Conocer si dos vertices son o no adyacentes
  • 10. REPRESENTACION  Dos posibles representaciones  Estatica: Matriz de Adyacencia  Los vertices se representan por indices(0…n)  Las relaciones de los vertices se almacenan en una Matriz  Dinamica: Lista de Adyacencia  Los vertices forman una lista  Cada vertice tiene una lista para representar sus relaciones(arcos)
  • 11. MATRIZ DE ADYACENCIA  Dado un Grafo G = (V, A)  Sean los Vertices V = {V0, V1, … Vn}  Se pueden representar por ordinales 0,1,..n  Como representar los Arcos?  Estos son enlaces entre vertices  Puede usarse una matriz    ) , ( arco hay no si , 0 ) , ( arco hay si , 1 Vj Vi Vj Vi aij                     0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 5 4 3 2 1 0 5 4 3 2 1 0 V V V V V V V V V V V V Si el grafo fuese valorado, en vez de 1, se coloca el factor de peso 4 7 9 6 10 11 V0 V1 V2 V3 V4 V5
  • 12. EL TIPO DE DATO  Los Vertices  Se definen en un Arreglo  Los Arcos  Se definen en una Matriz #define MAX 20 typedef int [MAX][MAX] MatrizAdy; typdef Generico[MAX] Vertices; typedef struct Grafo{ Vertices V; MatrizAdy A; int nvertices; bool Dirigido; };
  • 13. UNIR VERTICE void Union(Grafo G, int v1, int v2){ G->A[v1][v2] = 1; if(!G->dirigido) G->A[v2][v1] = 1; }
  • 14. LISTA DE ADYACENCIA  Si una matriz  Tiene muchos vertices y  Pocos arcos  La Matriz de Adyacencia  Tendra demasiados ceros  Ocupara mucho espacio  Los vertices  Pueden formar una lista, no un vector  Los arcos  Son relaciones entre vertices  Se pueden representar con una lista x cada vertice 4 7 9 6 10 11 4 6 9 7 10 11 6 4 6 9 11 10 9 7
  • 15. EL TIPO DE DATO  Cada vertice tiene  Contenido  Siguiente  Una lista de adyacencia  Cada nodo en la lista de adyacencia  Peso del arco  Siguiente  Una referencia al vertice(arco) typedef struct Vertice{ Generico contenido; LSE *LA; }; typedef Vertice *Arco; typedef struct Grafo{ LSE LVertices; bool dirigido; };
  • 16. ALGUNAS IMPLEMENTACIONES void Union(Grafo G, Vertice V1, Vertice V2){ LSE_InsertarNodoFin(V1->Larcos, LSE_CrearNodo(V2)); if(!G->dirigido) LSE_InsertarNodoFin(V2->Larcos, LSE_CrearNodo(V1); }
  • 17. EJERCICIO  Complete la implementacion de las operaciones del grafo con lista de adyacencia
  • 18. RECORRIDOS DEL GRAFO  Se busca  Visitar todos los nodos posibles  Desde un vertice de partida D  Cualquiera  Existe dos posibles recorridos  En Anchura y  En Profundidad
  • 19. RECORRIDO EN ANCHURA  Encolar vertice de partida  Marcarlo como “visitado”  Mientras la cola no este vacia  Desencolar vertice W  Mostrarlo  Marcar como visitados  Los vertices adyacentes de W  Que no hayan sido ya visitados  Encolarlos
  • 20. EJEMPLO A T H B D C R D Cola Se Muestra: D B C B C C H H R H R A R A T T A T T
  • 21. IMPLEMENTACION LSE *RecorrerEnAnchura(Grafo G, Vertice V){ LSE *L; LSE_nodo *sacado, *parco; Vertice *vsacado, *varco; Cola Q; L = malloc(sizeof(LSE)); LSE_Inicializar(L); Cola_Inicializar(&Q); V.visitado = TRUE; EnColar(&Q, LSE_NodoCrear(&V)); while(!Cola_EstaVacia(Q)){ sacado = DesEnColar(&Q); vsacado = Generico_ObtenerVertice(sacado->G); LSE_InsertarNodoFin(L, LSE_NodoCrear(vsacado)); for(parco = vsacado->LArcos->header; parco!=NULL; parco = parco->sig){ varco = Generico_ObtenerVertice(parco->G); if(!varco->visitado){ varco->visitado = TRUE; EnColar(&Q, LSE_NodoCrear(varco)); } } } return L; }
  • 22. RECORRIDO EN PROFUNDIDAD  Marcar vertice origen V como visitado  Recorrer en Profundidad  Cada vertice adyacente de V  Que no haya sido visitado  Ejemplo A T H B D C R Se Muestra: Pila D D B C C R R H H A T T A B
  • 23. EJERCICIO Escriba la implementacion del recorrido en profundidad de un grafo a partir de un vertice inicial