Académique Documents
Professionnel Documents
Culture Documents
2. DEFINICIONES Y TERMINOLOGA
FUNDAMENTAL.
Un grafo G es un conjunto en el que hay definida una relacin binaria,es
decir,G=(V,A) tal que V es un conjunto de objetos a los que denominaremos
vrtices o nodos y
es una relacin binaria a cuyos elementos
denominaremos arcos o aristas.
Dados
1.
2.
Si las aristas tienen asociada una direccin(las aristas (x,y) y (y,x) no son
equivalentes) diremos que el grafo es dirigido,en otro caso ((x,y)=(y,x)) diremos
que el grafo es no dirigido.
o grafos no dirigidos:
donde n=|V|
Tanto a las aristas como a los vrtices les puede ser asociada
informacin.A esta informacin se le llama etiqueta.Si la etiqueta que se
asocia es un nmero se le llama peso,costo o longitud.Un grafo cuyas
aristas o vrtices tienen pesos asociados recibe el nombre de grafo
etiquetado o ponderado.
Se dice que dos arcos son adyacentes cuando tienen un vrtice comn que
es a la vez origen de uno y extremo del otro.
3. TDA GRAFO.
A la hora de disear el TDA grafo hay que tener en cuenta que hay que manejar
datos correspondientes a sus vrtices y aristas,pudiendo cada uno de ellos estar o
no etiquetados.Adems hay que proporcionar operaciones primitivas que
permitan manejar el tipo de dato sin necesidad de conocer la
implementacin.As,los tipos de datos que se usarn y las operaciones primitivas
consideradas son las siguientes:
NUEVOS TIPOS APORTADOS.
Los nuevos tipos aportados por el TDA grafo son los siguientes:
grafo.
vertice.
arista.
Grafos dirigidos.
Como se ve,se asocia cada fila y cada columna a un vrtice y los elementos bi,j de
la matriz son 1 si existe el arco (i,j) y 0 en caso contrario.
Grafos no dirigidos.
G=(V,A) un grafo no dirigido con |V|=n .Se define la matriz de adyacencia o
booleana asociada a G como Bnxn con:
Como puede verse en el ejemplo de las figuras anteriores tanto el vector de listas
de adyacencias como en la lista de listas se ha razonado en funcin de los vrtices
que actan como origenes de los arcos. Anlogamente se poda haber hecho con
Esta estructura no seria la mas idonea si trabajamos con solo con grafos no
dirigidos ya que por cada arista no dirigida tendriamos que insertar en la
estructura una misma arista dirigida repetida dos veces (una con un vrtice como
origen y el otro como destino y al contrario). En muchos problemas si asumimos
arco {
nodo *origen;
nodo *destino;
valor;
arco *sig;
int nodo;
tetq etiq;
tarco ady;
tarco inc;
struct nodo *sig;
} *tnodo;
typedef tnodo tgrafo;
LISTA DE PRIMITIVAS.
Lista de primitivas para los grafos dirigidos:
Crear: Funcin que se encarga de crear un grafo vacio.
Etiqueta: Funcion que devuelve la etiqueta asociada a un nodo en un
grafo.
Label: Funcion que devuelve la Label de un nodo en el grafo.
LocalizaLabel: Esta funcin recibe el entero l (el label asociado a un nodo
que se supone pertenece al grafo y nos devuelve el nodo asociado con esa
label.
ExisteArco: Funcin que devuelve 1 si existe un arco entre el nodo o y el
nodo d en el grafo g, si no existe dicho arco devuelve 0.
PrimerArco: Devuelve el primer arco que sale del nodo n en el grafo g, si
no existe dicho primer arco devuelve Nulo.
SiguienteArco: Funcin que devuelve el arco siguiente al arco a en el
nodo n si no existe dicho arco devuelve Nulo.