QCM Corrige
QCM Corrige
Les réponses correctes sont exactement celles en gras. Des commentaires sont en italique.
Structures de données
1. La suite de bits 11101100 peut a priori représenter ...
(A) Un entier naturel plus grand que 1000. Au maximum sur 8 bits on représente les entiers de l’intervalle
J0, 28 − 1K = J0, 255K. À moins d’introduire une façon très atypique de représenter les entiers...
(B) Un entier strictement négatif. Représente −27 + 26 + 25 + 23 + 22 = −20 en complément à 2.
(C) Un rationnel. Cette suite peut représenter un flottant, même si on ne peut pas savoir lequel exactement
car on ne sait pas combien de bits sont utilisés pour l’exposant et combien pour la mantisse.
(D) Un caractère. Oui, mais attention on est au delà de 127 donc ce n’est plus un caractère ASCII.
(E) Rien de ce qui précède.
2. Un pile est ...
(A) L’inverse d’une file.
(B) Une structure FIFO. Une file est FIFO ; une pile est LIFO.
(C) Implémentable à l’aide d’un tableau avec des opérations en temps constant. A priori non. Soit en connaît
la taille max n de la pile en amont et la création d’une pile vide se fera en O(n), soit la gestion de
l’empilement dans une pile pleine causera parfois des recopies de l’intégralité de la pile dans un tableau
plus grand, et donc empiler ne sera pas en temps constant. En temps amorti par contre c’est correct.
(D) Utile pour implémenter une liste doublement chaînée.
(E) Une structure disponible nativement en C. C’est en revanche le cas en OCaml via Stack.
(F) Aucune des réponses précédentes.
3. Une file peut ...
(A) Être implémentée par deux piles avec des opérations élémentaires en temps constant (en
complexité amortie). Le sommet de la pile 1 est la tête de file et celui de la pile 2 est sa queue. La
création créé deux piles vides en temps constant, l’ajout est en temps constant, le retrait demande parfois
de transvaser pile 2 dans pile 1.
(B) Être implémentée par deux files avec des opérations élémentaires en temps constant (en complexité amor-
tie). Techniquement c’est correct puisqu’il suffit d’ignorer l’une des deux files et qu’on peut implémenter
une file de façon à ce que les opérations soient en temps - même pas amorti - constant via par exemple
une liste chaînée avec pointeur permettant d’accéder au premier et au dernier maillons.
(C) Être implémentée par une seule pile. On a besoin de savoir où est la tête et où est la queue.
(D) Être implémentée par un tas. Les tas sont utilisés pour implémenter des files de priorités. Techniquement
on pourrait se servir d’un tas min pour faire une file en insérant le n-ème élément avec la priorité n
mais ce n’est pas très pertinent.
(E) Simuler une table de hachage.
4. Qu’est-ce qu’une collision ?
(A) L’absence de réponse dans une requête serveur.
(B) L’arrêt d’un fil d’exécution à cause d’une impossibilité d’entrer en section critique.
(C) La tentative de retrait d’une pile vide.
(D) La tentative d’ajout dans une file pleine.
(E) Deux éléments ayant la même valeur de hachage.
5. Les tableaux circulaires ...
(A) Nécessitent une architecture spéciale.
(B) Permettent d’implémenter les piles. Techniquement on peut utiliser un tableau circulaire pour faire une
pile mais on n’utiliserait que la structure de tableau, pas le caractère circulaire : réponse peu pertinente.
(C) Permettent d’implémenter les files.
(D) Ont une taille fixe. Techniquement on peut faire des tableaux circulaires ET redimensionnables.
(E) Sont spécifiques au C et au Python et ne peuvent pas être utilisés en Ocaml.
6. Une fonction de hachage peut être utilisée ...
(A) En sécurité informatique.
(B) Pour la reconnaissance de motif dans un texte. Dans l’algorithme de Rabin-Karp.
(C) Pour la mémoïsation. Pour implémenter un dictionnaire via table de hachage.
(D) Pour accélérer l’algorithme des k plus proches voisins. Non, mais en revanche la recherche des k plus
proches voisins d’un points peut être accélérée par l’utilisation d’arbres d-dimensionnels.
7. Si on considère un arbre binaire strict et non vide à n noeuds internes, f feuilles et de hauteur h, quelles
relations sont vérifiées parmi les suivantes ?
(A) f ≤ n. Considérer un arbre à un noeud : f = 1 et n = 0.
(B) f + n < 2h+1 − 1. Est faux sur une racine : f + n = 1 + 0 = 1 = 20+1 − 1. L’inégalité large est vraie.
(C) n ≥ h.
(D) f = n + 1. Se démontre par récurrence sur la taille par exemple.
(E) f + n + h 6= 0. Puisque l’arbre est non vide.
8. En ignorant la valeur des étiquettes des noeuds, combien y a-t-il d’arbres binaires de hauteur exactement 2 ?
(A) 3.
(B) 14.
(C) 21. Il y a un arbre de hauteur −1, un de hauteur 0 et trois de hauteur 1. Dans un arbre de hauteur
2, l’un des fils doit être de hauteur 1 et l’autre est quelconque parmi les 5 possibles. L’ensemble G des
arbres binaires de hauteur 2 dont le fils gauche est de hauteur 1 contient donc 15 éléments (donc plus
que 14) et si on fixe le fils droit comme étant de hauteur 2, on a au maximum 15 arbres supplémentaires,
et en fait moins, car certains sont déjà présents dans G. En tous cas, on en a moins que 15 + 15 = 30.
C’est donc la bonne réponse par élimination et on peut le vérifier en dessinant tous les arbres.
(D) 35.
(E) Cela dépend.
9. Le parcours en largeur d’un arbre est ...
(A) Linéaire en le nombre de noeuds.
(B) Linéaire en le nombre d’arêtes. Dans un arbre, a = n − 1 donc une quantité est linéaire en le nombre
n de noeuds si et seulement si elles est linéaire en le nombre a d’arêtes.
(C) Linéaire en la hauteur. Pas dans un arbre complet par exemple.
(D) Jamais utilisé en pratique.
(E) L’ordre inverse du parcours en profondeur.
10. Dans un arbre binaire de recherche (ABR) de taille n et de hauteur h, on peut ...
(A) Trouver un élément en O(n). Puisque h ≤ n.
(B) Trouver un élément en O(h).
(C) Trouver un élément en O(log n). La recherche dans un ABR est linéaire en sa hauteur. Si l’arbre n’est
pas équilibré, cette hauteur peut être de l’ordre de n donc cette opération n’est pas en O(log n).
(D) Insérer un élément en O(log n). Idem (C) car l’insertion est aussi en O(h).
(E) Supprimer un élément en O(log n). Idem (C) car la suppression est aussi en O(h).
(F) Vérifier qu’il est bien ABR en O(n). Il suffit d’en faire le parcours infixe et de vérifier qu’il est trié.
Attention, si on regarde naïvement si la racine est plus grande que le max à gauche, plus petite que le
min à droite et que les deux fils sont ABR, l’analyse de complexité est plus délicate.
11. Les arbres rouge-noir ... Rappel : un arbre rouge-noir est un ABR strict dont la racine est noire (les feuilles
vide aussi), les fils d’un noeud rouge sont noirs et tel que tous les chemins de la racine à une feuilles ont
autant de noeuds noirs. L’insertion et la suppression utilisent des rotations.
(A) Sont des ABR.
(B) Peuvent être utilisés pour implémenter un dictionnaire. C’est l’un des intérêts d’un ABR.
(C) N’assurent aucune garantie de complexité. Au contraire puisqu’un arbre rouge-noir est équilibré.
(D) N’ont pas d’utilité pratique.
(E) Nécessitent un bit d’information supplémentaire par noeud par rapport à un arbre binaire.
À savoir la couleur du noeud.
(F) Ne peuvent pas stocker de valeurs.
12. La structure de tas peut être utilisée dans les algorithmes suivants ...
(A) Algorithme de Kruskal. Un peu abusif : si on utilise un tri par tas pour trier les arêtes.
(B) Algorithme de parcours en profondeur.
(C) Algorithme de Kosaraju.
(D) Algorithme du tri par tas. Évidemment.
(E) Algorithme de Dijkstra. Via la file de priorité qui gère quel sommet étudier.
13. Il existe une implémentation de la structure unir et trouver ayant une complexité ...
(A) Constante pour l’opération unir. On représente les classes par les composantes connexes d’un graphe
représenté par matrice d’adjacence. Unir revient à ajouter une arête ce qui se fait en temps constant.
Trouver consiste (par exemple) à parcourir la composante pour en trouver le plus petit élément.
(B) Constante pour l’opération trouver. Via un tableau stockant le numéro de partition de i en case i.
(C) Constante pour l’opération trouver et l’opération unir.
(D) Constante en complexité amortie pour l’opération trouver et l’opération unir. Même avec union par rang
et compression de chemin, la complexité amortie n’est pas constante mais en O(α(n)). On peut juste
dire ”en pratique on peut la considérer constante”.
(E) En O(log n) dans le pire cas pour les opérations trouver et unir où n est le nombre d’éléments
manipulés. Via une forêt avec union par hauteur.
14. Un graphe est régulier si tous ses sommets ont le même degré. Existe-t-il un graphe régulier ayant ...
(A) 9 sommets. Avec un graphe à 9 sommets sans arêtes par exemple.
(B) Degré 5 avec 3 composantes connexes. Juxtaposer 3 fois le graphe complet à 6 sommets.
(C) Degré 5 avec 9 sommets. Impliquerait que 2|A| = deg(s) = 9 × 5 = 45 donc que 45 est pair.
P
(D) Degré 6 avec 6 sommets. Chaque sommet ne peut être relié qu’à 5 sommets dans un graphe à 6 sommets.
(E) Un degré p et un nombre q de sommets avec des p et q premiers. Le graphe complet à 3 sommets
convient (p = 2). On ne demande pas ici si on a un graphe régulier pour tous p et q premiers.
15. Le nombre chromatique d’un graphe G ...
(A) Est le plus grand entier k tel qu’il existe une k-coloration de G.
(B) Est le plus petit entier k tel qu’il existe une k-coloration de G.
(C) Dépend de l’implémentation des graphes en machine.
(D) Est majoré par le degré maximum du graphe. Contre-exemple : graphe complet à 3 sommets. Il faut 3
couleurs alors que le degré maximum est de 2. Ce graphe fournit un contre-exemple pour (E).
(E) Est majoré par le degré minimum du graphe.
16. L’ensemble des graphes orientés à n sommets ... Il y a n(n − 1) arcs possibles dans un graphe orienté à n
sommets puisqu’un arc est une paire de sommets distincts. Chaque partie de cet ensemble à n(n − 1) éléments
donne naissance à exactement un graphe orienté : il y en a donc 2n(n−1) .
(A) Est en bijection avec l’ensemble des graphes non orientés à n sommets. Dans un graphe non orienté il y
a k = n(n − 1)/2 arêtes possibles donc 2k graphes possibles.
(B) Est en bijection avec l’ensemble des graphes non orientés à dn/2e sommets. Avec les raisonnements
précédents, il y a 2dn/2e(dn/2e−1)/2 tels graphes.
(C) Est en bijection avec le groupe symétrique Sn . Cet ensemble est de cardinal n!.
(D) Est en bijection avec l’ensemble des mots de {a, b}n −n . Correct puisque pour construire un mot
2
Algorithmique
22. Un invariant de boucle ...
(A) Aide à prouver la correction d’un algorithme.
(B) Est vérifié si et seulement si la propriété reste vraie après une itération si on la suppose vraie avant. Il
faut aussi que la propriété soit vraie avant la toute première itération de la boucle (initialisation).
(C) Est vérifié en sortie de boucle. On entend ici ”invariant” au sens de ”propriété dont on a montré
qu’elle est bien un invariant de boucle” et pas ”propriété dont il faut encore montrer qu’elle est invariante.
(D) Correspond à une formulation de la correction de l’algorithme sur des sous-problèmes.
(E) Aucune des propositions ci-dessus.
23. Un algorithme qui termine en temps probabiliste avec une réponse exacte est un algorithme de ...
24. Un algorithme dont le temps de calcul est garanti mais dont le résultat peut être inexact avec une certaine
probabilité est un algorithme de ...
25. Si pour un problème P on dispose d’un algorithme A qui s’exécute en temps polynomial, sans faux négatif
et avec probabilité de faux positif inférieure à 1/3 ...
(A) P ∈ P . Aucune raison.
(B) On peut résoudre P sans faux négatif et avec une probabilité de faux positif arbitrairement
petite. En amplifiant l’algorithme.
(C) Si A affirme qu’une instance de P est négative, c’est bien le cas. Par définition de faux négatif.
(D) Il existe un algorithme qui résout P en temps polynomial en moyenne. Ce serait vrai si en plus de P on
disposait d’un algorithme polynomial permettant de vérifier si une sortie de P est bien une solution de
A.
26. L’algorithme du tri rapide ...
(A) A une complexité pire cas en Θ(n log n) et une complexité moyenne en Θ(n).
(B) A une complexité pire cas en Θ(n2 ) et une complexité moyenne en Θ(n log n).
(C) Est un algorithme de type Las Vegas. Le tri rapide randomisé, oui.
(D) A la même complexité dans le pire cas et en moyenne.
(E) Peut terminer plus tard dans sa version probabiliste que dans le pire cas de la méthode déterministe.
27. Un algorithme par retour sur trace (backtracking) ...
(A) Correspond à un parcours en largeur.
(B) Correspond à un parcours en profondeur.
(C) Peut entraîner des boucles.
(D) Nécessite d’organiser les données. On organise les solutions partielles dans un arbre.
(E) Permet une résolution polynomiale d’un Sudoku. On peut résoudre le Sudoku par backtracking, mais pas
de manière polynomiale (même si en pratique c’est assez efficace).
28. Un algorithme de type branch-and-bound ...
(A) S’applique à un problème de décision. Non : d’optimisation.
(B) Est une variante d’algorithme diviser pour régner.
(C) Est une variante d’un algorithme de backtracking. La différence étant : dans du backtracking on
élague quand une solution partielle ne peut plus être complétée en une solution totale / dans B&B, on
élague quand une solution partielle ne peut pas être complétée en une solution totale qui a un meilleur
coût qu’une solution totale actuellement connue.
(D) Renvoie une approximation de la solution. Peut tout à fait renvoyer une solution exacte.
(E) Est utile pour trouver un chemin dans un graphe. Techniquement on peut mais ce n’est pas pertinent.
(F) Aucune des réponses précédentes.
29. Un algorithme glouton ...
(A) N’est utile que s’il donne une solution exacte. Non, peut être utile pour construire des approximations.
(B) Peut être un algorithme d’approximation.
(C) Est forcément polynomial. A priori non mais s’il ne l’est pas on ne va probablement pas l’utiliser.
(D) Est un cas particulier de backtracking. Au contraire, on ne revient jamais sur ses pas en glouton.
(E) Ne revient jamais sur une décision prise à une étape précédente.
30. Quels sont les algorithmes gloutons parmi les suivants ?
(A) Algorithme de Huffman. Choix des deux arbres ayant les sommes d’occurences les plus faibles.
(B) Algorithme de Dijkstra. Choix du sommet non traité avec la plus petite distance connue à l’origine.
(C) Algorithme de Kruskal. Choix des arêtes par ordre croissant des poids.
(D) Algorithme pour sac à dos en prenant les objets par ordre croissant de valeur. Immédiat.
31. On note (In )n∈N une suite d’instances d’un problème de minimisation P, A un algorithme qui donne des
solutions aux instances de P, Cn? le coût optimal pour In et Cn le coût de la solution trouvée par A sur In .
(A) Pour tout n ∈ N, Cn ≤ Cn? . Dans un problème de minimisation, le coût optimal est au contraire plus
petit que le coût de toute solution. L’inégalité est vraie si A est exact, puisque c’est alors une égalité.
(B) S’il existe α > 0 tel que ∀n ∈ N, Cn ≤ αCn? , alors A est une α-approximation pour P. C’est la réciproque
qui est vraie. On pourrait ne pas avoir l’inégalité pour d’autres instances de P que les In .
(C) Si Cn? /Cn → +∞ à l’infini, alors A n’est pas un algorithme d’approximation pour P. Techniquement
c’est vrai. En effet, Cn? /Cn ≤ 1 puisqu’on a un problème de minimisation. Donc Cn? /Cn → +∞ est un
énoncé faux et peu importe la véracité de ce qui suit le ”alors”, la table de vérité de l’implication indique
que (C) est vraie.
(D) Si Cn /Cn? → +∞ à l’infini, alors A n’est pas un algorithme d’approximation pour P. Si A
était une α-approximation, on aurait pour tout n ∈ N Cn ≤ αCn? , donc Cn /Cn? serait borné à l’infini.
32. Un algorithme de programmation dynamique ...
(A) Nécessite de stocker des valeurs dans un tableau. Pas obligatoirement dans un tableau.
(B) Consiste exclusivement à mémoïser des résultats. Pas dans les approches top-down.
(C) Consiste à partitionner les solutions en sous-problèmes distincts. N’a pas de sens !
(D) Consiste à formuler la solution d’un problème en fonction de la solution à des sous pro-
blèmes.
(E) Est inadapté lorsque les sous problèmes se recoupent. Au contraire c’est le cadre d’application privilégié.
33. Dans un algorithme de type diviser pour régner ...
(A) La phase de division coupe le problème en deux sous-problèmes. On peut diviser en plus que 2.
(B) La phase de résolution des sous-problèmes se fait généralement de manière itérative. Au contraire, ré-
cursive.
(C) La phase de combinaison a toujours une complexité négligeable par rapport aux deux phases précédentes.
Pas de raison, on pourrait avoir une relation de la forme C(n) = C(n/2) + Θ(n).
(D) Ne donne que des algorithmes de complexité supérieure à un Θ(n). Contre-exemple : exponentiation
rapide.
(E) Aucune des réponses précédentes.
34. En posant C(0) = C(1) = 1, pour quelles formules de récurrence obtient-on C(n) = Θ(λn ) avec λ > 1 ?
(A) C(n) = 3C(n − 1). Donne C(n) = Θ(3n ).
n−1 n−2 n−2
(B) C(n) = C(i). On a C(n) = C(n − 1) + C(i) = 2C(n − 1) donc C(n) = Θ(2n ).
P P P
C(i) = 2 ×
i=0 i=0 i=0
(C) C(n) = 3C(n/2) + O(n2 log n). Donne C(n) = O(n2 log n).
(D) C(n) = nC(n/2). Si on note un = log C(n), cette relation donne un = un/2 + log n, d’où on tire que
√ log (n)
un ∼ (log2 n)/2. On en déduit que un = Θ( n 2 ) qui est trop petit pour être un Θ(λn ) (on raisonne
par l’absurde et on concluerait que (log2 n)/n est minoré par un nombre strictement positif).
(E) C(n) = 2C(n/2) + Θ(2n ). Donne C(n) = Θ(2n ).
35. Pour rechercher si un motif m apparaît dans un texte t on peut ...
(A) Utiliser un automate des occurrences.
(B) Utiliser l’algorithme de Lempel-Ziv-Welch. Non, celui-ci c’est pour la compression.
(C) Utiliser l’algorithme de Rabin-Karp.
(D) Utiliser l’algorithme de Boyer-Moore.
(E) Conclure en temps O(|m||t|). Oui, même avec l’algorithme naïf.
36. L’algorithme de Kosaraju appliqué à un graphe ...
(A) Calcule les composantes fortement connexes.
(B) Utilise un double parcours en profondeur. Techniquement le deuxième parcours n’est pas obliga-
toirement un parcours en profondeur.
(C) Utilise le graphe transposé.
(D) Permet de résoudre 2SAT en temps polynomial.
(E) Utilise une structure de pile. Via le parcours en profondeur.
37. Lesquels de ces algorithmes permettent de calculer la plus petite distance entre deux sommets d’un graphe ?
(A) A? . On pourrait le cocher, mais ça dépend de l’heuristique.
(B) L’algorithme alpha-beta.
(C) L’algorithme de Dijkstra.
(D) L’algorithme de Boyer-Moore.
(E) L’algorithme de Floyd-Warshall.
38. L’algorithme A? avec une heuristique h ... Rappel : admissible = ∀v ∈ V, h(v) ≤ δ(v, but) / monotone =
cohérente = ∀(u, v) ∈ E, h(u) ≤ p(u, v) + h(v).
(A) Correspond à l’algorithme de Floyd-Warshall si h est identiquement nulle. Si h = 0 on retrouve Dijkstra.
(B) Trouve un plus court chemin si h est admissible.
(C) Trouve un plus court chemin si h est monotone. Contre-exemple avec h(A) = 0, h(B) = 5, h(C) = 0,
h(D) = 5 (non admissible à cause de B, d’ailleurs) pour trouver un chemin de A à D dans :
2
A B
2 2
C D
3
En revanche si h(but) = 0 en plus de la monotonie, l’heuristique est admissible donc on trouve bien un
plus court chemin.
(D) Est polynomial en temps si h est admissible. Non, potentiellement exponentiel, car un même sommet
peut passer plusieurs fois dans la file de priorité avec des priorités différentes.
(E) Est polynomial en temps si h est monotone. Car tout noeud est extrait au plus une fois de la FdP.
(F) N’est pas intéressant à appliquer sur un graphe non pondéré. Trouver un plus court chemin en termes
de nombre d’arêtes peut être pertinent dans certains contextes.
39. Quelles propriétés sont justes sur les arbres couvrants parmi les suivantes ?
(A) Tout graphe possède un arbre couvrant. Ce n’est pas le cas pour les graphes non connexes.
(B) L’arête de poids minimal appartient à un arbre couvrant de poids minimal. Mal posé puisqu’il
n’y a pas unicité de l’arête de poids minimal + peut vouloir dire deux choses (qui sont toutes les deux
vraies). ”Il existe un ACM qui contient une arête de poids minimal” ce qui est vrai car l’ACM construit
par Kruskal contient une arête de poids minimal. ”Pour tout ACM, une des arêtes de poids minimal y
appartient” ce qui est vrai sinon, on prend (s, t) une des arêtes de poids minimal ; elles sont reliées dans
l’ACM via un chemin qui n’emprunte aucune arête de poids minimal et il suffirait d’enlever une des
arêtes de ce chemin et rajouter (s, t) pour avoir un arbre de poids strictement plus petit que celui d’un
ACM.
(C) L’arête de poids maximal n’appartient à aucun arbre couvrant minimal. Considérer un graphe connexe
à deux sommet : le seul ACM contient la seule arête qui est de poids maximal.
(D) Si les poids de toutes les arêtes de G sont deux à deux distincts et que G est connexe alors
G admet un unique arbre couvrant minimal. Montré en exercice.
(E) Si G admet un unique arbre couvrant de poids minimal, les poids de ses arêtes sont deux à deux distincts.
Considérer un graphe connexe à 3 sommets et 2 arêtes de même poids.
40. Lesquelles parmi les propriétés suivantes sur les couplages sont vraies ?
(A) Un couplage maximal est maximum. Contre-exemple vu en cours.
(B) Un couplage maximum est maximal.
(C) Un graphe admettant un couplage parfait est nécessairement biparti.
(D) Dans un graphe biparti, on peut calculer un couplage maximal en temps polynomial. Oui
puisqu’on peut calculer un couplage maximum via l’algorithme de Berge, qui est maximal.
(E) Un couplage sans chemin augmentant dans un graphe biparti est maximum. C’est même vrai
dans les graphes qui ne sont pas bipartis : c’est le lemme de Berge.
41. L’algorithme des k plus proches voisins ...
(A) Est un algorithme d’apprentissage non supervisé. Supervisé au contraire.
(B) Gagne en précision lorsqu’on augmente k. Pas nécessairement, surapprentissage.
(C) Ne peut pas être acceléré par pré-traitement. Faux car stocker les données d’entraînement dans un arbre
d-dimensionnel permet de trouver plus rapidement les k voisins d’un point dont on cherche la classe.
(D) Résiste au fléau de la dimension. Comme à peu près tout : non.
(E) Aucune des réponses ci-dessus.
42. Un arbre de décision ...
(A) Peut être construit par un algorithme d’apprentissage supervisé. ID3 par exemple.
(B) Classe toujours correctement tous les éléments de l’ensemble d’apprentissage. ID3 peut parfois créer des
feuilles en considérant la classe majoritaire des exemples correspondants. Si cette classe majoritaire est
”oui”, les exemples d’entraînement pour lesquels la réponse est ”non” seront mal classés.
(C) Peut être amélioré à l’aide d’arbres k-d. A priori, non, ça c’est pour les k plus proches voisins.
(D) Peut être calculé sans calcul d’entropie par l’algorithme ID3. ID3 utilise justement l’entropie. Mais on
pourrait cocher cette réponse car : on peut faire ID3 sans utiliser le critère d’entropie pour séparer les
exemples, et on peut construire un arbre de décision sans ID3.
(E) A une hauteur bornée par la dimension des données. On sépare au plus sur chacun des attributs.
43. L’algorithme des k moyennes ...
(A) Repose sur l’entropie de Shannon. C’est ID3 qui fait ça.
(B) Converge vers une réponse optimale. On peut avoir convergence vers un optimum local non global.
(C) Ne converge pas nécessairement. Il y a en revanche toujours convergence.
(D) Ne reconnaît pas les classes non convexes. Exemple : deux classes concentriques.
(E) Nécessite un calcul de médioïde. Le bon terme est ”centroïde”.
44. La classification obtenue par un algorithme de regroupement hiérarchique ascendant ...
(A) Est indépendante de la distance choisie.
(B) Permet de choisir le nombre de clusters. En coupant à la hauteur voulue.
(C) Ne reconnaît pas les classes non convexes.
(D) Nécessite un calcul de centroïde.
(E) A une complexité dépendante de la distance considérée. Ne serait-ce que parce que la complexité
du calcul de cette distance intervient dans la complexité de l’algorithme complet.
45. Un algorithme reposant sur une heuristique ...
(A) Ne peut pas donner une réponse optimale à coup sûr. Considérer A? avec une heuristique admissible.
(B) Ne peut généralement pas garantir le temps d’exécution et l’optimalité du résultat. A? avec une heu-
ristique monotone et admissible fournit un contre-exemple. On peut légitimement cocher cette réponse à
cause du ”généralement”.
(C) Ne peut pas être exécuté avec une heuristique différente.
(D) Peut être ajusté pour une utilisation pratique précise en adaptant l’heuristique considérée.
(E) Aucune des réponses ci-dessus.
46. Les positions gagnantes pour un joueur J1 dans un jeu à deux joueurs ...
(A) Peuvent être calculées en temps polynomial en la taille du jeu. Via minmax par exemple.
(B) Dépendent des réponses de l’adversaire. Justement non.
(C) Sont nécessairement des sommets contrôlés par le joueur J1 . Pas obligatoirement.
(D) Peuvent mener à une défaite de J1 . Il suffit que J1 joue autre chose qu’une stratégie gagnante !
(E) Aucune des réponses ci-dessus.
47. L’algorithme de Peterson implémente un verrou qui vérifie ...
(A) L’exclusion mutuelle.
(B) La bijection des traces d’exécution. Cette phrase n’a pas de sens.
(C) L’absence de famine.
(D) La faible consommation de ressources par les fils. Au contraire vu l’attente active.
(E) La correction du programme qui l’utilise. Pas de raison !
(F) Aucune des réponses précédentes.
Logique
48. Quelles formules sont des tautologies ?
(A) ((A ⇒ B) ⇒ C) ⇔ (A ⇒ (B ⇒ C)). Rendue fausse par v(A) = v(B) = v(C) = 0.
(B) (A ∨ B) ∧ (¬A ∨ ¬B). Est rendue fausse par v(A) = v(B) = 0.
(C) ¬(A ∧ (A ∨ B)) ⇔ ¬A. Il suffit de faire une disjonction de cas selon v(A).
(D) ((A ∨ B) ∧ (C ∨ D)) ⇔ (A ∧ B) ∨ (B ∧ D). Aucune chance.
(E) (A ⇒ B) ⇔ (¬A ∨ B). Vrai vu l’équivalence classique A ⇒ B ≡ ¬A ∨ B.
49. La taille d’une formule est majorée par sa hauteur.
(A) Vrai.
(B) Faux. C’est la hauteur d’un arbre qui est majorée par sa taille.
50. Une variable libre ...
(A) Peut être liée à un autre endroit dans la formule. Techniquement c’est plutôt une occurrence de
cette variable qui peut être liée à un autre endroit.
(B) A une portée. Ce sont les quantificateurs qui ont une portée.
(C) N’influe pas la sémantique d’une formule.
(D) Est toujours associée à une variable liée.
51. Soit ϕ et ψ deux formules telles que ψ |= ϕ. Cela signifie ...
(A) Que ϕ est conséquence de ψ.
(B) Que ψ est conséquence de ϕ.
(C) Que les valuations satisfaisant ϕ satisfont aussi ψ. C’est l’inverse.
(D) Si ϕ est une antilogie, alors ψ aussi. Si une valuation satisfaisait ψ, elle satisferait ϕ ce qui n’est
pas.
(E) Cela n’a pas de sens, la notation |= n’existe que sous la forme v |= ϕ avec v une valuation.
52. Une équivalence entre formules du calcul propositionnel ...
(A) Signifie qu’elles ont le même arbre de dérivation.
(B) Peut se prouver à l’aide de tables de vérité.
(C) Peut se prouver à l’aide de substitutions dans des formules qu’on sait déjà être équivalentes.
(D) Ne peut pas être démontrée sans la déduction naturelle. Si, avec un raisonnement sémantique.
(E) Peut se prouver par une étude de la matrice de confusion.
53. Pour toute formule du calcul du calcul propositionnel il existe une formule équivalente ...
(A) Sous forme normale conjonctive.
(B) Sous forme normale disjonctive.
(C) Sous forme normale de Quine. L’algorithme de Quine calcule la satisfiabilité d’une formule.
(D) Sous forme normale littérale.
(E) Sous forme normale de Chomsky. ça c’est pour les grammaires algébriques.
(F) Aucune des réponses précédentes.
54. On sait résoudre le problème SAT en temps polynomial sur des instances ...
(A) Sous 2-CNF. Via Kosaraju ou DPLL.
(B) Sous 3-CNF. A priori non par NP-complétude de 3-SAT.
(C) Sous 2-DNF. La satisfiabilité d’un formule sous DNF se décide toujours polynomialement : il suffit de
parcourir chaque clause et d’observer si l’une au moins ne contient pas un littéral et sa négation.
(D) Sous 3-DNF.
(E) Ne faisant intervenir que les connecteurs ∧ et ¬.
55. Un séquent est constitué de prémisses et d’une conclusion.
(A) Vrai.
(B) Faux. Un séquent est constitué d’hypothèses et d’une conclusion. Les prémisses sont les séquents au-
dessus du trait d’une règle de déduction.
56. Un système de preuve qui permet de prouver au moins un séquent ...
(A) Contient au moins un axiome. Sinon on contredirait le fait qu’on peut prouver un séquent.
(B) Correspond à une règle d’inférence.
(C) Permet de construire des arbres de preuve.
(D) Contient les règles de la déduction naturelle. Pas de raison.
(E) Est une famille de séquents. Non, est un ensemble fini de règles.
57. Quels séquents sont prouvables en logique classique ? Il suffit de regarder si le séquent est valide : si oui, il
est prouvable et sinon non. Il n’y a donc pas besoin de chercher des arbres de preuve pour cette question.
(A) ¬¬A ` A. (D) A ∨ B ` A ∧ B.
(B) ¬¬¬A ` ¬A. (E) A, A → B ` B.
(C) A ∧ B ` A ∨ B.
(A) Tous les symboles non terminaux de u sont déri- (C) Un seul non terminal de u est dérivé.
vés.
(D) v ne contient plus de non terminal.
(B) Un seul non terminal de v est dérivé. (E) u est l’axiome.
77. Savoir si une grammaire non contextuelle est ambiguë est un problème indécidable.
Complexité et calculabilité
78. Parmi les problèmes ci-dessous, lesquels sont des problèmes de décision ?
(A) La résolution d’une grille de Sudoku.
(B) La primalité d’un entier.
(C) Le plus court chemin entre deux points.
(D) Le problème de l’arrêt.
(E) L’égalité entre deux langages.
79. Parmi les problèmes ci-dessous, lesquels sont des problèmes d’optimisation ?
(A) La résolution d’une grille de Sudoku. On pourrait argumenter que ce problème est celui consistant à
minimiser le nombre d’incohérences (deux mêmes chiffres sur la même ligne, colonne, carré) dans une
grille complète qui respete celle en entrée. Mais c’est un peu abusif car a priori, résoudre un Sudoku veut
plutôt dire : trouver une solution correcte ou affirmer qu’il n’y en a pas.
(B) La primalité d’un entier.
(C) Le plus court chemin entre deux points.
(D) Le problème de l’arrêt.
(E) L’égalité entre deux langages.
80. Si n est la taille de l’entrée, pour quelles complexités peut-on dire que l’algorithme considéré est polynomial ?
(A) O(log n!). Car ceci est un O(n log n) = O(n2 )
(B) 2o(n) . On a (log n)2 = o(n) et si on avait 2(log n) ≤ nk pour un certain k, on aurait (log n)2 / log n ≤ k.
2
(C) O((log n)n ). S’il existe k tel que (log n)n ≤ nk , on aurait n log log n ≤ k log n : contradiction à l’infini.
√
(D) O( n). C’est par exemple un O(n).
(E) O(2n ). Est évidemment exponentiel en n.
81. L’algorithme cherchant à déterminer si un entier n est premier en calculant son modulo par tous les entiers
√
entre 2 et d ne est de complexité ...
(A) Quasi-linéaire.
√ √ log n
(B) Polynomiale. Non car la taille de l’entier n est log n donc O( n) = O( e ).
(C) Sous-linéaire.
(D) Exponentielle.
(E) Linéaire. Cette réponse, ainsi que (A) et (C) sont fausses vu (B).
82. La complexité d’un problème de décision correspond à ...
(A) La complexité pire cas du meilleur algorithme qui le résout. On pourrait ne pas cocher cet item
car la notion de ”meilleur algorithme” est trop floue. Un algorithme peut être dans plusieurs classes de
complexité différentes selon le type d’algorithme pour le résoudre considéré.
(B) La complexité pire cas du pire algorithme qui le résout.
(C) La complexité meilleur cas du meilleur algorithme qui le résout.
(D) Dépend du format d’entrée des instances.
(E) N’est pas définie.
83. Si le problème A se réduit polynomialement au problème B alors ...
(A) Si A se résout en temps polynomial, B aussi. Tout problème dans P est NP donc se réduit à SAT.
(B) Si B se résout en temps polynomial, A aussi.
(C) A est considéré comme plus difficile que B. Non, c’est l’inverse.
(D) Une instance de A peut être transformée en une instance de B. Dans le cadre de réductions
many-one.
(E) Si A est décidable alors B aussi.
84. Si un problème est dans NP alors ...
(A) On ne sait pas le résoudre en temps polynomial. Tout problème P est dans NP.
(B) Il peut être résolu en temps exponentiel.
(C) Il peut être résolu en espace polynomial. Si A est dans NP, il existe un ensemble de certificats C
et un problème B ∈ P tel que x est une instance positive de A ssi il existe c ∈ C de taille polynomiale
en |x| tel que (x, c) est positive pour B. Un algorithme pour savoir si x est positive pour A consiste donc
à parcourir tous les certificats et utiliser un algo polynomial pour B. Pour chaque certifiat on utilise un
temps donc un espace polynomial et on réutilise le même espace pour stocker le certificat suivant.
(D) Il s’agit d’un problème fonctionnel.
(E) Pour toute instance du problème, on peut créer un certificat en temps polynomial. Si on savait faire
ça, on aurait P = NP. Pour un problème NP on sait juste qu’il existe un certificat pour toute instance
positive et que la vérification qu’un certificat en est bien un se fait en temps polynomial
85. En supposant que P 6= NP, le problème du voyageur de commerce ...
(A) Est NP-complet dans sa version classique et dans P dans sa version euclidienne.
(B) Est NP-complet dans les deux versions précédemment citées.
(C) Admet une 2-approximation. Non, seule la version euclidienne en admet une.
(D) N’admet aucune approximation à facteur constant. Cf DS5.
(E) Peut être résolu en espace polynomial. Comme tout problème NP.
86. Lesquels de problèmes suivants sont NP-complets ?
(A) 3SAT.
(B) Le problème de l’arrêt. Il n’est même pas décidable.
(C) L’existence d’un chemin hamiltonien.
(D) L’appartenance d’un mot à un langage régulier. Non, cf partie langages.
(E) Le problème du sac à dos.
87. Les problèmes indécidables ...
(A) Ne sont pas les mêmes suivant le langage de programmation choisi. Techniquement c’est vrai, dès lors
qu’on considère un langage Turing-complet et un qui ne l’est pas.
(B) Ne peuvent pas être réduits à un autre problème.
(C) Dépendent de la façon dont sont représentées les instances du problème. En revanche la complexité d’un
algorithme qui résout un problème décidable dépend de la façon dont sont représentées les instances.
(D) Ne concernent que des problèmes se rapportant au fonctionnement d’algorithmes. Non, par exemple,
déterminer si une grammaire algébrique est ambiguë est indécidable.
(E) Aucune des réponses précédentes.
88. Parmi les suivants, quels sont les problèmes indécidables ?
(A) Le problème de l’arrêt sur les entrées de taille inférieure à 5.
(B) Le problème de la terminaison en moins de n étapes sur toute instance de taille inférieure à n. Il suffit
d’exécuter n étapes de calcul (en O(n)) et de regarder si c’est fini.
(C) Le problème de la terminaison en strictement plus de n étapes sur toute instance de taille
inférieure à n.
(D) Le problème de l’équivalence de deux expressions régulières. Il suffit de faire des automates pour les
deux, d’en construire la différence symétrique et de vérifier si le langage reconnu est vide.
(E) Le problème de l’équivalence entre deux formules du calcul propositionnel. Il suffit de faire leurs tables
de vérité.