Grafos en C
Grafos en C
Grafos en C
Los grafos son muy utilizados en computacin, ya que permiten resolver problemas
muy complejos.
Imaginemos que disponemos de una serie de ciudades y de carreteras que las unen.
De cada ciudad saldrn varias carreteras, por lo que para ir de una ciudad a otra se
podrn tomar diversos caminos. Cada carretera tendr un coste asociado (por ejemplo,
la longitud de la misma). Gracias a la representacin por grafos podremos elegir el
camino ms corto que conecta dos ciudades, determinar si es posible llegar de una
ciudad a otra, si desde cualquier ciudad existe un camino que llegue a cualquier otra,
etc.
Dnde: Vrtices = {A, B, C, D, E} Aristas = {(A, B), (A, D), (B, C), (B, D), (B, E), (C, E),
(D, E), (E, D)}
Tipos de grafos.
Grafos No dirigidos.
Son aquellos en los cuales las aristas no estn orientadas (No son flechas). Cada lado
se representa entre parntesis, separando sus vrtices por comas, y teniendo en
cuenta que ambos vrtices son origen y destino a la vez: (Vi, Vj) = (Vj, Vi).
Grafos Dirigidos.
Son aquellos en los cuales las aristas estn orientadas (flechas). Cada arista se
representa entre parntesis, separando sus vrtices por comas y teniendo en cuenta
(Vi, Vj) (Vj, Vi).
Listas adyacentes.
Cada vrtice tiene una lista de vrtices los cuales son adyacentes a l. Representacin
del ejemplo:
(C) => E
(D) => E
(E) => D
Matriz de adyacencia.
El grafo se representa por una matriz de tamao VxV, donde V son los vrtices que
unen a los nodos, la conjuncin de los dos vrtices representa la arista. Representacin
del ejemplo:
Aplicaciones
En mltiples aplicaciones donde se aplican los grafos, es necesario conocer el camino de menor
costo entre dos vrtices dados:
El problema del camino ms corto de un vrtice a otro consiste en determinar el camino de menor
costo, desde un vrtice u a otro vrtice v. El costo de un camino es la suma de los costos (pesos)
de los arcos que lo conforman.
Es un algoritmo greddy.
Trabaja por etapas, y toma en cada etapa la mejor solucin sin considerar consecuencias
futuras.
El ptimo encontrado en una etapa puede modificarse posteriormente si surge una
solucin mejor.