1. Un grafo G es una
pareja G=(V,A), donde V es un conjunto
finito (i.e vértices) y A es un subconjunto
del conjunto de parejas no ordenadas
de V (i.e arcos).
Por ejemplo G=({a,b,c},{{a,c},{c,b}}).
2. Hay tres maneras de representar un grafo en un programa:
mediante matrices, mediante listas y mediante matrices dispersas.
Representación mediante matrices: La forma más fácil de guardar la información de
los nodos es mediante la utilización de un vector que indexe los nodos, de manera que
los arcos entre los nodos se pueden ver como relaciones entre los índices. Esta relación
entre índices se puede guardar en una matriz, que llamaremos de adyacencia.
Representación mediante listas: En las listas de adyacencia lo que haremos srá
guardar por cada nodo, además de la información que pueda contener el propio
nodo, una lista dinámica con los nodos a los que se puede acceder desde él. La
información de los nodos se puede guardar en un vector, al igual que antes, o en otra
lista dinámica.
Representación mediante matrices dispersas: Para evitar uno de los problemas que
teníamos con las listas de adyacencia, que era la dificultad de obtener las relaciones
inversas, podemos utilizar las matrices dispersas, que contienen tanta información como
las matrices de adyacencia, pero, en principio, no ocupan tanta memoria como las
matrices, ya que al igual que en las listas de adyacencia, sólo representaremos
aquellos enlaces que existen en el grafo.
3. Para definir un camino euleriano es importante definir un
camino euleriano primero. Un camino euleriano se define de
la manera más sencilla como un camino que contiene todos
los arcos del grafo.
Teniendo esto definido podemos hablar de los grafos
eulerianos describiéndolos simplemente como aquel grafo
que contiene un camino euleriano.
4. En un grafo es un camino, una sucesión
de aristas adyacentes, que visita todos
los vértices del grafo una sola vez. Si
además el último vértice visitado es
adyacente al primero, el camino es
un ciclo hamiltoniano.
5. Un grafo que no tiene ciclos y que conecta a todos los puntos, se
llama un árbol. En un grafo con n vértices, los árboles tienen
exactamente n - 1 aristas, y hay nn-2 árboles posibles. Su
importancia radica en que los árboles son grafos que conectan
todos los vértices utilizando el menor número posible de aristas. Un
importante campo de aplicación de su estudio se encuentra en
el análisis filogenético, el de la filiación de entidades que derivan
unas de otras en un proceso evolutivo, que se aplica sobre todo a
la averiguación del parentesco entre especies; aunque se ha
usado también, por ejemplo, en el estudio del parentesco entre
lenguas.
6. Una de las aplicaciones mas
importantes es de hallar el camino mas
corto hacia un destino, ya sea de una
ciudad a otra, de unos departamentos a
otros, para el recorrido de árboles, sirve
para la representación
de algoritmos, etc. Un ejemplo de esto
es la tarea de freír un huevo.