Vous êtes sur la page 1sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)

Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Partie I (80 pts)


Exercice 1 : (5 pts)
Est-il possible dinverser les valeurs de deux variables u et v sans faire appel une troisime variable ? Si oui, expliquez comment faire. Rponse : OUI si numrique Si OUI, procdure dinversion :
u u + v //u contient u + v, v contient v v u v //u contient u + v, v contient u u u v //u contient v, v contient u

Exercice 2 : (10 pts)


Lopration de suppression dans un arbre binaire de recherche est-elle commutative dans le sens o la suppression de x puis de y dans un arbre binaire de recherche produit le mme arbre que la suppression de y puis de x. Si oui alors justifiez brivement votre rponse. Si non alors donnez un contre-exemple illustratif. Non lopration de suppression dans un ABR nest pas commutative. Voici un contre-exemple :
5 Supprimer 2 2 4

5 Supprimer 1 2

3 5

3 5

5 Supprimer 1

Supprimer 2 3

4 1 3 4 4

Page 1 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Exercice 3 : (35 pts)


La linarisation dun arbre binaire consiste reprsenter larbre par une liste. Parmi les mthodes de linarisation qui existent nous prsentons ici une mthode qui se base sur le principe suivant : il sagit de ranger les informations attaches aux nuds dans lordre dun parcours prfix et dassocier, chaque information, les indicateurs suivants : - le sous-arbre gauche (SAG) prend la valeur vrai si et seulement si le SAG nest pas vide, - le sous-arbre droit (SAD) prend la valeur vrai si et seulement si le SAD nest pas vide. Ainsi nous pouvons dfinir une liste denregistrements, composs de trois champs: - Un champ indicateur fils gauche de type boolen : FG (V / F) - Un champ information : INFO - Un champ indicateur fils droit de type boolen : FD (V / F) Par exemple la linarisation de larbre binaire suivant donne la liste ci-dessous :

1) Pour un nud de rang k le rang de son fils gauche, sil existe, est k+1. Par exemple le fils gauche du nud contenant linfo 11 ayant comme rang k = 5 est le nud contenant linfo 18 ayant comme rang k+1 = 6. Expliquez brivement ce rsultat. Le parcours prfix est un parcours Racine-FilsGauche-FilsDroit donc dans le tableau de linarisation la position du fils gauche est immdiatement aprs la position de son pre. (10 pts) 2) Ecrire un algorithme qui permet de renvoyer le rang du fils droit dun nud de rang k. Voici lentte de lalgorithme crire : Algorithme rangFilsDroit (Tab[0..n], k) R // avec n le nombre de nuds dans larbre binaire et k lindice dans Tab du nud pour lequel on cherche le // rang du fils droit R. Tab[i].FG et Tab[i].FD dsigne un boolen indiquant lexistence de fils gauche et de fils // droit respectivement

Remarque :
Page 2 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Afin dcrire votre algorithme utilisez un pseudo langage algorithmique inspir de la syntaxe des langages de programmation comme C et Pascal :

FOR (indice valeur_dbut ) TO valeur_fin DO (suite_actions) END FOR WHILE (condition) DO (actions) END WHILE IF (condition) THEN (suite_actions1) ELSE (suite_actions2) END IF Affectation : x y Oprateurs logiques : OR, AND, NOT Oprateurs arithmtiques et de comparaisons : +, -, *, /, >, <, >=, <=, <> (diffrent), = (test dgalit), etc. Algorithme rangFilsDroit (Tab[0..n], k) R (25 pts)

// avec n le nombre de nuds dans larbre binaire et k lindice dans Tab du nud pour lequel on cherche le //rang du fils droit R. Tab[i].FG et Tab[i].FD dsigne un boolen indiquant lexistence de fils gauche et fils // droit respectivement Dbut ik IF (NOT T[i].FD) THEN return 0 ELSE IF T[i].FG THEN j 2 // FG+FD ELSE j 1 // FD END IF WHILE (j > 1) DO i i+1 jj1 // le j quon a trait IF (T[i].FG) THEN j j+1 END IF IF (T[i].FD) THEN j j+1 END IF END WHILE return (i+1) END IF Fin
Remarque : Une solution rcursive est possible aussi.

Page 3 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Exercice 4 : (10 pts)


Soit ABR100 un arbre binaire de recherche qui contient lensemble des entiers entre 1 et 100. Nous cherchons llment 36 dans ABR100. Quelle(s) est (sont) la (les) squence(s) qui ne peut (peuvent) pas correspondre une branche de recherche des nuds examins pour trouver 36 ? Argumentez brivement votre rponse. Squence 1 : 2, 25, 40, 39, 33, 34, 36 Squence 2 : 92, 22, 91, 24, 89, 25, 36 Squence 3 : 90, 30, 80, 40, 32, 24, 36

La squence 3 ne pas correspondre une branche de recherche des nuds examiner pour trouver 36 car selon la suite de cette squence on constate que la sixime valeur 24 est localise droite de llment 30. Or, 24 < 30.

Exercice 5 : (10 pts)


Dcrire lide principale dun algorithme qui permet de calculer la diffrence entre le plus grand et le plus petit lment dun arbre binaire de recherche dentiers (ne pas crire lalgorithme). Dans un ABR on a : (5 pts) Le plus petit lment se trouve dans le nud le plus gauche Le plus grand lment se trouve dans le nud le plus droite

Il suffit de parcourir partir de la racine de lABR en suivant les liens gauche et rcuprer le plus petit lment puis parcourir partir de la racine de lABR en suivant les liens droite et rcuprer le plus grand lment (5 pts)

Exercice 6 : (10 pts)


On cherche trier un tableau de n entiers dont seulement p lments ne sont pas leur place (si on retire ces p lments, les n- p restants sont bien dans lordre). Quelle est la complexit au pire des cas dun tri par insertion sur un tel tableau ? Justifiez votre rponse.

La complexit du tri insertion quand seulement p lments ne sont pas leurs places dans le pire des cas est en O(pn). (5 pts) Le tri insertion consiste excuter n-1 itrations o chaque itration, on cherche insrer le j me lment (j=2 n) dans le sous tableau dj tri T[1..j-1]. Si le jme lment nest pas sa place alors pour linsrer il faut dcaler au plus (j-1) lments, c'est--dire, linsrer dans la premire case du tableau. Linsertion dun lment mal plac qui se trouve la jme position du tableau est en O(j), or j<n et le nombre des lments mal placs est p alors linsertion des p lments mal placs est en O(np) Si le jime lments est un lment sa place, donc pour linsrer il faut faire au plus p dcalages parce que parmi les (j-1) lments dans le sous-tableau tri T[1..j-1], il y a au plus p lments qui ne sont pas leurs places, donc le cot dinsertion dun lment parmi les (n -p) qui sont bien dans lordre est en O(p), do le cot dinsertion des (n-p) lments qui ne sont dans lordre est en O((n-p)p) Do la complexit est en O(np). (5 pts)
Page 4 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Partie II (60 pts)


Exercice 1 : (20 pts)
Le Local IR dont dpend votre entreprise vient de vous attribuer l'adresse IP 214.123.155.0. Vous devez crer 10 sous-rseaux distincts pour les 10 succursales de l'entreprise, partir de cette adresse IP. 1) Quel est la classe de ce rseau ? classe C 2) Quel masque de sous-rseau doit-on utiliser ? (5

(4 pts) pts) pts)

Pour crer 10 sous rseaux on a besoin de 4 bits donc le masque est 255.255.255.240 3) Combien d'adresses IP (machines ou routeurs) pourra recevoir chaque sous-rseau ? (5

La partie host ID est sur 4 bits donc chaque sous rseau pourra recevoir (2**4) - 2 = 14 adresses. Le 2 pour ne pas considrer les adresses de rseau et de diffusion. 4) Quelle est l'adresse rseau et de broadcast du 2eme sous-rseau utilisable ? (2 214.123.155.16 adresse du 2ime sous rseau 214.123.155.31 adresse de broadcast

x 3 pts)

Exercice 2 : (10 pts)


Une machine TCP envoie des donnes avec une taille de fentre de congestion maximale (216 octets) sur un canal de 45 Mb/s et un dlai aller-retour de 50 ms. 1) Quel est le dbit maximum quon puisse atteindre ? (3 pts) TCP peut transmettre le contenu dune fentre par RTT, donc le dbit maximum atteignable est de D = 216 octets / 50 ms = n 2) Quelle est lutilisation du canal ? (4 pts) Lutilisation maximum est donc limite U = n Mb/s / 45 Mb/S = = %

3) Quelle est la taille de fentre ncessaire pour exploiter le lien 100%? (3 pts)

W=RTT*C = (50 x 0.001 x 45 x 10**6 ) /8 octets

Exercice 3 : (30 pts)


Dans cet exercice nous cherchons spcifier un protocole de niveau transport que nous appellerons LTP Light Transport Protocol . Le tableau suivant dcrit les diffrentes primitives de services fournies et les TPDU envoyes et consquentes ces primitives. Primitive de service Listen Connect Send Receive Disconnect TPDU envoye (abrviation) Aucune CONNECTION REQUEST (CR) DATA (DT) Aucune DISCONNECT REQUEST(DR) Signification Se bloquer en attente dune demande de connexion (attente passive) Demande douverture dune connexion (active) Envoi de donnes Rception de donnes Demande de dconnection dun cot

Ltablissement dune connexion se ralise travers lchange de deux TPDU (2 way handshake). A cet effet un CR est envoy la suite dune demande douverture (active) dune connexion et en rponse : si le rcepteur est en attente dune demande de connexion (il a dj effectu Listen), lentit LTP rceptrice accepte la connexion et renvoie une TPDU CONNECTION ACCEPTED (CA), Page 5 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

sinon lentit LTP rceptrice refuse la connexion et renvoie une TPDU DR,

Une fois la connexion est tablie, les deux cts peuvent mettre et recevoir des donnes. La fermeture de connexion est symtrique, il faut que des deux cts soit invoque la primitive Disconnect. Tant que dun ct on na pas invoqu cette primitive il est possible denvoyer des donnes. Si la primitive Disconnect a t invoque, tant que la TPDU DR na pas t encore reue il est possible de recevoir des donnes. Une connexion en cours dtabliss ement ne peut pas tre ferme. Une collision de fermeture est possible, celle-ci correspond au cas o les deux cts ont dcid de fermer la connexion avant davoir reu une DR, la connexion est alors ferme. Lautomate rgissant le protocole LTP prvoit les tats suivants : - IDLE : la connexion est libre, aucune action na t entreprise pour entamer son tablissement, - PASSIVE ESTABLISHMENT PENDING : ouverture passive, la primitive Listen a t invoque (localement), - ACTIVE ESTABLISHMENT PENDING : ouverture active, la primitive Connect a t invoque (localement), - ESTABLISHED : la connexion est tablie, il est possible dchanger des donnes dans les deux sens, - PASSIVE DISCONNECT PENDING : rception dun DR, lentit distante cherche fermer la connexion mais lentit locale a toujours la possibilit dmettre des donnes (DT), - ACTIVE DISCONNECT PENDING : la primitive Disconnect a t invoque (localement). Dans la suite de lexercice nous allons poursuivre llaboration de lautomate en cherchan t dterminer les limites du protocole LTP. 1) Dans cette question nous nous intressons la phase douverture dune connexion.

a. Reprsentez sur la figure ci-dessous les transitions ncessaires permettant daboutir une ouverture de connexion. (3 pts) (voir figure) b. Reprsentez sur la figure ci-dessous les transitions consquentes un refus (chec) de connexion. (3 pts) (voir figure) c. Que se passe-t-il si lentit LTP appele ne fonctionne pas ? Que faut-il prvoir de plus ct appelant ? (3
pts)

Lappelant reste bloqu indfiniment en attente dune rponse. Prvoir un time out d. Dcrivez le problme qui se pose lorsquune CR dlaye (doublon) arrive. Est -ce quil suffit de prvoir un protocole 3 way handshake pour rsoudre le problme ? Justifier votre rponse. (3 pts) Etablissement de la connexion dun seul ct (ct appel) sans que lappelant ne le demande Non, car le 3ime message peut lui aussi tre un doublon
2) Dans cette question nous nous intressons la phase de transfert de donnes. Aucun des deux cts ninvoque la primitive Disconnect.

a. Reprsentez sur la figure ci-dessous les transitions ncessaires permettant de raliser les changes de donnes. (3 pts)
(voir figure)

b. Que faut-il prvoir de plus pour remdier au problme de perte dun DT ? Dcrivez tous les lments de procdures quil faut prvoir dans cette solution. (3 pts) Numrotation des segments + ACK + Time out

Page 6 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

c. Quelles sont les autres critiques que vous pouvez encore porter ce protocole ? Pour rpondre cette question, pensez aux diffrents lments de protocoles (mcanismes) que nous pourrions rajouter. (3 pts) Les doublons Le squencement Gestion de plusieurs connexions et multiplexage Contrle de flux Inactivit

3) Dans cette question nous nous intressons la phase de fermeture dune connexion. On suppose quaucune DR dlaye (doublon) ne risque de se manifester.

a. Reprsentez sur la figure ci-dessous les diffrentes transitions possibles lors dune fermeture de connexion (prvoyez les diffrents cas possibles). (3 pts) (voir figure) b. Que se passe-t-il si une DR envoye est perdue ? Comment pouvez remdier ce problme ? Prvoyez aussi le cas o lentit LTP distante nest plus fonctionnelle (3 pts) La connexion restera tablie indfiniment (Time out + retransmission du DR) un certain nombre de fois c. Est-ce quavec la solution prconise en 3.b, vous garantissez quune entit LTP, dun ct dune connexion, puisse dterminer si de lautre ct de la connexion, la primitive Disconnect a t bien invoque ou non (avant toute fermeture de la connexion) ? Justifiez votre rponse. (3 pts) Non il nexiste pas de solutions ce problme

IDLE

PASSIVE DISCONNECT PENDING

PASSIVE ESTABLISHMENT PENDING

ACTIVE ESTABLISHMENT PENDING

ACTIVE DISCONNECT PENDING

ESTABLISHED

Page 7 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

Partie III
Exercice 1 :
Programme client :

Valeur Consulter (Cl c) { val = ConsulterLocalement (c) ; 3 points if (val != null) return val ; 2 points
m.fonction = consulter ; m.cl = c ; m.port = portclient ; EnvoyerMsg (portserveur, m) ; m = RecevoirMsg (portclient) ;

ModifierLocalement (c, m.valeur) ; Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point
return m.valeur ; }

void Modifier (Cl c, Valeur v) { ModifierLocalement (c, v) ;


m.fonction = modifier ; m.cl = c ; m.valeur = v ; EnvoyerMsg (portserveur, m) ; }

Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point

void cohrence () { while (1) { Boucle infinie : 4 points m = RecevoirMsg (portcohrence) ; 4 points ModifierLocalement (m.cl, null) ; Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point }
}

Programme serveur :
while (1) { m = RecevoirMsg (portserveur) ; switch (m.fonction) { case consulter : m1.valeur = ConsulterLocalement (m.cl) ; EnvoyerMsg (m.port, m1) ;

Add (listeclient[m.cl], m.port) ;


break ; case modifier : ModifierLocalement (m.cl, m.valeur) ;

Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point

foreach port in listeclient EnvoyerMsg (port, m) ;

Boucle : 2 points Emplacement : 1 point Paramtres : 1 point


Page 8 sur 9

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES (Session 2012)


Epreuve de Sciences et Techniques Informatiques (19/07/2012)

listeclient[m.cl] = null ; 2 points 1 point existe mais crite de manire diffrente


break ; } }

Exercice 2 :
Question 1 : Client A fait appel au serveur B - Zro point Client A fait appel au SERVEUR_NAME - 3 points Client A fait appel un intermdiaire 3 points + justification 2 points (Le client ne connais pas le SERVEUR_NAME) Question 2 :

1. 2. 3. 4. 1. 2. 3. 4.

Appel au SERVEUR_NAME 2 points SERVEUR_NAME fournit l@ de B 2 points Client A fait appel B 2 points Dtails (talon, intermdiaire, local, distant) 1 point Diffusion vers les sites S1, S2, et S3 3 points Un site fournit l@ de B 2 points Client A fait appel B 2 points Dtails (talon, intermdiaire, local, distant) 1 point

Question 3 :

Question 4 : Garder localement l@ du serveur 5 points

Page 9 sur 9

Vous aimerez peut-être aussi