Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación Paralela
Corte 2
Tema:
Algoritmo de Dijkstra.
AUTORES:
Daniel Orestes León Dueñas
2020-2021
El algoritmo de ruta más corto de Dijkstra
El conjunto de árbol de ruta más corta está inicialmente vacío y las distancias
asignadas a los vértices son {0, INF, INF, INF, INF, INF, INF, INF} donde INF
indica infinito. Ahora, se elija el vértice con un valor de distancia mínima. Se
elige el vértice 0, se incluye al conjunto de árbol de ruta más corta,
convirtiéndose en {0}. Después de incluir 0, se actualizan los valores de
distancia de sus vértices adyacentes. Los vértices adyacentes de 0 son 1 y 7.
Los valores de distancia de 1 y 7 se actualizan como 4 y 8. El siguiente
subgrafo muestra los vértices y sus valores de distancia, solo se muestran los
vértices con valores de distancia finitos. Los vértices incluidos en conjunto de
árbol de ruta más corta se muestran en color verde.
Se elije el vértice con el valor de distancia mínima y que aún no esté incluido en
conjunto de árbol de ruta más corta. El vértice 1 se selecciona y se agrega. Así
que conjunto de árbol de ruta más corta ahora se convierte en {0, 1}. Se
actualizan los valores de distancia de los vértices adyacentes de 1. El valor de
distancia del vértice 2 se convierte en 12.
Se elije el vértice con el valor de distancia mínima y que aún no esté incluido en
conjunto de árbol de ruta más corta. Se selecciona el vértice 6. Así que el
conjunto ahora se convierte en {0, 1, 7, 6}. Se actualizan los valores de
distancia de los vértices adyacentes de 6. Se actualiza el valor de distancia del
vértice 5 y 8.
Se repiten los pasos anteriores hasta que el conjunto incluya todos los vértices
del gráfico dado. Finalmente, obtenemos el siguiente árbol de camino más
corto.
Fases
Particionado
Se identificó como tarea que se puede descomponer y pasarlo a múltiples
procesos / hilos para ejecución concurrente : Actualizar los valores de distancia
de los vértices adyacentes al vértice actual seleccionado, que sería el de
distancia mínima. En cuanto a la granularidad de la descomposición podría
existir granularidad fina si se tiene un grafo muy grande, ya que la
descomposición genera un número elevado de pequeñas tareas.
Comunicación
No existe comunicación entre las tareas que se realizan en paralelo, ya que la
actualización de los valores de los vértices es independiente uno del otro, por lo
que la comunicación con el hilo principal se puede realizar de manera
asíncrona. Si otros hilos no han completado la actualización, cuando el hilo
principal comienza a buscar el vértice de menor costo obtendrá un resultado
incorrecto. Por lo que se debe usar “Barrera”. El hilo bloqueado continúa
ejecutándose y espera en este punto del programa hasta que todos los hilos
participantes lleguen al punto de obstáculo.
Aglomeración
Cuando se va a realizar la actualización de la distancia de los vértices, se
utilizan tantos nodos como vértices existan. Una vez actualizados, se reúnen
los valores.
Mapeo
Una vez que se haya seleccionado el vértice raíz, del cual es responsable el
procesador principal, se pasa a realizar la actualización de los vértices
adyacentes. Es aquí donde se les asigna tareas a otros procesadores, en los
que los restantes procesadores actualizarán las distancias. Finalizado el trabajo
de los procesadores que trabajaron en paralelo, se necesita encontrar el menor
de los valores. Para ello se utilizan varios procesadores, haciendo la
comparación entre los valores.
Patrones identificados
PATRONES DE FLUJO DE CONTROL SERIE ESTRUCTURADO
Entre los patrones de flujo de control serie estructurado se identificó el de
“Selección”, ya que se evalúa si un vértice adyacente es el de menor costo se
añade al conjunto, sino se selecciona otro vértice. También se identificó el
patrón iteración ya que se van a realizar las tareas hasta q se hayan evaluados
todos los vértices del grafo.