E3A Option Informatique MP 2019Sujet et corrigé
- Recherche dichotomique, invariants de boucle et terminaison
- Complexité algorithmique
- Automates finis déterministes et langages rationnels
- Graphes, plus courts chemins et diamètre
- Arbres binaires et algorithmes récursifs diviser-pour-régner
Téléchargements
- Rapport du jury : non disponible
Présentation du sujet
Recherche dichotomique et ses extensions, automates reconnaissant des langages de mots binaires, diamètre d'un grapheAfficher ou masquer la section
Présentation du sujet
Le premier exercice étudie la recherche dichotomique dans une liste triée, sa correction, sa terminaison, puis l'étend à une recherche par trichotomie et à une matrice triée en colonnes. Le deuxième exercice construit des automates reconnaissant différents langages de mots binaires, dont celui des écritures binaires d'entiers. Le troisième exercice étudie le diamètre d'un graphe, avec un algorithme spécifique de calcul du diamètre d'un arbre binaire en temps linéaire.
- 1Exercice 1, parties 1 à 2 : recherche par dichotomieOn rappelle le principe de la dichotomie, on étudie un code Python bogué (boucle infinie), on identifie l'invariant de boucle et on corrige la fonction pour la rendre correcte et terminante.
- 2Exercice 1, partie 3 : extensions de la dichotomieOn écrit une fonction de recherche par trichotomie et on compare sa complexité à la dichotomie, puis on adapte la méthode à la recherche dans une matrice triée en colonnes, avec une complexité logarithmique imposée.
- 3Exercice 2 : automates et langages de mots binairesOn construit des automates locaux ou déterministes reconnaissant divers langages de mots binaires (écritures binaires d'entiers, expressions rationnelles, automate défini par une fonction de transition modulo 3) et on étudie leur intersection.
- 4Exercice 3, parties 1 à 2 : diamètre d'un grapheOn étudie des exemples de graphes de diamètre extrémal et on discute des algorithmes de parcours (Dijkstra, parcours en largeur) permettant de calculer le diamètre d'un graphe.
- 5Exercice 3, partie 3 : diamètre d'un arbre binaireOn étudie une première méthode de calcul du diamètre d'un arbre en le convertissant en graphe, puis une méthode diviser-pour-régner de complexité linéaire utilisant la hauteur des sous-arbres.
Ces sujets peuvent vous intéresser
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
Épreuve d’Informatique MP
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.
AVERTISSEMENT
- L'épreuve est composée de 3 exercices indépendants.
- Un candidat pourra toujours admettre le résultat des questions qu'il n'a pas faites pour faire les questions suivantes.
- Les programmes devront être écrits dans le langage de programmation Python pour l'exercice 1 et OCaml pour les exercices 2 et 3.
Exercice 1 - Autour de la recherche par dichotomie
Partie 1 - Questions de cours
Partie 2 - Étude d'une fonction dicho
(1) def dicho(liste,x):
(2) # Pré-conditions: x est un entier, liste est une
(3) # liste d'entiers triée dans l'ordre croissant
(4) n = len(liste)
(5) if n == 0:
(6) return False
(7) }\textrm{g},\textrm{d}=0,\textrm{n}-
(8) while d-g > 0:
(9) m = (g+d)//2
(10) if liste[m] >= x:
(11) d = m
(12) else:
(13) g = m
(14) return liste[g] == x
5 Il s'avère que la fonction dicho ne termine pas. Donner un exemple où la fonction boucle.
6 Indiquer sans justification la ou les corrections à apporter pour que la fonction dicho termine, tout en restant correcte.
Partie 3 - Extensions du principe
- le couple d'indices (
i, j ) minimal pour l'ordre défini plus haut tel que x se trouve en ligne i et colonne j , si l'entier x est bien présent dans la matrice mat ; - le couple
(− 1, − 1) six n'est pas présent dans la matrice mat.
Exercice 2 - Automates et langages de mots binaires
type mot = bool list; ;
à savoir par une liste de booléens où la lettre 0 est représentée par le booléen false et la lettre 1 par le booléen true.
11a) Donner l'écriture binaire de l'entier 41.
11b) Donner l'entier représenté par le mot 10101010.
11c) Pour un automate, que signifie la propriété d'être local standard?
11d) Dessiner un automate local standard
11e) Écrire en OCaml une fonction langage_1 de type mot
12a) Justifier que
12b) Dessiner un automate déterministe
12c) Écrire en OCaml une fonction langage_2 de type mot
- l'ensemble d'états
Q = {0, 1, 2} ; - l'état initial
i = 0 ; - l'ensemble d'états finals
F = {0} ; - la fonction de transition
δ : Q × A ⟶ Q définie par
13a) Dessiner l'automate
13b) Écrire en OCaml une fonction langage_3 de type mot -> bool qui prend en argument un mot
13c) Pour tout
14a) Décrire simplement l'ensemble des mots du langage
14b) Existe-t-il un automate reconnaissant le langage
Exercice 3 - Diamètre d'un graphe
Le diamètre d'un graphe G , noté
Partie 1 - Exemples de graphes
.jpg)

type graphe = int list array;;
16 Graphes de diamètre maximal.
16a) Dessiner sans justification un graphe à 5 sommets ayant un diamètre le plus grand possible.
16b) Écrire en OCaml une fonction diam_max de type int -> graphe qui prend en argument un entier naturel
17a) Dessiner sans justification un graphe à 5 sommets ayant un diamètre le plus petit possible.
17b) Écrire en OCaml une fonction diam_min de type int -> graphe qui prend en argument un entier naturel
Partie 2 - Algorithmes de calcul du diamètre
18 Donner l'entrée et la sortie de l'algorithme de Dijkstra. Comment cet algorithme permet-il de calculer le diamètre d'un graphe?
20 Laquelle des deux méthodes précédentes est la mieux adaptée pour calculer le diamètre d'un graphe?
Partie 3 - Diamètre d'un arbre binaire
type arbre
Le graphe sous-jacent
- les sommets correspondent aux nœuds de l'arbre (et pas aux feuilles);
- les arêtes correspondent aux branches de l'arbre reliant deux nœuds (et non pas celles reliant un nœud à une feuille).
Voici un exemple d'arbre binaire

26 Décrire un algorithme qui calcule le diamètre d'un arbre de type arbre en se ramenant à un graphe. Quelle est sa complexité?
-
A_g le fils gauche deA , représenté par arbre_g; -
A_d le fils droit deA , représenté par arbre_d.
28 Écrire en OCaml une fonction diam_arbre de type arbre -> int qui calcule le diamètre d'un arbre donné en argument. Cette fonction devra être de complexité linéaire en le nombre de nœuds de l'arbre.
FIN D'ÉPREUVE
Questions fréquentes
4 questionsSur quels chapitres porte ce sujet d'informatique MP e3a 2019 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte ce sujet d'informatique MP e3a 2019 ?
Il porte sur les algorithmes de recherche et leur complexité, les automates finis et les langages rationnels, et les algorithmes de graphes, notamment le calcul du diamètre.
Quelles parties sont indépendantes dans ce sujet ?
L'énoncé précise que l'épreuve est composée de trois exercices indépendants, et qu'un candidat peut toujours admettre le résultat d'une question non traitée pour continuer les questions suivantes.
Quels langages de programmation faut-il utiliser pour ce sujet ?
Python pour l'exercice 1 sur la recherche dichotomique, et OCaml pour les exercices 2 et 3 sur les automates et les graphes.
Quel est l'objectif de l'exercice sur le diamètre d'un arbre binaire ?
Passer d'un algorithme général sur les graphes à un algorithme spécifique aux arbres binaires, de complexité linéaire en le nombre de nœuds, en utilisant une approche diviser-pour-régner fondée sur la hauteur des sous-arbres.
Pas de description pour le moment
