Je suis à la recherche d'un programme Python élégant qui fait un traveral BFS d'un DAG:algorithme pour traveral BFS d'un graphe orienté de acylic
nœud A est connecté à B (A->B
) si A "dépend de" B (pensez au paquet python Foo "en fonction de" Bar: Foo-> Bar).
Dans un graphique d'environ 7000 tels noeuds, je veux trier tous les noeuds de sorte que pour tous possible (i, j)
où 1>=i<j<=7000
.. depends(Ni, Nj)
est faux. depends (A, B) = True si et seulement si A->B
ou A "dépend de" B .. et Nx
est le nœud se trouvant en x
ème position dans la liste triée.
Remarque: Un noeud peut avoir plusieurs parents. Ex: A-> C et B-> C. Par conséquent, selon la règle de tri ci-dessus, A et B doivent venir avant C.
Vous avez oublié ce dernier paragraphe? –
@LFSR - J'ai essayé de penser à la traversée d'arbre BFS que je connais, mais ensuite elle ne serait pas applicable aux graphes/forêts .. où un nœud peut avoir plusieurs parents. –
Je crois qu'il veut trier topologique. – niteria