Problèmes du chapitre 2 « Étude d`un système réparti »

publicité
6
Problèmes du chapitre 2 « Étude d’un système réparti »
Les deux premiers problèmes étudient les relations entre nombre de sommets et nombre d’arêtes
dans les graphes. Le troisième problème concerne l’écriture d’algorithmes sous la forme d’actions
gardées.
Problème 2 : Soit G(V, E) un graphe de N sommets et M arêtes. On note v1 , v2 , . . . vN les
sommets, et δ(vi ) le degré du sommet vi (1 ≤ i ≤ N ).
Question 2.1 :
Montrer que pour avoir un graphe connexe, il faut M > N − 2.
Question 2.2 :
Montrer qu’il existe un entier N0 tel que :
— pour N < N0 , la réciproque est vraie (i.e., si M > N − 2 alors le graphe est
connexe) ;
— pour N ≥ N0 , la réciproque est fausse.
Question 2.3 :
Que peut-on dire de G s’il est connexe et si M = N − 1 ?
Question 2.4 :
�
Montrer la relation suivante : 2M = N
i=1 δ(vi )
Problème 3 : On considère un graphe orienté G(V, E) fortement connexe, composé de N sommets v1 , v2 , . . . , vN . On note d son diamètre, δ son plus grand degré sortant, et Γ+i
G (v) l’ensemble
(v)
=
{v}.
des descendants du sommet v dans G qui sont à distance i de v. On pose Γ+0
G
Question 3.1 :
Expliquer comment les ensembles Γ+i
G (v) permettent de partitionner les sommets de V ,
avec v fixé, et i variant.
Question 3.2 :
En déduire une relation entre N et les ensembles Γ+i
G (v).
Question 3.3 :
+(i+1)
Quelle relation existe-t-il entre |Γ+i
(v)| et δ ?
G (v)|, |ΓG
Question 3.4 :
En déduire une relation entre N , d et δ.
Question 3.5 :
On suppose maintenant que G est un graphe non orienté connexe, de degré δ et de diamètre d. En utilisant le même principe, établir une relation similaire entre N , δ et d.
Problème 4 : Ce problème étudie l’écriture sous la forme d’actions gardées de l’algorithme suivant :
[email protected]
2012 TD. Merci de signaler les erreurs.
7
Algorithme 1 : Algorithme pour un camp retranché i
1
2
Arrivée d’un messager demandant des renforts :
Renvoyer le messager avec des renforts
3
4
Arrivée d’un messager accompagné de renforts :
Faire rentrer les soldats arrivants au camp
5
6
Quantité de soldats insuffisante :
Envoyer un messager demandant des renforts
7
8
Plus de barbares que de soldats à la bataille :
Faire sortir des soldats du camp et les ajouter à la bataille
9
10
Moins de barbares que de soldats à la bataille :
Faire rentrer les soldats en surnombre au camp
On suppose qu’un centurion :
- dispose au départ de 100 soldats ;
- envoie toujours autant de soldats à la bataille qu’il y a de barbares attaquant le camp (lorsqu’il
n’y a pas assez de soldats, le centurion se rend) ;
- donne des soldats à une garnison voisine s’il lui en reste au moins 30 après (il peut donner une
partie de ce qui est demandé) ;
- demande la quantité nécessaire de soldats à une garnison voisine pour maintenir son effectif à
50, et ce, dès qu’il a moins de 50 soldats.
Les batailles sont locales à un camp. On ne précise pas la garnison voisine sollicitée en cas de demande de renforts. Si des renforts devaient rejoindre la garnison d’un camp qui s’était rendu, alors ils
intègreraient un autre camp.
Question 4.1 :
Rendre le code de l’algorithme 1 plus précis en utilisant une variable Garni par camp
retranché pour compter le nombre des soldats de chaque camp.
Question 4.2 :
On considère des actions atomiques. Si les gardes suivantes sont vraies simultanément,
quelles sont les instructions associées que le centurion a intérêt à exécuter avant les
autres ?
- quantité de soldats insuffisante
- plus de soldats que de barbares à la bataille
- arrivée de renfort
Question 4.3 :
Modifier les gardes de l’algorithme de telle sorte que le centurion exécute toujours les
instructions prioritaires lorsque ces trois gardes sont vraies simultanément.
Question 4.4 :
Quelles sont les autres gardes qui devraient être modifiées de manière à privilégier certaines actions sur d’autres ?
Question 4.5 :
Quel problème peut poser la garde concernant la condition interne «quantité de soldats
insuffisante» ?
[email protected]
2012 TD. Merci de signaler les erreurs.
8
Question 4.6 :
Modifier l’algorithme obtenu à la question 4.4 afin de résoudre le problème soulevé à
la question précédente, sans supprimer d’actions gardées. On suppose qu’un centurion
n’envoie qu’une demande de renfort à la fois.
Question 4.7 :
Modifier l’algorithme obtenu à la question 4.4 afin d’intégrer les instructions de l’action
gardée «quantité de soldats insuffisante» aux autres actions gardées, de sorte qu’il n’y ait
plus de garde portant sur une condition interne.
Un centurion est autorisé à envoyer une demande de renfort alors qu’il n’a pas encore reçu
le retour d’une demande antérieure mais il ne doit pas demander de renforts excessifs.
On suppose qu’un centurion reçoit ce qu’il demande.
Question 4.8 :
Modifier l’algorithme précédent afin de prendre en compte le fait qu’un centurion peut
recevoir moins de renforts que demandés.
Question 4.9 :
Comment réduire le code suivant en utilisant des min et des max au lieu des si ?
1
2
3
4
5
6
7
8
9
10
11
si (Garni − k) ≥ 30 alors
Renvoyer le messager avec k renforts
Garni ←Garni − k
sinon
si Garni > 30 alors
Renvoyer le messager avec Garni − 30 renforts
Garni ←30
sinon
Renvoyer le messager avec aucun renfort
fin si
fin si
[email protected]
2012 TD. Merci de signaler les erreurs.
Téléchargement