Soit: un graphique dirigé non pondéré (G = (E, V)), qui peut contenir n'importe quel nombre de cycles.Chemin le plus long simple dans des graphiques cycliques clairs
Objectif: Pour tous les sommets Je veux le plus long chemin simple à un sommet cible X en V
algorithme Idée:
For each v in V
v.distanceToTarget = DepthFirstSearch(v)
Next
DepthFirstSearch(v as Vertex)
if v = target then
'Distance towards target is 0 for target itself
return 0
elseif v.isVisitedInCurrentDFSPath then
'Cycle found -> I wont find the target when I go around in cycles -> abort
return -infinity
else
'Return the maximum Distance of all Successors + 1
return max(v.Successors.ForEach(Function(v) DepthFirstSearch(v))) + 1
end if
Est-ce correct pour tous les cas? (En supposant que la cible peut être atteinte à partir de chaque sommet)
Le nombre d'arêtes dans mes graphiques est très petit. Supposons | E | < = 3 * | V | tient. Comment calculer la complexité moyenne en temps?
Merci!