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
liste
est la liste(1, 2, 1)
, etelt
l'entier1
, que renvoiemystere(liste, elt)
?Dresser un arbre d'appel pour justifier votre réponse.
-
Si
liste
est une liste consitutée de \(n\) éléments etelt
un 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
?
-