Logo Studenta

GRAFOS2

¡Este material tiene más páginas!

Vista previa del material en texto

GRAFOS 
TERMINOLOGÍA
EN GRAFO NO DIRIGIDO:
Incidencia: La arista (u,v) es incidente con los vértices u y con v. De forma que:
Aristas a, d, y b son incidentes en V
Adyacencia: Dos vértices u y v son adyacentes si existe la arista (u, v) o (v, u).
Grado de un vértice: Determinado por el número de vértices adyacentes al nodo. 
Grado de X = 3
EN GRAFO DIRIGIDO:
Grado de salida: número de vértices adyacentes desde el nodo.
Grado de salida de W = 0
Grado de salida de Y = 2
Grado de entrada: número de vértices adyacentes al nodo.
Grado de entrada de W = 4
Grado de entrada de Y = 0
X
U
V
W
Y
a
c
b
e
d
f
g
X
U
V
W
Y
a
c
b
e
d
f
g
TERMINOLOGÍA
<a,b,e,d,c>: camino simple de longitud 4.
<a,c,d,a,b,e>: camino de longitud 5.
<a,e>: no es un camino.
<e,e>: camino, bucle y ciclo
a
b
c
d
e
Grafo no dirigido
a
b
c
d
e
Grafo dirigido
<a,b>: camino simple de longitud 1.
<e,d,a,b>: camino de longitud 3.
<a,c,d>: no es un camino.
<e,e>: camino, bucle y ciclo
IMPLEMENTACIÓN DE GRAFOS: 
LISTA DE ADYACENCIAS
LISTA DE ADYACENCIAS
En una lista de adyacencias, a cada vértice i se le asocia una lista enlazada con todos los vértices j adyacentes a i.
El grafo se representa por medio de una lista enlazada de n componentes, (n = número de vértices del grafo) donde cada componente constituye la lista de adyacencias correspondiente a cada vértice del grafo. 
Cada nodo de la lista consta de un campo indicando el vértice adyacente.
Si el grafo fuese etiquetado o valorado, habría que añadir un segundo campo para mostrar el valor de la etiqueta o el peso de la arista. 
Ejemplo
Ejemplo
2
3
2
NULL
4
1
2
3
4
graf
1
NULL
NULL
NULL
NULL
Clase Nodo de vértices de la Lista de Adyascencias
class NodoG{
 int datox;
 NodoG sigx;
 Nodo vec;
public NodoG()
 { datox=0; sigx=null; vec=null; }
public NodoG(int d)
 { datox=d; sigx=null; vec=null; }
 }
10
NULL
 vec datox sigx
NULL
Clase Nodo de la Lista de vecinos
class Nodo{
 int dato;
 Nodo sig;
public Nodo()
 { dato=0; sig=null; }
public Nodo(int d)
 { dato=d; sig=null; }
 }
 10
 dato sig
NULL
Clase Grafo
 Grafo
 graf
 constructor
 grafoVacio()
 insertar(x)
 insertarVec(qv,int)
 localiza(db)
Clase Grafo
// CLASE GRAFO
class GrafoL {
// CAMPOS
 NodoG graf;
// CONSTRUCTOR
 public GrafoL()
 { graf=null;}
// VERIFICA SI EL GRAFO ESTA VACIO
 public boolean grafoVacio()
 { return graf==null;}
Clase Grafo
// INSERTAR UN VERTICE A LA LISTA DE ADYACENCIAS
 public void insertar(int x)
 { NodoG nuevo=new NodoG(x);
 if(grafoVacio()) graf=nuevo;
	 else { // inserta al final
 NodoG p=graf;
 while(p.sigx!=null) { p=p.sigx; }
	 p.sigx=nuevo;
 }
 int dt;
 System.out.print("No. vecinos=");
 int mv=Leer.datoInt(); 
 for(int i=1; i<=mv;++i)
 { System.out.print("dato de vecino "+i+"=");
 dt=Leer.datoInt();
 nuevo.vec=insertarVec(nuevo.vec,dt);
 }
}
Clase Grafo
// INSERTAR LA LISTA DE VECINOS DEL VERTICE
public Nodo insertarVec(Nodo qv,int y)
{ Nodo novo=new Nodo(y);
 if(qv==null) qv=novo;
 else { // inserta al final
	 Nodo p=qv;
 	 while(p.sig!=null) { p=p.sig; } 
	 p.sig=novo;
	 }
 return qv;
}
// LOCALIZAR UN NODO EN EL GRAFO
public NodoG localiza(int db)
{ NodoG p=graf;
 while(p!=null && p.datox!=db) { p=p.sigx; } 
 return p;
} }
Clase Operaciones
class Operaciones {
// INSERTAR N NODOS A LA LISTA DE ADYACENCIAS
public GrafoL insertarN(GrafoL g)
{ System.out.print("No. vertices=");
 int n=Leer.datoInt();
 int dt;
 for(int i=1; i<=n;++i)
 { System.out.print("dato "+i+"=");
 dt=Leer.datoInt();
 g.insertar(dt);
 }
 return g;
 }
Clase Operaciones
// MOSTRAR LA LISTA DE ADYACENCIA
public void mostrarListaAdy(GrafoL g)
{ NodoG p=g.graf;
 Nodo q;
 while(p!=null) { // Recorre la lista de adyacencia
 System.out.println("dato= "+p.datox);
 // Recorre lista de vecinos 
 q=p.vec;
 while(q!=null) { 
 System.out.println("dato de vecino= "+q.dato);
 q=q.sig;
 }
 p=p.sigx;
 }
 }
}
PROBLEMAS
RESUMEN DE LAS DIAPOSITIVAS DE GRAFO1 (MAX 4 PAG.)
PROBAR EL EJEMPLO
RESOLVER EL EJEMPLO, COMO UN GRAFO NO DIRIGIDO
(OPCIONAL CON 2) DEFINIR UN GRAFO CON DATO STRING, SEGÚN LA FIGURA SIGUIENTE. INSERTAR N NODOS Y MOSTRAR.
Ciudad B
Ciudad C
Ciudad F
Ciudad D
Ciudad E
Ciudad A

Continuar navegando

Materiales relacionados

24 pag.
13 pag.
Guia 1 - Conceptos fundamentales

Escuela Universidad Nacional

User badge image

Roosevelt Daniel Santos Vanegas