Teoría de Grafos en Estructuras de Datos: Conceptos, Tipos y Algoritmos de Recorrido
Enviado por Programa Chuletas y clasificado en Plástica y Educación Artística
Escrito el en
español con un tamaño de 3,36 KB
Conceptos Fundamentales de Grafos
GRAFOS: Tipos:
- Grafos no dirigidos: Las aristas no están ordenadas.
- Grafos dirigidos: Las aristas son pares ordenados, existe una cola y una cabeza de arista. Se denominan dígrafos.
Nodos adyacentes a un nodo v: Todos los nodos unidos a v mediante una arista. Un grafo está etiquetado si cada arista tiene asociada una etiqueta o valor de cierto tipo. Grafo con pesos: grafo etiquetado con valores numéricos.
Un grafo es conexo (o conectado) si hay un camino entre cualquier par de vértices.
- Camino simple: Aquel en el que todos los vértices son distintos.
- Ciclo: Es un camino en el cual el primer y el último vértice son iguales.
- Grafo completo: Si existe una arista entre cualquier par de vértices.
Grado de un vértice v: Número de arcos que inciden en él.
Recorridos en Grafos
- Búsqueda en profundidad: Equivalente a un recorrido en preorden de un árbol. El conjunto de nodos marcados se trata como una pila.
- Búsqueda en amplitud o anchura: Equivalente a recorrer un árbol por niveles. El conjunto de nodos marcados se trata como una cola.
Algoritmo de Anchura
- Marcar el vértice de partida v.
- Meter en la cola el vértice de partida v.
- Repetir los pasos 4 y 5 hasta que se cumpla la condición de cola vacía.
- Quitar el nodo frente de la cola y comprobar su adyacencia.
- Introducir en la cola los vértices adyacentes que no estén marcados, y marcar estos vértices.
- Fin del proceso.
Algoritmo de Profundidad
- Marcar el vértice de partida v.
- Meter en la pila el vértice de partida v.
- Repetir los pasos 4 y 5 hasta que se cumpla la condición de pila vacía.
- Quitar el nodo correspondiente de la pila y comprobar su adyacencia.
- Introducir en la pila los vértices adyacentes que no estén marcados, y marcar estos vértices.
- Fin del proceso.
Algoritmos Avanzados y Aplicaciones
Ordenación Topológica
- Buscar un vértice sin predecesores (se calcula el grado de entrada de todos los vértices y los que cumplan esta condición se introducen en la cola).
- Este vértice v pasa a formar parte de la ordenación (tratar el frente de la cola; cuando se procesa v, el grado de entrada de todos los adyacentes se decrementa en una unidad, y aquellos que tienen grado de entrada 0 se introducen en la cola).
Algoritmo de Floyd
Con Dijkstra conocemos el camino mínimo para un nodo, pero en ocasiones podemos necesitar conocerlo para todos los nodos. Opción sencilla: Dijkstra para todos los vértices. El objetivo es crear una matriz D[i,j] donde el elemento i,j contenga el camino mínimo entre los vértices i e j.
Prim (Árbol de Expansión de Coste Mínimo)
Dado un grafo no dirigido, crear a partir de él un árbol con todos los vértices unidos y de mínimo coste.