El documento describe dos representaciones principales de grafos: la matriz de adyacencia y las listas de adyacencia. La matriz de adyacencia almacena si dos vértices están conectados en una matriz, permitiendo determinar conexiones en tiempo constante pero requiriendo más memoria. Las listas de adyacencia almacenan para cada vértice sus vecinos, usando menos memoria y permitiendo acceso eficiente a los vecinos. El documento también define caminos, ciclos y árboles en grafos.
2. Matriz de adyacencia
• Un grafo se puede representar mediante una matriz A
tal que A[i,j]=1 si hay un arco que conecta vi con vj, y 0
si no.
• La matriz de adyacencia de un grafo no dirigido es
simétrica.
• Una matriz de adyacencia permite determinar si dos
vértices están conectados o no en tiempo constante,
pero requieren O(n2) bits de memoria.
• Esto puede ser demasiado para muchos grafos que
aparecen en aplicaciones reales, en donde |E|<<n2.
• Otro problema es que se requiere tiempo O(n)
para encontrar la lista de vecinos de un vértice dado.
4. Listas de adyacencia
Esta representación consiste en almacenar, para cada
nodo, la lista de los nodos adyacentes a él.
Para el segundo ejemplo anterior, v1: v2 v2: v2, v3 v3: v1,
v4 v4: v3
Esto utiliza espacio O(|E|) y permite acceso eficiente a
los vecinos, pero no hay acceso al azar a los arcos.
3
2 4
1
2
2
1
5
5 4 G 5
1 4
3
4
5
4
2
5 2 3
6. Caminos, ciclos y árboles
• Un camino es una secuencia de arcos en que el
extremo final de cada arco coincide
con el extremo inicial del siguiente en la secuencia.
V2
Un camino (en rojo)
V1 V3
V5 V4
7. Caminos, ciclos y árboles
• Un camino es simple si no se repiten vértices, excepto
posiblemente el primero y el último.
Un ciclo es un camino simple y cerrado.
V2 Un ciclo (en rojo)
V1 V3
V5 V4
Un grafo es conexo si desde cualquier vértice existe un camino hasta
cualquier otro vértice del grafo.
Se dice que un grafo no dirigido es un árbol si es conexo y acíclico.