E3A Option Informatique MP 2018Sujet
- Décidabilité et problème de l'arrêt
- Récursivité en Caml
- Algorithmes de calcul du pgcd
- Complexité algorithmique
- Représentation de graphes par matrice d'adjacence
- Requêtes SQL (sélection, jointure, agrégation)
- Types algébriques et structures récursives en Caml
- Logique propositionnelle et formes normales
Téléchargements
- Corrigé : pas encore disponible
- Rapport du jury : non disponible
Présentation du sujet
Informatique MP option info : décidabilité, algorithmes de pgcd, graphes, SQL et logique propositionnelleAfficher ou masquer la section
Présentation du sujet
L'épreuve comporte cinq exercices totalement indépendants. Le premier explore la fonction de terminaison en Python et démontre par un raisonnement diagonal qu'un détecteur universel d'arrêt ne peut exister. Le deuxième programme en Caml plusieurs variantes de l'algorithme du pgcd par soustractions successives, dont la méthode chinoise. Le troisième traite d'un graphe et de la vérification d'un chemin. Le quatrième porte sur des requêtes SQL sur une base de données de zoos. Le cinquième étudie en Caml les formules logiques positives et un algorithme de mise sous forme normale conjonctive.
- 1Exercice 1 (Python) : terminaison de fonctions et problème de l'arrêtAnalyser la terminaison de fonctions Python données puis démontrer, par un raisonnement diagonal, qu'aucune fonction arret ne peut décider en général si un calcul termine.
- 2Exercice 2 (Caml) : valuation, résidu et algorithmes de pgcdProgrammer en Caml le calcul du résidu d'un entier puis plusieurs versions de l'algorithme du pgcd par soustractions successives, dont la méthode chinoise, avec analyse de complexité.
- 3Exercice 3 (Caml) : graphesÉcrire la matrice d'adjacence d'un graphe donné et une fonction vérifiant si un chemin proposé est valide dans ce graphe.
- 4Exercice 4 (SQL) : base de données de zoosÉcrire des requêtes SQL portant sur deux tables liant zoos et animaux, avec filtres sur le sexe, l'espèce, le continent et le pays.
- 5Exercice 5 (Caml) : formules logiques positives et forme normale conjonctiveReprésenter des formules propositionnelles positives en Caml, écrire des fonctions de reconnaissance de disjonctions et de formes normales conjonctives, puis démontrer la terminaison d'un algorithme de normalisation.
L'épreuve en chiffres
Moyenne 11,17 / 20 · écart-type 3,6 · 493 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 11,17/ 20
- Écart-type
- 3,6
- Présents
- 493
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
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
CONCOURS ARTS ET MÉTIERS ParisTech - ESTP - POLYTECH
Épreuve d'Informatique MP
L'usage de calculatrices est interdit.
AVERTISSEMENT
Exercice 1 (Python)
- Pour quelles valeurs de n dans
ℤ la fonction fun2 termine-t-elle? Même question pour fun3.
def fun1 (n): def fun2 (n): def fun3 (n):
while n != 10: if n % 2 == 0: S = 0
n = n + 1 return 0 while n != 0 :
else : S = S + n
while True: n = n - 2
n = n + 1 return S
- Détailler l'exécution de fun3(10).
- Écrire en Python une fonction ForEver (n) qui ne termine jamais.
Problématique
4. Dans cette question, nous supposons qu'une telle fonction arret existe.
(a) Écrire en Python une fonction strange (
(b) Écrire en Python une fonction paradox (f) qui termine si et seulement si le calcul de
5. Le calcul de paradox(paradox) termine-t-il ? Qu'en déduire quant à l'existence de arret?
Exercice 2 (Caml)
- Expliquer succintement comment, à partir de l'écriture en base deux de
n ∈ ℕ^⋆ , on peut lire la valuation et le résidu den . - L'entier 192 s'écrit en base deux 11000000 . Donner sa valuation et son résidu.
- Écrire en Caml une fonction residu : int -> int qui prend en argument un entier positif ou nul et renvoie son résidu.
2 Tant que
3 Remplacer
4 Remplacer
5 Fin du "Tant que".
6 Renvoyer
4. Écrire en Caml une fonction pgcd1 : int -> int -> int qui calcule le pgcd de deux entiers naturels non nuls en utilisant cet algorithme et pas un autre. Cette fonction ne doit pas être récursive ni faire appel à une ou des fonctions auxiliaires récursives.
5. Écrire en Caml une fonction récursive pgcd2 : int
6. Estimer (en justifiant) la complexité de cet algorithme en fonction de
7. Que calcule la méthode chinoise lorsque
Indication : On peut distinguer le cas
8. Estimer (en justifiant) la complexité de cette méthode en fonction de
9. En déduire une fonction pgcd_chinois : int -> int -> int qui calcule le pgcd de deux entiers (pairs ou impairs) avec une complexité du même ordre de grandeur que la complexité calculée la question précédente. Justifier la complexité de pgcd_chinois.
Exercice 3 (Caml)

- Écrire la matrice d'adjacence du graphe ci-dessus.
- Écrire en Caml une fonction chemin : int vect vect -> int list -> bool qui prend en entrée la matrice d'adjacence d'un graphe et un chemin (une liste de sommets du graphe) et qui vérifie si ce chemin est possible dans le graphe. Par exemple, sur le graphe ci-dessus, avec le chemin [
2; 1; 0; 4 ] la fonction chemin doit renvoyer false car les sommets 1 et 0 ne sont pas connectés. Avec le chemin [1; 2; 3 ] la fonction chemin doit renvoyer true car les sommets 1 et 2 sont connectés, ainsi que les sommets 2 et 3.
Exercice 4 (SQL)
| id | nom | pays | continent |
| FR42 | Zoo de La Flèche | France | Europe |
| RU12 | Parc zoologique de Novossibirsk | Russie | Asie |
| RU5 | Parc zoologique de Saint-Pétersbourg | Russie | Europe |
|
|
|
|
|
| id | nom | espece | sexe | naissance | zoo |
| ke860 | Kaiko | Chameau | F | 2013 | FR42 |
| ic431 | Jeffrey | Python royal | M | 2016 | RU12 |
| gz599 | Antaeus | Annaconda vert | M | 2016 | RU12 |
|
|
|
|
|
|
|
- Écrire une requête SQL renvoyant la table des chamelles (chameaux femelles).
| id | nom | naissance | zoo |
| ke860 | Kaiko | 2013 | FR42 |
| md375 | Aimy | 2012 | CG01 |
|
|
|
|
|
- Écrire une requête
SQL renvoyant la table des bonobos mâles vivant en Asie.
| id | nom | naissance | zoo |
| yv919 | Finn | 2008 | CN33 |
| qv139 | Proteus | 2013 | KR08 |
|
|
|
|
|
- Écrire une requête renvoyant la liste des pays ayant des zoos sur plusieurs continents.
| pays |
| Russie |
|
|
Exercice 5 (Caml)
type
- Considérons la formule "
X ∨ (Y ∧ Z) " et notons-laφ_0 .
(a) Dessiner l'arbre correspondant àφ_0 .
(b) Écrireφ_0 en Caml en utilisant le type fp.
- Si
X est une variable propositionnelle, alorsX est une DVP. - Si
φ etψ sont des DVP alorsφ ∨ ψ est aussi une DVP.
- Écrire en Caml une fonction dvp : fp -> bool prenant en argument une formule positive
f et renvoyant true si et seulement sif est une DVP.
- Si
φ est une DVP alorsφ est une FNCP. - Si
φ etψ sont des FNCP, alorsφ ∧ ψ aussi.
- Écrire en Caml une fonction fncp de type fp -> bool prenant en argument une formule positive
f et renvoyant true si et seulement sif est une FNCP.
let rec norm f = match f with 0
VAR _ -> f
1
| OU ET (norm a, norm b) -> E)
| | | | | | | | | | (a,c) ) ) , norm (OU }
| OU (a,b) -> let c = OU( norm a, norm b) in 5
if f=c

else norm c;; 8
- Expliquer brièvement pourquoi si
f est une FNCP alors normf termine et renvoie f. - Montrer que si norm
f termine, alors elle renvoie une FNCP. - Exhiber, sans démonstration, une fonction simple
λ de l'ensemble des formules dansℕ telle que pour toutes formulesa, b, c etd :
-
λ(a ∨ b) = λ(a ∧ b) > max(λ(a), λ(b)) , -
λ((a ∧ b) ∨ c) = λ(c ∨ (a ∧ b)) > max(λ(a ∨ c), λ(b ∨ c)) , - Si
λ(a) ⩾ λ(c) etλ(b) ⩾ λ(d) alorsλ(a ∨ b) ⩾ λ(c ∨ d) .
-
μ(X) = 0 siX est une variable propositionnelle, -
μ(φ ∧ ψ) = 1 pour toutes formulesφ etψ , -
μ(φ ∨ ψ) = min(μ(φ), μ(ψ)) pour toutes formulesφ etψ .
- On considère une formule
f telle que :
-
f correspond au cas de filtrage (pattern matching en anglais) de la ligne 5 mais ne correspond à aucun des cas des lignes 1 à 4, - Le calcul de
c à la ligne 5 termine.
(a) Montrer que sif ≠ c alorsμ(f) > μ(c) .
(b) Montrer queλ(f) ⩾ λ(c) .
- Démontrer soigneusement que norm termine sur toutes les formules positives.
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique option info e3a MP 2018 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique option info e3a MP 2018 ?
Elle couvre la décidabilité (problème de l'arrêt), les algorithmes de pgcd en Caml, les graphes, les requêtes SQL et la logique propositionnelle.
Les cinq exercices sont-ils indépendants ?
Oui, l'énoncé précise que les cinq exercices sont totalement indépendants, chacun dans un langage précisé (Python, Caml ou SQL).
Ce sujet demande-t-il de programmer en Python ou en Caml ?
Les deux : l'exercice 1 se programme en Python, les exercices 2, 3 et 5 en Caml, et l'exercice 4 en SQL.
Le sujet aborde-t-il la théorie de la calculabilité ?
Oui, l'exercice 1 conduit à démontrer, par un argument diagonal, qu'il ne peut exister de fonction décidant en général si un calcul termine.
Pas de description pour le moment
