Está en la página 1de 7

UNIVERSIDAD NACIONAL SAN

ANTONIO ABAD DEL CUSCO

FACULTAD DE INGENIERÍA ELÉCTRICA,


ELECTRÓNICA, SISTEMAS Y MECÁNICA

ESCUELA PROFESIONAL DE
INGENIERÍAINFORMÁTICA Y DE
SISTEMAS

CURSO: MATEMATICAS DISCRETAS II

DOCENTE: EDWIN CAZORLA MEDINA

ESTUDIANTE: LUDVIKA ARLETH CCASA POCOHUANCA


EL ALGORITMO DE DIJKSTRA
El algoritmo de Dijkstra es un algoritmo utilizado para encontrar el camino más corto entre
un nodo de origen y todos los demás nodos en un grafo ponderado y dirigido. El objetivo es
determinar la ruta óptima, es decir, la ruta con la menor suma de pesos de las aristas, desde el
nodo de origen hacia todos los demás nodos del grafo.

El algoritmo de Dijkstra utiliza un enfoque de búsqueda exhaustiva, expandiendo


gradualmente las fronteras de los nodos visitados a medida que encuentra rutas más cortas. A
medida que avanza, mantiene un registro de las distancias mínimas conocidas desde el nodo
de origen hasta cada nodo del grafo. De esta manera, el algoritmo encuentra de manera
sistemática las rutas más cortas desde el nodo de origen hacia todos los demás nodos.

Una característica clave del algoritmo de Dijkstra es que utiliza información local para
actualizar las distancias mínimas de los nodos adyacentes al nodo actual. Esto garantiza que
siempre encuentre el camino más corto a cada nodo antes de expandir sus fronteras. Sin
embargo, debido a este enfoque local, el algoritmo de Dijkstra no funciona correctamente con
aristas de peso negativo.

En resumen, el algoritmo de Dijkstra es una técnica eficiente para encontrar la ruta más corta
en un grafo ponderado y dirigido. Se utiliza en una amplia variedad de aplicaciones, como
enrutamiento de redes, navegación de mapas, logística y optimización de rutas, entre otros.

Su propósito y cómo se usa:

El propósito principal del algoritmo de Dijkstra es encontrar la ruta más corta entre un nodo
de origen y todos los demás nodos en un grafo ponderado y dirigido. Se utiliza para determinar
la ruta óptima, es decir, la ruta con la menor suma de pesos de las aristas, en situaciones
donde se requiere encontrar caminos eficientes en una red o sistema de conexiones.

El algoritmo de Dijkstra se usa de la siguiente manera:

Seleccionar un nodo de origen desde el cual se desea encontrar la ruta más corta hacia todos
los demás nodos del grafo.

Inicializar las distancias de todos los nodos como infinito, excepto la distancia del nodo de
origen que se establece en 0.

Marcar el nodo de origen como el nodo actual.

Para el nodo actual, examinar todos sus nodos vecinos (es decir, los nodos a los que se
puede llegar desde el nodo actual a través de una arista).

Calcular la distancia tentativa desde el nodo de origen hacia cada nodo vecino sumando la
distancia del nodo actual más el peso de la arista que los conecta. Si esta distancia tentativa
es menor que la distancia almacenada para el nodo vecino, actualizar la distancia
almacenada.

Marcar el nodo actual como visitado y seleccionar el nodo no visitado con la distancia mínima
como el nuevo nodo actual. Repetir el paso 4.

Repetir los pasos 4 a 6 hasta que se hayan visitado todos los nodos o hasta que la distancia
almacenada para el nodo no visitado más cercano sea infinita.

Al finalizar, se obtienen las distancias mínimas desde el nodo de origen hacia todos los demás
nodos del grafo.

El resultado del algoritmo de Dijkstra es un conjunto de distancias mínimas desde el nodo de


origen hacia cada nodo del grafo, lo que permite determinar la ruta más corta hacia cualquier
nodo en particular.

Este algoritmo es ampliamente utilizado en aplicaciones que involucran la optimización de


rutas y la determinación de caminos eficientes, como enrutamiento de redes, planificación de
rutas en sistemas de navegación, optimización de rutas de entrega, análisis de redes sociales,
entre otros.

Historia del algoritmo de Dijkstra

El algoritmo de Dijkstra fue desarrollado por el científico de la computación Edsger Dijkstra en 1956
mientras trabajaba en la Universidad Técnica de Eindhoven en los Países Bajos. Dijkstra estaba
interesado en el problema de encontrar el camino más corto en un sistema de rutas y buscaba una
solución eficiente.

Originalmente, Dijkstra desarrolló el algoritmo para encontrar el camino más corto en una red de
ferrocarriles en los Países Bajos. En ese momento, estaba trabajando en un sistema de señalización para
los trenes y necesitaba determinar la ruta más rápida para que los trenes viajaran de un lugar a otro.

Dijkstra publicó el algoritmo en un artículo titulado "A Note on Two Problems in Connexion with
Graphs" en 1959. En este artículo, presentó el algoritmo de Dijkstra y demostró su correctitud y
eficiencia. El algoritmo se convirtió en una importante contribución a la teoría de grafos y se utilizó
ampliamente en diversas aplicaciones.

Desde entonces, el algoritmo de Dijkstra ha sido objeto de muchos estudios y mejoras. Se han
desarrollado variantes y extensiones para abordar diferentes situaciones y optimizar aún más su
rendimiento. Además, el algoritmo de Dijkstra ha sentado las bases para otros algoritmos importantes,
como el algoritmo de A* utilizado en la resolución de problemas de inteligencia artificial.

La contribución de Edsger Dijkstra con el algoritmo de Dijkstra ha sido fundamental para el campo de
la teoría de grafos y ha tenido un impacto significativo en áreas como las redes de computadoras, la
planificación de rutas y la optimización de caminos en sistemas de transporte.
Aspectos básicos algoritmo de Dijkstra

El algoritmo de Dijkstra tiene varios aspectos básicos importantes que se deben entender:

Grafos ponderados y dirigidos: El algoritmo de Dijkstra se aplica a grafos que tienen aristas con pesos
asociados, lo que indica el costo o la distancia entre los nodos conectados por dichas aristas. Además,
el grafo debe ser dirigido, lo que significa que las aristas tienen una dirección específica de un nodo de
origen a un nodo de destino.

Nodo de origen: Seleccionar un nodo de origen desde el cual se desea encontrar la ruta más corta hacia
todos los demás nodos del grafo. Este nodo es el punto de partida para el algoritmo y se utiliza como
referencia para calcular las distancias mínimas.

Distancias mínimas: El algoritmo de Dijkstra mantiene un registro de las distancias mínimas conocidas
desde el nodo de origen hasta cada nodo del grafo. Inicialmente, todas las distancias se establecen en
infinito, excepto la distancia del nodo de origen que se establece en 0. A medida que el algoritmo
avanza, actualiza y mejora continuamente las distancias mínimas a medida que encuentra rutas más
cortas.

Conjunto de nodos visitados y no visitados: El algoritmo de Dijkstra utiliza dos conjuntos: uno para
nodos visitados y otro para nodos no visitados. Los nodos visitados son aquellos cuyas distancias
mínimas ya se han calculado y confirmado, mientras que los nodos no visitados son aquellos que aún
no se han explorado o cuyas distancias mínimas aún no se han determinado.

Actualización de distancias: Durante el proceso de ejecución del algoritmo, se actualizan las distancias
mínimas de los nodos adyacentes al nodo actual. Si se encuentra una ruta más corta hacia un nodo
vecino, se actualiza la distancia mínima almacenada para ese nodo. Esto se hace iterativamente hasta
que todas las distancias mínimas sean calculadas y confirmadas.

Búsqueda exhaustiva: El algoritmo de Dijkstra utiliza un enfoque de búsqueda exhaustiva para


encontrar las rutas más cortas. Explora gradualmente los nodos del grafo, expandiendo las fronteras de
los nodos visitados a medida que encuentra rutas más cortas. Garantiza que siempre se encuentren las
rutas más cortas antes de expandir sus fronteras.

Estos son algunos de los aspectos básicos clave del algoritmo de Dijkstra. Comprender estos conceptos
es fundamental para implementar y utilizar correctamente el algoritmo en problemas reales.

Requisitos del algoritmo de Dijkstra:

El algoritmo de Dijkstra tiene algunos requisitos que deben cumplirse para su correcta aplicación:

Grafos dirigidos y ponderados: El algoritmo de Dijkstra está diseñado para grafos dirigidos, lo que
significa que las aristas tienen una dirección específica de un nodo de origen a un nodo de destino.
Además, el grafo debe ser ponderado, es decir, las aristas deben tener un peso asociado que representa
la distancia o el costo entre los nodos conectados por dichas aristas.
No debe haber aristas con pesos negativos: El algoritmo de Dijkstra asume que todas las aristas tienen
pesos no negativos. Esto se debe a que el algoritmo utiliza una estrategia de selección basada en la
elección de la arista de menor peso en cada iteración. Si hay aristas con pesos negativos, el algoritmo
puede entrar en un bucle infinito o producir resultados incorrectos.

Conexión entre todos los nodos: Para que el algoritmo de Dijkstra funcione correctamente, es
necesario que todos los nodos del grafo estén conectados entre sí. Esto significa que debe ser posible
llegar desde el nodo de origen a cualquier otro nodo del grafo a través de una serie de aristas.

Implementación de estructuras de datos adecuadas: Para ejecutar el algoritmo de Dijkstra de manera


eficiente, es necesario utilizar las estructuras de datos apropiadas. Esto incluye estructuras para
representar el grafo, como listas de adyacencia o matrices de adyacencia, y estructuras para realizar
operaciones de búsqueda y actualización eficientes, como colas de prioridad o montículos binarios.

Espacio y tiempo suficiente: Dependiendo del tamaño del grafo y la implementación específica del
algoritmo de Dijkstra, puede requerirse suficiente espacio de memoria y tiempo de ejecución. Es
importante considerar estos recursos y asegurarse de que sean adecuados para el problema en
cuestión.

Estos son los requisitos básicos para aplicar el algoritmo de Dijkstra correctamente. Es importante
tener en cuenta estas condiciones al utilizar el algoritmo para garantizar resultados precisos y
eficientes.

Ejemplos de aplicación en la vida real:

El algoritmo de Dijkstra tiene diversas aplicaciones en la vida real en áreas como redes de
comunicación, transporte, planificación de rutas y optimización. Aquí tienes algunos ejemplos:

Enrutamiento de redes de computadoras: El algoritmo de Dijkstra se utiliza ampliamente en protocolos


de enrutamiento, como el Protocolo de Enrutamiento de Pasarela Interior (Interior Gateway Routing
Protocol, RIP) y el Protocolo de Enrutamiento de Estado de Enlace (Link State Routing Protocol,
OSPF), para determinar las rutas más cortas y eficientes entre los nodos de una red de computadoras.

Navegación y planificación de rutas: Las aplicaciones de navegación y mapas en nuestros dispositivos


móviles utilizan el algoritmo de Dijkstra para calcular las rutas más rápidas desde un punto de partida
hasta un destino. Estas aplicaciones tienen en cuenta factores como el tráfico, la distancia y la velocidad
para determinar la mejor ruta posible.

Optimización de rutas de entrega y logística: Empresas de logística y servicios de entrega utilizan el


algoritmo de Dijkstra para optimizar sus rutas de entrega. El algoritmo permite encontrar la ruta más
corta para entregar mercancías a múltiples destinos, minimizando los costos de combustible y tiempo.

Planificación de transporte público: El algoritmo de Dijkstra se utiliza en la planificación de horarios y


rutas de transporte público, como autobuses y trenes. Ayuda a determinar las mejores conexiones y
tiempos de llegada, teniendo en cuenta factores como las distancias entre estaciones y los horarios de
servicio.
Optimización de redes eléctricas y de telecomunicaciones: En el ámbito de las redes eléctricas y de
telecomunicaciones, el algoritmo de Dijkstra se utiliza para encontrar la ruta más eficiente para
transferir energía o información. Ayuda a minimizar las pérdidas de energía y a optimizar el rendimiento
de las redes de comunicación.

Análisis de redes sociales: El algoritmo de Dijkstra se aplica en el análisis de redes sociales para
determinar la distancia social o la cercanía entre nodos en una red social. Puede utilizarse para
identificar comunidades, encontrar influenciadores o estudiar la propagación de información en una red.

Estos son solo algunos ejemplos de cómo se aplica el algoritmo de Dijkstra en la vida real. Su capacidad
para encontrar rutas óptimas en grafos ponderados lo convierte en una herramienta valiosa en diversos
escenarios donde se busca minimizar costos, tiempos de viaje o maximizar la eficiencia de las redes.
a)

b)

También podría gustarte