• Aucun résultat trouvé

Algorithmique des graphes 1 — Les bases Anthony Labarre 27 janvier 2021

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique des graphes 1 — Les bases Anthony Labarre 27 janvier 2021"

Copied!
58
0
0

Texte intégral

(1)Algorithmique des graphes 1 — Les bases Anthony Labarre. 27 janvier 2021.

(2) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes : exemples informels. x. c so ux. iau. ea. rés. 2.

(3) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes : exemples informels. e. rés. rs. tie. x. oc xs au. iau. e rés. x au. rou. 3.

(4) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes : exemples informels. iau. e rés. e. rés. rs. tie. x. oc xs au. rou. es. nc. da. n pe. x au. dé. 4.

(5) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes : exemples informels. iau. e rés. e. rés. rs. tie. x. oc xs au. dé. e. es. nc. da. n pe. rou. x au. tab. qu oli. mé au. e. rés. 5.

(6) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes : exemples informels. iau. e rés. e. rés. rs. tie. x. oc xs au. dé. e. es. nc. da. n pe. rou. x au. tab. qu oli. mé au. e. rés. ⇒ Graphe = éléments reliés par une certaine relation 6.

(7) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Définition 1 Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ; • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe.. 7.

(8) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Définition 1. Exemple 1. Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe.. 1. 3. 0 4. 8.

(9) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Définition 1. Exemple 1. Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe. G est simple s’il ne contient ni arêtes parallèles ni boucles.. 1. 3. 0 4. 9.

(10) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Définition 1. Exemple 1. Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe. G est simple s’il ne contient ni arêtes parallèles ni boucles.. 1. 3. 0 4. • Une arête {u, v } relie deux sommets adjacents ou voisins ; elle est incidente à u et v , qui sont ses extrémités ;. 10.

(11) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Exemple 1. Définition 1 Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe. G est simple s’il ne contient ni arêtes parallèles ni boucles.. 1. 3. 0 4. • Une arête {u, v } relie deux sommets adjacents ou voisins ; elle est incidente à u et v , qui sont ses extrémités ; • Le voisinage d’un sommet v est l’ensemble de ses voisins : NG (v ) = {u | {u, v } ∈ E (G )}. 11.

(12) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Exemple 1. Définition 1 Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe. G est simple s’il ne contient ni arêtes parallèles ni boucles.. 1. 3. 0 4. • Une arête {u, v } relie deux sommets adjacents ou voisins ; elle est incidente à u et v , qui sont ses extrémités ; • Le voisinage d’un sommet v est l’ensemble de ses voisins : NG (v ) = {u | {u, v } ∈ E (G )} • Le degré du sommet v est la taille de son voisinage, noté degG (v ) ; 12.

(13) Concepts de base. Implémentation de graphes. Visualisation de graphes. Concepts de base Exemple 1. Définition 1 Un graphe est un couple G = (V , E ), où : • V est un ensemble de sommets ;. 2. • E ⊆ V × V un ensemble d’arêtes ; On utilisera aussi les notations V (G ) et E (G ) pour bien distinguer le graphe G d’un autre graphe. G est simple s’il ne contient ni arêtes parallèles ni boucles.. 1. 3. 0 4. • Une arête {u, v } relie deux sommets adjacents ou voisins ; elle est incidente à u et v , qui sont ses extrémités ; • Le voisinage d’un sommet v est l’ensemble de ses voisins : NG (v ) = {u | {u, v } ∈ E (G )} • Le degré du sommet v est la taille de son voisinage, noté degG (v ) ; • Deux sommets qui ne sont pas voisins sont indépendants ; 13.

(14) Concepts de base. Implémentation de graphes. Visualisation de graphes. Étiquetages et dessins Les sommets et les arêtes peuvent être étiquetés, mais ce n’est pas obligatoire. La manière dont on dessine les graphes n’importe pas : 4 6. 0 7. 1. 4 5. 5. 5. 7. 2 3. 0 3. 4. 7. 5 6. 2. 1. 7. 1. 4. 6. 0. 6 3. 0 1. 2. 3. 2.

(15) Concepts de base. Implémentation de graphes. Visualisation de graphes. Étiquetages et dessins Les sommets et les arêtes peuvent être étiquetés, mais ce n’est pas obligatoire. La manière dont on dessine les graphes n’importe pas : 4 6. 0 7. 1. 4 5. 5. 5. 7. 2 3. 0 3. 4. 7. 5 6. 2. 1. 7. 1. 4. 6. 0. 6 3. 0 1. 2. 3. 2. Les graphes G et H sont isomorphes si l’on peut numéroter V (G ) et V (H) de telle sorte que E (G ) = E (H)..

(16) Concepts de base. Implémentation de graphes. Visualisation de graphes. Étiquetages et dessins Les sommets et les arêtes peuvent être étiquetés, mais ce n’est pas obligatoire. La manière dont on dessine les graphes n’importe pas : 4 6. 0 7. 1. 4 5. 5. 5. 7. 2 3. 0 3. 4. 7. 5 6. 2. 1. 7. 1. 4. 6. 0. 6 3. 0 1. 2. 3. 2. Les graphes G et H sont isomorphes si l’on peut numéroter V (G ) et V (H) de telle sorte que E (G ) = E (H). On ne connaı̂t pas la complexité du problème de décision associé ; le meilleur algorithme connu est en exp((log n)O(1) ) [1]..

(17) Concepts de base. Implémentation de graphes. Visualisation de graphes. Isomorphisme Voici des étiquetages prouvant que les graphes précédents sont tous isomorphes : 4 6. 0 7. 1. 4 5. 5. 5. 7. 2 3. 0 3. 4. 7. 5 6. 2. 1. 7. 1. 4. 6. 0. 6 3. 0 1. 2. 3. 2. Les arêtes deviennent {{0, 1}, {0, 3}, {0, 4}, . . . , {6, 7}}.. 17.

(18) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E .. Exemple 2 2. 1. 3. 0 4. G.

(19) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E . • H est induit par V 0 si E 0 contient toutes les arêtes de E reliant deux sommets de V 0 dans G ; on écrit alors H = G [V 0 ].. Exemple 2 2. 1. 3. 0 4. G.

(20) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E . • H est induit par V 0 si E 0 contient toutes les arêtes de E reliant deux sommets de V 0 dans G ; on écrit alors H = G [V 0 ]. • H est induit par F 0 si V 0 contient seulement les sommets de V reliés par F 0 dans G ; on écrit alors H = G [F 0 ].. Exemple 2 2. 1. 3. 0 4. G.

(21) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E . • H est induit par V 0 si E 0 contient toutes les arêtes de E reliant deux sommets de V 0 dans G ; on écrit alors H = G [V 0 ]. • H est induit par F 0 si V 0 contient seulement les sommets de V reliés par F 0 dans G ; on écrit alors H = G [F 0 ].. Exemple 2 2. 1. 2. 1. 3. 3. 0. 0 4. G. 4. sous-graphe induit.

(22) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E . • H est induit par V 0 si E 0 contient toutes les arêtes de E reliant deux sommets de V 0 dans G ; on écrit alors H = G [V 0 ]. • H est induit par F 0 si V 0 contient seulement les sommets de V reliés par F 0 dans G ; on écrit alors H = G [F 0 ].. Exemple 2 2. 1. 2. 1. 3. 2. 3. 0. 0 4. G. 1. 3. 0 4. sous-graphe induit. 4. sous-graphe pas induit.

(23) Concepts de base. Implémentation de graphes. Visualisation de graphes. Sous-graphes On s’intéressera régulièrement à un “morceau” particulier d’un graphe G . • Un sous-graphe d’un graphe G = (V , E ) est un graphe H = (V 0 , E 0 ) avec V 0 ⊆ V et E 0 ⊆ E . • H est induit par V 0 si E 0 contient toutes les arêtes de E reliant deux sommets de V 0 dans G ; on écrit alors H = G [V 0 ]. • H est induit par F 0 si V 0 contient seulement les sommets de V reliés par F 0 dans G ; on écrit alors H = G [F 0 ].. Exemple 2 2. 1. 2. 1. 3. 2. 3. 0. 0 4. G. 1. 2. 3. 0 4. sous-graphe induit. 1. 3. 0 4. sous-graphe pas induit. 4. pas sous-graphe.

(24) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ;.

(25) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6.

(26) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6. • un cycle dans un graphe G est une séquence C = (u0 , u1 , u2 , . . . , up ) de sommets où {ui , ui+1 mod p } ∈ E (G ) pour 0 ≤ i ≤ p − 1..

(27) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6. • un cycle dans un graphe G est une séquence C = (u0 , u1 , u2 , . . . , up ) de sommets où {ui , ui+1 mod p } ∈ E (G ) pour 0 ≤ i ≤ p − 1. C2. C3. C4. C5. C6.

(28) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6. • un cycle dans un graphe G est une séquence C = (u0 , u1 , u2 , . . . , up ) de sommets où {ui , ui+1 mod p } ∈ E (G ) pour 0 ≤ i ≤ p − 1. C2. C3. C4. C5. C6. • enfin, on dit d’un graphe G = (V , E ) qu’il est complet si E = V × V , c’est-à-dire que chaque sommet est adjacent à tous les autres.. 28.

(29) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6. • un cycle dans un graphe G est une séquence C = (u0 , u1 , u2 , . . . , up ) de sommets où {ui , ui+1 mod p } ∈ E (G ) pour 0 ≤ i ≤ p − 1. C2. C3. C4. C5. C6. • enfin, on dit d’un graphe G = (V , E ) qu’il est complet si E = V × V , c’est-à-dire que chaque sommet est adjacent à tous les autres. K2. K3. K4. K5. K6. 29.

(30) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphes fréquents Certains graphes reviennent souvent dans les applications : • un chemin dans un graphe G est une séquence P = (u0 , u1 , u2 , . . . , up−1 ) de sommets distincts où {ui , ui+1 } ∈ E (G ) pour 0 ≤ i ≤ p − 2 ; P2. P3. P4. P5. P6. • un cycle dans un graphe G est une séquence C = (u0 , u1 , u2 , . . . , up ) de sommets où {ui , ui+1 mod p } ∈ E (G ) pour 0 ≤ i ≤ p − 1. C2. C3. C4. C5. C6. • enfin, on dit d’un graphe G = (V , E ) qu’il est complet si E = V × V , c’est-à-dire que chaque sommet est adjacent à tous les autres. K2. K3. K4. K5. K6. La longueur d’un cycle ou d’un chemin est son nombre d’arêtes. 30.

(31) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2. 1. 3. 0 4.

(32) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2. 1. 3. 0 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(33) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2. 1. 3. 1 0 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(34) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2. 4 1. 3. 1 0 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(35) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2 2. 4 1. 3. 1 0 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(36) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1) v ∈V. Exemple 3 2 2. 4. 3. 1. 3. 1 0 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(37) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1). Exemple 3 2 2. 4. 3. 1. 3. 1 0 2. v ∈V. 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois..

(38) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1). Exemple 3 2 2. 4. 3. 1. 3. 1 0 2. v ∈V. 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois.  Kn contient le nombre maximum d’arêtes, à savoir n2 = n(n − 1)/2..

(39) Concepts de base. Implémentation de graphes. Visualisation de graphes. Degrés et taille. La taille d’un graphe G = (V , E ) est son nombre d’arêtes |E |. Si G est simple, on peut la calculer à l’aide de la relation suivante : X deg(v ) = 2|E |. (1). Exemple 3 2 2. 4. 3. 1. 3. 1 0 2. v ∈V. 4. En effet, si l’on parcourt les sommets du graphe en sélectionnant chaque arête incidente à chacun des sommets, on aura sélectionné chaque arête exactement deux fois.  Kn contient le nombre maximum d’arêtes, à savoir n2 = n(n − 1)/2. Donc pour tout graphe G = (V , E ) : |E | = O(|V |2 ), et log |E | = O(log |V |)..

(40) Concepts de base. Implémentation de graphes. Visualisation de graphes. Représentation de graphes en mémoire. • Les deux encodages de graphes les plus fréquents se basent sur des matrices ou des listes d’adjacence ;. 40.

(41) Concepts de base. Implémentation de graphes. Visualisation de graphes. Représentation de graphes en mémoire. • Les deux encodages de graphes les plus fréquents se basent sur des matrices ou des listes d’adjacence ; • Le choix de la représentation est important, car :. 41.

(42) Concepts de base. Implémentation de graphes. Visualisation de graphes. Représentation de graphes en mémoire. • Les deux encodages de graphes les plus fréquents se basent sur des matrices ou des listes d’adjacence ; • Le choix de la représentation est important, car : 1. la consommation en mémoire n’est pas la même ;.

(43) Concepts de base. Implémentation de graphes. Visualisation de graphes. Représentation de graphes en mémoire. • Les deux encodages de graphes les plus fréquents se basent sur des matrices ou des listes d’adjacence ; • Le choix de la représentation est important, car : 1. la consommation en mémoire n’est pas la même ;. 2. la complexité des opérations diffère aussi ;.

(44) Concepts de base. Implémentation de graphes. Visualisation de graphes. Représentation de graphes en mémoire. • Les deux encodages de graphes les plus fréquents se basent sur des matrices ou des listes d’adjacence ; • Le choix de la représentation est important, car : 1. la consommation en mémoire n’est pas la même ;. 2. la complexité des opérations diffère aussi ;. • Le “bon” choix dépend des algorithmes et des applications qui nous intéressent ;.

(45) Concepts de base. Implémentation de graphes. Visualisation de graphes. Matrice d’adjacence Définition 2 La matrice d’adjacence A(G ) du graphe G = (V , E ) contient un 1 en ligne i et en colonne j si l’arête {i, j} existe, et un 0 sinon :  1 si {i, j} ∈ E , Aij (G ) = 0 sinon..

(46) Concepts de base. Implémentation de graphes. Visualisation de graphes. Matrice d’adjacence Définition 2 La matrice d’adjacence A(G ) du graphe G = (V , E ) contient un 1 en ligne i et en colonne j si l’arête {i, j} existe, et un 0 sinon :  1 si {i, j} ∈ E , Aij (G ) = 0 sinon.. Exemple 4 2. 0 1. 0. 1. 2. 3. 4. 0. 1. 0. 0. 0. 0 0. 0. 1. 2. 3. 1. 1. 0. 1. 1. 1. 1. 1. 2. 0. 1. 0. 1. 0. 2. 0. 1. 0. 3. 0. 1. 1. 0. 1. 3. 0. 1. 1. 0. 4. 0. 1. 0. 1. 0. 4. 0. 1. 0. 1. 4. 0. 3. 0 4. 0 010010011001010. 46.

(47) Concepts de base. Implémentation de graphes. Visualisation de graphes. Matrice d’adjacence Définition 2 La matrice d’adjacence A(G ) du graphe G = (V , E ) contient un 1 en ligne i et en colonne j si l’arête {i, j} existe, et un 0 sinon :  1 si {i, j} ∈ E , Aij (G ) = 0 sinon.. Exemple 4 2. 0 1. 0. 1. 2. 3. 4. 0. 1. 0. 0. 0. 0 0. 0. 1. 2. 3. 1. 1. 0. 1. 1. 1. 1. 1. 2. 0. 1. 0. 1. 0. 2. 0. 1. 0. 3. 0. 1. 1. 0. 1. 3. 0. 1. 1. 0. 4. 0. 1. 0. 1. 0. 4. 0. 1. 0. 1. 4. 0. 3. 0 4. 0 010010011001010. Les connexions sont symétriques, donc A(G ) aussi, et on pourrait donc n’en garder que la moitié. S’il n’y a pas de poids, une chaı̂ne binaire suffit.. 47.

(48) Concepts de base. Implémentation de graphes. Visualisation de graphes. Listes d’adjacence. Les listes d’adjacence encodent, pour chaque sommet du graphe G = (V , E ), la liste des voisins de ce sommet.. Exemple 5 2. 1. 3. 0 4. 0. 1. 1. 0. 2. 2. 1. 3. 3. 1. 2. 4. 1. 3. 3. 4. 4. 48.

(49) Concepts de base. Implémentation de graphes. Visualisation de graphes. L’API Graphe Les algorithmes étudiés supposeront l’existence d’une classe Graphe proposant les méthodes suivantes : Méthode ajouter arete(u, v) ajouter aretes(séquence) ajouter sommet() aretes() boucles() contient arete(u, v) contient sommet(u) degre(sommet) nombre aretes() nombre boucles() nombre sommets() retirer arete(u, v) retirer aretes(séquence) retirer sommet(sommet) retirer sommets(séquence) sommets() sous graphe induit(séquence) voisins(sommet). Exercice Quelle est la complexité de chacune des méthodes, dans le cas des matrices et des listes d’adjacence ?. 49.

(50) Concepts de base. Implémentation de graphes. Visualisation de graphes. Comparaison des complexités Les algorithmes étudiés supposeront l’existence d’une classe Graphe proposant les méthodes suivantes : Méthode ajouter arete(u, v) ajouter aretes(séquence) ajouter sommet() aretes() boucles() contient arete(u, v) contient sommet(u) degre(sommet) nombre aretes() nombre boucles() nombre sommets() retirer arete(u, v) retirer aretes(séquence) retirer sommet(sommet) retirer sommets(séquence) sommets() sous graphe induit(séquence) voisins(sommet). Matrice d’adjacence O(1) si u et v existent O(|séquence|) O(n) O(n2 ) O(n) O(1) O(1) O(n) O(n2 ) O(n) O(1) O(1) O(|séquence|) O(n2 ) O(n2 × |séquence|) O(n) O(|séquence|2 ) O(n). Liste d’adjacence O(deg(u) + deg(v )) si u et v existent O(∆ × |séquence|) O(1) O(m) O(m) O(deg(u) + deg(v )) O(1) O(1) O(n) O(m) O(1) O(deg(u) + deg(v )) O(∆ × |séquence|) O(m + n) O((m + n) × |séquence|) O(n) O(∆ × |séquence|2 ) O(deg(sommet)). ∆ est le degré maximum du graphe ; n = |V (G )|, m = |E (G )|. 50.

(51) Concepts de base. Implémentation de graphes. Visualisation de graphes. Remarques sur ces implémentations • On peut améliorer les complexités de certaines opérations dans les deux cas ;. 51.

(52) Concepts de base. Implémentation de graphes. Visualisation de graphes. Remarques sur ces implémentations • On peut améliorer les complexités de certaines opérations dans les deux cas ; • . . . mais ces choix peuvent aussi avoir un impact négatif sur d’autres opérations ou l’espace consommé ;. 52.

(53) Concepts de base. Implémentation de graphes. Visualisation de graphes. Remarques sur ces implémentations • On peut améliorer les complexités de certaines opérations dans les deux cas ; • . . . mais ces choix peuvent aussi avoir un impact négatif sur d’autres opérations ou l’espace consommé ; • En général, on implémente plusieurs classes, et on utilise “la bonne” en fonction de la situation ;. 53.

(54) Concepts de base. Implémentation de graphes. Visualisation de graphes. Remarques sur ces implémentations • On peut améliorer les complexités de certaines opérations dans les deux cas ; • . . . mais ces choix peuvent aussi avoir un impact négatif sur d’autres opérations ou l’espace consommé ; • En général, on implémente plusieurs classes, et on utilise “la bonne” en fonction de la situation ; • Il vaut toujours mieux séparer les identifiants des propriétés ;. 54.

(55) Concepts de base. Implémentation de graphes. Visualisation de graphes. Remarques sur ces implémentations • On peut améliorer les complexités de certaines opérations dans les deux cas ; • . . . mais ces choix peuvent aussi avoir un impact négatif sur d’autres opérations ou l’espace consommé ; • En général, on implémente plusieurs classes, et on utilise “la bonne” en fonction de la situation ; • Il vaut toujours mieux séparer les identifiants des propriétés ; • Par exemple : ne pas utiliser "bonjour" pour identifier un sommet, mais plutôt un naturel k et éventuellement une structure noms avec nom[k] = "bonjour" ;. 55.

(56) Concepts de base. Implémentation de graphes. Visualisation de graphes. Graphviz et dot Graphviz est une suite d’outils permettant de visualiser des graphes exprimés dans le langage dot. Le format est simple :. Exemple 6 graph G { # liste de sommets avec leurs propriétés 0; 1; 2; # ... # liste d'ar^ etes avec leurs propriétés 0 -- 1; 1 -- 2; 3 -- 7; # ... }. 56.

(57) Concepts de base. Implémentation de graphes. Visualisation de graphes. Visualisation Les graphes exprimés dans le langage dot peuvent être convertis en images en ligne (http://www.webgraphviz.com/) ou à l’aide d’un des outils suivants : • dot : dessine les graphes de manière hiérarchique, typiquement utilisé pour les graphes orientés (voir plus loin) ou les arbres. • neato : utilisé en général pour les graphes de taille raisonnable (moins de 100 sommets). • fdp : similaire à neato. • sfdp : plus adapté aux grands graphes. • twopi : dispose un sommet au centre, et les autres sur des cercles concentriques autour de ce centre. • circo : dispose les sommets du graphe sur un cercle. • osage : plus adapté aux graphes “en couches”..

(58) Concepts de base. Implémentation de graphes. Visualisation de graphes. Bibliographie. [1] László Babai. Graph isomorphism in quasipolynomial time [extended abstract]. In Daniel Wichs and Yishay Mansour, editors, Proceedings of the 48th Annual ACM SIGACT Symposium on Theory of Computing, STOC 2016, Cambridge, MA, USA, June 18-21, 2016, pages 684–697. ACM, 2016.. 58.

(59)

Références

Documents relatifs

L’arbre couvrant que calcule Prim est de poids minimum Procédons par induction sur |V T |, en montrant qu’à chaque étape, il existe un ACPM Topt contenant T... Plus

les parcours largeur, profondeur et les arbres associés ; le calcul des composantes connexes ; la détection de cycle ; la reconnaissance des graphes bipartis ;... Correction

• L’algorithme de Bellman-Ford recherche également des raccourcis entre les sommets ; • Le fonctionnement est différent de celui de Dijkstra, qui cherchait des chemins

Introduction Les bases La m´ ethode de Ford-Fulkerson Coupes minimum Complexit´ e de l’algorithme

• Dans le cas o` u le graphe n’est pas biparti, le probl` eme reste soluble en temps polynomial mais l’algorithme est beaucoup plus complexe [2] ;. • Et si l’on veut des

3 combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart. • L’efficacit´ e de cette approche d´ epend fortement des complexit´ es

Introduction Principes Probl` eme de d´ ecoupe Distance d’´ edition Reconstruction des solutions optimales.. R´ esum´ e des ´ episodes pr´

et donc, le poids d’une solution optimale pour tsp est au moins celui d’un ACPM, qu’on est capable de trouver en temps polynomial ;.. Introduction vertex cover