Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Campus Culiacán
Matemáticas Discretas
Alan Omar Urías Osuna
Tarea 5
Teoría de Grafos
Vértices (nodos)
Se indican por medio de un pequeño círculo y se les asigna un número o letra. En
el grafo anterior los vértices son V= {a,b,c,d}.
Lados paralelos
Son aquellas aristas que tienen relación con un mismo par de vértices. En el grafo
anterior los lados paralelos son: P={2,3}.
Lazo
Es aquella arista que sale de un vértice y regresa al mismo vértice. En el grafo
anterior se tiene el lazo: A= {6}
Valencia de un vértice
Es el número de lados que salen o entran a un vértice. En el grafo anterior las
valencias de los vértices son:
Valencia (a)=2
Valencia (b)=4
Valencia (c)=2
Valencia (d)=3
-Tipos de grafos
• Grafo simple. o simplemente grafo es aquel que acepta una sola una arista
uniendo dos vértices cualesquiera. Esto es equivalente a decir que una arista
cualquiera es la única que une dos vértices específicos. Es la definición
estándar de un grafo.
• Multígrafo. o pseudografo son grafos que aceptan más de una arista entre
dos vértices. Estas aristas se llaman múltiples o lazos (loops en inglés).
Los grafos simples son una subclase de esta categoría de grafos. También
se les llama grafos no-dirigido.
• Grafo dirigido. Son grafos en los cuales se ha añadido una orientación a las
aristas, representada gráficamente por una flecha.
• Hipergrafo. Grafos en los cuales las aristas tienen más de dos extremos, es
decir, las aristas son incidentes a 3 o más vértices.
-Matemática
En matemáticas y ciencias de la computación, la teoría de grafos, también llamada
teoría de las gráficas estudia las propiedades de los grafos (también llamados
gráficas). Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos)
y una selección de partes de vértices llamados aristas.
Gracias a la teoría de grafos se pueden resolver diversos problemas como por
ejemplo la síntesis de circuitos secuenciales, contadores o sistemas de apertura. Se
utiliza para diferentes áreas por ejemplo, Dibujo computacional, en todas las áreas
de Ingeniería. Los grafos se utilizan también para modelar trayectos como el de una
línea de autobús a través de las calles de una ciudad, en el que podemos obtener
caminos óptimos para el trayecto aplicando diversos algoritmos como puede ser el
algoritmo de Floyd.
-Computacional
Existen diferentes formas de representar un grafo (simple), además de la
geométrica y muchos métodos para almacenarlos en una computadora. La
estructura de datos usada depende de las características del grafo y el algoritmo
usado para manipularlo. Entre las estructuras más sencillas y usadas se encuentran
las listas y las matrices, aunque frecuentemente se usa una combinación de ambas.
Las listas son preferidas en grafos dispersos porque tienen un eficiente uso de la
memoria. Por otro lado, las matrices proveen acceso rápido, pero pueden consumir
grandes cantidades de memoria.
Estructura de lista:
• Lista de incidencia: Las aristas son representadas con un vector de pares
(ordenados, si el grafo es dirigido), donde cada par representa una de las
aristas.
• Lista de adyacencia: Cada vértice tiene una lista de vértices los cuales son
adyacentes a él. Esto causa redundancia en un grafo no dirigido (ya que A
existe en la lista de adyacencia de B y viceversa), pero las búsquedas son
más rápidas, al costo de almacenamiento extra.
• Lista de grados: También llamada secuencia de grados o sucesión gráfica de
un grafo no-dirigido es una secuencia de números, que corresponde a los
grados de los vértices del grafo.
Estructuras matriciales:
• Matriz de adyacencia: El grafo está representado por una matriz cuadrada M
de tamaño, donde es el número de vértices. Si hay una arista entre un vértice
x y un vértice y, entonces el elemento es 1, de lo contrario, es 0.
• Matriz de incidencia: El grafo está representado por una matriz de A (aristas)
por V (vértices), donde [arista, vértice] contiene la información de la arista (1
- conectado, 0 - no conectado).
Así, para recorrer un grafo consiste en visitar todos los vértices alcanzables a
partir de uno dado. Hay dos formas:
• Recorrido en profundidad (DFS)
• Recorrido en anchura (BFS)
-El camino más corto
En la teoría de grafos, el problema del camino más corto es el problema de encontrar
un camino entre dos vértices (o nodos) en un gráfico de tal manera que la suma de
los pesos de sus bordes constituyentes se reduce al mínimo.
Esto es análogo al problema de encontrar el camino más corto entre dos
intersecciones en un mapa de carreteras: vértices del gráfico corresponden a las
intersecciones y los bordes corresponden a los segmentos de carretera, cada uno
ponderado por la longitud de su segmento de carretera.
Los algoritmos más importantes para la solución de este problema son:
• El algoritmo de Dijkstra. Resuelve las cortas de origen único problemas de
ruta.
• Algoritmo de Bellman-Ford: Resuelve el problema de una sola fuente, si
borde pesos pueden ser negativos.
• Un algoritmo de búsqueda *. Resuelve para el par de ruta más corta única
utilizando la heurística para tratar de acelerar la búsqueda.
• Algoritmo de Floyd-Warshall. Resuelve todos los pares caminos más cortos.
• Algoritmo de Johnson. Resuelve todos los pares de trayectorias más cortas,
y puede ser más rápido que Floyd-Warshall en grafos dispersos.
-A lo ancho
El algoritmo de recorrido en anchura o BFS, explora sistemáticamente todas las
ramas o aristas del grafo de manera que primero se visitan los nodos o vértices más
cercanos a un nodo inicial.
Para la implementación de este algoritmo se utiliza globalmente un contador y un
vector de enteros para marcar los vértices ya visitados y almacenar el recorrido. El
algoritmo BFS requiere también un vector de cola auxiliar para gestionar los vértices
no visitados.
En muchos casos es necesario ejecutar este algoritmo empezando en los nodos
más alejados del nodo escogido como nodo inicial.
-En profundidad
Una búsqueda en profundidad (DFS) es un algoritmo para recorrer un grafo finito.
DFS visitas los nodos secundarios antes de visitar los nodos del mismo nivel, es
decir, que atraviesa la profundidad de cualquier camino en particular antes de
explorar su amplitud. Una pila (a menudo del programa pila de llamadas a través de
recursión) se usa generalmente cuando la ejecución del algoritmo.
El algoritmo comienza con un nodo “raíz” elegida, entonces iterativamente
transiciones desde el nodo actual a una, el nodo no visitado adyacente, hasta que
ya no puede encontrar un nodo inexplorado para la transición a partir de su
ubicación actual. El algoritmo entonces retrocede a lo largo de los nodos visitados
anteriormente, hasta que encuentra un nodo conectado a un territorio aún más
desconocido. A continuación, se procederá por el nuevo camino como antes, dando
marcha atrás cuando se encuentra con callejones sin salida, y termina cuando el
algoritmo ha retrocedido más allá del nodo original “root” desde el primer paso.
DFS es la base de muchos algoritmos de grafos conexos, incluyendo las clases
topológicas y pruebas de planitud.
EJEMPLOS