Quiz: Introduction aux structures de données et algorithmes — 24 Fragen

Detaillierte Fragen und Antworten

1. Quelle description correspond le mieux à une structure de données ?

Un programme qui exécute automatiquement des tests d’exemples
Une façon d’organiser et de stocker des informations avec des opérations de manipulation
Une suite d’instructions qui gère une erreur d’exécution
Une méthode de parcours des graphes par niveaux

Une façon d’organiser et de stocker des informations avec des opérations de manipulation

Erklärung

Une structure de données organise et stocke des informations en précisant les valeurs possibles et les opérations associées. Les autres propositions décrivent d’autres notions du cours.

2. Dans un dictionnaire tableau associatif, quelle opération fait partie de l’interface de base ?

Accéder à une valeur à partir d’une clé
Appeler récursivement une fonction sur un sous-problème
Supprimer systématiquement les doublons d’un résultat
Parcourir les sommets niveau par niveau

Accéder à une valeur à partir d’une clé

Erklärung

Un dictionnaire associe des clés à des valeurs et permet notamment la recherche, l’insertion, la modification et la suppression via une clé. Le parcours en largeur et la récursivité appartiennent à d’autres thèmes.

3. Quel est le rôle principal de l’instruction assert ?

Trier les résultats d’une requête SQL
Attraper une exception pour continuer l’exécution
Exécuter automatiquement des exemples d’une docstring
Vérifier une condition et déclencher une erreur si elle est fausse

Vérifier une condition et déclencher une erreur si elle est fausse

Erklärung

Un assert vérifie une expression booléenne et produit une erreur si la condition n’est pas satisfaite. Il ne sert pas à gérer les exceptions ni à exécuter des doctests.

4. Dans le développement piloté par les tests, quelle étape vient en premier ?

Optimiser le programme avant de définir les spécifications
Écrire tout le code puis ajouter les tests ensuite
Écrire un test censé échouer avant d’implémenter le code
Corriger les erreurs après exécution sans écrire de test

Écrire un test censé échouer avant d’implémenter le code

Erklärung

En TDD, on commence par écrire un test qui échoue, puis on implémente le minimum pour le faire réussir. Cela distingue cette méthode d’une écriture du code avant les tests.

5. Quelle propriété caractérise une pile ?

Le dernier élément ajouté est le premier retiré
Les éléments sont toujours triés par valeur
Le premier élément ajouté est le premier retiré
Les éléments sont accessibles directement par clé

Le dernier élément ajouté est le premier retiré

Erklärung

Une pile suit le principe LIFO : le dernier entré est le premier sorti. La propriété FIFO correspond à une file, pas à une pile.

6. Quel couple d’opérations correspond à l’usage classique d’une pile ?

Filtrer puis trier
Empiler puis dépiler
Insérer en queue puis retirer en tête
Rechercher puis modifier

Empiler puis dépiler

Erklärung

Une pile se manipule en ajoutant au sommet et en retirant au sommet. Insérer en queue et retirer en tête décrit une file FIFO.

7. Quelle affirmation décrit le mieux la programmation orientée objet ?

Elle consiste uniquement à écrire des requêtes de base de données
Elle organise un programme autour d’objets qui regroupent données et comportements
Elle interdit toute forme d’abstraction
Elle impose de n’utiliser que des tableaux indicés de taille fixe

Elle organise un programme autour d’objets qui regroupent données et comportements

Erklärung

La programmation orientée objet structure le code autour d’objets qui combinent des données et des méthodes. Les autres propositions ne correspondent pas à ce paradigme.

8. Quel concept permet de masquer les détails internes d’un objet et de ne montrer qu’une interface d’utilisation ?

Le tri croissant
La composition de requêtes
La récursivité
L’encapsulation

L’encapsulation

Erklärung

L’encapsulation vise à protéger l’état interne et à exposer une interface claire pour interagir avec l’objet. La récursivité et le tri concernent d’autres mécanismes du cours.

9. Quelle caractéristique définit un arbre libre ?

Un graphe orienté avec un sommet racine
Un graphe non orienté connexe sans cycle
Une collection de couples clé:valeur
Une structure linéaire dynamique

Un graphe non orienté connexe sans cycle

Erklärung

Un arbre libre est un graphe non orienté, connexe et sans cycle. Cette définition le distingue des structures linéaires et des dictionnaires.

10. Dans un arbre enraciné, comment sont orientées implicitement les arêtes ?

Elles convergent vers la racine, du fils vers le père
Elles s’éloignent de la racine, du père vers le fils
Elles n’ont aucune direction
Elles sont toujours orientées dans les deux sens

Elles s’éloignent de la racine, du père vers le fils

Erklärung

Dans un arbre enraciné, l’orientation implicite va de la racine vers les descendants, donc du père vers le fils. Cela correspond à la représentation adoptée dans le cours.

11. Dans un arbre libre, quelle propriété caractérise un couple de sommets quelconques ?

Ils ne peuvent pas toujours être reliés
Ils sont reliés par au moins deux chemins
Ils sont reliés par exactement un chemin
Ils sont reliés uniquement s’ils sont voisins

Ils sont reliés par exactement un chemin

Erklärung

Dans un arbre libre, il existe un chemin unique entre deux sommets quelconques. C’est une propriété équivalente au fait d’être connexe et sans cycle.

12. Que représente la relation |E| = |V| - 1 dans un arbre libre ?

Le nombre d’arêtes dépend uniquement de la racine
Le nombre d’arêtes vaut le double du nombre de sommets
Le nombre d’arêtes est toujours inférieur d’une unité au nombre de sommets
Le nombre d’arêtes est égal au nombre de sommets

Le nombre d’arêtes est toujours inférieur d’une unité au nombre de sommets

Erklärung

Dans un arbre libre, on a bien |E| = |V| - 1. Cette relation découle de la structure connexe sans cycle de l’arbre.

13. Qu’est-ce qu’un cas de base dans une définition récursive ?

Le premier appel effectué par la fonction
La valeur finale renvoyée par toute fonction récursive
La condition d’arrêt qui empêche la récursion de continuer indéfiniment
La partie du calcul qui se répète sur chaque sous-problème

La condition d’arrêt qui empêche la récursion de continuer indéfiniment

Erklärung

Le cas de base est la condition d’arrêt de la récursion. Sans lui, les appels pourraient s’enchaîner sans fin.

14. Pourquoi la détection d’un cycle par parcours en profondeur repose-t-elle sur un sommet déjà visité ?

Parce qu’un sommet gris indique qu’il est rencontré à nouveau pendant l’exploration
Parce qu’un sommet déjà visité garantit qu’il n’y a pas de cycle
Parce qu’un sommet noir correspond toujours à une arête de retour
Parce qu’un sommet blanc prouve l’existence d’un cycle

Parce qu’un sommet gris indique qu’il est rencontré à nouveau pendant l’exploration

Erklärung

Pendant un DFS, rencontrer un sommet déjà visité, en particulier gris, signale une arête de retour et donc un cycle. Le marquage sert précisément à éviter de re-parcourir les mêmes sommets.

15. Dans un algorithme de diviser pour régner, quelle étape correspond à la résolution des sous-problèmes ?

Résoudre récursivement les parties plus petites du problème
Parcourir tous les cas possibles sans découpage
Conserver uniquement le résultat final sans calcul intermédiaire
Trier les données sans séparation préalable

Résoudre récursivement les parties plus petites du problème

Erklärung

Diviser pour régner consiste à découper le problème, résoudre récursivement les sous-problèmes, puis combiner leurs résultats. La résolution récursive des sous-parties est donc l’étape centrale.

16. Pourquoi le tri fusion a-t-il une complexité en O(n log2 n) ?

Parce qu’il ne fait qu’un seul passage sur le tableau
Parce qu’il effectue une fusion linéaire à chaque niveau sur log2 n niveaux
Parce qu’il utilise une structure de file FIFO pour trier
Parce qu’il compare chaque paire d’éléments exactement une fois

Parce qu’il effectue une fusion linéaire à chaque niveau sur log2 n niveaux

Erklärung

Le tri fusion découpe le tableau en deux jusqu’à des sous-problèmes de taille unitaire, ce qui crée environ log2 n niveaux, puis fusionne linéairement à chaque niveau. Cela conduit à O(n log2 n).

17. Dans une file FIFO, quel élément est supprimé en premier lors d’une opération de retrait ?

L’élément ajouté en dernier
L’élément choisi au hasard
L’élément situé au milieu de la file
L’élément placé en tête depuis le plus longtemps

L’élément placé en tête depuis le plus longtemps

Erklärung

Une file FIFO respecte l’ordre d’arrivée : on retire d’abord l’élément en tête, celui qui est arrivé le plus tôt. L’insertion se fait en fin de file.

18. Quel énoncé décrit correctement le parcours en largeur BFS ?

Il suit uniquement les arêtes d’un arbre enraciné
Il descend d’abord jusqu’au plus profond avant de remonter
Il explore un graphe niveau par niveau à partir d’un sommet de départ
Il ignore les sommets déjà découverts sans les marquer

Il explore un graphe niveau par niveau à partir d’un sommet de départ

Erklärung

Le BFS explore les sommets par distance croissante à partir du sommet de départ, donc niveau par niveau. Il s’appuie sur une file pour traiter d’abord les sommets découverts le plus tôt.

19. Dans l’arbre de récursion de fib(n), pourquoi certaines valeurs comme fib(4) apparaissent-elles plusieurs fois ?

Parce que l’arbre de récursion supprime automatiquement les doublons
Parce que les sous-problèmes se recoupent et sont recalculés dans plusieurs branches
Parce que chaque appel récursif modifie la définition de la suite
Parce que les feuilles de l’arbre ne correspondent pas aux cas de base

Parce que les sous-problèmes se recoupent et sont recalculés dans plusieurs branches

Erklärung

Pour Fibonacci, différents appels demandent les mêmes sous-problèmes, ce qui crée des branches redondantes dans l’arbre de récursion. C’est précisément ce recoupement qui motive la mémorisation.

20. Quel est l’effet principal de la mémorisation dans un calcul récursif avec sous-problèmes qui se recoupent ?

Rendre inutile le stockage des résultats intermédiaires
Éviter de recalculer plusieurs fois les mêmes valeurs déjà obtenues
Transformer automatiquement toute récursion en parcours en largeur
Supprimer la nécessité d’un cas de base

Éviter de recalculer plusieurs fois les mêmes valeurs déjà obtenues

Erklärung

La mémorisation stocke les résultats déjà calculés pour les réutiliser ensuite. Elle évite ainsi les recomputations coûteuses lorsque les sous-problèmes se recoupent.

21. Dans un parcours en largeur, quelle structure permet de traiter d’abord les sommets découverts le plus tôt ?

Une pile LIFO
Une file FIFO
Un arbre binaire
Un dictionnaire associatif

Une file FIFO

Erklärung

Le parcours en largeur utilise une file FIFO : on retire les éléments par la tête et on ajoute les nouveaux en queue. Une pile LIFO correspondrait au parcours en profondeur, pas au BFS.

22. Quelle affirmation décrit correctement le parcours en largeur sur un graphe non orienté ?

Il calcule directement le plus court chemin sans mémoriser les couleurs
Il explore les sommets niveau par niveau à partir d’un sommet de départ
Il suit un seul chemin jusqu’au bout avant de revenir en arrière
Il trie les sommets selon leur degré décroissant

Il explore les sommets niveau par niveau à partir d’un sommet de départ

Erklärung

Le BFS explore par distance croissante, donc niveau par niveau à partir du sommet de départ. Les couleurs servent justement à éviter de revisiter les sommets déjà découverts.

23. Dans le problème du rendu de monnaie, que représente la valeur N_b(X) ?

Le nombre de sous-problèmes déjà résolus pour X
Le nombre minimum de pièces nécessaires pour rendre la somme X
La plus grande pièce inférieure ou égale à X
Le nombre total de solutions possibles pour rendre X

Le nombre minimum de pièces nécessaires pour rendre la somme X

Erklärung

N_b(X) désigne le nombre minimum de pièces pour obtenir la somme X, et vaut infini si la somme est impossible à rendre. Ce n’est pas un simple comptage de solutions, mais bien une optimisation.

24. Quelle récurrence correspond au calcul du nombre minimum de pièces pour rendre une somme X ?

N_b(0)=1, N_b(X)=0 si X<0, et pour X>0 : N_b(X)=min N_b(X-p_i)
N_b(0)=0, N_b(X)=∞ si X<0, et pour X>0 : N_b(X)=1+min N_b(X-p_i)
N_b(0)=0, N_b(X)=∞ si X>0, et pour X<0 : N_b(X)=1+min N_b(X-p_i)
N_b(0)=1, N_b(X)=∞ si X<0, et pour X>0 : N_b(X)=1+max N_b(X-p_i)

N_b(0)=0, N_b(X)=∞ si X<0, et pour X>0 : N_b(X)=1+min N_b(X-p_i)

Erklärung

La récurrence donnée fixe bien N_b(0)=0, renvoie infini pour les sommes négatives, puis ajoute 1 à la meilleure solution parmi les sous-problèmes restants. Le minimum est essentiel, car on cherche le plus petit nombre de pièces.

Mit Karteikarten lernen

Merke dir die Antworten mit 24 Karteikarten zu Introduction aux structures de données et algorithmes.

Structure de données — définition ?

Organisation et stockage d’informations.

Type de données abstrait — rôle ?

Décrit l’interface et les opérations.

Ensemble dynamique — caractéristique ?

Permet insertion et suppression en cours d’exécution.

Karteikarten ansehen →

Lernzettel studieren

Lies den vollständigen Lernzettel zu Introduction aux structures de données et algorithmes.

Lernzettel ansehen →

Similar courses

Erstelle deine eigenen Quizze

Importiere deinen Kurs und die KI erstellt in 30 Sekunden Quizze mit Korrekturen.

Quiz-Generator