Grafos
Son estructuras de datos NO lineales, y se los puede definir como un conjunto de puntos o nodos, y un conjunto de líneas o aristas, tal que cada una de ellas une un punto con otro punto.
- Vértices: son objetos que contienen información.
- Aristas o arcos: cada uno conecta un vértice con otro, y puede tener un valor almacenado.
Se clasifican en:
- Grafos ponderados: cuando las aristas llevan un coste asociado (un entero al que se denomina peso).
- Dirigidos: cuando todas las aristas son dirigidas. Es importante el orden del par de nodos que definen cada arista.
- No dirigidos: cuando todas las aristas son NO dirigidas. El orden del par de nodos carece de importancia.
Los grafos tienen gran cantidad de aplicaciones: representación de circuitos electrónicos analógicos y digitales, representación de caminos o rutas de transporte en localidades y representación de redes de computadoras.
Grafo conexo y NO conexo
Un grafo es conexo si cada par de vértices está conectado por un camino; es decir, si para cualquier par de vértices (a, b), existe al menos un camino posible desde a hacia b. Y es no conexo cuando no se encuentra un camino entre dos vértices.
![]() |
| 1 - Grafo CONEXO. 2 - Grafo NO CONEXO |
Representaciones
• Una característica especial en los grafos es que podemos representarlos utilizando dos estructuras de datos distintas.
• En los algoritmos que se aplican sobre ellos veremos que adoptarán tiempos distintos dependiendo de la forma de representación elegida.
• En particular, los tiempos de ejecución variarán en función del número de vértices y el de aristas, por lo que la utilización de una representación u otra dependerá en gran medida de si el grafo es denso o disperso.
Representación por matriz de adyacencia:
Consiste en una tabla de tamaño V x V, en que la que a[i, j] tendrá como valor 1 si existe una arista del nodo i al nodo j. En caso contrario, el valor será 0.
Caso Particulares:
• Cuando se trata de grafos ponderados en lugar de 1 el valor que tomará será el
peso de la arista.
• Si el grafo es no dirigido hay que asegurarse de que se marca con un 1 (o con el
peso) tanto la entrada a[i, j] como la entrada a[j, i], puesto que se puede recorrer
en ambos sentidos.
Representación por lista de adyacencia:
Las listas de adyacencia son estructuras que contendrán un valor entero (el número que identifica al nodo destino), así como otro entero que indica el coste en el caso de que el grafo sea ponderado.
![]() |
| Lista de Adyacencia |
Lo que se hace es definir una lista enlazada para cada nodo, que contendrá los nodos a los cuales es posible acceder.
Es decir, un nodo A tendrá una lista enlazada asociada en la que aparecerá un elemento con una referencia al nodo B si A y B tienen una arista que los une. Obviamente, si el grafo es no dirigido, en la lista enlazada de B aparecerá la correspondiente referencia al nodo A.
El conjunto de vértices se representa como un vector, el cual tiene un número máximo de posiciones que es igual al número máximo de vértices del grafo. También se llena con valores booleanos.
Operaciones con Grafos implementadas en Pascal
PROCEDIMIENTO GRAFOVACIO O INICIAR GRAFO
AÑADIR VÉRTICE Y ARCO
Lista de Adyacencia hecho en Pascal:
Operaciones con Grafos implementadas en Pascal
PROCEDIMIENTO GRAFOVACIO O INICIAR GRAFO
Estático
Dinámico
AÑADIR VÉRTICE Y ARCO
Estático









No hay comentarios.:
Publicar un comentario