Flashcards : Graphes et programmation dynamique (96 cartes)

Toutes les cartes

1Question

Qu’est-ce qu’une chaîne de caractères en Python ?

Réponse

Une suite de caractères délimitée par des apostrophes ou des guillemets.

2Question

Pourquoi ne peut-on pas remplacer directement un caractère d’une chaîne Python ?

Réponse

Les chaînes sont immuables.

3Question

Comment les opérateurs `and` et `or` évaluent-ils leurs opérandes ?

Réponse

De gauche à droite, en s’arrêtant dès que le résultat est déterminé.

4Question

Que fournit `range(a, b, pas)` dans une boucle `for` ?

Réponse

Les termes a+k⋅pasa+k\cdot pas strictement inférieurs à bb.

5Question

Avec quel mot-clé définit-on une fonction Python ?

Réponse

Avec `def`.

6Question

Combien de paramètres une fonction Python peut-elle prendre ?

Réponse

Plusieurs paramètres.

7Question

Comment une fonction Python transmet-elle un résultat ?

Réponse

Elle peut renvoyer des objets de différents types.

8Question

Quand une variable affectée dans une fonction est-elle globale ?

Réponse

Lorsqu’elle est déclarée avec le mot-clé `global`.

9Question

Comment une liste Python est-elle définie et modifiée ?

Réponse

Entre crochets, elle contient des éléments ordonnés, éventuellement de types différents, modifiables par accès.

10Question

Que fait `l + [a]` sans modifier `l` ?

Réponse

Cette expression crée une nouvelle liste contenant `a` en plus.

11Question

Qu’est-ce qu’un tuple Python et ses éléments sont-ils modifiables ?

Réponse

Un tuple est un n-uplet défini par des parenthèses ou des virgules, dont les éléments ne sont pas modifiables.

12Question

Quelles formes d’importation un module Python autorise-t-il ?

Réponse

L’importation par nom, par alias ou l’importation directe d’objets.

13Question

Que font les modes « r », « w » et « a » lors de l’ouverture d’un fichier ?

Réponse

« r » lit, « w » écrit après avoir vidé le fichier, et « a » ajoute à la fin en le créant si nécessaire.

14Question

Qu’est-ce qu’une assertion en programmation ?

Réponse

Un contrôle exécuté par `assert` qui vérifie une condition et déclenche `AssertionError` si elle est fausse.

15Question

Quelles étapes composent la gestion générale d’une exception ?

Réponse

La lever avec `raise`, puis éventuellement la récupérer avec `try` et `except`.

16Question

Que vérifient les tests par partitionnement et les tests aux limites ?

Réponse

Le partitionnement teste une entrée représentative par sous-ensemble, tandis que les tests aux limites vérifient les bornes et leurs abords.

17Question

Comment un test d’appartenance dans une liste décide-t-il de son résultat ?

Réponse

Il renvoie True dès qu’il trouve une égalité, sinon False à la fin du parcours.

18Question

Quelles bornes la recherche dichotomique maintient-elle dans une liste triée ?

Réponse

Les bornes g et d.

19Question

Comment la recherche d’un mot dans une chaîne examine-t-elle les correspondances possibles ?

Réponse

Elle teste les positions de départ et compare successivement les caractères du mot.

20Question

Comment le comptage avec chevauchement choisit-il les positions de départ ?

Réponse

Il examine chaque position de départ successive.

21Question

Que mesure la complexité temporelle d’un algorithme ?

Réponse

Le temps de calcul en fonction des données d’entrée.

22Question

Que décrit la complexité asymptotique lorsque la taille des entrées augmente ?

Réponse

L’ordre de croissance du coût, en ignorant les constantes multiplicatives et les termes de moindre ordre.

23Question

Que signifie la notation Ω(f(n))\Omega(f(n)) pour un coût ?

Réponse

Une minoration asymptotique par une constante multiple de f(n)f(n).

24Question

Que doit établir l’invariant dans la preuve d’une boucle ?

Réponse

Il doit être vrai à chaque passage de la boucle.

25Question

Comment prouve-t-on la terminaison d’une boucle while ?

Réponse

À l’aide d’un variant entier strictement décroissant.

26Question

Quelles valeurs initiales utilise la division euclidienne par soustractions répétées ?

Réponse

q=0q=0 et r=ar=a.

27Question

Qu’est-ce qui distingue la taille d’un tableau de celle d’une liste dynamique ?

Réponse

La taille d’un tableau est fixe, tandis que celle d’une liste dynamique peut varier.

28Question

Comment calculer l’adresse de l’élément en position k dans un tableau homogène contigu ?

Réponse

debut+k×tailledebut + k \times taille

29Question

Quel parcours faut-il effectuer pour atteindre la position k dans une liste simplement chaînée ?

Réponse

Il faut parcourir les éléments précédents.

30Question

Quelle structure le type list de Python utilise-t-il ?

Réponse

Un tableau d’adresses.

31Question

Quelle est la complexité amortie d’une insertion en fin de liste Python ?

Réponse

Un temps constant amorti.

32Question

Quel principe de récupération caractérise une pile ?

Réponse

LIFO : le dernier objet ajouté est le premier récupéré et supprimé.

33Question

Quel principe de récupération caractérise une file ?

Réponse

FIFO : le premier objet arrivé est le premier récupéré et supprimé.

34Question

Comment définit-on un graphe orienté G=(S,A)G=(S,A) ?

Réponse

SS est l’ensemble des sommets et AA l’ensemble des couples ordonnés appelés arcs.

35Question

Qu’est-ce qui distingue un arc d’une arête dans un graphe ?

Réponse

Un arc est un couple ordonné, tandis qu’une arête est un ensemble de deux sommets sans ordre.

36Question

Quelles informations fournit un parcours en largeur depuis un sommet ?

Réponse

Les distances minimales et un prédécesseur pour reconstruire un chemin.

37Question

Quelles sont les distances depuis A dans l’exemple de parcours en largeur ?

Réponse

A est à 0, B et H à 1, C, D et I à 2, puis E, F et G à 3.

38Question

Comment le parcours en profondeur explore-t-il un graphe ?

Réponse

Il avance aussi loin que possible depuis un sommet avant de revenir sur ses pas.

39Question

Que fait le parcours en profondeur quand aucun nouveau voisin n’existe ?

Réponse

Il dépile le sommet et le marque comme épuisé.

40Question

Que calcule l’algorithme de Dijkstra depuis un sommet ?

Réponse

Les plus courtes distances vers tous les autres sommets connexes.

41Question

Comment Dijkstra initialise-t-il les distances ?

Réponse

À l’infini, sauf celle du sommet de départ, initialisée à zéro.

42Question

Selon quel critère l’algorithme A* choisit-il un sommet non exploré ?

Réponse

Selon un coût combinant la distance parcourue et une heuristique vers la destination.

43Question

Quelle formule définit le coût d’un sommet S dans A* ?

Réponse

cout⁡(S)=d(S)+h(S)\operatorname{cout}(S)=d(S)+h(S)

44Question

Quelles valeurs représentent les booléens Python ?

Réponse

True et False, correspondant respectivement aux entiers 1 et 0.

45Question

Quel opérateur Python effectue une division entière ?

Réponse

L’opérateur `//`.

46Question

Quelle fonction Python renvoie la longueur d’une chaîne ?

Réponse

`len(s)`.

47Question

Comment convertir généralement une valeur en un type Python visé ?

Réponse

En utilisant le constructeur de ce type.

48Question

À quoi sert l’opérateur `lambda` dans une fonction Python ?

Réponse

À définir une fonction simple sans nom explicite.

49Question

Quel élément d’une fonction englobante une fonction imbriquée peut-elle utiliser ?

Réponse

Un argument de la fonction englobante.

50Question

Dans quel ordre Python recherche-t-il une variable utilisée dans une fonction ?

Réponse

D’abord dans les portées locales et englobantes, puis dans la portée globale.

51Question

Que font les annotations de type d’une fonction Python lors d’un appel ?

Réponse

Elles indiquent les types attendus sans que Python les contrôle.

52Question

Quelles opérations permettent de créer une liste Python ?

Réponse

La création directe, la conversion d’un itérable, la concaténation, la copie, la répétition et la compréhension, éventuellement filtrée.

53Question

Comment accéder aux éléments et mesurer une liste Python ?

Réponse

Les indices commencent à 0, les tranches sélectionnent une partie et `len(l)` donne la longueur.

54Question

Comment ajouter efficacement un élément à une liste Python ?

Réponse

La méthode `append` est généralement préférable à une nouvelle liste créée avec `+`.

55Question

Que renvoie `pop(indice)` lorsqu’aucun indice n’est précisé ?

Réponse

Le dernier élément de la liste.

56Question

Que se passe-t-il lorsqu’on modifie une liste partagée par deux variables Python ?

Réponse

La modification est visible par les deux variables, qui désignent le même objet.

57Question

Qu’est-ce qu’un espace de noms en Python ?

Réponse

Une zone mémoire propre où les objets d’un module sont placés sans se mélanger aux variables déjà affectées.

58Question

Quelles catégories d’outils le module math fournit-il ?

Réponse

Des constantes et des fonctions mathématiques, notamment pour les racines, logarithmes, fonctions trigonométriques et hyperboliques.

59Question

À quoi servent numpy, matplotlib, deepcopy, os, random et time ?

Réponse

Au calcul numérique, aux graphiques, à la copie profonde, au système, à l’aléatoire et à la mesure du temps.

60Question

Que font les méthodes read, readline et readlines d’un fichier ?

Réponse

Elles lisent respectivement le contenu, une ligne et les lignes sous forme de liste.

61Question

Comment les champs d’un fichier CSV sont-ils généralement séparés ?

Réponse

Par un élément fixe, avec certains champs éventuellement entourés de guillemets.

62Question

Comment choisir les noms des variables importantes et des constantes ?

Réponse

Les variables importantes ont des noms explicites, et les constantes sont généralement en majuscules.

63Question

Que doivent documenter les commentaires dans un programme ?

Réponse

Les parties non immédiates du programme.

64Question

Que documente une docstring placée après la définition d’une fonction ?

Réponse

Son but, ses entrées, ses sorties et éventuellement des exemples.

65Question

Quelles erreurs usuelles sont citées en programmation ?

Réponse

`IndexError`, `KeyError`, `NameError`, `ValueError` et `ZeroDivisionError`.

66Question

Quels cas examiner pour tester le maximum d’une liste ?

Réponse

Une liste vide, une liste à un élément ou normale, des maxima aux extrémités ou répétés, et des éléments non comparables.

67Question

Quel indice renvoie une recherche de position si la valeur est absente ?

Réponse

-1.

68Question

Que renvoie une recherche de position lorsqu’elle trouve la valeur ?

Réponse

L’indice du premier élément égal à la valeur cherchée.

69Question

Comment un comptage d’occurrences dans une liste met-il à jour son compteur ?

Réponse

Il l’incrémente à chaque élément égal à la valeur recherchée.

70Question

Que renvoie le comptage d’occurrences dans une liste ?

Réponse

Le compteur final.

71Question

Comment la complexité maximale est-elle définie pour les entrées de taille n ?

Réponse

C’est le coût le plus élevé parmi ces entrées.

72Question

Quelle est la complexité temporelle du maximum d’une liste parcourue séquentiellement ?

Réponse

Θ(n)\Theta(n), donc aussi O(n)O(n).

73Question

Quelles adresses contient chaque élément d’une liste doublement chaînée ?

Réponse

Les adresses des éléments suivant et précédent.

74Question

Que faut-il faire pour supprimer un élément intermédiaire d’une liste Python ?

Réponse

Décaler les cases.

75Question

Quel ordre de complexité a la concaténation de deux listes Python ?

Réponse

L’ordre de leur taille totale.

76Question

Quelles opérations essentielles une pile doit-elle permettre ?

Réponse

Créer une pile vide, tester sa vacuité, ajouter au sommet et récupérer en le supprimant l’objet du sommet.

77Question

Quelle méthode Python empile un objet dans une liste ?

Réponse

append(x).

78Question

Quelle méthode Python dépile un objet d’une liste ?

Réponse

pop().

79Question

Quelles données la pile d’exécution stocke-t-elle pour une fonction ?

Réponse

Ses arguments, son adresse de retour, ses variables locales et sa valeur de retour.

80Question

Quelles méthodes de collections.deque permettent d’ajouter et retirer aux deux extrémités ?

Réponse

append, appendleft, pop et popleft.

81Question

Quelle est la complexité d’accès aux extrémités d’un deque ?

Réponse

O(1).

82Question

Comment calcule-t-on le degré total d’un sommet orienté ?

Réponse

On additionne son degré entrant et son degré sortant.

83Question

Quelle propriété possède la matrice d’adjacence d’un graphe non orienté ?

Réponse

Elle est symétrique.

84Question

Que contient la liste d’adjacence associée à un sommet ?

Réponse

La liste de ses sommets adjacents ou successeurs.

85Question

Comment un dictionnaire Python représente-t-il les sommets déjà vus ?

Réponse

Les sommets servent de clés, permettant des tests d’appartenance rapides et garantissant leur unicité.

86Question

Que représente la pile du parcours en profondeur ?

Réponse

Le chemin en cours, du sommet de départ en bas au sommet exploré en haut.

87Question

Que signifie le statut 0 dans l’algorithme de parcours en profondeur ?

Réponse

Le sommet n’a pas été vu.

88Question

Que signifie le statut 1 dans l’algorithme de parcours en profondeur ?

Réponse

Le sommet est en cours sur le chemin.

89Question

Que signifie le statut 2 dans l’algorithme de parcours en profondeur ?

Réponse

Le sommet est épuisé et n’a aucun successeur à explorer.

90Question

Que peut révéler un voisin encore en cours lorsqu’un sommet est épuisé ?

Réponse

Un cycle dans le graphe non orienté, sans garantir la détection de tous les cycles.

91Question

Quel cycle révèle la chaîne A-B-C-E-D dans l’exemple ?

Réponse

Le cycle BCDEB.

92Question

Quelle formule exprime la mise à jour d’une distance dans Dijkstra ?

Réponse

D(s′)=min⁡(D(s′),D(sact)+w(sact,s′))D(s')=\min\bigl(D(s'),D(s_{act})+w(s_{act},s')\bigr)

93Question

Quel sommet enregistrer comme prédécesseur lors d’une amélioration de distance dans Dijkstra ?

Réponse

Le sommet courant.

94Question

Quel outil peut accélérer le choix du sommet minimal dans Dijkstra ?

Réponse

Une file de priorité.

95Question

Quelle condition une heuristique d’A* doit-elle respecter pour préserver l’optimalité ?

Réponse

Elle ne doit pas surestimer la distance jusqu’à la destination.

96Question

À quelle condition un tuple peut-il servir de clé de dictionnaire en Python ?

Réponse

Tous ses éléments doivent être hachables.

Teste-toi avec le QCM

Teste tes connaissances avec un QCM de 58 questions sur Graphes et programmation dynamique.

1. Une chaîne Python doit contenir un retour à la ligne réel dans son texte ; quelle délimitation permet de l’écrire sur plusieurs lignes ?

2. Après avoir créé la chaîne `mot = "lune"`, une personne tente de remplacer son premier caractère avec `mot[0] = "L"` ; quel résultat faut-il attendre ?

Faire le QCM →

Consultez la fiche

Révisez le cours complet dans la fiche de révision de Graphes et programmation dynamique.

Voir la fiche →

Cours similaires

Crée tes propres flashcards

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

Générateur de flashcards