funcprot(0) // 5 variables globales (vecteurs) global coul pere decouv fin time // ---------------------------------------------------- // Cette fonction initialise les variables puis // effectue les appels à DFSvisit avec en paramètres les sommets // restant à explorer //------------------------------------------------------ function DFS(V,E) global coul pere decouv fin time coul = zeros(1,length(V)) // 0 = blanc, 1 = gris 2 = noir pere = zeros(1,length(V)) // Pere du noeud courant decouv = zeros(1,length(V)) // Instant de découverte fin = zeros(1,length(V)) // Instant de fin d'exploration time = 0 for e = V //possible en scilab, mais pas en programmation orthodoxe... if (coul(e) == 0) DFSvisit(e) end end endfunction //------------------------------------------------------------------- // Fonction centrale de l'agorithme : explore les descendants de u // Attention, elle s'appele récursivement //------------------------------------------------------------------- function DFSvisit(u) global coul pere decouv fin time coul(u) =1 time = time+1 decouv(u)= time for v= E(u) // E(u) = la liste des adjacences de u if (coul(v)==0) pere(v) = u DFSvisit(v) end end coul(u) = 2 time = time+1 fin(u) = time endfunction //--------------------------------------------------------------------- // Le Graphe : 8 sommets V1=[1,2,3,4,5,6,7,8] // liste d' adjacence E1=list(list(2,3),list(),list(4,6),list(5),list(),list(7,5),list(),list(4,5)) // Il suffit d'appeler la fonction DFS avec le graphe en parametre. DFS(V1,E1) //-----------------------------THE END -------------------------------