UE Algorithmique avanc´ ee Ann´ ee 2007 — 2008 1 Algorithme de Tarjan Initialisations P=pile vide ; n=0 ; k=0 Pour chaque sommet s Faire pref[s]=0 ; ret[s]=0 ; dansPile[s]=Faux ; comp[s]=0 Fin Pour Calcul de toutes les composantes fortement connexes Pour chaque sommet s Faire Si pref[s]=0 Alors CFC(s) Fin Si Fin Pour Calcul de la composante fortement connexe d’un sommet Procedure CFC(x:sommet) empiler(x,P) ; dansPile[x]=Vrai n=n+1; pref[x]=n ; m=pref[x] Pour chaque successeur y de x Faire Si pref[y]=0 Alors CFC(y) m=min(pref[x],ret[y]) Sinon Si dansPile[y] Alors m=min(m,pref[y]) Fin Si Fin Si Fin Pour ret[x]=m Si ret[x]=pref[x] Alors k=k+1 Repeter y=sommetPile[P] ; depiler(P) ; dansPile[y]=Faux comp[y]=k Jusque y=x Fin Si Fin Procedure 1