QCM : Algorithmique et complexité — 25 questions

Questions et réponses du QCM

1. Qu’est-ce qu’un algorithme ?

Une machine capable de résoudre automatiquement un problème
Un langage de programmation destiné à exécuter des instructions
Une succession d’instructions conduisant à un résultat souhaité
Un ensemble de données fourni après l’exécution d’un traitement

Une succession d’instructions conduisant à un résultat souhaité

Explication

Un algorithme organise des instructions dans un ordre permettant d’obtenir un résultat visé. Un langage de programmation sert plutôt à traduire ou exécuter cet algorithme.

2. Que désigne l’algorithmique ?

Le calcul automatique des résultats par un ordinateur
La collecte des données produites par un programme
L’étude et la conception de règles pour écrire des algorithmes
La traduction d’un algorithme dans un langage comme Python

L’étude et la conception de règles pour écrire des algorithmes

Explication

L’algorithmique étudie les méthodes et les règles qui permettent de concevoir des algorithmes. La traduction dans Python correspond à la programmation, et non à la définition de l’algorithmique.

3. Dans un traitement algorithmique, quelle distinction entre les entrées et les sorties est correcte ?

Les entrées décrivent les instructions, tandis que les sorties indiquent le langage utilisé
Les entrées sont fournies avant ou pendant l’exécution, tandis que les sorties résultent du traitement
Les entrées résultent du traitement, tandis que les sorties sont fournies avant l’exécution
Les entrées et les sorties sont deux noms pour les mêmes données intermédiaires

Les entrées sont fournies avant ou pendant l’exécution, tandis que les sorties résultent du traitement

Explication

Les données d’entrée alimentent l’algorithme avant ou pendant son exécution, puis le traitement produit les données de sortie. Confondre ces rôles inverse le sens du fonctionnement algorithmique.

4. Quelle relation existe entre un algorithme et un programme ?

Un algorithme traduit un programme dans un langage comme Python
Un programme fournit les données d’entrée avant la conception de l’algorithme
Un programme correspond à une suite de résultats obtenus après le traitement
Un programme traduit un algorithme dans un langage de programmation

Un programme traduit un algorithme dans un langage de programmation

Explication

Un programme est l’implémentation d’un algorithme dans un langage tel que Python ou Java. L’algorithme précède donc sa traduction informatique, plutôt que l’inverse.

5. Laquelle de ces caractéristiques correspond aux exigences formulées par Donald Knuth en 1968 ?

Un algorithme doit finir après un nombre fini d’étapes et préciser ses actions
Un algorithme doit être écrit en Python pour que ses instructions soient exécutables
Un algorithme doit rechercher une valeur dans un tableau avant de s’arrêter
Un algorithme doit fonctionner avec une seule entrée et produire un résultat unique

Un algorithme doit finir après un nombre fini d’étapes et préciser ses actions

Explication

Knuth associe notamment la finitude, la précision des actions, l’acceptation d’entrées, la production de sorties et l’exécutabilité en temps fini. Le langage Python et la recherche dans un tableau ne sont pas des exigences générales de sa définition.

6. Que fait l’algorithme d’Euclide lorsque le reste de la division de m par n vaut zéro ?

Il recommence la division en échangeant le quotient et le diviseur
Il remplace m par le quotient et poursuit avec le même diviseur
Il renvoie n comme plus grand commun diviseur des deux entiers
Il renvoie le reste nul comme résultat du plus grand commun diviseur

Il renvoie n comme plus grand commun diviseur des deux entiers

Explication

Lorsque le reste vaut zéro, le dernier diviseur n est le PGCD recherché. La poursuite des divisions intervient lorsque le reste est différent de zéro.

7. Quelle contribution Euclide a-t-il décrite vers 300 av. J.-C. dans le livre VII des Éléments ?

Une méthode pour rechercher une valeur dans un tableau trié
Un système pour déterminer les entrées et sorties d’un programme
Une procédure pour traduire des règles en langage de programmation
Un procédé pour calculer le plus grand commun diviseur de deux entiers

Un procédé pour calculer le plus grand commun diviseur de deux entiers

Explication

Euclide a décrit un algorithme permettant de calculer le PGCD de deux entiers. La recherche dans un tableau trié relève d’une autre méthode algorithmique, la recherche dichotomique.

8. Que mesure la complexité d’un algorithme ?

Le nombre d’opérations et d’affectations nécessaires à son exécution
La fréquence à laquelle l’utilisateur consulte le résultat obtenu
La capacité de l’algorithme à produire un résultat mathématiquement exact
La quantité de mémoire disponible avant le lancement du programme

Le nombre d’opérations et d’affectations nécessaires à son exécution

Explication

La complexité quantifie les opérations arithmétiques, logiques et affectations nécessaires à l’exécution. La correction désigne plutôt l’obtention du résultat attendu, ce qui constitue une notion différente.

9. Quelle expression décrit une complexité linéaire pour une taille d’entrée nn ?

αlogn+β\alpha\log n+\beta avec α>0\alpha>0, notée O(logn)O(\log n)
αn2+βn+γ\alpha n^2+\beta n+\gamma avec α>0\alpha>0, notée O(n2)O(n^2)
αn3+β\alpha n^3+\beta avec α>0\alpha>0, notée O(n3)O(n^3)
αn+β\alpha n+\beta avec α>0\alpha>0, notée O(n)O(n)

$$\alpha n+\beta$$ avec $$\alpha>0$$, notée $$O(n)$$

Explication

Une complexité linéaire croît selon une expression affine de la forme αn+β\alpha n+\beta et se note O(n)O(n). L’expression quadratique proposée croît selon n2n^2 et correspond donc à une autre classe de complexité.

10. Quelle forme correspond à une complexité quadratique lorsque α>0\alpha>0 ?

αlogn+β\alpha\log n+\beta, notée O(logn)O(\log n)
αn+β\alpha n+\beta, notée O(n)O(n)
αn2+βn+γ\alpha n^2+\beta n+\gamma, notée O(n2)O(n^2)
αn3+βn+γ\alpha n^3+\beta n+\gamma, notée O(n3)O(n^3)

$$\alpha n^2+\beta n+\gamma$$, notée $$O(n^2)$$

Explication

Une complexité quadratique comporte un terme dominant en n2n^2 et s’écrit αn2+βn+γ\alpha n^2+\beta n+\gamma, avec une notation en O(n2)O(n^2). Une expression affine en nn décrit une croissance linéaire, et non quadratique.

11. Comment une recherche linéaire traite-t-elle un tableau lorsqu’elle cherche une valeur ?

Elle commence par les deux extrémités et progresse vers le centre
Elle compare l’élément central puis élimine une moitié du tableau
Elle examine les éléments dans l’ordre jusqu’à trouver la valeur ou atteindre la fin
Elle réorganise les éléments avant de comparer leurs valeurs successives

Elle examine les éléments dans l’ordre jusqu’à trouver la valeur ou atteindre la fin

Explication

La recherche linéaire parcourt les éléments l’un après l’autre jusqu’au succès ou à la fin du tableau, ce qui conduit à un coût linéaire dans le pire cas. La division en deux intervalles caractérise la recherche dichotomique et suppose un espace ordonné.

12. Lors d’un calcul séquentiel du maximum, que fait l’algorithme lorsqu’il rencontre une valeur supérieure à la référence courante ?

Il remplace la référence courante par cette valeur supérieure
Il échange cette valeur avec l’élément situé au centre du tableau
Il additionne cette valeur à la référence avant de poursuivre le parcours
Il conserve la référence courante et recommence depuis le premier élément

Il remplace la référence courante par cette valeur supérieure

Explication

Le calcul séquentiel d’un maximum conserve une référence, puis la remplace lorsqu’un élément plus grand est rencontré. Additionner les valeurs relève plutôt du calcul d’une somme ou d’une moyenne.

13. Quelle condition est nécessaire pour appliquer une recherche dichotomique ?

La valeur recherchée doit se trouver à une extrémité
Les éléments doivent tous être distincts et positifs
L’espace de recherche doit être ordonné
Le tableau doit contenir un nombre pair de valeurs

L’espace de recherche doit être ordonné

Explication

La recherche dichotomique divise successivement un espace ordonné en deux parties afin de décider quelle moitié conserver. Un tableau non trié ne permet pas cette décision fiable, même si ses valeurs sont distinctes.

14. Dans une recherche dichotomique, que faut-il faire si l’élément central est supérieur à la valeur recherchée ?

Remplacer l’élément central par la valeur recherchée
Poursuivre la recherche dans la moitié gauche
Poursuivre la recherche dans la moitié droite
Rechercher à nouveau dans l’ensemble du tableau

Poursuivre la recherche dans la moitié gauche

Explication

Dans un espace ordonné croissant, une valeur recherchée inférieure à l’élément central se trouve potentiellement dans la moitié gauche. La moitié droite est conservée lorsque l’élément central est inférieur à la valeur recherchée.

15. Quelle complexité temporelle caractérise généralement la recherche dichotomique ?

Une complexité logarithmique notée O(logn)O(\log n)
Une complexité quadratique notée O(n2)O(n^2)
Une complexité linéaire notée O(n)O(n)
Une complexité cubique notée O(n3)O(n^3)

Une complexité logarithmique notée $$O(\log n)$$

Explication

Chaque étape de la recherche dichotomique réduit l’intervalle à examiner environ de moitié, ce qui produit une complexité logarithmique O(logn)O(\log n). Cette croissance est généralement inférieure à celle d’un parcours linéaire en O(n)O(n).

16. Comment fonctionne le tri par insertion lorsqu’il traite un nouvel élément du tableau ?

Il recherche le minimum restant, puis l’échange avec l’élément situé à la position courante.
Il divise le tableau en sous-tableaux, puis fusionne les parties déjà triées.
Il décale vers la droite les éléments précédents plus grands, puis insère l’élément à sa place.
Il compare chaque élément avec tous les autres, puis échange les paires mal ordonnées.

Il décale vers la droite les éléments précédents plus grands, puis insère l’élément à sa place.

Explication

Le tri par insertion maintient une partie déjà ordonnée et décale les éléments précédents plus grands pour insérer le nouvel élément. La recherche du minimum suivie d’un échange caractérise plutôt le tri par sélection.

17. Quelle complexité le tri par insertion atteint-il dans le pire cas lorsque le tableau est trié à l’envers ?

O(n2)O(n^2)
O(n)O(n)
O(nlogn)O(n\log n)
O(logn)O(\log n)

$$O(n^2)$$

Explication

Un tableau trié à l’envers oblige le tri par insertion à effectuer un grand nombre de décalages, ce qui donne une complexité quadratique O(n2)O(n^2). Les tableaux presque triés peuvent en revanche être traités plus rapidement.

18. Quelle opération caractérise le tri par sélection à chaque position du tableau ?

Décaler les éléments précédents plus grands pour insérer l’élément courant à sa place.
Comparer les sous-tableaux voisins et fusionner leurs éléments dans l’ordre croissant.
Choisir le plus grand élément restant et le déplacer à la fin de la partie triée.
Rechercher le plus petit élément de la partie non triée et l’échanger avec l’élément courant.

Rechercher le plus petit élément de la partie non triée et l’échanger avec l’élément courant.

Explication

Le tri par sélection recherche le minimum dans la partie non triée, l’échange avec la position courante, puis répète ce procédé. Le décalage des éléments précédents correspond au mécanisme du tri par insertion.

19. Quelle propriété définit un variant de boucle utilisable pour justifier la terminaison ?

C’est une quantité réelle qui augmente progressivement pendant chaque itération.
C’est une condition logique qui reste vraie jusqu’à la sortie de la boucle.
C’est une variable entière qui peut changer de valeur sans suivre de direction déterminée.
C’est une quantité entière positive ou nulle qui décroît strictement à chaque itération.

C’est une quantité entière positive ou nulle qui décroît strictement à chaque itération.

Explication

Un variant est une quantité entière positive ou nulle qui diminue strictement à chaque passage dans la boucle. Une quantité qui augmente ne permet pas de montrer directement qu’une suite d’itérations doit s’arrêter.

20. Pourquoi l’existence d’un variant garantit-elle la terminaison d’une boucle while ?

Parce que le programme remplace automatiquement la boucle par une récursion finie.
Parce que toute variable utilisée dans la boucle est nécessairement bornée supérieurement.
Parce que la condition de la boucle devient vraie après un nombre fixe d’itérations.
Parce qu’un entier positif ou nul ne peut décroître indéfiniment.

Parce qu’un entier positif ou nul ne peut décroître indéfiniment.

Explication

Le variant décroît strictement tout en restant positif ou nul, et une telle décroissance ne peut se poursuivre indéfiniment parmi les entiers. La terminaison ne repose pas sur un nombre fixé d’itérations valable pour toutes les entrées.

21. Quelle stratégie définit un algorithme glouton ?

Modifier les choix précédents chaque fois qu’une nouvelle possibilité améliore la solution courante.
Énumérer toutes les solutions possibles afin de retenir celle qui possède la meilleure valeur globale.
Diviser le problème en sous-problèmes indépendants avant de combiner leurs solutions.
Construire la solution étape par étape en choisissant l’option jugée meilleure sans revenir sur les choix faits.

Construire la solution étape par étape en choisissant l’option jugée meilleure sans revenir sur les choix faits.

Explication

Un algorithme glouton prend à chaque étape une décision locale qui paraît la meilleure et conserve ses décisions précédentes. L’énumération de toutes les solutions relève plutôt d’une recherche exhaustive ou par force brute.

22. Quelle affirmation distingue correctement une solution gloutonne d’une solution optimale globale ?

Une solution gloutonne examine toutes les combinaisons avant de sélectionner la meilleure solution finale.
Une solution gloutonne fournit une approximation sans jamais atteindre l’optimum global du problème.
Une solution gloutonne peut être optimisée sans être optimale globalement, sauf dans certaines situations canoniques.
Une solution gloutonne est optimale globalement dès que chaque choix local semble avantageux.

Une solution gloutonne peut être optimisée sans être optimale globalement, sauf dans certaines situations canoniques.

Explication

Les choix locaux d’un algorithme glouton peuvent produire une solution améliorée mais non optimale globalement; certaines structures particulières permettent toutefois d’obtenir l’optimum. L’examen de toutes les combinaisons décrit une approche exhaustive, pas une stratégie gloutonne.

23. En appliquant l’algorithme glouton aux pièces 1, 2, 20 et 50, combien de pièces faut-il pour rendre 63 euros ?

Six pièces, en choisissant deux pièces de 20, puis deux pièces de 2 et deux pièces de 1.
Cinq pièces, en choisissant trois pièces de 20, puis une pièce de 2 et une pièce de 1.
Huit pièces ou billets, en choisissant d’abord 50 puis les plus grandes pièces admissibles.
Quatre pièces, en choisissant une pièce de 50 et trois pièces de 1.

Huit pièces ou billets, en choisissant d’abord 50 puis les plus grandes pièces admissibles.

Explication

La stratégie gloutonne choisit 50, puis six pièces de 2 et une pièce de 1, soit huit pièces ou billets. La combinaison de trois pièces de 20, d’une pièce de 2 et d’une pièce de 1 utilise cinq pièces et constitue l’optimum global.

24. Pour classer une nouvelle donnée, quel type d’informations l’algorithme des k plus proches voisins utilise-t-il comme base d’apprentissage ?

Des règles écrites manuellement pour chaque catégorie
Des données non classées regroupées par leurs caractéristiques
Des données déjà étiquetées avec leur classe connue
Des exemples générés à partir de paramètres aléatoires

Des données déjà étiquetées avec leur classe connue

Explication

Les k plus proches voisins relèvent de l’apprentissage supervisé et s’appuient donc sur des données dont la classe est connue. Les données non classées correspondent plutôt à une approche non supervisée, qui ne fournit pas directement les catégories attendues.

25. Dans quelle séquence l’algorithme des k plus proches voisins détermine-t-il la classe d’une nouvelle donnée ?

Il calcule les distances, retient les k voisins les plus proches, puis choisit la classe majoritaire
Il sélectionne des données au hasard, les trie par classe, puis compare leurs étiquettes
Il calcule les classes majoritaires, retient les k catégories fréquentes, puis mesure leurs distances
Il mesure les distances, conserve les voisins les plus éloignés, puis choisit la classe minoritaire

Il calcule les distances, retient les k voisins les plus proches, puis choisit la classe majoritaire

Explication

L’algorithme trie les données selon leur distance à la cible, extrait les k premières et attribue la classification majoritaire parmi ces voisins. La proximité sert donc à sélectionner les exemples, tandis que la majorité sert à décider de la classe.

Révisez avec les flashcards

Mémorisez les réponses avec 51 flashcards sur Algorithmique et complexité.

Qu'est-ce qu'un algorithme ?

Une succession d'instructions pour obtenir un résultat souhaité.

Qu'est-ce que l'algorithmique ?

L'étude et la conception de règles pour écrire des algorithmes.

Quelles sont les trois parties d'un algorithme ?

Données en entrée, traitement particulier, données en sortie.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Algorithmique et complexité.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM