Sujet 1⚓︎
Exercice 1⚓︎
On représente un petit réseau de stations de métro par un dictionnaire d'adjacence :
metro = {'A': ['B', 'C'], 'B': ['A', 'D'], 'C': ['A', 'D', 'E'], 'D': ['B', 'C', 'F'], 'E': ['C', 'F'], 'F': ['D', 'E']}
voisins(graphe, sommet) qui renvoie la liste des sommets voisins d'un sommet donné.
4. Proposer un parcours en profondeur du graphe à partir de la station 'A', en indiquant l'ordre de visite des sommets.
5. Compléter la fonction parcours_largeur(graphe, depart) ci-dessous, qui renvoie la liste des sommets visités dans l'ordre d'un parcours en largeur (BFS), en utilisant une file (une liste avec pop(0), ou collections.deque).
def parcours_largeur(graphe, depart):
visites = []
file = [depart]
while file:
sommet = file.pop(0)
if sommet not in visites:
visites.append(sommet)
for voisin in graphe[sommet]:
... # à compléter
return visites
Exercice 2⚓︎
On dispose des trois tables suivantes :
ADHERENT(id_adherent, nom, prenom, date_naissance) SEANCE(id_seance, activite, jour, horaire) INSCRIPTION(id_adherent, id_seance, date_inscription)
Les attributs en gras sont les clés primaires des tables.
- Qu'est-ce qu'une clé primaire ?
- Qu'est-ce qu'une clé étrangère ?
- Que renvoie la requête SQL suivante ?
SELECT nom, prenom FROM ADHERENT WHERE date_naissance < '2000-01-01'; - Écrire la requête affichant les activités (sans doublon) proposées le lundi.
- Écrire la requête affichant, pour chaque séance, l'activité et le nombre d'inscrits.