Conceptos Fundamentales y Algoritmos Clave en la Teoría de Grafos

Enviado por Programa Chuletas y clasificado en Matemáticas

Escrito el en español con un tamaño de 19,31 KB

Fundamentos de la Teoría de Grafos

Un grafo 2wECAwECAwECAwECAwECAwECAwECAwECAwECAwEC es It7C1e0RDoj4alfs0YGbwUAgA7 un conjunto formado por pVzoMzhDhyrftj0RSkZtqVVkUM19ZKcukSAAOw== vértices y un conjunto de arcos o aristas (edges en inglés) que son un conjunto de duplas IABQhCaKW3mubOu+3DG9tNgpydkt88khmJpwiFIR .

Definiciones Básicas

Grafo Dirigido

Un grafo es dirigido si hay un arco de IABoRjA8jKiORpoJ0QpwTSFmBCZrRwxcNhHHEdEg a 2wECAwECAwECAwECAwECAwVEIABgRjA8jKiORnoJ pero no de 2wECAwECAwECAwECAwECAwVEIABgRjA8jKiORnoJ a IABoRjA8jKiORpoJ0QpwTSFmBCZrRwxcNhHHEdEg para algún 2wECAwECAwECAwECAwECAwECAwECAwVJIABUgySe . Es decir, si los arcos “tienen flechas”.

Adyacencia

Un vértice 2wECAwECAwECAwECAwECAwVEIABgRjA8jKiORnoJ es adyacente de IABoRjA8jKiORpoJ0QpwTSFmBCZrRwxcNhHHEdEg si XadJo3YbozvuN9zQmMmBawkXGLpY+LlgwQOsG0XA .

Camino

Existe un camino de 2wECAwECAwECAwECAwECAwECAwECAwECAwECAwEC a 2wECAwECAwECAwECAwVJIABkRjA4jKiuZIoJ0Lpu si EKyGVMgCmsJPSJeiwcH76W67LQRvsRm6Z6Ku212N con todos los XadJo3YbozvuN9zQmMmBawkXGLpY+LlgwQOsG0XA . Un camino es simple si no se repite ningún vértice en el trayecto de ese camino.

Longitud de un Camino

La longitud de un camino es el número de arcos que hay que tomar para llegar al último vértice desde el primero.

Ciclo

Un ciclo es un camino de IABoRjA8jKiORpoJ0QpwTSFmBCZrRwxcNhHHEdEg a IABoRjA8jKiORpoJ0QpwTSFmBCZrRwxcNhHHEdEg . Un ciclo es simple si no se repite ningún vértice excepto el primero y el último.

Propiedades y Tipos de Grafos

Grafo Conexo

Un grafo es conexo si existe un camino entre cada par de nodos.

Grafo Completo

Un grafo es completo si existe un arco entre cada par de nodos.

Grado de un Nodo

El grado de un nodo es el número de arcos que entran o salen del nodo. De esta definición surgen dos conceptos:

  • Grado de entrada: El número de arcos que van hacia el nodo en cuestión.
  • Grado de salida: El número de arcos que salen del nodo en cuestión.

Grafo Ponderado

Un grafo ponderado implica asignar un valor (peso) a cada arco del grafo.

Subgrafo

Un grafo 2wECAwECAwECAwECAwECAwECAwECAwECAwECAwVF es subgrafo de otro grafo 2wECAwECAwECAwECAwECAwECAwECAwECAwECAwVJ si FzdRRTaTAnbE5GgoQjSxkIEU0aDAR1QGFFfZBYdx y WN0Bu18okUoDMwoeLlQST4lGk5A01D6TPMmMKdVj .

Recorridos en Grafos

Nota sobre la Lista de Adyacencia

Un inconveniente de la lista de adyacencia es que resulta difícil medir el grado de entrada de un nodo.

Definición de Recorrido

Un recorrido es una manera sistemática de visitar todos los nodos del grafo. Hay dos tipos principales de recorrido:

  1. Recorrido en Anchura (BFS): Utiliza una 2wECAwECAwECAwECAwQZEMgpU6EYLHMyVQSiDEFp COLA.
  2. Recorrido en Profundidad (DFS): Utiliza una 2wECAwECAwECAwECAwQZEMgpU6EYLHMyVQSiDEFp PILA.

Algoritmos de Recorrido

Algoritmo de Recorrido en Anchura (BFS)

Recibimos un grafo y elegimos un vértice que llamaremos inicial.

  1. Meter el vértice inicial en “visitados”.
  2. Encolar el vértice inicial.
  3. Repetir los pasos 4) a 6) hasta vaciar la cola.
  4. Imprimir el primero de la cola, al que llamamos 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx , y desencolarlo.
  5. Encolar adyacentes de 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx no visitados.
  6. Meter adyacentes de 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx en visitados.

Algoritmo de Recorrido en Profundidad (DFS)

Recibimos un grafo y elegimos un vértice que llamaremos inicial.

  1. Meter el vértice inicial en “visitados”.
  2. Apilar el vértice inicial.
  3. Repetir los pasos 4) a 6) hasta vaciar la pila.
  4. Imprimir la cima de la pila, al que llamamos 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx , y desapilarlo.
  5. Apilar adyacentes de 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx no visitados.
  6. Meter adyacentes de 2wECAwECAwECAwECAwU0YBUkACCRWEBsDakpRSkx en visitados.

Algoritmo de Dijkstra y Ordenación Topológica

Esquema del Algoritmo de Dijkstra

Aplicamos el siguiente código:

Void Dijkstra (tabla T){
    Vertices V, W;
    While (algún vértice no visitado){
        V = vértice no visitado con 
 más pequeña
        T[V].visitado = 1;
        For (cada W adyacente de V){
            If (T[V].d + peso

(Nota: El fragmento de código del algoritmo de Dijkstra parece incompleto en el documento original).

Ordenación Topológica

Una ordenación topológica en un grafo necesariamente dirigido y acíclico (DAG) es una ordenación de los nodos del grafo que cumple lo siguiente:

Si hay un camino de 2wECAwECAwU9IHAFBLAVQwasF3IRHIMd6rpGyKrl a F1XIQA7 , entonces en el orden se cumple que 2wECAwECAwU9IHAFBLAVQwasF3IRHIMd6rpGyKrl aparece antes que F1XIQA7 .

Entradas relacionadas: