• Aucun résultat trouvé

Structures de données : graphes

N/A
N/A
Protected

Academic year: 2022

Partager "Structures de données : graphes"

Copied!
25
0
0

Texte intégral

(1)

Structures de données : graphes

Benjamin Monmege

Benjamin Monmege Structures de données : graphes 1 / 20

(2)

Exemples d’utilisation des graphes

Benjamin Monmege Structures de données : graphes 2 / 20

(3)

Réseau routier

Plan d’une ville

Benjamin Monmege Structures de données : graphes 3 / 20

(4)

Réseau routier : avec sens interdits

Plan d’une ville

Benjamin Monmege Structures de données : graphes 4 / 20

(5)

Internet

Internet

Benjamin Monmege Structures de données : graphes 5 / 20

(6)

Réseaux sociaux

Benjamin Monmege Structures de données : graphes 6 / 20

(7)

Jeux : graphe des configurations

Pourquoi faire un parcours de graphe ?

graphe des déplacements possibles :

recherche d’un chemin d’un sommet à un autre

Exercice 3

Ann´ ee universitaire 2017/2018

Site : ESPE Canebi`ere Sujet d’´ecrit blanc 1 — 1

er

semestre Dur´ee de l’´epreuve : 5h Calculatrices autoris´ees : Oui Documents autoris´es : Non

Cette ´epreuve est constitu´ee de deux probl`emes ind´ependants. Merci de rendre deux copies s´epar´ees, avec vos informations personnelles, pour faciliter la correction. Les probl`emes sont relativement longs pour permettre ` a chacun d’avancer `a son rythme : merci de ne pas passer plus de 2h30 sur chaque probl`eme, sauf `a avoir d´ej` a fini l’autre ! Vous serez ´evalu´e non seulement sur la correction de vos r´eponses, mais aussi sur leur concision.

La derni`ere page du sujet contient une annexe avec des rappels de code en Python.

Probl` eme 1 : Trafic routier

Ce sujet concerne la conception d’un logiciel d’´etude de trafic routier. On mod´elise le d´eplacement d’un ensemble de voitures sur des files ` a sens unique (voir Figure 1). C’est un sch´ema simple qui peut permettre de comprendre l’apparition d’embouteillages et de concevoir des solutions pour fluidifier le trafic.

Le sujet est compos´e de cinq parties relativement ind´ependantes : les parties II et IV utilisent des questions des parties pr´ec´edentes mais peuvent ˆetre trait´ees sans avoir r´epondu ` a ces derni`eres. En particulier, les parties III et V peuvent ˆetre trait´ees ind´ependamment du reste. Le sujet comporte des questions de programmation ` a traiter en Python.

� � � �

(a) Repr´esentation d’une file de longueur onze

comprenant quatre voitures, situ´ees respectivement sur les cases d’indices 0, 2, 3 et 10.

� � � �

(b) Configuration repr´esentant deux files de circulation ` a sens unique se croisant en une case. Les voitures sont

repr´esent´ees par des fl`eches encercl´ees.

Figure 1 – Files de circulation

graphe des états d’un système : recherche de « bug », c’est-à-dire

d’accessibilité

d’un état néfaste du système

Informatique et sciences du numérique

© Groupe Eyrolles, 2013

322

Les labyrinthes que l’on a parcourus sont des graphes non orientés, c’est-à-dire que la même arête relie le sommet A au sommet B et le sommet B au sommet A. Dans d’autres graphes, dits orientés, une arête relie soit A à B, soit B à A, et si on veut relier à la fois A à B et B à A, il faut utiliser deux arêtes. On aurait, par exemple, dû utiliser un graphe orienté, s’il y avait eu des sens uniques dans les labyrinthes dont on cher- chait la sortie. Les algorithmes étudiés précédemment s’étendent sans difficulté aux graphes orientés.

États et transitions

Beaucoup d’objets peuvent se modéliser comme des graphes, en particulier, toutes les situations qui peuvent se décrire à l’aide d’un ensemble d’états et d’un ensemble de transitions entre ces états. C’est le cas de nombreux jeux, comme le Solitaire ou le Tic- tac-toe. La figure ci-après représente un tout petit bout du graphe où le joueur bleu a deux choix pour placer un rond, l’un des deux le conduisant à perdre la partie.

Un état du plateau indique quelle pièce se trouve sur quelle case et les règles du jeu définissent des transitions possibles d’un état à un autre. On peut alors définir un graphe dont les sommets sont les états du plateau et les arêtes les coups possibles. Un simple parcours de graphe permet de trouver une solution au jeu du Solitaire, par exemple. Les règles des jeux à plusieurs joueurs, comme le Tic-tac-toe, les échecs ou le Monopoly, peuvent aussi se définir comme des transitions entre états. Comme il y a plusieurs joueurs, et parfois du hasard, trouver une stratégie pour ces jeux demande des algorithmes plus complexes qu’un simple parcours de graphes, mais ces algo- rithmes reposent sur des idées similaires.

graphe des configurations d’un jeu : recherche d’une stratégie gagnante

Morpion

décomposition en composantes connexes surfeur aléatoire sur le Web : utilisé

pour calculer le score Pagerank de popularité des pages sur Internet

Benjamin Monmege Structures de données : graphes 7 / 20

(8)

Graphe de dépendances

Benjamin Monmege Structures de données : graphes 8 / 20

(9)

Graphe de prérequis

Benjamin Monmege Structures de données : graphes 9 / 20

(10)

Définition d’un graphe

Benjamin Monmege Structures de données : graphes 10 / 20

(11)

Graphe orienté

Ungraphe orienté est la donnée : d’un ensemble S desommets

et d’un ensembleA d’arcs, chaque arc étant un couple (u,v) de deux sommets (possiblement les deux mêmes), parfois notéuv : u est la source de l’arc etv sa destination

Unchemin est une suite de sommets u0,u1, . . . ,uk (avec k ≥0) reliés par des arcs, c’est-à-dire telle queuiui+1 pour tout i ∈ {0, . . . ,k−1}.

Benjamin Monmege Structures de données : graphes 11 / 20

(12)

Graphe orienté

Ungraphe orienté est la donnée : d’un ensemble S desommets

et d’un ensembleA d’arcs, chaque arc étant un couple (u,v) de deux sommets (possiblement les deux mêmes), parfois notéuv : u est la source de l’arc etv sa destination

Unchemin est une suite de sommets u0,u1, . . . ,uk (avec k ≥0) reliés par des arcs, c’est-à-dire telle queuiui+1 pour tout i ∈ {0, . . . ,k−1}.

Benjamin Monmege Structures de données : graphes 11 / 20

(13)

Relation

Un graphe orienté permet de représenter unerelation entre des éléments d’un ensemble fini :

relation de parenté

relation d’amitié (pas forcément réciproque) relation d’ordre sur l’âge. . .

Benjamin Monmege Structures de données : graphes 12 / 20

(14)

Graphe non orienté

Si les flèches ne sont pas importantes pour modéliser le problème, on utilise plutôt un graphe non orienté:

il est composé d’un ensemble Ad’arêtes, chaque arête étant une paire {u,v}de deux sommets distincts.

On parle alors dechaîne plutôt que de chemin.

Benjamin Monmege Structures de données : graphes 13 / 20

(15)

Graphe non orienté

Si les flèches ne sont pas importantes pour modéliser le problème, on utilise plutôt un graphe non orienté:

il est composé d’un ensemble Ad’arêtes, chaque arête étant une paire {u,v}de deux sommets distincts.

On parle alors dechaîne plutôt que de chemin.

Benjamin Monmege Structures de données : graphes 13 / 20

(16)

Représentation d’un graphe

Benjamin Monmege Structures de données : graphes 14 / 20

(17)

Matrice d’adjacence

0

1

2

4 3

1

Codage d’un graphe

0

3

4 1

2

0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0

0 1 2 3 4

0

1 2

3 4

matrice

(tableau bidimensionnel) d’adjacence

Benjamin Monmege Structures de données : graphes 15 / 20

(18)

Liste de successeurs : dictionnaire Python

A

B

C

E D

1

{ ’A’ : [’B’],

’B’ : [’A’, ’E’, ’C’],

’C’ : [’E’],

’D’ : [’A’, ’C’, ’D’],

’E’ : [ ] }

<latexit sha1_base64="UH6WZu/IEL4jWvdEY0EvFdcob+g=">AAADqnicjVHJTsMwEJ0QllK2AkcuFhWUQ1WlgATiVFoqIXEBRFnUVChxDURkw3EQEPU7ER+ABH/B2IQlUBZHSWbevPfs8dih60TCMB60AX1waHgkN5ofG5+YnCpMzxxGQcwpa9HADfixbUXMdXzWEo5w2XHImeXZLjuyLxuyfnTNeOQE/oG4DVnHs85958yhlkDotPBoJmSRmILdCO4lpc1Sb4O039N6qdcpm2aekM+kepaEmvJHsZnJGn0NGlmDZl/S1m+7NDLZVl+D5qtBuWP2TgtFo2KoRb4H1TQoQrp2g8I9mNCFACjE4AEDHwTGLlgQ4dOGKhgQItaBBDGOkaPqDHqQR22MLIYMC9FL/J5j1k5RH3PpGSk1xV1cfDkqCSygJkAex1juRlQ9Vs4S/ck7UZ7ybLf4t1MvD1EBF4j+pXtj/lcnexFwBuuqBwd7ChUiu6OpS6xuRZ6cfOpKoEOImIy7WOcYU6V8u2eiNJHqXd6tpepPiilRmdOUG8OzPCUOuPp1nN+Dw+VKdaWyvLdarNXTUedgDuZhCee5BjXYhl1oAdV2tCvtTkv0sr6vn+jtV+qAlmpmIbP07gtF79mY</latexit>

Il existe aussi une représentation par liste de prédécesseurs: il faut choisir la meilleure des représentations selon le problème à résoudre sur les graphes. . .

Benjamin Monmege Structures de données : graphes 16 / 20

(19)

Liste de successeurs : dictionnaire Python

A

B

C

E D

1

{ ’A’ : [’B’],

’B’ : [’A’, ’E’, ’C’],

’C’ : [’E’],

’D’ : [’A’, ’C’, ’D’],

’E’ : [ ] }

<latexit sha1_base64="UH6WZu/IEL4jWvdEY0EvFdcob+g=">AAADqnicjVHJTsMwEJ0QllK2AkcuFhWUQ1WlgATiVFoqIXEBRFnUVChxDURkw3EQEPU7ER+ABH/B2IQlUBZHSWbevPfs8dih60TCMB60AX1waHgkN5ofG5+YnCpMzxxGQcwpa9HADfixbUXMdXzWEo5w2XHImeXZLjuyLxuyfnTNeOQE/oG4DVnHs85958yhlkDotPBoJmSRmILdCO4lpc1Sb4O039N6qdcpm2aekM+kepaEmvJHsZnJGn0NGlmDZl/S1m+7NDLZVl+D5qtBuWP2TgtFo2KoRb4H1TQoQrp2g8I9mNCFACjE4AEDHwTGLlgQ4dOGKhgQItaBBDGOkaPqDHqQR22MLIYMC9FL/J5j1k5RH3PpGSk1xV1cfDkqCSygJkAex1juRlQ9Vs4S/ck7UZ7ybLf4t1MvD1EBF4j+pXtj/lcnexFwBuuqBwd7ChUiu6OpS6xuRZ6cfOpKoEOImIy7WOcYU6V8u2eiNJHqXd6tpepPiilRmdOUG8OzPCUOuPp1nN+Dw+VKdaWyvLdarNXTUedgDuZhCee5BjXYhl1oAdV2tCvtTkv0sr6vn+jtV+qAlmpmIbP07gtF79mY</latexit>

Il existe aussi une représentation par liste de prédécesseurs: il faut choisir la meilleure des représentations selon le problème à résoudre sur les graphes. . .

Benjamin Monmege Structures de données : graphes 16 / 20

(20)

Arbre comme sous-graphe

Benjamin Monmege Structures de données : graphes 17 / 20

(21)

Connexité

Unecomposante connexe d’un graphe non orienté est un ensemble maximal de sommets tous reliés les uns aux autres par un chemin.

Un graphe peut se décomposer de manière unique en un ensemble de composantes connexes.

Un graphe est ditconnexe s’il ne possède qu’une unique composante connexe. Pas un arbre : pas connexe

2 1

6

4

3 5

Une notion similaire existe pour les graphes orientés : la forte connexité

Benjamin Monmege Structures de données : graphes 18 / 20

(22)

Connexité

Unecomposante connexe d’un graphe non orienté est un ensemble maximal de sommets tous reliés les uns aux autres par un chemin.

Un graphe peut se décomposer de manière unique en un ensemble de composantes connexes.

Un graphe est ditconnexe s’il ne possède qu’une unique composante connexe. Pas un arbre : pas connexe

2 1

6

4

3 5

Une notion similaire existe pour les graphes orientés : la forte connexité

Benjamin Monmege Structures de données : graphes 18 / 20

(23)

Acyclicité

Uncircuit dans un graphe non orienté est une chaîne partant et arrivant dans le même sommet. On parle decycle dans un graphe orienté.

Un graphe est ditacycliques’il ne possède aucun circuit/cycle.

Benjamin Monmege Structures de données : graphes 19 / 20

(24)

Caractérisation des arbres

Tout graphe connexe et acyclique est un arbre. . .

. . . au sens où on peut choisir n’importe quel sommet comme racine et obtenir un arbre d’arité non borné en considérant ses voisins, puis les voisins de ses voisins, etc.

Un arbre

2 1

4

3 6

5

Benjamin Monmege Structures de données : graphes 20 / 20

(25)

Caractérisation des arbres

Tout graphe connexe et acyclique est un arbre. . .

. . . au sens où on peut choisir n’importe quel sommet comme racine et obtenir un arbre d’arité non borné en considérant ses voisins, puis les voisins de ses voisins, etc.

Un arbre

2 1

4

3 6

5

Benjamin Monmege Structures de données : graphes 20 / 20

Références

Documents relatifs

On cherche à construire un arbre partiel (plus petit graphe connexe contenant tous les sommets) dont la somme des distances soit minimum parmi tous les arbres partiels du

En effet, la relation d'équivalence entre graphes est transitive; en outre, le passage du graphe direct au graphe équivalent hiérarchisé (première proposition), puis du

Le flux positif total sortant d’un sommet est défini symétriquement. Le flux net total en un sommet est égal au flux positif total sortant du sommet, moins le flux positif total

Sur une autre conjecture : considérons un graphe fortement connexe, on appelle À tout ensemble d'arcs dont la suppression entraîne la disparition des circuits du graphe : si

Théorème : U ensemble E n , ordonné par Vinclusion des parties connexes d'un n-graphe est un treillis si et seulement si les p éléments de tout cycle de longueur p forment un

Nous considérons maintenant un treillis orthocomplémenté L quelconque et caractérisons la classe de graphes connexes admettant L comme treillis de séparabilité.. Dans

De plus, le nouveau graphe possède le même nombre de sommets, une arête et une face en moins.. Pour démontrer la formule d'Euler dans le cas général, on peut raisonner par

Définition: Un sous-graphe d'un graphe G est un graphe G' composé de certains sommets du graphe G, ainsi que de toutes les arêtes qui relient