Graphes et complexité
On rappelle le code de la classe Graphe, tel qu'implémenté à l'aide d'un dictionnaire d'adjacence.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Création de graphe¶
Écrire une méthode ajouter_liste_arcs de la classe Graphe qui ajoute au graphe orienté self tous les arcs (source, destination) présents dans la liste arcs. Si source ou destination n'est pas un sommet du graphe, on prendra soin de créer au préalable le sommet correspondant.
On pourra utiliser sans justification supplémentaire les méthodes ajouter_sommet et ajouter_arc de la classe Graphe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 | |
{'A': ['B'], 'B': ['A', 'C'], 'C': ['A']}
Étude de complexité¶
On considère la fonction récursive mystere dont on donne le code ci-dessous :
1 2 3 4 5 6 7 8 9 10 | |
On rappelle que l'instruction x if b else y renvoie x si le booléen b est True, sinon elle renvoie y.
1 2 | |
42
24
-
Si
listeest la liste(1, 2, 1), eteltl'entier1, que renvoiemystere(liste, elt)?Dresser un arbre d'appel pour justifier votre réponse.
-
Si
listeest une liste consitutée de \(n\) éléments eteltun entier, on note \(c_n\) le nombre d'opérations élémentaires effectuées lors de l'exécution de l'instructionmystere(liste, elt).-
Sans justifier votre réponse, donner \(c_0\).
-
Pour tout \(n \geq 1\), exprimer \(c_n\) en fonction de \(c_{n - 1}\). Justifier votre réponse à l'aide d'un tableau indiquant pour chaque ligne de code exécutée le nombre d'opérations élémentaires correspondant.
-
Exprimer \(c_n\) en fonction de \(n\). Quelle est la complexité de la fonction
mystere?
-