Fondamentaux

Graphes Orientés et Non Orientés Expliqués

Un seul mot de la définition sépare les deux : la paire qui relie deux sommets est-elle ordonnée ? Ce guide suit ce mot à travers le degré, les matrices d'adjacence, les orientations et le théorème de Robbins, la connexité et les algorithmes qui cessent discrètement de fonctionner dès qu'on franchit la ligne.

20 Min de lecture Mis à jour : Septembre 2026 Niveau Débutant
Mohammed Islam Hadjoudj
Mohammed Islam Hadjoudj
Expert Operations Research Engineer

1. Les deux définitions côte à côte

La différence entre un graphe orienté et un graphe non orienté tient à un seul mot de la définition : la paire qui relie deux sommets est-elle ordonnée ? Tout le reste de cet article, y compris la question de savoir quels algorithmes fonctionnent encore, découle de ce mot.

Un graphe non orienté est l'objet standard présenté dans le guide sur les sommets et arêtes. D'après Graph Theory de Diestel :

G = (V, E)      avec   E ⊆ [V]²      une arête est une paire non ordonnée {u, v}

Un graphe orienté, ou digraphe, remplace la paire non ordonnée par un couple ordonné :

D = (V, A)      avec   A ⊆ V × V      un arc est un couple ordonné (u, v)

Comme (u, v) et (v, u) sont des couples différents, les deux peuvent être présents à la fois, et l'on dit qu'un graphe orienté qui contient les deux possède un digone entre u et v. Dans le monde non orienté, il n'y a rien à distinguer : {u, v} et {v, u} sont le même ensemble, donc l'arête existe une fois ou pas du tout.

Diestel donne une formulation plus générale qu'il vaut la peine de connaître, car c'est celle qui résiste au contact des données réelles. Un graphe orienté est un couple (V, E) d'ensembles disjoints muni de deux applications

init: E → V        associe à chaque arête son sommet initial
ter:  E → V        associe à chaque arête son sommet terminal

Ici, un arc est un objet à part entière et non un couple, si bien que la définition admet arcs parallèles et boucles sans aucun traitement particulier. C'est le pendant orienté de la définition par fonction d'incidence dont ont besoin les multigraphes, et c'est pourquoi un planning comptant trois vols quotidiens distincts de A vers B reste un graphe orienté parfaitement valable.

Le lien formel avec la logique est exact et mérite d'être énoncé une fois : un graphe non orienté sans boucle est précisément une relation symétrique irréflexive sur V, tandis qu'un graphe orienté est une relation binaire quelconque sur V. L'orientation, c'est ce qu'on obtient quand on cesse d'exiger que la relation soit symétrique.

Deux panneaux montrant les cinq mêmes sommets, de A à E. Le panneau de gauche est un graphe non orienté à cinq arêtes simples : A à B, B à C, C à A, C à D et D à E, et chaque sommet porte son degré, 2, 2, 3, 2 et 1. Le panneau de droite est un graphe orienté à six flèches : de A vers B, de B vers C, de C vers A, de C vers D, de D vers E et de E retour vers D, et chaque sommet porte ses degrés entrant et sortant. Une légende indique que la somme des degrés vaut 10 à gauche, deux fois les cinq arêtes, tandis qu'à droite les degrés entrants et les degrés sortants totalisent chacun six, le nombre d'arcs.
L'exemple récurrent. Le graphe orienté de droite a six arcs ; le graphe non orienté de gauche est son graphe sous-jacent, où les deux arcs entre D et E se confondent en une seule arête.

Ces deux graphes servent d'exemple récurrent pour tout l'article. Le graphe orienté est

V = {A, B, C, D, E}
A = { (A,B), (B,C), (C,A), (C,D), (D,E), (E,D) }        6 arcs

et le graphe non orienté de gauche est son graphe sous-jacent, avec 5 arêtes, puisque les arcs opposés entre D et E deviennent l'unique arête {D, E}.

2. Arêtes, arcs, origines et extrémités

Le vocabulaire change avec la définition, et ces changements n'ont rien de décoratif. L'ouvrage Digraphs de Bang-Jensen et Gutin, la référence standard côté orienté, prend soin de réserver des mots distincts pour qu'un énoncé ne soit jamais ambigu quant à l'objet dont il parle.

Non orientéOrientéRemarques
Arête {u, v}Arc (u, v)Beaucoup d'auteurs disent « arête orientée » pour arc ; le sens est identique
ExtrémitésOrigine u et extrémité vLa flèche pointe vers l'extrémité
u et v sont adjacentsv est un successeur de uEt u est un prédécesseur de v. La relation n'est plus symétrique
Degré deg(v)Degré sortant d+(v), degré entrant d-(v)Deux nombres au lieu d'un
Marche, chemin, cycleMarche, chemin, cycle orientésChaque pas doit suivre un arc dans son sens
ConnexeFortement, unilatéralement ou faiblement connexeUne notion se divise en trois, voir la section 7
Arbre, forêtArborescence, branchementUn arbre dont tous les arcs s'éloignent d'une racine

Deux termes méritent leur propre ligne, car on les confond sans cesse. Un graphe antisymétrique (oriented graph en anglais) est un graphe orienté sans digone : on a pris un graphe non orienté et choisi un sens pour chaque arête. Tout graphe antisymétrique est un graphe orienté, mais un graphe orienté contenant à la fois (u,v) et (v,u) n'est pas antisymétrique. Cette distinction est tout le sujet de la section 5.

3. Le degré se dédouble

Dans un graphe non orienté, le degré d'un sommet compte les extrémités d'arêtes qui le touchent, et le lemme des poignées de main dit que la somme de ces nombres vaut deux fois le nombre d'arêtes. Dans un graphe orienté, chaque arc a une origine et une extrémité au lieu de deux bouts symétriques, donc ce compte unique se dédouble :

et l'identité unique se dédouble elle aussi :

non orienté    ∑v∈V deg(v)   =  2m           chaque arête a deux extrémités

orienté        ∑v∈V d+(v)  =  ∑v∈V d-(v)  =  |A|
                                             chaque arc a une origine et une extrémité

Le facteur 2 manquant surprend souvent. Ce n'est pas un autre théorème, c'est le même argument de double comptage appliqué à un ensemble dont les éléments contribuent désormais à deux sommes distinctes au lieu de contribuer deux fois à une seule.

Vérifiez sur l'exemple récurrent. Les degrés sortants sont A 1, B 1, C 2, D 1, E 1, soit 6 au total. Les degrés entrants sont A 1, B 1, C 1, D 2, E 1, soit 6 également, le nombre d'arcs. Sur le graphe non orienté sous-jacent, les degrés sont 2, 2, 3, 2, 1, soit 10, deux fois ses 5 arêtes.

Deux types de sommets nommés en découlent immédiatement, sans aucun équivalent non orienté :

Sources et puits sont les points d'entrée et de sortie des réseaux de flot et les positions de départ et d'arrivée d'un ordre topologique. Dans un graphe non orienté, ces notions ne peuvent tout simplement pas s'exprimer.

4. Ce qui change dans la matrice et la liste

L'orientation se voit dans le stockage aussi clairement que dans la définition, et les différences sont celles que détaillent Cormen, Leiserson, Rivest et Stein dans Introduction to Algorithms.

Deux matrices d'adjacence cinq par cinq pour le même ensemble de sommets, de A à E. La matrice de gauche, celle du graphe non orienté, est symétrique par rapport à sa diagonale principale, avec les paires de 1 en miroir mises en évidence. La matrice de droite, celle du graphe orienté, n'est pas symétrique : le coefficient de C vers D vaut 1 tandis que celui de D vers C vaut 0. À droite, les sommes des lignes sont indiquées comme degrés sortants et les sommes des colonnes comme degrés entrants.
La symétrie est la signature visible d'un graphe non orienté. À droite, C atteint D mais D n'atteint pas C, donc les deux coefficients en miroir diffèrent.

La matrice d'adjacence. Pour un graphe non orienté, la matrice est toujours symétrique, A = AT, car {u, v} et {v, u} sont la même arête. Pour un graphe orienté, elle ne l'est généralement pas, et cette asymétrie porte une vraie information :

La liste d'adjacence. Un graphe non orienté stocke chaque arête deux fois, une fois dans la liste de chaque extrémité, donc les listes contiennent 2m entrées. Un graphe orienté stocke chaque arc une fois, dans la liste de son origine, ce qui donne m entrées. Cela a une conséquence pratique qui surprend la première fois : pour parcourir un graphe orienté à rebours, il faut une seconde structure, la liste d'adjacence inverse, car la liste d'un sommet vous dit où vous pouvez aller, pas d'où vous venez. L'algorithme de Kosaraju pour les composantes fortement connexes repose directement sur cette observation et parcourt le graphe inverse lors de sa seconde passe.

Deux bornes en découlent. Un graphe simple non orienté à n sommets a au plus n(n-1)/2 arêtes. Un graphe orienté sans boucle a au plus n(n-1) arcs, exactement deux fois plus, car chaque couple ordonné est désormais une case à part.

5. Orientations et graphe sous-jacent

Les deux mondes sont reliés par deux constructions qui vont en sens opposés, et bien les nommer dissipe beaucoup de confusion.

Ce ne sont pas des opérations réciproques. Passer au graphe sous-jacent perd une information qu'aucune orientation ne peut restaurer, et un graphe à m arêtes possède 2m orientations distinctes, puisque chaque arête est un choix binaire indépendant. Le graphe sous-jacent de l'exemple récurrent a 5 arêtes, donc 32 orientations, et le graphe orienté d'origine n'en fait même pas partie, car il contient un digone.

Cela soulève la question à laquelle répond la section suivante. Parmi ces 2m orientations, y en a-t-il une bonne, au sens où l'on peut encore aller partout ?

6. Le théorème de Robbins : quelles rues peuvent passer en sens unique

En 1939, Herbert Robbins publia un court article dans la revue American Mathematical Monthly sous le titre mémorable « A theorem on graphs, with an application to a problem of traffic control ». Le problème est exactement celui d'un urbaniste : si toutes les rues passent en sens unique, les automobilistes peuvent-ils encore atteindre chaque quartier ?

Théorème de Robbins. Un graphe non orienté connexe admet une orientation fortement connexe si et seulement s'il n'a pas de pont.

Un pont, aussi appelé isthme, est une arête dont la suppression déconnecte le graphe. Un graphe connexe sans pont est exactement un graphe 2-arête-connexe, dans lequel chaque arête appartient à un cycle. (La connexité compte ici : un graphe non connexe peut être sans pont sans être 2-arête-connexe.)

Deux panneaux. À gauche, un cycle à quatre sommets sans pont, orienté en circuit, marqué d'une coche verte et de la remarque que chaque sommet atteint encore tous les autres. À droite, le même cycle avec un sommet supplémentaire rattaché par une seule arête, qui est un pont, orientée vers l'extérieur, marqué d'une croix rouge et de la remarque que, quel que soit le sens donné au pont, un côté devient inaccessible depuis l'autre.
Un pont n'admet que deux orientations, et toutes deux isolent un côté. Tout le reste d'un graphe sans pont peut être orienté de sorte que tous les sommets restent mutuellement accessibles.

Un sens de la démonstration est le plus facile et mérite d'être vu, car il explique tout le résultat. Supposons que e = {u, v} soit un pont, de sorte que sa suppression sépare le graphe en une composante contenant u et une composante contenant v. Toute orientation doit envoyer e dans un sens ou dans l'autre. S'il devient (u, v) , alors rien du côté de vne peut jamais revenir du côté de u, car e était la seule connexion et pointe désormais dans le mauvais sens. S'il devient (v, u) , le même argument s'applique à l'envers. Dans les deux cas, l'orientation n'est pas fortement connexe. La réciproque, à savoir que tout graphe connexe sans pont admet bel et bien une orientation fortement connexe, est la moitié substantielle ; la démonstration standard lance un parcours en profondeur et oriente les arêtes de l'arbre en s'éloignant de la racine et les arêtes arrière vers elle.

L'exemple récurrent rend le théorème concret. Son graphe sous-jacent contient le triangle A, B, C, sans pont, mais les arêtes {C, D} et {D, E} sont toutes deux des ponts. D'après le théorème de Robbins, aucune orientation de ce graphe n'est donc fortement connexe, et c'est précisément pourquoi le graphe orienté de la figure n'est pas fortement connexe, quelle que soit la façon dont on redessine les flèches.

Nash-Williams a généralisé le résultat en 1960 : tout graphe non orienté 2k-arête-connexe admet une orientation k-arc-connexe, dont le théorème de Robbins est le cas k = 1. La lecture pratique reste la même. Les plans de circulation à sens unique sont sûrs exactement là où le réseau routier est redondant, et une route unique reliant un quartier au reste de la ville ne peut jamais passer en sens unique sans l'isoler.

7. La connexité devient trois questions différentes

Dans un graphe non orienté, la connexité se résume à oui ou non : existe-t-il un chemin entre chaque paire de sommets ? L'orientation transforme cela en hiérarchie. La classification est due à l'ouvrage Structural Models de Harary, Norman et Cartwright, et c'est la partie de la théorie des graphes orientés la plus souvent sautée et la plus souvent nécessaire.

Un graphe orienté estsi, pour toute paire u et vExemple récurrent
Fortement connexeu atteint v et v atteint uNon : D ne peut pas atteindre A
Unilatéralement connexeu atteint v ou v atteint uOui : A atteint D, ce qui suffit pour cette paire
Faiblement connexele graphe non orienté sous-jacent est connexeOui
Non connexemême pas faiblement connexeNon

Chaque condition implique celle du dessous : fortement connexe implique unilatéralement connexe, qui implique faiblement connexe. L'exemple récurrent se situe exactement au milieu de la hiérarchie, ce qui est le cas courant en pratique : on peut sortir du triangle A, B, C vers D et E, mais jamais revenir.

Le raffinement utile consiste à ne plus interroger le graphe orienté entier mais ses parties. Une composante fortement connexe, ou CFC, est un ensemble maximal de sommets dans lequel chaque sommet atteint tous les autres. Tout graphe orienté se partitionne de façon unique en CFC, et contracter chacune en un seul sommet produit la condensation, qui est toujours acyclique. Ce dernier fait n'a rien d'un hasard : si la condensation contenait un circuit, chaque composante de ce circuit atteindrait toutes les autres, et elles n'auraient formé qu'une seule CFC dès le départ.

À gauche, le graphe orienté récurrent avec ses deux composantes fortement connexes ombrées : l'une contenant A, B et C, qui forment un triangle orienté, l'autre contenant D et E, qui pointent l'un vers l'autre. À droite, la condensation, où chaque composante a été contractée en un seul sommet, laissant un unique arc de la composante A B C vers la composante D E, un graphe orienté acyclique.
Deux composantes fortement connexes et la condensation qu'elles induisent. Contracter chaque composante laisse toujours un DAG, quel que soit le graphe orienté de départ.

Trouver les CFC prend un temps linéaire. L'article de Tarjan de 1972, « Depth-first search and linear graph algorithms », le fait en un seul parcours en profondeur grâce aux valeurs low-link, et la méthode de Kosaraju-Sharir le fait en deux passes, la seconde sur le graphe inverse. Les deux s'exécutent en O(n + m), et aucune n'a d'équivalent non orienté, car dans un graphe non orienté les composantes connexes découlent de n'importe quel parcours.

8. Cycles, DAG et ordre topologique

Le mot « cycle » prend discrètement un sens plus strict dès que des flèches entrent en jeu, et cet écart cause de vrais bugs.

Dans un graphe simple non orienté, un cycle est une marche fermée sans sommet répété, et il lui faut au moins trois sommets, puisque suivre une arête puis revenir aussitôt ne compte pas comme un cycle. Un graphe non orienté sans cycle est une forêt, et s'il est connexe, c'est un arbre.

Dans un graphe orienté, un circuit doit suivre les flèches sur tout le tour, et un digone compte : les deux arcs (D, E) et (E, D) forment un circuit de longueur 2. Un graphe orienté sans circuit est un DAG, un graphe orienté acyclique, et les DAG possèdent une propriété qui n'a pas d'équivalent dans le monde non orienté :

Un graphe orienté admet un ordre topologique, c'est-à-dire une disposition linéaire de ses sommets où chaque arc pointe vers l'avant, si et seulement s'il est acyclique.

L'article de Kahn de 1962 dans les Communications of the ACM a donné l'algorithme standard : prenez à répétition un sommet de degré entrant nul, écrivez-le en sortie et supprimez-le avec ses arcs sortants. Si le graphe se vide, la sortie est un ordre topologique ; s'il se bloque alors qu'il reste des sommets, chaque sommet restant appartient à un circuit. Les détails se trouvent dans le guide sur le tri topologique.

Deux pièges en découlent :

9. Quels algorithmes se transposent, et lesquels cassent

La question pratique est de savoir quelles parties de la boîte à outils non orientée survivent au passage. Le schéma est plus clair qu'il n'y paraît : tout ce qui ne fait que suivre les arêtes vers l'avant se transpose, et tout ce qui repose sur la symétrie, non.

ProblèmeNon orientéOrientéCe qui change
BFS et DFSFonctionneFonctionneMême code, en ne suivant que les arcs sortants. L'accessibilité devient à sens unique
Plus court chemin, poids positifs ou nulsDijkstraDijkstraRien. Dijkstra n'a jamais supposé de symétrie
Plus court chemin, poids négatifsNon borné, ou NP-difficileBellman-FordUne seule arête non orientée de poids négatif peut être parcourue dans les deux sens et forme donc déjà un cycle négatif : les marches les plus courtes ne sont pas bornées, et se restreindre aux chemins élémentaires rend le problème NP-difficile
Composantes connexesUn seul parcoursTarjan ou Kosaraju-Sharir pour les CFCTrois notions de connexité au lieu d'une
Détection de cyclesTout voisin visité autre que le parentArc arrière vers un sommet de la pile de récursionLe test non orienté donne des faux positifs sur un graphe orienté
Arbre couvrant de poids minimumKruskal, PrimNe s'applique pasL'analogue orienté est l'arborescence minimale, résolue par Chu-Liu/Edmonds, pas par un tri des arêtes
Circuit eulérienConnexe et tous les degrés pairsConnexe et d+(v) = d-(v) pour tout vLa condition de parité devient une condition d'équilibre
Flot maximumModélisé par deux arcs opposésNatifLe flot est orienté par définition ; Ford et Fulkerson l'ont posé sur un graphe orienté
Tri topologiqueDénué de sensKahn ou DFSIl faut des flèches pour avoir quelque chose à ordonner

La ligne de l'arbre couvrant de poids minimum est celle qui piège même les plus expérimentés. Les algorithmes de Kruskal et de Prim sont gloutons sur une structure de coûts symétrique, et aucun ne survit à l'orientation. La bonne question orientée est celle de l'arborescence couvrante minimale : choisir un ensemble d'arcs de poids total minimal tel que chaque sommet soit accessible depuis une racine fixée. Chu et Liu en 1965 et Edmonds en 1967 l'ont résolu indépendamment, et l'algorithme ne ressemble en rien à un balayage d'arêtes triées : il sélectionne l'arc entrant le moins cher de chaque sommet, puis contracte tout circuit qui se forme et recommence.

10. Choisir : votre relation est-elle symétrique ?

La question de modélisation n'a qu'une forme : si la relation vaut de u vers v, doit-elle valoir de v vers u ? Si oui, utilisez un graphe non orienté. Si non, ou en cas de doute, utilisez un graphe orienté, car un graphe orienté peut toujours exprimer une relation symétrique, mais pas l'inverse.

RelationSymétrique ?Modèle
« est ami avec » sur un réseau socialOui, par construction sur la plupart des plateformesNon orienté
« suit » sur un réseau socialNonOrienté
« pointe vers » entre pages webNonOrienté. Le PageRank de Brin et Page est défini sur ce graphe orienté
« a coécrit un article avec »OuiNon orienté
« cite »Non, et généralement acyclique dans le tempsOrienté, presque un DAG
« est relié par une rue à double sens à »OuiNon orienté, sauf si les coûts dépendent du sens
« dépend de » entre cibles de compilationNonOrienté, et ce doit être un DAG, sinon la compilation ne peut pas s'exécuter
« est accessible en un vol depuis »Généralement, mais pas toujoursOrienté, puisque des liaisons à sens unique existent

Un cas mérite une attention particulière, car il a l'air symétrique sans l'être. Une arête non orientée ne peut porter qu'un seul poids. Si le coût pour aller de u à v diffère du coût du retour, la relation est mutuelle, mais le modèle doit tout de même être orienté. Monter et descendre une côte à vélo, envoyer et recevoir des données sur un lien asymétrique, changer des devises dans un sens ou dans l'autre : autant de connexions mutuelles aux coûts différents, et chacune impose un graphe orienté à deux arcs de poids différents.

11. Passer de l'un à l'autre

Trois conversions reviennent sans cesse, et chacune perd ou invente quelque chose dont il faut avoir conscience.

12. Erreurs courantes

13. Glossaire

TermeSignification
Arc (u, v)Une arête orientée, de l'origine u vers l'extrémité v
DigrapheUn graphe orienté, D = (V, A) avec A ⊆ V × V
DigoneUne paire d'arcs opposés entre les deux mêmes sommets
Graphe antisymétriqueUn graphe orienté sans digone : un sens choisi par arête
Orientation de GLe graphe antisymétrique obtenu en orientant chaque arête de G
Graphe sous-jacentLe graphe non orienté obtenu en oubliant le sens de toutes les flèches
Graphe inverseChaque arc retourné ; sa matrice est AT
Degré entrant, degré sortantd-(v) arcs entrants, d+(v) arcs sortants
Source, puitsDegré entrant nul, degré sortant nul respectivement
Fortement connexeChaque sommet atteint tous les autres en suivant les flèches
CFCUn ensemble maximal de sommets fortement connexe
CondensationLe graphe orienté des CFC contractées en sommets uniques ; toujours un DAG
DAGUn graphe orienté sans circuit
ArborescenceUn arbre orienté dont tous les arcs s'éloignent d'une racine
PontUne arête dont la suppression déconnecte un graphe non orienté

14. Questions fréquentes

Quelle est la différence entre un graphe orienté et un graphe non orienté ?

Un graphe non orienté relie des sommets par des paires non ordonnées {u, v} : la connexion fonctionne dans les deux sens et la relation est symétrique. Un graphe orienté, ou digraphe, utilise des couples ordonnés (u, v) : un arc va d'une origine vers une extrémité, et l'arc inverse est un objet distinct qui peut exister ou non. Tout le reste en découle : le degré se dédouble en degré entrant et degré sortant, la matrice d'adjacence cesse d'être symétrique, et la connexité se divise en forte, unilatérale et faible.

Un graphe non orienté est-il simplement un graphe orienté avec des arcs dans les deux sens ?

Pour le stockage et les parcours, oui, et c'est exactement ainsi que la plupart des bibliothèques représentent les graphes non orientés. Pour les questions structurelles, non. Doubler chaque arête en deux arcs opposés transforme chaque arête en circuit de longueur 2 : un test de DAG échoue toujours, chaque composante connexe devient une seule composante fortement connexe, et un détecteur de cycles se déclenche sur chaque arête. La représentation est fidèle ; y exécuter des algorithmes structurels orientés ne l'est pas.

L'algorithme de Dijkstra fonctionne-t-il sur les graphes orientés ?

Oui, sans aucune modification. L'algorithme de Dijkstra ne relâche que les arêtes qui sortent du sommet qu'il vient de fixer, il ne s'appuie donc jamais sur la symétrie. Sa vraie exigence est que les poids soient positifs ou nuls, ce qui est une condition sur la fonction de poids et non sur l'orientation. Notez aussi le point inverse : les plus courts chemins avec poids négatifs sont en réalité un problème orienté, car une seule arête non orientée de poids négatif peut être parcourue dans les deux sens et constitue donc déjà un cycle négatif, ce qui rend les marches les plus courtes non bornées et les plus courts chemins élémentaires NP-difficiles.

Quelle est la différence entre un graphe orienté et un graphe antisymétrique ?

Un graphe antisymétrique (oriented graph en anglais) est un graphe orienté sans digone, c'est-à-dire qu'il ne contient jamais à la fois (u, v) et (v, u). De manière équivalente, c'est ce qu'on obtient en prenant un graphe non orienté et en choisissant exactement un sens pour chaque arête. Tout graphe antisymétrique est un graphe orienté, mais un graphe orienté possédant une paire d'arcs opposés n'est pas antisymétrique. Un graphe non orienté à m arêtes possède 2 puissance m orientations distinctes.

Quand toutes les rues d'une ville peuvent-elles passer en sens unique ?

Exactement quand le réseau de rues n'a pas de pont, c'est-à-dire aucune rue dont la suppression couperait la ville en deux. C'est le théorème de Robbins de 1939 : un graphe non orienté connexe admet une orientation fortement connexe si et seulement s'il est sans pont. On voit facilement pourquoi un pont fait échouer l'orientation : quel que soit le sens choisi, rien de l'autre côté ne peut jamais revenir.

Les algorithmes d'arbre couvrant de poids minimum fonctionnent-ils sur les graphes orientés ?

Non. Les algorithmes de Kruskal et de Prim sont gloutons sur une structure de coûts symétrique et n'ont pas de version orientée. L'analogue orienté du problème est l'arborescence couvrante minimale : choisir l'ensemble d'arcs le moins cher tel que chaque sommet soit accessible depuis une racine donnée. Chu et Liu en 1965 et Edmonds en 1967 l'ont résolu indépendamment, et la méthode est de nature différente : elle sélectionne l'arc entrant le moins cher de chaque sommet, puis contracte tout circuit qui apparaît.

15. Références

Les définitions, théorèmes et attributions ci-dessus proviennent de ces sources, classées par ordre chronologique.

  1. Robbins, H. E. (1939). "A theorem on graphs, with an application to a problem of traffic control." American Mathematical Monthly 46(5), 281 à 283. Le théorème d'orientation des graphes sans pont de la section 6.
  2. Ford, L. R. et Fulkerson, D. R. (1956). "Maximal flow through a network." Canadian Journal of Mathematics 8, 399 à 404. Le flot, posé sur un graphe orienté dès l'origine.
  3. Nash-Williams, C. St. J. A. (1960). "On orientations, connectivity and odd-vertex-pairings in finite graphs." Canadian Journal of Mathematics 12, 555 à 567. La généralisation de Robbins à la k-arc-connexité.
  4. Kahn, A. B. (1962). "Topological sorting of large networks." Communications of the ACM 5(11), 558 à 562.
  5. Chu, Y. J. et Liu, T. H. (1965). "On the shortest arborescence of a directed graph." Scientia Sinica 14, 1396 à 1400.
  6. Harary, F., Norman, R. Z. et Cartwright, D. (1965). Structural Models: An Introduction to the Theory of Directed Graphs. New York : Wiley. Source de la classification en connexité forte, unilatérale et faible.
  7. Edmonds, J. (1967). "Optimum branchings." Journal of Research of the National Bureau of Standards 71B(4), 233 à 240.
  8. Tarjan, R. E. (1972). "Depth-first search and linear graph algorithms." SIAM Journal on Computing 1(2), 146 à 160. Composantes fortement connexes en temps linéaire.
  9. Sharir, M. (1981). "A strong-connectivity algorithm and its applications in data flow analysis." Computers & Mathematics with Applications 7(1), 67 à 72. La méthode en deux passes habituellement associée au nom de Kosaraju.
  10. Brin, S. et Page, L. (1998). "The anatomy of a large-scale hypertextual Web search engine." Computer Networks and ISDN Systems 30(1 à 7), 107 à 117. PageRank sur le graphe orienté du Web.
  11. West, D. B. (2001). Introduction to Graph Theory, 2e édition. Upper Saddle River : Prentice Hall.
  12. Bondy, J. A. et Murty, U. S. R. (2008). Graph Theory. Graduate Texts in Mathematics 244. Londres : Springer.
  13. Bang-Jensen, J. et Gutin, G. (2009). Digraphs: Theory, Algorithms and Applications, 2e édition. Londres : Springer. La référence standard pour la terminologie des graphes orientés.
  14. Cormen, T. H., Leiserson, C. E., Rivest, R. L. et Stein, C. (2009). Introduction to Algorithms, 3e édition. Cambridge, Massachusetts : MIT Press. Source des coûts de représentation de la section 4.
  15. Chartrand, G., Lesniak, L. et Zhang, P. (2015). Graphs & Digraphs, 6e édition. Boca Raton : CRC Press. Un manuel qui développe les deux objets en parallèle.
  16. Diestel, R. (2017). Graph Theory, 5e édition. Graduate Texts in Mathematics 173. Berlin : Springer. Source des deux définitions citées dans la section 1.

Voyez l'orientation changer la réponse

Construisez un graphe, transformez ses arêtes en arcs et lancez deux fois le même parcours. Voir l'ensemble des sommets accessibles changer sous vos yeux est le moyen le plus rapide d'assimiler tout ce qui figure sur cette page.

Ouvrir le visualiseur

Voyez l'Orientation Changer la Réponse

Construisez un graphe, lancez un parcours et voyez exactement quels sommets sont accessibles. Puis retournez les flèches et relancez-le. Voir l'ensemble des sommets accessibles changer sous vos yeux est le moyen le plus rapide d'assimiler tout ce qui figure sur cette page.

Lancer le Visualiseur de CFC