He implementado una clasificación topológica basada en el artículo de Wikipedia que estoy usando para la resolución de dependencias, pero devuelve una lista lineal. ¿Qué tipo de algoritmo puedo usar para encontrar las rutas independientes?
He implementado una clasificación topológica basada en el artículo de Wikipedia que estoy usando para la resolución de dependencias, pero devuelve una lista lineal. ¿Qué tipo de algoritmo puedo usar para encontrar las rutas independientes?
Respuestas:
Asumo que un borde medios que T tiene que ser ejecutada antes v . Si este no es el caso, dé la vuelta a todos los bordes. Además, supongo que está menos interesado en las rutas (ya están dadas por el DAG) que en una buena estrategia de ejecución dadas las dependencias.
for i=0 to k
parallel foreach T in S_k
execute T
parallel foreach T in S_0
recursive_execute T
dónde
recursive_execute T {
atomic { if T.count++ < T.indeg then return }
execute T
parallel foreach T' in T.succ
recursive_execute T'
}
y T.count
es un contador simple que contiene el número de predecesores de los T
cuales ya se han ejecutado, T.indeg
el número de predecesores y T.succ
el conjunto de sucesores.