0% ont trouvé ce document utile (0 vote)
217 vues38 pages

Ro03 TD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 38

Travaux Dirigs

96

97

RO03

TD N1

Exercice 1 :
Soit le graphe
B
A
D
C

1) Enumrer: U(A), U(B), U-(C),U+(D).


2) Calculer: d+(C), d-(C), d(C).
3) Rapporter un chemin simple mais pas lmentaire.
4) Rapporter un circuit Hamiltonien.
Exercice 2 :
On considre le graphe G=(X,U) ci-dessous. Rapporter des chanes de B G de longueur 7, 8, 9, 10
et 11. Dterminer ses composantes connexes, ses composantes fortement connexes ainsi que le
graphe rduit.
K
J

I
D
B

Q
P
O

Exercice 3 :
Montrer le lemme de KOENIG : on peut toujours extraire dun chemin allant de i j un chemin
lmentaire allant de i j. Gnraliser une chane.
Exercice 4 :
Quelles mthodes proposez-vous pour coder un graphe en machine ?

98

Exercice 5
On propose deux mthodes pour coder un graphe G=(X,U) en machine : la matrice dadjacence A
et la file des successeurs de tableaux ALPHA1, ALPHA2 et BETA. La matrice associe est dfinie
par A=(aij) avec aij=1 si larc (i,j) appartient U et aij =0, sinon. La file des successeurs BETA est
le tableau des successeurs, les successeurs du sommet I se trouvant entre les adresses ALPHA1(I)
et ALPHA2(I) dans le tableau BETA, (en cours on avait un seul tableau ALPHA).
Rapporter les tableaux A, ALPHA1, ALPHA2 et BETA pour le graphe ci-dessous.
1

3
5

Ecrire un algorithme permettant de passer de la file des successeurs la matrice associe. Quelle
est la complexit de cet algorithme?
Ecrire un algorithme permettant de passer de la matrice associe la file des successeurs. Quelle
est la complexit de cet algorithme ?
remarque:
On a en fait deux matrices associes car les valeurs peuvent tre entires ou boolennes.
Exercice 6 :
Donner le nombre d'artes d'un graphe non orient complet de n sommets.
Exercice 7 :
Expliquer pourquoi si G=(X,E) est un graphe non orient sans boucle, la somme des degrs est
gale deux fois le nombre dartes du graphe.

99

Correction exercice 5 :

{ file des successeurs vers matrice dadjacence }


for i := 1 to N do
for j := 1 to N do
A[i,j] := 0;
for i := 1 to N do
begin
j1 := ALPHA1[i];
j2 := ALPHA2[i];
if ( j1 <> 0 ) then
begin
for j := j1 to j2 do
A[i, BETA[j]] := 1;
end;
end;
{ matrice dadjacence vers file des successeurs }
indi := 1;
for i :=1 to N do
begin
j1 := 0;
j2 := 0;
for j := 1to N do
if A[i,j] = 1 then
begin
if j1 = 0 then j1 := indi;
BETA[indi] := j;
j2 := indi;
indi := indi + 1;
end;
ALPHA1[i] := j1;
ALPHA2[i] := j2;
end;

100

101

RO03

TD N2

Fermeture transitive d'un graphe G=(X,U) orient et composantes fortement


connexes.
On considre le graphe suivant :
A
B
K

C
J

D
I

E
H
F

Dfinition 1 : Soit i un sommet de G. On appelle fermeture transitive directe de i, l'ensemble des


sommets j de G tels que : (i=j) ou (il existe un chemin de i j), j est alors un descendant de i.
Question 0 : rapporter la matrice associe ce graphe.
Question 1: dtermination des successeurs dun sommet
On note (xi) lensemble des successeurs du sommet xi. Ecrire les successeurs des sommets du
graphe ci-dessus.
Quelle est la complexit de la recherche des successeurs dun sommet si le graphe est cod par la
matrice associ ?
Question 2 : calcul des descendants dun sommet
)
On note (i ) lensemble des descendants de i (i est considr comme descendant d'ordre 0 de lui
mme), et k(i)= (k-1(i)) lensemble des successeurs de i de lordre k.
102

)
Montrer que : (i) = {i} + (i)+ 2(i) +3(i)+...+ n-1(i).
On suppose que le graphe est cod par la matrice associ. Ecrire les descendants du sommet A du
graphe ci-dessus ?
Quelle est la complexit, en utilisant cette mthode, de la recherche des descendants dun sommet
si le graphe est cod par la matrice associ ?
Question 3 : calcul des descendants dun sommet
Soit j un descendant de i. On dit que j est distance k de i si k est la longueur du plus court chemin
entre i et j, on va dire que j appartient Dk(i).
)
Montrer que : (i ) = {i} + D1(i)+ D2(i) + + Dk(i) +...+ Dn-1(i).
Quelle est la complexit, en utilisant cette mthode, de la recherche des descendants dun sommet
si le graphe est cod par la matrice associ ?
Dfinition 2 : On appelle fermeture transitive inverse de i, l'ensemble des sommets j de G tels que
(i=j) ou (il existe un chemin de j i) j est alors un ascendant de i.
Question 4 : Dtermination des prdcesseurs dun sommet
On note 1(i) lensemble des prdcesseurs du sommet xi.
Ecrire les prdcesseurs des sommets du graphe ci-dessus.
Question 5 : Dtermination des ascendants dun sommet
Proposer une mthode analogue la prcdente pour calculer les ascendants dun sommet i. Quelle
est sa complexit ?
Question 6 :
Que reprsente lensemble des sommets qui sont la fois descendants et ascendants du sommet i ?
Question 7 :
Proposer un algorithme bas sur les questions prcdentes pour chercher lensemble des
composantes fortement connexes dun graphe. Quelle est sa complexit (cette mthode sappelle la
mthode de MALGRANGE) ? Appliquer cette mthode lexemple prcdent en utilisant la
matrice crite. On distinguera, en appliquant lalgorithme, les descendants (resp. ascendants)
dordre 1, dordre 2, ... etc.
Question 8 :
Dessiner le graphe rduit, le graphe initial est-il planaire ?
103

ROO3

TD N3

Exercice 1 :

Soit un train lectrique dont le circuit est le suivant :


A

D
+

+
B

Chaque aiguillage a 2 ou 3 positions. On a remarqu qu'au bout d'un certain temps, quel que soit
l'tat initial, le tronon E n'est jamais emprunt par le train. Expliquer cela l'aide d'un graphe 10
sommets .
Exercice 2 :

Soit G = (X,U) , un graphe orient et B la matrice d'adjacence sommet-sommet


associe G. On prendra comme exemple le graphe suivant :
1

2.0 : Calculer B, B2, B3, B4, (I+B), (I+B)2, (I+B)3, (I+B)4, pour lexemple ci-dessus, o la
matrice B est boolenne (on utilisera les oprations boolennes).
2.1 : Si Bk est le produit matriciel Boolen de B par B, montrer que:
{Bk}ij = 1 s'il existe un chemin de k arcs entre i et j et 0 sinon.
2.2 : On dfinit de mme Bk la puissance kme matricielle Boolenne de B et l'on pose :
)
B k = I + B + B2 +.......+ Bk .
Montrer que :
)
{ B k}ij = 1 s'il existe un chemin de k arcs au plus entre i et j et 0 sinon.
)
)
Montrer que l'on peut dfinir B = lim B k pour k tend vers .
)
2.3 : On pose de mme C k = I + C + C2 +.......+ Ck o C = BT. Montrer que la
)
limite C existe et que :
)
{ C }ij = 1 s'il existe un chemin entre j et i et 0 sinon.

2.4 : Dduire de ce qui prcde une mthode pour dcomposer G en composantes fortement
connexes. Evaluer la complexit de cette mthode.
2.5 : Proposer une mthode pour chercher les composantes connexes du graphe.

104

2.6 : On se propose d'amliorer cette mthode.


Dmontrer l'identit (I+B)k = I + B + B2 +.......+ Bk .
)
Montrer que la suite {B(1) = I+B , B(k)=(B(k-1))2 pour k>1} converge vers B
en un nombre fini d'tapes que l'on valuera.
En dduire un meilleur algorithme que celui obtenu en 2.4. On en prcisera l'ordre.
2.7 : Que se passe-t-il si l'on remplace le produit Boolen par le produit usuel ?

Exercice 3 :
Un graphe dont tous les sommets sont de mme degr est dit rgulier. Quelles sont les graphes non
orients rguliers de degr 1 ? de degr 2 ?

Exercice 4 : Combien y a-t-il des graphes orients quatre sommets ?

105

RO03

TD n4

Problme Graphe Biparti et bicoloration:


On rappelle quun graphe G=(X,U) est biparti si toutes ses artes ont une extrmit dans un sousensemble X1 et lautre extrmit dans X-X1. Lalgorithme BIPAR(G) a pour objet de tester si un
graphe G connexe est biparti.
Algorithme BIPAR(G) :
{-1- Initialisations}
Lire un graphe connexe G=(X,U); {initialement aucun sommet nest color}
colorer le sommet 1 en rouge;
initialiser le boolen BIPARTI VRAI.

{-2- Examen des sommets colors}


Tant quil existe un sommet i color et non examin faire
Dbut
Si i est rouge alors
pour chaque voisin j de i faire
Dbut
si j est rouge alors BIPARTI=FAUX
si j est non color alors colorer j en vert
Fin
sinon { i est vert alors }
pour chaque voisin j de i faire
Dbut
si j est vert alors BIPARTI=FAUX
si j est non color alors colorer j en rouge
Fin
Fin
{-3- Sortie de lalgorithme}
Si BIPARTI = VRAI alors crire G est biparti, sinon crire G nest pas biparti..
3
6

2
2
1

G1

G2

Question 1: Faire tourner lalgorithme sur les graphes G1 et G2. On rapportera les couleurs pour
chaque itration de la boucle.
Question 2: On code le graphe G=(X,U) par la matrice A associe, cest--dire si (i,j) est une arte
du graphe alors aij = aji =1 , sinon aij =0.
106

(a) Quels tableaux supplmentaires sont-ils ncessaires pour BIPAR(G) ?


(b) Quelle est la complexit rsultante de lalgorithme ? Justifier.
Question 3: Proposer de faon explicite une meilleure structure de donnes. Que devient la
complexit? Justifier.
Question 4: (Cette question est indpendante de lalgorithme)
Montrer quun graphe est biparti si et seulement s'il est bicolorable.
Question 5: (Cette question est indpendante de lalgorithme)
Montrer quun graphe biparti ne contient pas de cycle de longueur impaire.
Question 6: Quelles sont les proprits des sommets colors en rouge et en vert au cours de
lalgorithme? Justifier. O intervient la connexit ?
Question 7: Montrer la validit de lalgorithme. En dduire la rciproque de la question 5 dans le
cas connexe.
Question 8: Comment proposez-vous de modifier lalgorithme pour tester si un graphe quelconque,
cest--dire non ncessairement connexe est biparti?
Question 9: Le problme de coloration minimale dun graphe quelconque est NP-difficile. Existe-il
un algorithme de complexit polynomiale permettant de le rsoudre ?
Exercice 1 :
Montrez quun graphe est un arbre si et seulement si il existe une chane lmentaire et une seule
entre toutes paires de sommets.
Exercice 2 :
Soit G un graphe non orient n sommets et m artes. Les artes de G sont notes u1, u2 .. um. Gi=
(V, Ei), est le graphe form des artes u1, u2 .. ui. On pose G0= (V, ).
Question 1. Quel est le nombre de composantes connexes de G0.
Question 2. On note C(Gi) le nombre de composantes connexes de Gi. Montrer que
C(Gi) = C(Gi-1) ou C(Gi) = C(Gi-1) 1.
Question 3. Interprter le cas C(Gi) = C(Gi-1), puis le cas C(Gi) = C(Gi-1) 1.
Question 4. Montrer quun graphe connexe a au moins n-1 artes.
Question 5. Montrer quun graphe sans cycle a au plus n-1 artes.

107

RO03

TD N 5

Recherche en profondeur dabord dans un graphe


Lalgorithme ci-dessous permet de dterminer avec une faible complexit les descendants dun
sommet i0. Initialement n(i) est le nombre de successeurs de i. On initialise galement p(i)=0 pour i
diffrent de i0 et p(i0)=i0.
Au cours de lexploration, on associe chaque sommet i, un nombre p(i) [0,n] et on dit que le
sommet i est atteint quand p(i) est strictement positif (p(i) est alors le sommet ayant permis
datteindre le sommet i) et que le sommet i est non atteint si p(i) est nul.
Un sommet atteint se trouvera, par convention, dans lun des deux tats suivants : ouvert, quand
n(i) est strictement positif, et ferm quand n(i) est nul.
Algorithme :
Dbut
Pour i =1 n faire {les sommets sont numrots de 1 n.}
Dbut
p(i) := 0;
n(i) := d+(i);
Fin
p(i0) := i0;
i := i0;
Tant que (n(i0) + ABS(i-i0)) > 0 faire /*ABS(x) est la valeur absolue de x */
Dbut
Si n(i) diffrent de 0 alors {le sommet i est ouvert}
Dbut
Slectionner parmi les successeurs de i le sommet j venant en position n(i)
n(i) := n(i)-1;
Si p(j)=0 alors
Dbut
p(j) := i;
i := j;
Fin
Fin
sinon {le sommet i est ferm}
i := p(i)
Fin
Fin

Premire partie: tude de lalgorithme


Question 1 : On admettra provisoirement que la restriction de la fonction p X-i0-{i/p(i)=0} dfinit
une arborescence de racine i0 tout instant de lalgorithme.
On demande de faire tourner lalgorithme sur le graphe ci-dessous en traant autant
darborescences obtenues en cours dalgorithme que dexcutions de la boucle tant que avec les
conventions suivantes :
- initialement, larborescence est rduite sa racine ;
- quand on slectionne un sommet j avec p(j)=0, on ajoute larc "plein" (i,j) larborescence;
- quand on ferme le sommet i, on met en pointill ou en rouge larc (p(i),i).
108

6
1

=1

5
7

Question 2 : Expliquer intuitivement ce que l'on fait dans la boucle Tant Que. Interprter le test :
(n(i0) + ABS(i-i0)) > 0.
Question 3
A quoi correspondent dans la boucle Tant que les cas :
-n(i) diffrent de 0 ?
-n(i) gal 0 ?
Question 4
Combien de fois excute-t-on la boucle Tant que pour l'exemple ci-dessus ?
Deuxime partie : preuve de lalgorithme.
Question 1: Montrer quen cours dalgorithme on construit une arborescence de racine i0.
Question 2: Montrer que la restriction de cette arborescence aux arcs pleins est une arborescence,
rduite un chemin, dont i est le sommet pendant (cette arborescence est dite arborescence
courante).
Question 3:

A quelle condition un sommet est-il retir de larborescence courante ?

Question 4:

Que devient larborescence courante la fin de lalgorithme ?

Question 5:

Montrer que tout sommet atteint est descendant de i0.

Question 6:

Montrer que l'algorithme se termine.

Question 7:

Montrer que tout sommet descendant de i0 est atteint la fin de lalgorithme.

Question 8 :

Montrer que lalgorithme dtermine les descendants de i0.

Troisime partie : complexit de lalgorithme


Question 1: Quel codage du graphe proposez-vous?
Question 2: Evaluer la complexit globale de lalgorithme en justifiant votre rponse.
Quatrime partie:

extensions.

On a donc dmontr que cet algorithme permet de dterminer les descendants dun sommet i0.
Quelle mthode proposez-vous pour dterminer les composantes connexes dun graphe? Ecrire un
tel algorithme utilisant comme sous-programme lalgorithme prcdent. Evaluer sa complexit.

109

ROO3

TD N6

Exercice 1 : Dterminer une chane eulrienne dans le graphe suivant :

Exercice 2 : Mthode arborescente :


Cinq personnes de nationalits diffrentes habitent les cinq premires maisons d'une rue, toutes sur
le mme trottoir (numrotes de 1 5).
Elles exercent cinq professions diffrentes et ont chacune une boisson et un animal favori tous
diffrents. Les cinq habitations sont de cinq couleurs diffrentes.
1 : L'anglais habite la maison rouge.
2 : L'espagnol possde un chien.
3 : Le japonais est peintre.
4 : L'italien boit du th.
5 : Le norvgien habite la premire maison gauche.
6 : Le propritaire de la maison verte boit du caf.
7 : Cette maison verte est immdiatement droite de la blanche.
8 : Le sculpteur lve des escargots.
9 : Le diplomate habite la maison jaune.
10 : On boit du lait dans la maison du milieu.
11 : Le norvgien habite cot de la maison bleue.
12 : Le violoniste boit des jus de fruits.
13 : Le renard est dans une maison voisine du mdecin.
14 : Le cheval, ct de celle du diplomate.

Qui lve le zbre et qui boit de l'eau ?


(Attribu Lewis Carrol)
Exercice 3 :
Rsoudre le problme de dcodage suivant :
FORTY
+
TEN
+
TEN
____________
SI XTY

110

111

ROO3

TD N7

Exercice1: On se propose de rsoudre le problme de dcodage suivant :


S E N D
+ M O R E
____________
M O N E Y
Sachant que les lettres reprsentent des chiffres distincts compris entre 0 et 9, et que M et S ne sont
pas nuls, donner la solution l'aide d'une arborescence et montrer son unicit.

Exercice 2: Mthode de Little :( extrait de ROSEAUX)


Un reprsentant de commerce doit se rendre de la ville A o il rside dans quatre autres villes pour
visiter les magasins clients de la marque quil reprsente. Il dsire passer une et une seule demijourne chez chacun de ses clients et revenir sa ville de dpart A. La dure du trajet entre deux
villes I et J est mesure en demi-journes et dpend de la circulation routire dans le sens IJ et JI.
Le tableau donnant ces dures nest donc pas symtrique.
A B C D E
T = (tij) =

Sachant que ce reprsentant ne travaille ni ne circule le dimanche et quil part le premier du mois
(un mercredi), quel jour au plus tt sera-t-il de retour en A?

112

113

ROO3

TD N8

PROBLEME: tude du noyau dun graphe orient.


Dfinition:
Un sous-ensemble K de lensemble X des sommets dun graphe
orient G=(X,U) est dit noyau de G si:
1. K est un stable de G, c'est dire : aucun couple de sommets de K
nest li par un arc.
2. tout sommet lextrieur de K est extrmit initiale dun arc dont
lextrmit terminale est dans K
Discussion:
Certains graphes nont pas de noyau. Dautres graphes ont plusieurs noyaux. Le but principal de ce
problme est de montrer quun graphe sans circuit a exactement un noyau et dutiliser cette notion
pour tudier des jeux.
Question 0 : proprit caractristique
Montrer que K est un noyau si et seulement si :
- tout sommet dans K a ses successeurs en dehors de K,
- tout sommet en dehors de K a au moins un de ses successeurs dans K.
Question 1: pour se familiariser avec la notion de noyau.
Dterminer tous les noyaux (sil en existe) des graphes G1, G2 et G3.
2

3
G1

G3

G2

Question 2: tude thorique des graphes sans circuit.


On se propose de montrer quun graphe sans circuit a exactement un noyau. Pour cela, on tudie
lalgorithme NOYAU.
NOYAU
DEBUT
Lire G=(X,U) un graphe orient sans circuit;
Initialement aucun sommet nest color;
Numroter les sommets de G selon une numrotation inverse: si (i,j) U, alors i est strictement plus
grand que j (en particulier, le sommet 1 est un sommet sans successeur);
Colorer en rouge le sommet 1;
Pour I:=2,N faire
DEBUT
Si un des successeurs de I est rouge, colorer I en vert

114

Sinon colorer I en rouge


FIN
Le noyau est lensemble des sommets rouges
FIN

A) Faire tourner lalgorithme sur les graphes G4 et G5 ci-dessous.


On rapportera les couleurs finales.
C

G4

D
g

G5
b
a

f
d

B) Montrer quen cours dalgorithme :


-tout sommet vert a au moins un successeur rouge ;
-tout sommet rouge na pas de successeur rouge.
En dduire que les sommets rouges forment un noyau de G.
C) Montrer que l'algorithme se termine et qu'alors tous les sommets sont colors.
D) Montrer lunicit du noyau.
E) Donner les tableaux principaux qui permettent de coder le plus efficacement cette procdure.
On justifiera succinctement et on rapportera la complexit rsultante de lalgorithme.
Question 3: application aux jeux
Dans le jeu de NIM, on a deux piles de jetons, chacun des joueurs joue chacun son tour et prend
nimporte quel nombre de jetons de lune des deux piles. Le joueur qui prend le dernier bton
gagne, lautre perd. Le jeu complet est dcrit par un graphe orient dont les sommets
correspondent ltat du jeu et les arcs aux coups des joueurs. Ici chaque tat du jeu est dcrit
par une paire dentiers (x,y) qui indique le nombre de jetons dans la premire pile et la deuxime
pile, respectivement.
Par exemple, si ltat initial de la pile est (2,2), le graphe du jeu est le suivant:

115

2,1

0,1

2,0
1,1

2,2

0,0

0,2

1,2

1,0

La question importante pour ce jeu est: quand un joueur est-il certain de gagner et comment doit-il
jouer?
Nous allons dabord tenter de rpondre cette question pour des piles de taille initiale 2, puis on
gnralisera.
Une position sera dite gagnante si le joueur venant datteindre cette position gagne quelle que soit
la faon de jouer de son adversaire sous rserve que lui-mme joue bien dans la suite du jeu (cest
donc son adversaire de jouer).
Une position sera dite perdante si le joueur ayant atteint cette position va perdre si son adversaire
joue bien.
A) Quelles sont les positions gagnantes pour le cas particulier? Quelles sont les positions
perdantes? Si B commence, qui va gagner?
B) Pour un jeu de NIM en position de dpart (k1,k2) et si B commence jouer, quelle condition
sur k1 et k2, A va-t-il gagner ? Formuler en franais une stratgie gagnante. Que pouvez-vous dire
si on gnralise trois piles ?
C) Le jeu de NIM est un jeu deux joueurs, sans hasard, avec information parfaite (chacun des
joueurs connait avant de jouer ltat du jeu), espace dtats fini et dont le graphe dtats associ
est sans circuit. Montrer, de faon gnrale, que si le graphe dtats dun jeu deux joueurs est sans
circuit, fini, et a un seul tat final gagnant pour celui qui l'atteint, et si les deux joueurs jouent
parfaitement, on peut prdire lavance qui gagnera laide de la notion de noyau. Justifier
compltement.
D) O se situe en gnral la difficult pour un tel jeu ?
E) Pourquoi la mthode prcdente ne s'applique pas mme thoriquement au jeu dchecs ou au
jeu de dames ? Justifier votre rponse. Quelle ide cela vous donne pour ces jeux ?

116

117

ROO3

TD 9

Exercice
x

1
x

10

6
4

20

0
4

10

7
4

1
x

6
2

2
x
3

On cherche les valeurs des chemins minimaux issus de x0.


Les algorithmes de DIJKSTRA et BELLMAN sont-ils applicables? Justifier.
Appliquer le ou les algorithmes utilisables.
On rapportera ventuellement les valeurs successives des i (si DIJKSTRA est utilisable) et la
numrotation si elle existe, ainsi quune arborescence de chemins minimaux issus de x0. Y-a-t-il
unicit des chemins minimaux? Justifier.
PROBLEME : ALGORITHME DE DIJKSTRA MODIFIE
On considre un graphe valu G=(X,U,v) o la valuation v est entire de signe quelconque et o
1 est racine de G. Nous allons tudier l'algorithme suivant:
Algorithme de DIJKSTRA modifi
Dbut

A) Application de l'algorithme de Dijkstra;


Debut
Poser S:={1}; 1 :=0; i:=v(1,i) si (1,i) U et sinon;
Tant que S X faire
Dbut
Choisir i X-S tel que i soit minimal;
Poser S:=S U {i};
Pour j (X-S) U+(i) faire j:=Min(j ,i+v(i,j));
Fin; {Attention : lisez bien cette partie de l'algorithme, jX-S}
Fin;
B) Dtermination de l'arborescence de racine 1 associe :
On rappelle que cette arborescence est obtenue en retenant, pour
chaque j , l'arc (i,j) ayant permis de fixer j . Les arcs de cette
arborescence A seront dits marqus.
C) Test des di :
Dbut
Chercher un arc (i,j) non marqu tel que j-i>v(i,j);
Si un tel arc n'existe pas alors FIN1;
Si un tel arc rajout l'arborescence cre un circuit alors FIN2;
Si un tel arc rajout l'arborescence cre un cycle qui n'est pas
un circuit, aller en D) ;

118

Fin;
D) Modification de l'arborescence :
Dbut
Enlever de A l'arc marqu d'extrmit terminale j et ajouter A l'arc(i,j);
Pour j et tous ses descendants dans A diminuer les de la quantit =j-i-v(i,j);
Aller en C);
Fin;
Fin.

QUESTIONS
1) Appliquer l'algorithme au graphe G1 ci-dessous.
3
10
1

-6
-9

5
6

1
6

2) Appliquer l'algorithme au graphe G2 ci-dessous.


2
2

1
-3

0
4

3) On rappelle quune arborescence de racine 1 peut tre dfini par une fonction pre de X-{1} > X, telle que 1 soit ascendant de tous les sommets. On admettra qu la fin de A) : tous les
sommets ont un potentiel fini, et que lensemble des arcs ayant permis de fixer le potentiel, donc
satisfaisant j-i= v(i,j), dfinissent une arborescence de racine 1. Montrer que l'arborescence A a
la proprit suivante : " i est la valeur du chemin de larborescence A allant de 1 i ".
4) Expliciter FIN2.
5) Montrer qu chaque fois quon passe par D), on redfinit une nouvelle arborescence de
racine 1 ayant les mmes proprits.
6) Montrer qu'en l'absence de circuit absorbant, l'algorithme se termine en FIN1 aprs un
nombre fini d'tapes et qu'alors i est la valeur minimale d'un chemin allant de 1 i. En dduire sa
validit. Est-il polynomial ? Et sil y avait des circuits absorbants ?

119

ROO3

TD 10

Exercice 1 : ORDONNANCEMENT
Un projet comporte sept tches a,b,c,d,e,f,g. Pour chaque tche, le tableau ci-dessous rapporte sa
dure et les tches pralables.
1) Dessiner le graphe potentiel-tches et calculer les dates au plus tt, les dates au plus tard et le
chemin critique.
2) Dessiner un graphe PERT simplifi avec un minimum darcs fictifs.
tches

dures

tches pralables

a et b

c, d et e

Exercice 2 : Litinraire de Michel STROGOFF (daprs ROSEAUX)


Partant de MOSCOU, Michel STROGOFF, courrier du tsar, devait rejoindre IRKOUTSK. Avant
de partir, il avait consult une voyante qui lui avait dit entre autres choses:
aprs KAZAN mfiez-vous du ciel, OMSK attention aux tartares, dans TOMSK attention aux
yeux, aprs TOMSK mfiez-vous de leau et, surtout prenez garde partout un grand brun avec des
bottes noires.
STROGOFF avait alors report sur une carte pour chaque liaison entre deux villes ses chances de
russite : ces chances taient exprimes par un nombre compris entre 1 et 10 (mesurant le nombre
de chances sur 10 de succs). Ignorant le calcul des probabilits, il avait alors choisi son itinraire
en maximisant la somme globale des chances.
2

10
6

9
1

7
8

12

5
1

11

Les numros des villes sont les suivants: MOSCOU(1), KAZAN(2), PENZA(3), PERM(4),
OUFA(5),
TOBOLSK(6),
NOVO-SAIMSK(7),
TARA(8),
OMSK(9),
TOMSK(10),
SEMIPALATINSK(11), IRKOUTSK(12).
1. Dterminer litinraire de Michel STROGOFF.

120

2. Quelle tait alors sous lhypothse dindpendance des variables alatoires chances de succs,
la probabilit pour que STROGOFF russisse?
3. Quel aurait t son itinraire sil avait connu les principes du calcul des probabilits?
Exercice 3 : UN PROBLEME DINVESTISSEMENT
1) Un exemple. On dispose de 6 millions investir dans 3 rgions.
Le tableau suivant donne les bnfices rsultant des sommes investies.
Dterminer la politique dinvestissement optimale entre les trois rgions laide dune mthode de
"programmation dynamique". L'ide est d'associer la donne un graphe en niveaux. Le niveau 0
ne contient que le sommet (0,0), (car aucune somme n'a encore t investie). Le niveau 1 contient
les sommets (1,0), (1,1), (1,2), (1,3), (1,4), qui correspondent aux sommes cumuls investies dans
la rgion 1. Le niveau i contient les sommets (i,0), (i,1), (i,2), (i,3), (i,4), (i,5), (i,6), qui
correspondent aux sommes investies dans les rgions 1..i, (i = 2, 3). On introduit les arcs entre les
niveaux i et i+1, valus par les sommes investies dans la rgion i+1. Le dernier sommet est (3,6). Il
s'agit de chercher un chemin de valeur maximale dans ce graphe.

Rgion I

Rgion II

Rgion III

1 million

0,2

0,1

0,4

2 millions

0,5

0,2

0,5

3 millions

0,9

0,8

0,6

4 millions

0,7

2) Le cas gnral. Plus gnralement on dispose de B millions investir dans n rgions. On pose
fi(y) le bnfice optimal pour un investissement cumul dune somme y dans les rgions 1, 2, .., i.
On a f0(0)= 0. Donner une formule de rcurrence reliant fi fi-1 pour i de 1 n.
Quelle est en fonction de n et de B la complexit de la mthode de programmation dynamique et la
complexit dnumration de toutes les solutions possibles.

121

ROO3

TD N11

LE PROBLEME DU SAC A DOS (daprs ROSEAUX)


Un randonneur, partant pour une longue excursion, dtermine avec soin le contenu de son sac
dos. Compte tenu des quipements indispensables dj chargs, le poids total de nourriture
emporte ne devra pas excder 16 kilogrammes. Il dispose, en quantits limites, de trois types
daliments, de valeurs nutritives variables, dont les poids unitaires sont diffrents. Les aliments sont
conditionns par units non fractionnables.
Aliments

II

III

poids unitaires en kilo

quantits disponibles

valeurs nutritives

15

10

Le randonneur choisit la quantit de chaque aliment emporter, de faon maximiser la valeur


nutritive totale, tout en tenant compte de la limite de 16 Kg quil sest fixe.
Il va utiliser la "programmation dynamique" pour rsoudre ce problme dit du Knapsack ou sac
dos. Dune manire gnrale, soit :
n, le nombre daliments diffrents;
pi le poids unitaire de laliment i (i [1,n]);
qi le nombre dunits disponibles de laliment i (i [1,n]);
ci la valeur nutritive de laliment i (i [1,n]);
xi la quantit de laliment i emporte en nombre dunits (i [1,n]) (ce sont les inconnues);
et P le poids maximal de nourriture quil peut emporter.
1) Donner une formalisation du problme en tant que programme linaire en nombre entiers.
2) En notant fi(Q) la valeur nutritive maximale du sac dos charg optimalement avec uniquement
les i premiers produits, et de poids total Q (Q infrieur P). Donner les formules doptimisation
squentielle, c'est--dire des formules reliant la fonction fi la fonction fi-1.
3) Tracer le graphe des dcisions associ au problme, construit de faon analogue l'exercice de
TD prcdent sur le problme de l'investissement.
4) Rsoudre numriquement.

CONSTRUCTION DUNE MAISON (daprs ROSEAUX) :


Dans la construction dun maison, il faut commander et livrer le matriel lectrique avant de poser
puis dinspecter les cblages. De mme, ds que le matriel ncessaire aux travaux de plomberie a
t livr (aprs avoir t command), on peut effectuer les travaux de plomberie qui se font en deux
tapes lextrieur puis lintrieur, car nous navons quun seul plombier.
Il faut commander spcialement les parements extrieurs sabls, servant au briquetage extrieur et,
de toute faon, on ne peut poser ces briques tant que lossature de la maison na pas t difie. La
premire tape dans la construction de la maison est constitue par les travaux de terrassement,
aprs quoi, on peut poser les fondations et commencer construire lossature. Les travaux de
122

plomberie extrieure peuvent tre commencs quand les fondations sont termines et ceux de
plomberie intrieure une fois que lossature est termine.
Quand lossature est termine, on peut construire la charpente du toit et commencer poser les
cblages. Les revtements intrieurs doivent attendre que la charpente soit termine, les cblages
inspects et les travaux de plomberie intrieure achevs. Aprs les revtements intrieurs, on
effectue les amnagements intrieurs, cest--dire poser les planchers, faire la dcoration, mais cela,
bien sr aprs que la couverture ait t pose. Ces tuiles doivent tre commandes spcialement.
Une fois que la couverture, les revtements intrieurs et le briquetage sont termins, on nettoie
lextrieur, puis on passe aux amnagements intrieurs. Et une fois que les amnagements
intrieurs sont termins, on effectue une inspection gnrale. La maison est acheve losque
linspection gnrale et les extrieurs sont termins.

Question 1 :

Enumrer les diffrentes tches, puis tracer le tableau des tches pralables.

Question 2 : Dessiner le graphe potentiel-tches. Calculer lordonnancement au plus tt en


utilisant lalgorithme de BELLMAN. On utilisera le tableau dcrivant le problme. On pourra
dresser le tableau des prdcesseurs. Quels sont le ou les chemins critiques ?
Question 3 :

Tracer un graphe PERT aussi simple que possible.

Question 4 : Calculer les dates au plus tt et au plus tard des vnements introduits dans ce
graphe PERT. En dduire les marges totales de chacune des tches.

Voici le tableau des tches avec leurs dures et les tches pralables.
Dure en semaines

tches pralables

A. commande et livraison des cblages

Aucune

B. pose des cblages

A, I

C. inspection des cblages

D. commande et livraison du matriel de plomberie

Aucune

E. travaux de plomberie extrieure

D, H

F. travaux de plomberie intrieure

E, I

G. terrassement

Aucune

H. fondations

I. construction de lossature

J. commande et livraison des briques sables

Aucune

K. briquetage

I, J

L. commande et livraison des tuiles

14

Aucune

M. construction de la charpente

N. pose de la couverture

M, L

O. revtements intrieurs

M, F, C

P. amnagements intrieurs

O, N

Q. inspection gnrale

R. nettoyage extrieur

N, K, O

S. amnagements extrieurs

123

ROO3

TD 12

PROBLEME DE CIRCULATION URBAINE :

Le rseau routier que doit entretenir la ville de Fulkerson City est schmatis ci-dessous (les
capacits des arcs reprsentent le dbit maximal en voitures par heure).
10

15
D

40

20

B
10

30

6
7

10
10

5
15
6

10
G

5
4

15

15
10

4
H

15

1) Soit N le nombre maximum de voitures pouvant circuler par heure travers ce rseau .
1.1) Calculer N .
1.2) Caractriser les voies que l'on peut crer de faon augmenter N. De combien peut-on
augmenter N ?
2) Les diles locaux souhaitent amliorer la circulation en augmentant le nombre N grce la
cration de nouvelles voies . Dans la zone urbaine, seuls sont matriellement possibles la cration
d'une voie HK et l'largissement de la rue EG jusqu'alors rserve aux pitons. Le choix devra
donc se faire entre :
a) crer HK;
b) largir EG;
c) crer HK et largir EG.
2.1) Si la politique a) est choisie, quelle capacit maximum doit-on prvoir pour la voie HK ?
Dans ce cas, de combien augmente N ?
2.2) Si la politique b) est choisie, quelle autre voie est-on amen crer si l'on veut
augmenter N ? Donner les capacits des deux nouvelles voies et la nouvelle valeur de N .
2.3) Evaluer N dans le cas c) .
2) PROBLEME : SECOND PLUS COURT:
Le but de ce problme est de dterminer un second plus court chemin entre les sommets 0 et n-1
d'un graphe G=(X,U,v) positivement valu et sans circuit . Soit (0,n-1) un plus court chemin de 0
n-1 . Un second plus court chemin de 0 n-1 est un chemin de valeur minimale parmi l'ensemble
des chemins de 0 n-1 qui diffrent de (0,n-1) par au moins un sommet. Un tel chemin existe s'il
y a , au moins , deux chemins de 0 n-1 dans G , ce que nous supposerons dans la suite .
On se propose de montrer que second , fourni par l'algorithme suivant , dfinit un second plus
court chemin de 0 n-1 .
124

Algorithme second plus court :


dbut
1) Appliquer l'algorithme de Dijkstra pour obtenir l'arborescence A des plus courts
chemins allant de 0 i et les potentiels (i) de 0 i pour tous les sommets i de G .
(N.B.: On notera (r,s) le chemin , s'il existe , de r s dans A )
2) Dterminer (0,n-1)=(y0=0,y1,,yp=n-1) .
3) Poser valeur:=+ ;
Pour j:=1 jusqua p faire
pour tout k ( U-(yj) - {yj-1} ) faire
dbut
:= (k) + v(k,yj) + ( (n-1) - (yj) ) ;
si <valeur alors
dbut
valeur := ; pivot1 := k ; pivot2 := yj ;
fin;
fin;
4) Second := (0,pivot1) + (pivot1,pivot2) + (pivot2,n-1) .
fin.

QUESTIONS :
1) Appliquer l'algorithme au graphe G suivant :
1

1
4

1
2

1
3

1
5

N.B. : On rapportera successivement:


- le tableau de Dijkstra prsent en cours;
- l'arborescence A;
- le chemin (0,n-1);
- les diffrentes valeurs de ;
- second.

Vrifier que second est bien un second plus court chemin dans G .

2) Etude de la complexit en fonction de n et m:


On suppose que le graphe est cod par la file des successeurs et des prdcesseurs.
125

2.1) Quelles sont les complexits des phases 1 , 2 , 3 et 4 de l'algorithme ?


En dduire la complexit totale .
2.2) Quelle amlioration peut-on proposer pour diminuer cette complexit ?

3) Preuve de l'algorithme :
On note premier = (0,n-1) = (y0=0,y1,,yp=n-1) le plus court chemin obtenu dans la phase 1)
de l'algorithme et deuxime = (z0=0,z1,,zq=n-1) un second plus court chemin de 0 n-1 .
3.1) Montrer qu'il existe un entier r tel que yp=zq , yp-1=zq-1 ,..., yp-r=zq-r et yp-r-1zq-r-1.
3.2) Quelle est la proprit remarquable du chemin (z0=0,z1,,zq-r-1) ?
3.3) En dduire la validit de l'algorithme.

126

127

ROO3

TD 13

1) EXERCICE : Algorithme de ROY:


Appliquer l'algorithme de Roy pour dterminer un flot maximal de cot minimal dans le graphe
suivant.

0
s

5
3

2
b

capacit
p

cout

On dessinera les graphes d'cart intermdiaires et on prcisera les chanes amliorantes successives
utilises. Calculer le cot du flot obtenu.

PROBLEME DAFFECTATION :
On veut affecter six programmes a,b,c,d,e,f six programmeurs A,B,C,D,E,F en minimisant la
somme des temps de travail et de faon ce quun programmeur fasse exactement un programme.
Le tableau ci-dessous rapporte les diffrents temps de travail. Pour rsoudre ce problme
daffectation, on va appliquer lalgorithme hongrois qui permet plus gnralement daffecter n
individus n travaux en minimisant la somme des cots daffectation.

14

18

16

63

15

41

78

44

73

70

25

44

81

36

80

80

78

46

74

25

83

72

32

55

51

81

69

76

12

99

83

30

1) Montrer quon ne change pas la solution du problme en soustrayant ou ajoutant une valeur
numrique tous les lments dune range (ligne ou colonne). Seule la valeur de la solution est
modifie.
Le faire sur lexemple en soustrayant le plus petit lment de chaque range en commenant par les
lignes et en terminant par les colonnes, (l'intrt est de faire apparatre des zros).
2) On associe au nouveau tableau un graphe biparti reliant les programmeurs aux programmes
quand le cot rduit (obtenu aprs soustraction des minima en lignes et en colonnes) vaut 0. Les
arcs du graphe biparti sont dits admissibles.
On introduit aussi un rseau de transport en reliant la source s aux programmeurs par des arcs de
capacit 1, le puits p aux programmes par des arcs de capacit 1. Les arcs admissibles sont de
capacit infinie.
a) Construire le rseau de transport.
128

b) Calculer un flot maximal sur ce rseau et en dduire un couplage maximal de cot nul.
c) Le marquage de Ford-Fulkerson l'optimum permet de marquer les lignes X* de X et les
colonnes Y* de Y.
Vrifier sur l'exemple quil ny a pas darc admissible entre X* et Y-Y*.
Vrifier sur l'exemple que les arcs entre X-X* et Y* ont un flux nul.
Justifier les deux proprits.
d) Soit le plus petit cot rduit daffectation dun programmeur de X* un programme de Y-Y*.
Calculer . Ajouter aux colonnes de Y* et soustraire aux lignes de X*. Pourquoi ces oprations
sont-elles licites ?
e) On obtient une nouvelle matrice de cots. Vrifier que les arcs de flux non nuls restent
admissibles. Quelle est la proprit des arcs qui taient admissibles et qui ne le sont plus ?
Quelle est la proprit des arcs devenus admissibles? Quelle est la capacit de lancienne coupe
minimale ? Montrer que le nouveau marquage contient le prcdent ?
f) Calculer le nouveau flot maximal ?
g) Vrifier que la procdure pratique suivante permet de calculer la nouvelle matrice.
Procdure pratique.
-rayer toute ligne non marque ;
-rayer toute colonne marque ;
-soit le plus petit lment non ray ;
-retrancher aux lments non rays ;
-ajouter aux lments rays deux fois.
h) On itre autant de fois que ncssaire la procdure pratique et le calcul du flot :
-le faire;
- quelle condition sarrte-t-on ?
-en dduire loptimalit de la mthode.

129

ROO3

TD N14

PROBLEME: ALGORITHME DE KRUSKAL:


6

3
1

5
8
9

2
5

10
4

11
6

Lalgorithme de KRUSKAL permet de dterminer un arbre couvrant de cot minimal.


On supposera que les cots sont tous distincts.
KRUSKAL
{par convention larte eL scrira eL =[I,J] avec I strictement plus petit que J}
Dbut
Indicer les artes en ordre de cots croissants: v(e1) v(e2) ... v(em)
Pour H:=1,N faire CONNEXE(H):=H; K:=1; {le graphe partiel est initialement vide}
Pour L:=1,M faire
Dbut
soit eL=[I,J];
Si (CONNEXE(I) diffrent de CONNEXE(J)) alors
Dbut
AUXI=CONNEXE(J); fK=[I,J]; { fK est mis dans le graphe partiel}; K:=K+1;
Pour H:=1,N faire
Si (CONNEXE(H)=AUXI) alors CONNEXE(H):=CONNEXE(I)
Fin
Fin
Fin

Question 1: Faire tourner lalgorithme sur le graphe ci-dessus: on dessinera les graphes partiels
successifs et les onze valeurs successives du tableau CONNEXE obtenu avant chaque itration de
la boucle externe.
Question 2: Evaluer en fonction de N et M la complexit de lalgorithme. On pourra distinguer
deux types ditrations dans la grande boucle.
Question 3 (cette question est indpendante de lalgorithme)
On rappelle que lon est dans le cas o tous les cots sont distincts.
Montrer quun arbre couvrant est de cot minimal si et seulement lintersection de chaque cocycle
de G et de larbre contient larte de cot minimal du cocycle de G.
Question 4: Montrer que lalgorithme dtermine larbre couvrant de cot minimal.

130

PROGRAMMES DE TRANSPORT.
On dispose de a1, a2,... ,an units dans des dpts 1,2,...,n. On veut transporter ces units vers des
n

destinations 1,2,...,m o se manifestent des demandes b1,b2,...,bm, avec :

a = bj
i =1

j =1

La mthode applique au problme d'affectation se gnralise. On fait apparatre des zros en


lignes et en colonnes. On introduit la notion darcs admissibles et on trace un rseau de transport
sur lequel on recherche un flot maximum. On calcule ensuite un pour modifier ce rseau de faon
finalement obtenir, aprs un certain nombre ditrations, un flot satisfaisant toutes les demandes
et qui est de cot minimal.
On demande dappliquer cette mthode au problme suivant. On a trois dpts o sont disponibles
respectivement 3,4,7 hlicoptres et on doit rpartir ces hlicoptres sur quatre sites o se
manifestent respectivement des demandes de 1,3,5,5 hlicoptres. Les cots unitaires de transport
sont donns dans le tableau suivant. Dterminer la solution optimale.

131

ROO3

TD N15

PROBLEMES DE FLOTS
Exercice 1 : flot canalis
Construire un flot de valeur maximale sur l'arc ps, lorsqu'il existe, dans les rseaux suivants (les
capacits min et max sont indiques par [bij, cij] ).
[3,4]
[0,10]
[0,2]
[2,4]
s

[0,1]
[1,2]

[0,3]

[0,1]

[0,2]
[0,inf]
Rseau n1

[2,3]
[4,5]
[0,4]
s

[0,11]
[8,11]
[1,3]

[0,3]

[5,9]

[2,2]
[0,inf]
Rseau n2

Exercice 2 : flot maximal


Considrons le rseau suivant dont , non seulement les arcs sont munis de capacit , mais aussi les
sommets . Trouver un flot de valeur maximale sur ce rseau en expliquant votre mthode.
6

5
2

4
7

3
s

132

p
6

7
5

2
3

Exercice 3 : satisfaction de demandes


3

S1
3

7
4

S2
9
S3

2
8

b
1

3
7

1
c

P2

6
d

P1

7
8

P3

Dans ce rseau, les sommets S1, S2, S3 sont des dpts qui disposent respectivement des quantits
5 , 10 , 5 d'un mme produit . Les sommets P1, P2, P3 sont des clients dont les demandes sont
respectivement : 5, 10, 5. Ces demandes peuvent-elles toutes tre satisfaites travers ce rseau ?

133

Vous aimerez peut-être aussi