E3A Option Informatique MP 2010Sujet
Pas encore noté
Téléchargements
- Corrigé : pas encore disponible
- Rapport du jury : non disponible
Ces sujets peuvent vous intéresser
Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
CONCOURS ARTS ET MÉTIERS ParisTech - ESTP - ARCHIMEDE
Épreuve d'Informatique MP
Durée 3 h
Si, au cours de l'épreuve, un candidat repère ce qui lui semble être une erreur d'énoncé, d'une part il le signale au chef de salle, d'autre part il le signale sur sa copie et poursuit sa composition en indiquant les raisons des initiatives qu'il est amené à prendre.
L'usage de calculatrices est interdit.
Indiquer en tête de copie ou de chaque exercice le langage utilisé
Quel que soit le langage utilisé, le candidat pourra supposer qu'il dispose d'une fonction test_liste_vide qui prend en entrée une liste et renvoie le booléen 1 si la liste est vide et 0 sinon.
Le candidat pourra, s'il le juge utile, supposer que chaque liste se termine par un élément de marquage de fin de liste appelé NIL.
Dans tous les exercices, on considérera que les éléments d'un tableau de longueur
n sont indicés de 1 à
n . Le candidat pourra supposer qu'il en est ainsi dans le langage qu'il utilise.
Exercice 1
a) Ecrire la fonction :
verification_liste
données L:liste d'entiers naturels
résultat b:booléen
qui prend en entrée une liste
L d'entiers naturels et renvoie le booléen 0 (ou true) lorsqu'au moins un des éléments de la liste n'est pas égal à 0,1 , ou 2 et 1 (ou false) sinon.
b) Ecrire la fonction :
b) Ecrire la fonction :
tri_tableau
données N: entier naturel
T:tableau d'entiers naturels de longueur N
résultat U:tableau d'entiers naturels de longueur N
qui prend en entrée un tableau
T qui ne contient que des 0,1 ou 2 et renvoie le tableau trié dans l'ordre croissant. On ne créera pas de tableau intermédiaire à l'intérieur du programme et on proposera un algorithme en temps linéaire.
Exercice 2
Une application
φ de l'ensemble
{1, 2, …., 100} dans lui-même est représentée par un tableau
T à cent cases : Pour tout entier
i dans
{1, 2, …, 100} , la
i -ème case du tableau
T contient la valeur
φ(i) .
Ecrire un programme inverse qui prend en entrée le tableau
T et retourne le tableau
U représentant l'application inverse
φ^(− 1) lorsque
φ bijective ; dans le cas contraire, le programme affiche le message " NON BIJECTIF".
Exercice 3
En plus de la fonction test_liste_vide qui prend en entrée une liste et renvoie le booléen 1 si la liste est vide et 0 sinon, on dispose des diverses fonctions et procédures :
x MOD
n retourne le reste de la division euclidienne de l'entier naturel
x par l'entier naturel non nul
n .
ajouter(y, L) ajoute l'élément
y en tête de la liste
L .
supprimer_tête(L) supprime la tête de la liste
L .
ajouter
supprimer_tête
- On considère le programme suivant qui prend en entrée une liste contenant des listes de longueur fixée ne contenant que des 0 ou des 1 et retourne une liste de même type. On remarquera qu'une liste de listes peut contenir uniquement la liste vide.
$\operatorname{PROG}(L$ : liste de listes, $k$ : entier naturel non nul )
variables : $x$ : entier, $U$ : liste de listes, $V 0$ : liste de listes, $V 1$ : liste de listes.
$W 0$ : liste de listes, $W 1$ : liste de listes, $L 1$ : liste d'entiers,
$U \leftarrow L$
$V 0 \leftarrow$ liste_vide
$V 1 \leftarrow$ liste_vide
$W 0 \leftarrow$ liste_vide
$W 1 \leftarrow$ liste_vide
tant que test_liste_vide $(U)=0$ faire
$L 1 \leftarrow$ tête $(U)$
$x \leftarrow$ tête $(L 1)$
si ( $x=0$ ) alors ajouter(supprimer_tête( $L 1$ ), $V 0$ )
sinon ajouter(supprimer_tête(L1), V1)
fin si
supprimer_tête $(U)$
fin faire
si $(k>1)$ faire $V 1 \leftarrow P R O G(V 1, k-1)$
$V 0 \leftarrow P R O G(V 0, k-1)$
fin si
tant que test_liste_vide $(V 1)=0$ faire
$L 1 \leftarrow$ tête $(V 1)$
ajouter $(1, L 1)$
ajouter( $L 1, W 1$ )
supprimer_tête(V1)
fin faire
tant que test_liste_vide $(V 0)=0$ faire
$L 1 \leftarrow$ tête $(V 0)$
ajouter $(0, L 1)$
ajouter( $L 1, W 0$ )
supprimer_tête( $V 0$ )
fin faire
tant que test_liste_vide $(W 0)=0$ faire
ajouter(tête( $W 0$ ), $U$ )
supprimer_tête( $W 0$ )
fin faire
tant que test_liste_vide $(W 1)=0$ faire
ajouter(tête( $W 1$ ), $U$ )
supprimer_tête( $W 1$ )
fin faire
retourner $(U)$
a) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
L = [[1, 0, 1], [0, 1, 1], [0, 0, 0], [1, 1, 0]], k = 1 :
b) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
L = [[1, 0, 1], [0, 1, 1], [0, 1, 0], [1, 0, 0]], k = 3 :
c) Que calcule le programme PROG ?
d) Démontrer que le programme PROG termine.
2. Qu'effectue la fonction ci-dessous :
b) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
c) Que calcule le programme PROG ?
d) Démontrer que le programme PROG termine.
2. Qu'effectue la fonction ci-dessous :
FONCTION1( $n$ : entier naturel, $k$ : entier naturel)
variables : $x$ : entier, $y$ : entier, $i$ : entier, $L$ : liste d'entiers.
$L \leftarrow$ liste_vide
$x \leftarrow n$
pour $i$ de 1 à $k$ faire
$y \leftarrow x$ MOD 2
ajouter $(y, L)$
$x \leftarrow(x-y) / 2$
fin faire
retourner $L$
- Qu'effectue la fonction ci-dessous :
FONCTION2( $L:$ liste d'entiers naturels, $k:$ entier nature)
variables : $x$ : entier, $y$ : entier, $i$ : entier, $L 1$ : liste d'entiers, $L 2$ : liste d'entiers, $U$ : liste de listes.
$L 1 \leftarrow L$
$U \leftarrow$ liste_vide
tant que test_liste_vide $(L 1)=0$ faire
$x \leftarrow$ tête $(L 1)$
$L 2 \leftarrow \operatorname{FONCTION1}(x, k)$
ajouter $(L 2, U)$
supprimer_tête(L1)
fin faire
retourner $U$
- a) Décrire l'éxécution de la fonction FONCTION2 sur la liste
L = [6, 0, 3, 5] et l'entierk = 3 ? Quel est le résultat dePROG(FONCTION2(L, 3), 3) ?
b) On souhaite utiliser la fonction FONCTION1, la FONCTION2 et le programme PROG pour trier par ordre croissant des listes d'entiers naturels. Quelle(s) fonction(s) faut-il ajouter? Quel est le domaine de validité de ce programme de tri ?
Exercice 4
Soit
Σ sur un alphabet fini. Soient
u et
v deux mots sur l'alphabet
Σ . Soient
a_1, …, a_m, b_1, …, b_n les lettres de
Σ telles que
u = a_1…a_m et
v = b_1….b_n .
On dit que
u est un sous-mot de
v si
u est le mot vide
ε(m = 0) ou s'il existe une application strictement croissante de
{1, …, m} dans
{1, …, n} notée
φ , telle que
a_i = b_(φ(i)) , pour tout entier
i compris entre 1 et
m .
- Dans cette question,
Σ est l'alphabet à deux lettres{x, y} . Déterminer l'ensemble des sous-mots du mot xyxyx. Combien y-en a t'il? - Dans le cas général, démontrer que l'ensemble des sous-mots du mot
v = b_1…b_n est fini et proposer une majoration de son cardinal en fonction den . - On suppose que
u est un sous-mot dev . SoitM(u, v) l'ensemble des applicationsφ, φ application strictement croissante de{1, …, m} dans{1, …, n} telle quea_i = b_(φ(i)) , pour tout entieri compris entre 1 etm .
a) Soitj le plus petit indice dans{1, …, n} tel queb_j = a_1 . Démontrer que toute applicationφ dansM(u, v) vérifieφ(1) ⩾ j .
b) Démontrer qu'il existe une applicationφ_0 dansM(u, v) telle que, pour toute applicationφ dansM(u, v) et tout indicei dans{1, …, m}, φ(i) ⩾ φ_0(i) .
c) Ecrire un algorithme qui prend en entrée les listesU = [a_1, …, a_m] etV = [b_1, …, b_n] et qui renvoie la liste[φ_0(m), φ_0(m − 1), …, φ_0(1)] .
d) Ecrire un algorithme qui prend en entrée les listesU = [a_1, …, a_m] etV = [b_1, …, b_n] et qui renvoie un booléen égal à 1 siu est un sous-mot dev, 0 sinon. L'algorithme ne doit parcourir qu'une fois chacune des listesU etV . Estimer la complexité de votre algorithme en fonction des entiersm etn . - Le cardinal de l'ensemble
M(u, v) est noté[u, v] . Soientu^′ etv^′ les mots tels queu = a_1 u^′ etv = b_1 v^′ .
a) Lorsquea_1 = b_1 , démontrer l'égalité[u, v] = [u^′, v^′] + [u, v^′] .
b) Lorsquea_1 ≠ b_1 , démontrer l'égalité[u, v] = [u, v^′] .
c) Proposer un algorithme récursif qui prend en entrée les listesU = [a_1, …, a_m] etV = [b_1, …, b_n] et qui renvoie la valeur de[u, v] . - Dans cette partie, le mot
u = a_1…a_m est fixé. On considèreL(u) le langage formé par les motsv deΣ^∗ tels queu est un sous-mot dev .
a) Dans le cas particulier oùΣ est l'alphabet à deux lettres{x, y} etu = xy , on remarquera que le langageL(xy) est le langage reconnu par l'automateA représenté dans la figure 1 ci-dessous. Proposer une expression rationnelle deL(xy) .
b) Dans le cas général, démontrer que le langageL(u) est un langage rationnel et en proposer une expression rationnelle.
c) Représenter graphiquement un automate déterministe qui reconnait le langageL(u) . On démontrera précisément que le langage reconnu estL(u) .

Figure 1: Automate
A
Exercice 5
La fonction XOR (ou exclusif) est notée
⊕ .
Soitf la fonction booléenne définie sur
{0, 1}^4 par
f(x, y, z, t) = 1 si et seulement si le nombre de 1 parmi
x, y, z, t est impair, pour tout
(x, y, z, t) dans
{0, 1}^4 .
Soit
- Ecrire la table de vérité de la fonction
⊕ . - Démontrer la propriété d'associativité de la fonction
⊕ , c'est-à-dire :
- Ecrire
f avec une formule booléenne. - Construire un circuit logique implémentant la fonction
f utilisant uniquement des portes XOR (ou exclusif). - Etant donné un entier naturel
n non nul, construire un circuit logique qui prend en entréen bits et donne en sortie la parité du nombre de ces bits égaux à 1 en utilisant au plusn − 1 portes XOR.
.jpg)
Figure 2: Porte XOR (ou exclusif)
FIN DE L PREUVE
Pas de description pour le moment
