Algorithme de Tarjan

Algorithme de Tarjan

En théorie des graphes, l'algorithme de Tarjan permet de déterminer les composantes fortement connexes d'un graphe orienté[1]. Il porte le nom de son inventeur, Robert Tarjan. L'algorithme de Tarjan est de complexité linéaire, comme l'algorithme de Kosaraju (en), mais a l'avantage de ne faire qu'une passe sur le graphe au lieu de deux.

Sommaire

Description

L'algorithme prend en entrée un graphe orienté et renvoie une partition des sommets du graphes correspondant à ses composantes fortement connexes.

Le principe de l'algorithme est le suivant : on lance un parcours en profondeur depuis un sommet arbitraire. Les sommets explorés sont placés sur une pile P. Un marquage spécifique permet de distinguer certains sommets : les racines des composantes fortement connexes, c'est-à-dire les premiers sommets explorés de chaque composante (ces racines dépendent de l'ordre dans lequel on fait le parcours, elles ne sont pas fixées de façon absolue sur le graphe). Lorsqu'on termine l'exploration d'un sommet racine v, on retire de la pile tous les sommets jusqu'à v inclus. L'ensemble des sommets retirés forme une composante fortement connexe du graphe. S'il reste des sommets non atteints à la fin du parcours, on recommence à partir de l'un d'entre eux.

Repérage des racines

Les sommets sont numérotés dans l'ordre où ils sont explorés. Le numéro d'un sommet est noté v.num.

Les arêtes empruntées par le parcours en profondeur forment un arbre. Dans ce contexte, on peut définir le sous-arbre associé à tout sommet v. Au cours de l'exploration de ce sous-arbre, on calcule une seconde valeur v.numAccessible. Elle est initialisée à v.num et décroît lors du parcours des successeurs de v. Lorsque le parcours de v se termine, v.numAccessible correspond au numéro du plus petit sommet situé soit dans le sous-arbre de v, soit successeur direct appartenant à P d'un sommet de ce sous-arbre.

Deux cas sont possibles :

  • v est une racine. Alors tous les sommets accessibles depuis v sont dans le sous-arbre de v (à l'exception éventuelle de ceux explorés lors d'un parcours antérieur). On a v.numAccessible = v.num.
  • v n'est pas une racine. Alors il existe un sommet accessible depuis v qui est dans P mais pas dans le sous-arbre de v. On a alors v.numAccessible < v.num.

Pseudo-code

 fonction tarjan(graphe G)
   num := 0
   P := pile vide
   partition := ensemble vide
 
   fonction parcours(sommet v)
     v.num := num
     v.numAccessible := num
     num := num + 1
     P.push(v), v.dans_P := oui
 
     // Parcours récursif
     pour chaque w successeur de v
       si w.num n'est pas défini
         parcours(w)
         v.numAccessible := min(v.numAccessible, w.numAccessible)
       sinon si w.dans_P = oui
         v.numAccessible := min(v.numAccessible, w.num)
 
     si v.numAccessible = v.num
       // C'est une racine, calcule la composante fortement connexe associée
       C := ensemble vide
       répéter
         w := P.pop(), w.dans_P := non
         ajouter w à C
       tant que w différent de v
       ajouter C à partition
   fin de fonction
 
   pour chaque sommet v de G
     si v.num n'est pas défini
       parcours(G, v)
 
   renvoyer partition
 fin de fonction

Notes et références

  1. R. E. Tarjan, « Depth-first search and linear graph algorithms », dans SIAM Journal on Computing, vol. 1, no 2, 1972, p. 146–160 [texte intégral] 

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Algorithme de Tarjan de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Robert Tarjan — Robert Endre Tarjan (né le 30 avril en 1948 à Pomona en Californie) est un informaticien américain. Il a découvert de nombreux algorithmes en théorie des graphes, dont plusieurs portent son nom, tels l algorithme de Tarjan pour les composantes… …   Wikipédia en Français

  • Problème SAT — On nomme problème SAT un problème de décision visant à savoir s il existe une solution à une série d équations logiques données. En termes plus précis : une évaluation sur un ensemble de variables propositionnelles[1] telle qu une formule… …   Wikipédia en Français

  • Probleme SAT — Problème SAT On nomme problème SAT un problème de décision visant à savoir s il existe une solution à une série d équations logiques données. En termes plus précis : une valuation sur un ensemble de variables propositionnelles[1] telle qu… …   Wikipédia en Français

  • SAT (problème) — Problème SAT On nomme problème SAT un problème de décision visant à savoir s il existe une solution à une série d équations logiques données. En termes plus précis : une valuation sur un ensemble de variables propositionnelles[1] telle qu… …   Wikipédia en Français

  • Sat4j — Problème SAT On nomme problème SAT un problème de décision visant à savoir s il existe une solution à une série d équations logiques données. En termes plus précis : une valuation sur un ensemble de variables propositionnelles[1] telle qu… …   Wikipédia en Français

  • Projet:Mathématiques/Liste des articles de mathématiques — Cette page n est plus mise à jour depuis l arrêt de DumZiBoT. Pour demander sa remise en service, faire une requête sur WP:RBOT Cette page recense les articles relatifs aux mathématiques, qui sont liés aux portails de mathématiques, géométrie ou… …   Wikipédia en Français

  • Composante fortement connexe — Décomposition d un graphe en composantes fortement connexes En théorie des graphes, une composante fortement connexe d un graphe orienté G est un sous graphe maximal de G tel que pour toute paire de sommets u et v dans ce sous graphe, il existe… …   Wikipédia en Français

  • Flot admissible — Problème de flot maximum Un exemple de graphe de flot avec un flot maximum. la source est s, et le puits t. Les nombres indiquent le flot et la capacite. Le problème de flot maximum consiste a trouver un flot réalisable depuis une source unique… …   Wikipédia en Français

  • Probleme de flot maximum — Problème de flot maximum Un exemple de graphe de flot avec un flot maximum. la source est s, et le puits t. Les nombres indiquent le flot et la capacite. Le problème de flot maximum consiste a trouver un flot réalisable depuis une source unique… …   Wikipédia en Français

  • Problème de flot maximum — Un exemple de graphe de flot avec un flot maximum. la source est s, et le puits t. Les nombres indiquent le flot et la capacité. Le problème de flot maximum consiste à trouver un flot réalisable depuis une source unique et vers un puits unique… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”