Está en la página 1de 4

Centro de Enseñanza Técnica Industrial

Inteligencia artificial
Reporte de Practica
“Algoritmo Dijkstra”

Introducción
En este documento se muestra un escrito referente al código de programación
para la resolución de un problema dentro de la rama de la Inteligencia Artificial. En
este caso el código en cuestión es un algoritmo para la resolución de la optativa
por un camino mas corto dado distintos senderos. Todo esto en base a un
diagrama proporcionado por el profesor para la aplicación de este algoritmo.

Objetivo
El objetivo de este código es el entendimiento y comprensión de uno de los
principios básicos dentro de la rama de la inteligencia artificial, así como el uso de
distintos compiladores y métodos de programación dada la libertad de variedad
proporcionado por el profesor.

Marco teórico
El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos es un
algoritmo para la determinación del camino más corto, dado un vértice origen,
hacia el resto de los vértices en un grafo que tiene pesos en cada arista. Su
nombre alude a Edsger Dijkstra, científico de la computación de los Países Bajos
que lo describió por primera vez en 1959.
La idea subyacente en este algoritmo consiste en ir explorando todos los caminos
más cortos que parten del vértice origen y que llevan a todos los demás vértices;
cuando se obtiene el camino más corto desde el vértice origen hasta el resto de
los vértices que componen el grafo, el algoritmo se detiene.
Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo
inicial. Un vector D de tamaño N guardará al final del algoritmo las distancias
desde x hasta el resto de los nodos.

Inicializar todas las distancias en D con un valor infinito relativo, ya que son
desconocidas al principio, exceptuando la de x, que se debe colocar en 0, debido
a que la distancia de x a x sería 0.
Sea a = x (Se toma a como nodo actual.)
Se recorren todos los nodos adyacentes de a, excepto los nodos marcados. Se les
llamará nodos no marcados vi.
Para el nodo actual, se calcula la distancia tentativa desde dicho nodo hasta sus
vecinos con la siguiente fórmula: dt(vi) = Da + d(a,vi). Es decir, la distancia
tentativa del nodo ‘vi’ es la distancia que actualmente tiene el nodo en el vector D
más la distancia desde dicho nodo ‘a’ (el actual) hasta el nodo vi. Si la distancia
tentativa es menor que la distancia almacenada en el vector, entonces se actualiza
el vector con esta distancia tentativa. Es decir, si dt(vi) < Dvi → Dvi = dt(vi)
Se marca como completo el nodo a.
Se toma como próximo nodo actual el de menor valor en D (puede hacerse
almacenando los valores en una cola de prioridad) y se regresa al paso 3,
mientras existan nodos no marcados.
Una vez terminado al algoritmo, D estará completamente lleno.

Desarrollo
Para este programa se utilizó el compilador pycharm, que se utiliza para ejecutar
en Python.
Se resolvió el algoritmo con una corrida de escritorio previamente en clase, lo cual
facilitó la elaboración del código posterior.
De esa forma se logró desarrollar un código funcional que cumple con el objetivo
del algoritmo. Se realizaron distintas pruebas todas con resultados satisfactorios y
esperados.

Conclusiones
Este programa fue muy interesante, y en lo personal muy informativo. Me doy
cuenta de como son las bases de la inteligencia artificial y la manera en la que se
deben de pensar los algoritmos. A pesar de ser un programa relativamente
sencillo tiene cierto grado de complejidad.

También podría gustarte