• Aucun résultat trouvé

Pour les candidats ayant choisi l’informatique comme sp´ ecialit´ e principale

Dans le document En guise de br`eve introduction (Page 62-67)

Si vous ne parvenez pas `a r´epondre `a une question, vous pouvez cependant l’utiliser comme hypoth`ese pour les questions suivantes.

Calculatrices interdites.

Exercice 1.

1. D´ecrire une structure de donn´ees S pour stocker des ´el´ements pond´er´es qui permet les op´erations suivantes.

• Ins´erer(S, elem,w) ajoute un ´el´ement de poids w `a la structure S,

• Recherche-min(S) retourne un ´el´ement de poids minimum dans S ainsi que son poids,

• Efface-min(S) enl`eve l’´el´ement de poids minimum de S.

Le temps de calcul deIns´erer etEfface-min doivent ˆetreO(logn) o`un est le nombre d’´el´ements dans S au moment de l’appel. Recherche-min doit fonctionner en O(1).

Vous pouvez supposer que les poids sont entiers.

Donner un argument bref expliquant que vos fonctions se d´eroulent dans les temps souhait´es et produisent des r´esultats corrects.

2. Combien de temps faut-il pour aller de la ville a `a la ville z si le temps de voyage entre les villes sont les suivantes?

• 1 minutes entre les villes a etb

• 9 minutes entre les villes a etc

• 4 minutes entre les villes a etd

• 5 minutes entre les villes b ete

• 12 minutes entre les villes b etf

• 12 minutes entre les villes b etf

• 4 minutes entre les villes cetf

• 4 minutes entre les villes cetg

• 2 minutes entre les villes d etg

• 8 minutes entre les villes e eth

• 3 minutes entre les villes f eth

• 7 minutes entre les villes f etz

• 2 minutes entre les villes f eti

• 3 minutes entre les villes h etz

E.N.S. Paris – S´election internationale 2014 63 Informatique (3 h) [i14uxue] 2/3

• 6 minutes entre les villes i etz

3. Utilisant le langage de programmation de votre choix, ´ecrire un programme qui prends en entr´ee des entiers d´ecrivant le temps de voyage entre deux villes et calcule le temps minimum qu’il faut pour aller de la ville 1 `a la ville 2. Chaque ville est repr´esent´e par un num´ero entre 1 et 1000000.

Le temps de calcul de votre programme devrait ˆetre O((m+n) logm) o`um est le nombre de paires de villes donn´es `a l’entr´ee et n le nombre de villes.

Supposer que vous avez acc`es `a la structure d´ecrit dans la Question 1.

4. Maintenant, supposons que traverser une ville (c’est `a dire arriver et repartir) prends aussi du temps. Le temps requis est la moiti´e du nombre de minutes restant jusqu’`a la prochaine heure. Donc, si vous arrivez `a 2:16 (soit 136 minutes apr`es le d´epart), vous sortez de la ville dans 44/2 = 22 minutes. Arriver pile `a l’heure vous laisser sortir imm´ediatement.

D´ecrire un algorithme pour trouver le temps minimum requis pour arriver `a la ville z de la ville a si vous commencez `a a `a minuit (i.e., 00:00).

5. D´ecrire comment le temps de calcul d’une des op´erations Ins´erer orEfface-min de la Question 1 peut ˆetre am´elior´ee en gardant le temps de calcul des deux autres op´erations.

Exercice 2.

Un graphe G est un paire ordonn´ee (V, E) o`u V est un ensemble appel´e sommets et E est un sous ensemble des paires (non-ordonn´ees) de V appel´e arˆetes. Deux sommets u, v ∈ V sont adjacentsi (u, v) est un ´el´ement deE. Ledegr´e d’un sommetuest le nombre d’arˆetes contenant u.

Unchemin dans un grapheGest une suite de sommetsv1, v2, . . . , vko`uvi etvi+1sont adjacents pour tout iand aucun sommet n’apparaˆıt deux fois dans cette suite. Un cycledans un graphe G est un chemin o`u v1 et vk sont adjacent. Un cycle Hamiltonian dans un graphe G est un cycle qui contient tout sommet deG.

Le but de cet exercice est de donner un algorithme polynomial pour trouver un cycle Hamilto-nian dans un grapheG= (V, E) avec au moins trois sommets et o`u tous les sommets ont degr´e au moins |V|/2. Un graphe avec ces propri´et´es est un graphe de degr´e ´elev´e.

Vous pouvez directement donner un tel algorithme et d´emontrer qu’il est correcte et a un temps de calcul polynomial `a la place de r´epondre aux Questions 1-5. Dans ce cas, vous devez toujours r´epondre `a la Question 6.

1. Donner un algorithme polynomial qui prends en entr´ee un graphe de degr´e ´elev´e G et chemin P =v1, . . . , vk dans G o`u k < n et retourne soit un chemin avec k+ 1 sommets ou un cycle contenant les sommets de P (possiblement dans un ordre diff´erent).

2. Donner un algorithme polynomial qui prends en entr´ee un graphe de degr´e ´elev´e G et cycle C dans G o`u k < n et retourne un chemin avec k+ 1 sommets contenant tous les sommets de C (possiblement dans un ordre diff´erent).

64 E.N.S. Paris – S´election internationale 2014 Informatique (3 h) [i14uxue] 3/3

3. Donner un algorithme polynomial qui prends en entr´ee un graphe de degr´e ´elev´e G et retourne un cycle Hamiltonian dans G.

4. Montrer que le temps de calcul de votre algorithme de la Question 3 est bien polynomial.

Ecrire explicitement la valeur de´ k pour lequel votre algorithme a un temps de calcul O(nk).

5. Montrer que votre algorithme de la Question 3 est correcte. C’est `a dire, montrer qu’il retourne bien un cycle et que celui-ci est Hamiltonian. (Selon votre algorithme, il est peut ˆetre n´ecessaire de montrer qu’il ne bloque pas et termine.)

6. Expliquer comment changer l’algorithme de la Question 3 en un algorithme qui prends en entr´ee un graphe G= (V, E) avec au moins 3 sommets et o`u la somme des degr´es de n’importe quel paire de sommets non-adjacents u, v est au moins |V| et qui retourne un cycle Hamiltonian dans G.

E.N.S. Paris – S´election internationale 2014 65 Informatique (2 h) [i14uxve] 1/2

S´ election internationale Session 2014

Ecole Normale Sup´ ´ erieure Paris

Epreuve de culture scientifique - ´ Informatique Dur´ee : 2 heures Pour les candidats ayant choisi l’informatique comme sp´ ecialit´ e

secondaire

Si vous ne parvenez pas `a r´epondre `a une question, vous pouvez cependant l’utiliser comme hypoth`ese pour les questions suivantes.

Calculatrices interdites.

Exercice 1.

Les portes logiques sont des ´el´ements d’un circuit dont les entr´ees et les sorties sont binaires.

Les trois portes logiques ´el´ementaires et, ou and non sont d´ecrites ci-dessous.

x

y x∧y

ET

x

y x∨y

OU

x ¬x

NON

Dans les questions suivantes, indiquer clairement les entr´ees et les sorties dans tous les dia-grammes de circuit. ´Eviter autant que possible d’utiliser des symboles suppl´ementaires et si c’est le cas, indiquer dans votre r´eponse ce qu’ils repr´esentent.

1. En utilisant uniquement les porteset,ouetnon, dessiner un diagramme de circuit pour un additionneur de 1 bit qui prend en entr´ee deux bits a0, b0 et (´eventuellement) une retenue r et retourne la somme s0 de a0, b0 etr et la retenue s1.

s0 =a0+b0+rmod 2 ets1 =b(a0+b0+r)/2c

2. En utilisant uniquement les portes et, ou etnon et le circuit de la question pr´ec´edente, dessiner un diagramme pour un additionneur de 3 bits qui prend en entr´ee a2,b2, a1, b1, a0, b0, r representant deux nombres de 3 bits a and b en binaire (not´ea2a1a0 et b2b1b0), et un bit de retenue r. Il devra retourner la sommes de ces trois nombres en binaire sous la forme s3, s2, s1, s0.

X3 i=0

si2i = X2

i=0

ai2i+ X2

i=0

bi2i+r

Expliquer comment ´etendre cet additionneur en un additionneur pour n bits.

3. D´eterminer le nombre de portesg(n) n´ecessaires pour le circuit de l’additionneur pourn bits de la Question 2.

4. Supposons que le temps de propagation d’un signal logique `a travers une porte ´el´ementaire est de t secondes (ind´ependamment de la porte). Si tous les signaux d’entr´ee sont alt´er´es pour l’additionneur pour n bits de la Question 2 au temps 0, quel est le temps n´ecessaire pour l’obtention du r´esultat en sortie du circuit (en fonction de n et t).

66 E.N.S. Paris – S´election internationale 2014 Informatique (2 h) [i14uxve] 2/2

Nous appelons un additionneur de 2kbits diviser-pour-r´egner le circuit d´efini r´ecursivement de la fa¸con suivante :

• L’additionneur de 1-bit diviser pour r´egner est l’additionneur de 1-bit de la Question 1.

• Pour k ≥ 1, l’additionneur de 2k-bit diviser pour r´egner est obtenu en fusionnant deux additionneurs de 2k−1-bit diviser pour r´egner A et B en envoyant les 2k−1 bits de poids faible des entr´ees a et b et l’´eventuelle retenue r `a A et tous les bits restants `a B. La retenue de la sortie deA est envoy´ee `a B.

5. D´eduire le d´elai pour l’obtention du r´esultat pour ce circuit en fonction den = 2k et det.

Nous consid´erons maintenant un additionneur de 2k bits diviser-pour-r´egner am´elior´e o`u le circuit agissant sur les bits de poids forts est remplac´e par deux additionneurs, l’un supposant que la retenue entrante vaut 1 et l’autre supposant que la retenue entrante vaut 0.

6. Dessiner le diagramme de circuit utilisant trois additionneurs de 2k−1 bits diviser-pour-r´egner am´elior´e et quelques portes logiques ´el´ementaires pour construire un additionneur de 2k bits diviser-pour-r´egner am´elior´e.

7. D´eduire le d´elai pour l’obtention du r´esultat pour cet additionneur de 2k bits diviser-pour-r´egner am´elior´e en fonction de n= 2k et de t.

8. Donner une formule r´ecursive donnant le nombre de portes logiques ´el´ementaires dans cet additionneur de 2k bits diviser-pour-r´egner am´elior´e.

E.N.S. Lyon – Second concours 2015 67 Informatique (3 h) [i1532ue] 1/6

Ce sujet comporte trois parties ind´ependantes. Il est recommand´e de lire l’ensemble du sujet avant de commencer la r´edaction. Il est ´egalement conseill´e de traiter les questions dans l’ordre de l’´enonc´e. On pourra ce-pendant aborder une question en admettant les r´esultats des questions pr´ec´edentes. Les algorithmes demand´es seront ´ecrits dans un langage de programmation au choix du candidat.

Dans le document En guise de br`eve introduction (Page 62-67)