Académique Documents
Professionnel Documents
Culture Documents
GESTION D’AUTOROUTES
(1) Le graphe G = (X, E, v) correspondant au réseau autoroutier, où les sommets sont les villes et deux
villes sont reliées s’il existe une autoroute entre ces deux villes, est donné donc par sa matrice d’adjacence, où :
M(i, j) = v(i, j) = coût du trajet allant de i à j
Cette matrice est symétrique, le graphe est donc non orienté
Un graphe simple non orienté est dit planaire si et seulement s’il admet une représentation dans le plan, où
les sommets sont des points et les arêtes sont des segments de droite, telle que deux segments ne s’intersectent pas
(en dehors éventuellement de leurs extrémités lorsqu’ils sont adjacents). On parle alors de planarité. Pour quelques
résultats dans ce domaine très riche voir le poly
C D E
5 6
6 5 10
14
8 10
8
15 A 6 10 B 8
H 12 G 12 F
(2) Le problème consiste à calculer les itinéraires les plus économique à partir de la ville A, c’est donc
un problème de plus courts chemins d’un sommet vers tous les autres, le critère à minimiser est ici le coût
monétaire des chemins. Pour cela on peut appliquer l’algorithme de DIJKSTRA, il est applicable car toutes les
valuations sont positives
À chaque étape, le graphe est partitionné en trois sous-ensembles de sommets : les sommets visités, V,
sommets x pour lesquels on connaît définitivement la plus courte distance de A à x, les sommets atteints, A,
sommets non visités, voisins des précédents, pour lesquels on a une estimation de la distance, et les autres, c’est-à-
dire ceux de X – (V ∪ A), pour lesquels la distance est infinie
Initialement V contient A, A contient ses voisins, B, C, D, G et H, leurs distances estimées correspondent
aux valuations des arêtes correspondantes, soit 8, 6, 5, 6 et 15, et les autres sommets ont une distance infinie
L’étape courante de l’algorithme consiste simplement à prendre dans A un des sommets x dont la distance
estimée est la plus petite, ce sommet devient visité, ses voisins non visités ni atteints deviennent atteints. Leurs
distances estimées est celle de x plus la valuation de l’arête et ses voisins déjà atteints peuvent voir leurs distances
estimées diminuer et leurs prédécesseurs changer, voir suite
L’algorithme se termine quand tous les sommets sont visités
1
Etape initiale : V = {A}, d(A) = 0, A = {B, C, D, G, H} (ce sont les voisins de A) avec d(B) = 8, d(C) = 6, d(D) =
5, d(G) = 6 et d(H) = 15 et p(B) = d(C) = p(D) = p(G) = p(H) = A, tous les autres sommets ont une distance infinie et
leurs prédécesseurs sont à 0
Première étape : D est choisi donc V = {A, D} et sa distance (définitive) est d(D) = 5, A = {B, C, E, G, H}, d(B)
= 8, d(C) = 6, d(E) = 11, d(G) = 6 et d(H) = 15, p(B) = p(C) = p(G) = p(H) = A et p(E) = D, les autres sommets ont
un distance infinie et sont sans prédécesseur. Dans la suite, nous ne mentionnerons plus ces sommets, seuls seront
mentionnés les sommets de V et A
Deuxième étape : C est choisi, G aurait pu être choisi à sa place, donc V = {A, C, D} et sa distance est d(C) = 6,
d’où A = {B, E, G, H}, d(B) = 8, d(E) = 11, d(G) = 6 et d(H) = 14, p(B) = p(G) = A, p(E) = D et p(H) = C
Troisième étape : G est choisi donc V = {A, C, D, G} et sa distance est d(G) = 6, d’où A = {B, E, F, H}, d(B) = 8,
d(E) = 11, d(F) = 18 et d(H) = 14, p(B) = A, p(E) = D, p(F) = G et p(H) = C
Quatrième étape : B est choisi, on aurait pu choisir C, donc V = {A, B, C, D, G} et sa distance est d(B) = 8, d’où
A = {E, F, H}, d(E) = 11, d(F) = 16 et d(H) = 14, p(E) = D, p(F) = B et p(H) = C
Cinquième étape : E est choisi donc V = {A, B, C, D, E, G} et sa distance est d(E) = 11, d’où A = {F, H}, d(F) =
16 et d(H) = 14, p(F) = B et p(H) = C
Sixième étape : H est choisi, donc V = {A, B, C, D, E, G, H} et sa distance est d(H) = 14, d’où A = {F}, d(F) = 16
et p(F) = B
Septième et dernière étape (car à l’issue de cette étape tous les sommets sont visités) : F est choisi donc V = {A, B,
C, D, E, F, G, H} sa distance est d(F) = 16 et p(F) = B
On peut aussi représenter, de façon assez pertinente, les différentes étapes par un tableau :
B C D E F G H
V = {A} 8, A 6, A 5, A ∞ ∞ 6, A 15, A
V = {A, D} 8, A 6, A - 11, D ∞ 6, A 15, A
V = {A, C, D} 8, A - - 11, D ∞ 6, A 14, C
V = {A, C, D, G} 8, A - - 11, D 18, G - 14, C
V = {A, B, C, D, G} - - - 11, D 16, B - 14, C
V = {A, B, C, D, E, G} - - - - 16, B - 14, C
V = {A, B, C, D, E, G, H} - - - - 16, B - -
V = {A, B, C, D, E, F, G, 8, A 6, A 5, A 11, D 16, B 6, A 14, C
H}
La première colonne contient l’évolution de l’ensemble des sommets visités. Dans chaque case figurent la
distance de A au sommet concerné (qu’elle soit finie ou infinie) et le précédent, quand il existe (soit de façon
définitive soit relativement à la distance estimée) dans le plus court chemin de A à ce sommet. Lorsque qu’un couple
(distance, précédent) est définitif il est affiché en gras
2
Le graphe partiel correspondant aux plus courts chemins est obtenu en utilisant le tableau des
prédécesseurs, cela donne le graphe suivant :
6
6 5
8
8
A(0) 6 B (8) 8
(3) Si l’agence envisage de s’installer en B, quels sont alors les meilleurs itinéraires aux autres villes ?
Il n’est pas nécessaire de tout recalculer : entre A et B le plus court chemin est (A, B), et comme le plus
court chemin de A à F est (A, B, F) alors le plus courts chemins de B à F est (B, F), d’après le principe d’optimalité
Il reste donc à calculer les plus courts chemins de B à C, D, E, G et H
En appliquant l’algorithme de DIJKSTRA à partir de B, nous obtenons facilement les plus courts chemins
(B, D), (B, G) et (B, E), qui sont adjacents à B, puis (B, A, C) et (B, G, H), ou (B, A, C, H)
6 10 14
8
8
A (8) B (0) 8
10
Il s’agit maintenant de comparer les itinéraires obtenus d’une part à partir de A et d’autre part à partir de B
Si l’on est en A, le coût moyen d’un itinéraire pour aller à l’une des autres villes est égal à 66 / 7, alors qu’à
partir de B, le coût moyen est de 86 / 7. Pour les « touristes », il est plus économique de rester en A, pour l ‘agence il
est sans doute plus « rentable » de s’installer en B
3
(4) Il faut construire un graphe partiel du réseau autoroutier, autrement dit un graphe obtenu à partir du
graphe de départ en supprimant certaines arêtes, qui permette d’atteindre toute ville à partir de toute autre ville et qui
soit à la fois minimal en nombre de liaisons et le plus rentable possible pour la société gérant le réseau. La structure
cherchée correspond donc à un Arbre Recouvrant, car connexe et minimal en nombre d’arêtes. Il faut aussi que
celui-ci soit de rentabilité maximale, il correspond donc un Arbre Recouvrant de coût Maximal
Rappelons quelques propriétés caractérisant les Arbres, c’est-à-dire les graphes simples non orientés
connexes et sans cycle (voir les polycopiés « Graphes » et « Arbre Recouvrant Minimal ») :
Théorème
Si G = (X, E) est un graphe simple non orienté ayant au moins deux sommets alors les propriétés suivantes
sont équivalentes :
Précisons que l’ajout (resp. la suppression) d’une arête entre deux sommets x et y consiste uniquement à
rajouter (resp. supprimer) la liaison entre ces sommets (pas de sommet ajouté ni supprimé)
(a) ⇒ (b)
Par récurrence sur n
C’est vrai si n = 2, 3, …
Supposons la propriété vraie jusqu’à n – 1 (n ≥ 3). Soit G un graphe connexe sans cycle, alors G a au moins
un sommet pendant, x. Donc G – x est connexe et sans cycle, et a donc (hypothèse de récurrence) n – 2 arêtes. G a
donc n – 1 arêtes
(b) ⇒ (c)
Si G n’est pas connexe soient G1, G2, … et Gk ses composantes connexes, elles sont connexes et sans cycle,
donc, d’après (a) ⇒ (b), mi = ni – 1 pour chacune d’entre elles. D’où :
k k
n "1 = m = # mi = # ( ni " 1 ) = n " k
i=1 i=1
(c) ⇒ (d)
!
G est sans cycle sinon par suppressions successives d’arêtes on crée un graphe partiel G’ de qui est connexe
(trivialement la suppression de n’importe quelle arête d’un cycle ne déconnecte pas le graphe) et sans cycle ayant m’
< n – 1 arêtes, ce qui est impossible d’après (a) ⇒ (b)
Si l’ajout d’une arête ne crée pas de cycle, on obtient un graphe connexe sans cycle ayant n arêtes, ce qui est
impossible d’après (a) ⇒ (b), ce cycle créé est nécessairement unique sinon il en existait déjà un dans G, impossible
4
(d) ⇒ (e)
G est connexe car si l’ajout d’une arête quelconque xy crée un cycle cela signifie que x et y était déjà
connectés dans G. De même si la suppression d’une arête xy ne déconnecte pas G c’est qu’il existe une chaîne C
reliant x à y dans G – xy, donc C + xy est un cycle de G : impossible par hypothèse
(e) ⇒ (f)
Soient x et y deux sommets quelconques de G. S’il existe deux chaînes distinctes reliant x et y dans G elles
diffèrent au moins par un sommet donc par deux arêtes, la suppression de l’une d’entre elles ne déconnecte donc pas
G
(f) ⇒ (a)
Par hypothèse G est connexe et s’il G contenait un cycle il existerait deux chaînes distinctes reliant deux
sommets de G
Dans notre exemple, nous pouvons prendre par exemple vM = 20, d’où le graphe G’ :
C D E
15 12
14 15 10
6
12 10
12
5 A 14 10 B 12
8 8
H G F
Soit!A0 l’Arbre Recouvrant Minimal trouvé avec v’ et A, un arbre recouvrant quelconque de G, alors :
Donc : v(A0) ≥ v(A), ce qui démontre que l’arbre trouvé, A0, est bien un Arbre Recouvrant Maximal
5
L’algorithme de KRUSKAL considère les arêtes de G’ dans l’ordre croissant des coûts, donc dans l’ordre :
AH, BE, FG, GH, BD, BG, EF, AB, BF, CH, DE, AC, AG et AD, en prenant, à coût égal, l’ordre lexicographique
Une arête n’est retenue que si elle ne forme pas de cycle avec celles déjà retenues. L’algorithme se termine
dès que n – 1 arêtes sont obtenues
Les arêtes retenues sont donc : AH, BE, FG, GH, BD, BG et CH. Les arêtes EF, AB et BF sont rejetées car
elles forment respectivement les cycles (B, E, F, G, B), (A, B, G, H, A) et (B, F, G, B)
Remarquons que EF aurait pu être choisie à la place de BG
L’algorithme de PRIM, partant d’un sommet initial, construit l’arbre par voisinage en stockant, à chaque
étape, l’arête de coût minimal reliant l’arbre en construction avec le reste du graphe. Il se termine lorsque tous les
sommets sont atteints
Dans notre cas, en partant du sommet A, nous obtenons successivement les arêtes AH, HG, GF, GB, BE,
BD et HC. Remarquons, là aussi, qu’au lieu de GB, on aurait pu choisir FE, de même coût, 10
Question : appliquer à nouveau l’algorithme en partant d’un autre sommet que A
C D E
10
12 6 10
5 A 10 B
H 8 G 8 F
Il y a donc deux solutions possibles : soit avec BG, soit avec EF (arêtes en pointillé)
L’Arbre Recouvrant Maximal cherché est donc l’un des deux arbres possibles, de coût 81 :
C D E
10
8 14 10
15 A 10 B
H 12 G 12 F
Nous pouvons remarquer que l’algorithme obtenu correspond tout simplement à appliquer l’algorithme de
KRUSKAL, ou de PRIM, sur le graphe initial en prenant à chaque étape l’arête de plus grand coût parmi les arêtes
possibles
Remarquons aussi que l’on aurait pu prendre des valuations de signe opposé, c’est-à-dire v’ = - v
6
(5) Si la liaison AD n’est plus utilisable alors, pour la question (2), seuls les plus courts chemins de A à D
et E sont concernés, ce sont en effet les seuls utilisant l’arête AD. Il faut alors reprendre l’algorithme de
DIJKSTRA à partir de A et recalculer ces chemins. Nous trouvons facilement (A, C, D), de longueur 11, pour D et
(A, C, D, E), de longueur 17, pour E. D’où le nouveau graphe partiel des plus courts chemins :
6
8
8
A (0) B (8)
6 8
Pour la question (3), le graphe partiel des plus courts chemins partant de B reste le même car l’arête AD
n’est pas utilisée
Enfin, aucun des deux Arbres Recouvrants Maximaux solutions n’utilisent l’arête AD, ils restent donc les
mêmes eux aussi
Pour la question (2), si la liaison AB n’est pas utilisable alors les plus courts chemins à modifier seront
uniquement ceux de A à B et F, car ce sont les seuls à utiliser AB. Nous obtenons facilement :
6
6 5 10
A(0) 6 B (15)
7
Pour la question (3), il faut calculer à nouveau les plus courts chemins de B à A et C, nous obtenons :
5 10 14
A (15) B (0) 8
10
Enfin, aucun des deux Arbres Recouvrants Maximaux solutions n’utilisent l’arête AB, ils restent donc les
mêmes
Si AH n’est pas utilisable, les solutions restent les mêmes pour (2) et (3) car AH n’y apparaît pas. Par
contre, pour la question (4), le sommet A se retrouve isolé, il suffit alors de le relier au reste du graphe par l’arête
AB qui est l’arête de coût minimal dans G’, c’est-à-dire de coût maximal dans G, adjacente à A