0% encontró este documento útil (0 votos)
27 vistas29 páginas

Algoritmos Codiciosos en Grafos

Este documento presenta tres algoritmos codiciosos: el algoritmo de Prim, el algoritmo de Kruskal y el algoritmo de Dijkstra. Explica brevemente el historial y procedimiento de cada uno.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas29 páginas

Algoritmos Codiciosos en Grafos

Este documento presenta tres algoritmos codiciosos: el algoritmo de Prim, el algoritmo de Kruskal y el algoritmo de Dijkstra. Explica brevemente el historial y procedimiento de cada uno.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

EJEMPLOS DE

ALGORITMOS CODICIOSOS
Presentado por:
Marcelo Gabriel Ramos Torres
Bryan Steve Montañez Quilla
Edgar Enrique Vargas Huaman
ALGORITMO DE PRIM
Este algoritmo fue desarrollado por primera vez por el matemático checo
Vojtêch Jarník, no sería hasta más tarde, en 1957, cuando aparecería publicado de
forma independiente bajo la autoría del ingeniero informático estadounidense
Robert C. Prim. Es él quien le dio fama y por cuyo apellido es hoy conocido.
Es el primero y el más sencillo de los algoritmos de la teoría de grafos para
encontrar un árbol generador mínimo en un grafo ponderado, en otras palabras,
el algoritmo encuentra un subconjunto de aristas que forman un árbol con todos
los vértices, donde el peso total de todas las aristas en el árbol es el mínimo
posible.
EJEMPLO
ALGORITMO DE KRUSKAL
Fue escrito y desarrollado por Joseph Kruskal, publicado por primera vez en el
año 1956. Es un algoritmo codicioso que sirve para encontrar el árbol de
expansión mínima en un grafo conexo y ponderados. Se busca la arista de menor
peso o valor, y se une los vértices siempre y cuando no se forme un ciclo .Esto se
hace hasta que todos los vértices estén comprendidos en el árbol. Para
comprobar que el árbol de expansión mínima este hecho se revisa que el número
de aristas sea igual al numero de vértices menos 1.
EJEMPLO
ALGORITMO DE DIJKSTRA
HISTORIA
Fue creado y publicado por el Dr. Edsger W. Dijkstra, un científico Neerlandés en ciencias de la computación e
ingeniería de software.
En 1959, publicó un artículo de tres páginas titulado: "A note on two problems in connexion with graphs".En
ese artículo explicó su nuevo algoritmo.
ALGORITMO
DIJKSTRA

El algoritmo de Dijkstra te permite


calcular la ruta más corta entre un
nodo (tú eliges cuál) y todos los demás
nodos en el gráfo ponderado con
valores no negativos.
PROCEDIMIENTO

Comienza desde el nodo inicial y explora


de manera iterativa los nodos vecinos,
seleccionando siempre el nodo más
cercano al nodo inicial en cada paso. Este
proceso continúa hasta que se hayan
visitado todos los nodos o se haya
alcanzado el nodo de destino, calculando
así la distancia más corta desde el nodo
inicial a cada nodo en el grafo.
APLICACIONES
01 02 03 04

ENRUTAMIENTO SISTEMAS DE PLANIFICACIÓ DISEÑO DE


DE REDES NAVEGACIÓN N DE CIRCUITOS
Y MAPAS PROYECTOS INTEGRADOS
Se utiliza en protocolos En aplicaciones de GPS En la gestión de Se aplica en el diseño
de enrutamiento de y mapas en línea, el proyectos, puede de circuitos integrados
distancia para algoritmo de Dijkstra se utilizarse para para encontrar las rutas
encontrar las rutas más utiliza para encontrar la determinar la ruta más cortas entre
cortas en redes de ruta más corta entre crítica y minimizar el componentes en un
computadoras. dos ubicaciones. tiempo necesario para chip.
completar un proyecto.
EJEMPLO

Durante la ejecución del algoritmo, iremos marcando cada nodo con su distancia
mínima al nodo inicial (nuestro nodo elegido). Para ello esta distancia es 0. Para el
resto de nodos, como todavía no conocemos esa distancia mínima, empieza a ser
infinita (∞):
EJEMPLO

Ahora, revisaremos los vecinos de nuestro nodo actual (A, B y D) en cualquier orden. Empecemos
con B. Sumamos la distancia mínima del nodo actual (en este caso, 0) con el peso de la arista
que conecta al nodo actual con B (en este caso, 7), y obtenemos 0 + 7 = 7. Comparamos ese valor
con la distancia mínima de B (infinito); el valor más pequeño es el que queda como la distancia
mínima de B (en este caso, 7 es menos que infinito):
EJEMPLO

Ahora revisaremos al vecino A. Sumamos 0 (la distancia mínima de C, nuestro nodo


actual) con 1 (el peso de la arista que conecta nuestro nodo actual con A) para
obtener 1. Comparamos ese 1 con la distancia mínima de A (infinito ) y dejamos el
menor valor:
EJEMPLO

Repetimos el procedimiento para D:


EJEMPLO

Hemos revisado todos los vecinos de C. Por ello, lo marcamos como visitado .
Representamos a los nodos visitados con una marca de verificación verde:
EJEMPLO

Ahora debemos seleccionar un nuevo nodo actual . Ese nodo debe ser el nodo no
visitado con la menor distancia mínima, es decir, el nodo con el menor número y sin
marca de verificación verde. En este caso, ese nodo es A. Vamos a marcarlo con el
punto rojo:
EJEMPLO

Revisamos los vecinos de nuestro nodo actual, ignorando los visitados. Esto significa que solo
revisaremos B.
Para B, sumamos 1 (la distancia mínima de A, nuestro nodo actual) con 3 (el peso de la arista
conectando a A con B) para obtener 4. Comparamos ese 4 con la distancia mínima de B (7) y
dejamos el menor valor: 4.
EJEMPLO

Después, marcamos A como visitado y elegimos un nuevo nodo: D, que es el nodo no visitado con la menor distancia
mínima.
Esta vez, revisamos B y E.
Para B, obtenemos 2 + 5 = 7. Comparamos ese valor con la distancia mínima de B (4) y dejamos el menor valor (4).
Para E, obtenemos 2 + 7 = 9, lo comparamos con la distancia mínima de E (infinito) y dejamos el valor menor (9).
EJEMPLO

Marcamos D como visitado y establecemos nuestro nodo actual en B.


EJEMPLO

Sólo debemos verificar E. 4 + 1 = 5, que es menos que la distancia mínima de E


(9), así que dejamos el 5. Marcamos B como visitado y establecemos E como el
nodo actual.
EJEMPLO

E no tiene vecinos no visitados, así que no verificamos nada. Lo marcamos como visitado.

Como no hay nodos no visitados, ¡terminamos! La distancia mínima de cada nodo ahora representa la
distancia mínima entre ese nodo y el nodo C (el nodo que elegimos como nodo inicial).

También podría gustarte