C.N.A.M.
Centre R´egional Associ´e d’Aix-en-Provence
Enseignant: Tristan VanRullen
1ere session 2005–2006
Dur´ee: 3 heures
Tous documents autoris´es
Graphes et Algorithmes
Cet examen comporte 5 exercices , pour un total de 20 points.
Il est conseill´e de lire attentivement la totalit´e de ce sujet puis de r´epondre aux questions dans l’ordre.
Une attention particuli`ere sera port´ee sur la qualit´e de la r´edaction.
R´epondez le plus possible aux questions. etaillez vos r´eponses autant que possible.
Les questions facultatives permettent d’´equilibrer votre note si vous ´echouez `a des questions non
facultatives.
1.3 points Complexit´e
Une fois, deux fois, trois fois...
Observez attentivement l’algorithme ci-dessous. Celui-ci comporte deux boucles imbriqu´ees et
quelques instructions de calcul.
fonction UnCalculComplexe(in n:entier):entier
var compteur1, total1, compteur2, total2: entier;
ebut
total1:=0;
total2:=0;
compteur1:=1;
tant que compteur1<=nfaire
total1:=total1+compteur1;
compteur1:=compteur1+1;
compteur2:=compteur1;
tant que compteur2<=nfaire
total2:=total2+compteur2;
compteur2:=compteur2+1;
fintantque;
fintantque;
total2:=total2+total1;
UnCalculComplexe:=total2;
fin;
(a) Effectuez `a la main le calcul correspondant `a l’appel de fonction UnCalculComplexe(3). Don-
nez la valeur finale de la variable total2 pour cet exemple.
(b) Combien de fois sera effectu´e le test compteur1<=nde la boucle la plus englobante?
Donnez ce nombre en fonction de n.
(c) Pour un tour donn´e de la boucle la plus englobante, Combien de fois le test compteur2<=n
de la boucle la plus emboˆıt´ee sera-t-il effectu´e? Donnez ce nombre en fonction de net de
compteur1.
(d) En tenant compte des deux r´esultats pr´ec´edents, combien de fois le test compteur2<=n
sera-t-il effectu´e? Donnez ce nombre en fonction de nuniquement.
(e) (question facultative) Si on suppose que chaque instruction d’affectation compte pour une
instruction, qu’une op´eration d’addition compte aussi pour une instruction, ainsi que chaque
Page 1 sur 4
1ere session Graphes et Algorithmes Mardi 7 f´evrier 2006
ex´ecution d’un test de crit`ere d’arrˆet lors de chaque tour de boucle, dites combien d’instructions
seront effectu´ees en tout par la boucle la plus englobante, en fonction de n.
2.4 points Optimisation
Qui dit mieux?
Un informaticien ajoute une instruction conditionnelle au calcul pr´ec´edent. Observez ce test dans
l’algorithme ci-dessous. Les questions ne portent pas sur l’int´erˆet de ce test, qui est parfaitement
inutile et d´enu´e de sens, mais sur la possibilit´e d’optimiser le nombre d’instructions du test.
fonction UnCalculComplexe(in n:entier):entier
var compteur1, total1, compteur2, total2: entier;
ebut
total1:=0;
total2:=0;
compteur1:=1;
tant que compteur1<=nfaire
total1:=total1+compteur1;
compteur1:=compteur1+1;
compteur2:=compteur1;
tant que compteur2<=nfaire
total2:=total2+compteur2;
si ((NON(compteur2-total1<total2-total1+compteur1))
OU (NON(compteur2-total2>total1-total2+compteur1)))
alors
total1 :=total1-compteur2;
sinon
total2 :=total2-compteur1;
finsi
compteur2:=compteur2+1;
fintantque;
fintantque;
total2:=total2+total1;
UnCalculComplexe:=total2;
fin;
Dans les questions ci-dessous, consid´erez qu’il faut compter une instruction pour chaque com-
paraison, chaque addition, soustraction, ainsi que pour chaque op´eration bool´eenne (OU, ET et
NON).
(a) En ne cherchant pas `a comprendre l’utilit´e des instructions de cette condition, pouvez vous
donner le nombre d’instructions effectu´ees lors du test?
(b) En ne cherchant pas `a comprendre l’utilit´e des instructions de cette condition, pouvez vous
donner une simplification du test? En utilisant les math´ematiques et la logique des proposi-
tions, vous r´eduirez ce test en un test plus simple.
(c) (question facultative) En cherchant `a comprendre l’utilit´e des instructions conditionn´ees par
ce test et en utilisant les instructions qui pr´ec`edent le test, pouvez vous donner une nouvelle
simplification du test et de toute l’instruction qui en d´ecoule?
(d) (question facultative) Si la r´eponse `a la question pr´ec´edente est n´egative, pouvez-vous conclure
quelque chose `a propos de l’algorithme ci-dessus?
Page 2 sur 4
1ere session Graphes et Algorithmes Mardi 7 f´evrier 2006
3.4 points Algorithmes simples dans les graphes
...Adjug´e!
Les questions ci-dessous portent sur des graphes quelconques, orient´es ou non, sauf lorsque
l’orientation est pr´ecis´ee.
Les graphes peuvent ˆetre repr´esent´es par une matrice d’adjacence pour les algorithmes demand´es.
(a) Dites quelle est la caract´eristique de la matrice d’adjacence d’un graphe non-orient´e.
(b) Donnez un algorithme simple permettant de dire si un graphe ne contient pas de boucle.
(c) Donnez un algorithme simple permettant de dire si un graphe contient une boucle.
(d) En consid´erant cette fois que le graphe est orient´e, donnez un algorithme simple permettant
de dire si celui-ci contient un arc X-Y pour chaque arc Y-X,Xet Y´etant des sommets
quelconques du graphe.
(e) (question facultative) Toujours avec les matrices d’adjacence, dans un graphe orient´e, donnez
un algorithme permettant de dire si le graphe contient un circuit (boucle de longueur sup´erieure
`a z´ero).
4.4 points Parcours de graphes
Par ici? Non, par l`a!
(a) Donnez un ordre de visite des sommets du graphe non orient´e ci-dessus lors d’un parcours en
profondeur `a partir du sommet A.
(b) Donnez les sommets d’articulation de ce graphe.
(c) Donnez un algorithme qui calcule la longueur d’un chemin entre deux sommets donn´es Xet
Yd’un graphe non orient´e.
Page 3 sur 4
1ere session Graphes et Algorithmes Mardi 7 f´evrier 2006
(d) (question facultative) Donnez un algorithme qui calcule le nombre de sommets faisant partie
de la composante connexe d’un sommet Xdonn´e dans un graphe non orient´e quelconque
(pouvant avoir plusieurs composantes connexes).
5.5 points Mesure dans les graphes valu´es
C’est mieux par ici, il y a un raccourci!
On se pr´epare `a pr´esent `a ´etudier un graphe non orient´e dot´e d’une seule composante connexe.
Un plombier malin doit installer la plomberie de tous les appartements neufs d’un immeuble.
Malheureusement pour lui, ce plombier a une jambe cass´ee et il se d´eplace tr`es lentement `a cause
du plˆatre et des b´equilles.
Dans cet immeuble, il y a trois appartements par ´etage et il y a dix ´etages en tout.
Dix tˆaches sont `a r´ealiser dans diff´erents lieux de chaque appartement.
Nous supposerons que les tˆaches du plombier prennent toutes un temps identique (1 minute).
Entre deux tˆaches, le plombier fait une pause de 1 minute. L’ordre entre les tˆaches `a ealiser dans
chaque appartement importe peu.
Quand le plombier ach`eve ses tˆaches dans un appartement, il se rend dans un autre situ´e au mˆeme
pallier ou `a un appartement d’un ´etage voisin (au dessus ou au dessous).
Chaque d´eplacement du plombier entre un appartement Xet un appartement Yd’un eme ´etage
prend 1 minute. Il faut penser que le plombier doit transporter tout son mat´eriel, ce qui provoque
des aller-retours dont nous cumulerons la dur´ee, comme s’il s’agissait d’un seul trajet.
Chaque d´eplacement du plombier entre un appartement Xet un appartement Yd’un ´etage voisin
prend 3 minutes.
On supposera que le plombier ne sort pas de l’immeuble tant que toute la tˆache n’est pas achev´ee.
Le plombier est pr´evoyant et souhaite connaˆıtre la dur´ee totale de son intervention avant de
commencer le travail. Il r´efl´echit un peu et se dit qu’il y a plusieurs fa¸cons de rechercher la plus
petite dur´ee de trajet passant par tous les appartements et toutes les tˆaches. En effet, il est possible
de monter plusieurs ´etages, d’en descendre quelques uns, puis de faire quelques appartements du
mˆeme ´etage etc. Dans n’importe quel ordre! Mais le plombier est malin, et il se dit qu’il doit bien
y avoir une technique imparable pour r´esoudre ce probl`eme.
(a) Quel probl`eme courant de la th´eorie des graphes ressemble au probl`eme du plombier? Quels
sont les sommets? Quels sont les arcs?
(b) Si vous deviez choisir un algorithme particulier r´esolvant d´efinitivement son probl`eme, parmi
recherche exhaustive,plus proche voisin et meilleure insertion, lequel utiliseriez-vous?
Raisonnez en tenant compte du fait que le graphe repr´esentant les ´etapes possibles du plombier
est particulier (il n’est pas complet puisque les tˆaches d’un appartement ne peuvent pas ˆetre
connect´ees aux tˆaches d’un autre appartement).
(c) Le plombier se dit, `a force d’´etudier son probl`eme, que la plus courte dur´ee est calculable sans
algorithme g´en´eral, simplement par simplification math´ematique du probl`eme. Pouvez-vous
dire pourquoi?
(d) Dessinez une partie du graphe et donnez une formulation de la plus courte dur´ee totale de
trajet du plombier en fonction du nombre Ed’´etages de l’immeuble.
(e) Si par malheur il ´etait n´ecessaire que le plombier redescende `a sa camionnette `a chaque fois
qu’il ach`eve un ´etage, comment repr´esenteriez vous le nouveau graphe? Donnez un sch´ema
avec deux ´etages et un rez de chauss´ee. Le graphe peut-il rester non orient´e? Indiquez les
dur´ees des arcs de retour vers la camionnette (on supposera que celle-ci est gar´ee au rez de
chauss´ee et qu’il faut le mˆeme temps pour s’y rendre que pour changer d’appartement en
tenant compte des dur´ees de changement d’´etage).
(f) (question facultative) Indiquez le meilleur algorithme permettant de r´esoudre ce nouveau
probl`eme parmi ceux propos´es pr´ec´edemment. Le chemin choisi par le plombier grˆace `a son
raisonnement malin de la question c) reste-t-il valable?
Page 4 sur 4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !