Graphe
Listes Min max Moy Rch
Ep 21
le document
l'algorithme
Issue de : aucun
EXERCICE 1
Ăcrire une fonction recherche_motif qui prend en paramĂštre une chaĂźne de caractĂšres motif non vide et une chaĂźne de caractĂšres texte et qui renvoie la liste des positions de motif dans texte. Si motif nâapparaĂźt pas, la fonction renvoie une liste vide.
Exemple :
đ Script Python >>> recherche_motif ( "ab" , "" )
[]
>>> recherche_motif ( "ab" , "cdcdcdcd" )
[]
>>> recherche_motif ( "ab" , "abracadabra" )
[ 0 , 7 ]
>>> recherche_motif ( "ab" , "abracadabraab" )
[ 0 , 7 , 11 ]
RĂ©ponse
Complétez le code ci-dessous
# Mettez votre code icibksl-nlbksl-nl
Solution
def recherchepy-undmotif(motif, text):bksl-nl """MĂ©thode naĂŻve"""bksl-nl lgpy-undtext = len(text)bksl-nl lgpy-undmotif = len(motif)bksl-nl position = []bksl-nl for i in range(lgpy-undtext-lgpy-undmotif+1):bksl-nl if text[i:i+lgpy-undmotif] == motif:bksl-nl position.append(i)bksl-nl return positionbksl-nl bksl-nltry:bksl-nl assert recherchepy-undmotif("ab", "") == []bksl-nl assert recherchepy-undmotif("ab", "cdcdcdcd") == []bksl-nl assert recherchepy-undmotif("ab", "abracadabra") == [0, 7]bksl-nl assert recherchepy-undmotif("ab", "abracadabraab") == [0, 7, 11]bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nlbksl-nl
EXERCICE 2
Dans cet exercice, on considĂšre un graphe non orientĂ© reprĂ©sentĂ© sous forme de listes dâadjacence.
On suppose que les sommets sont numérotés de 0 à n-1.
Ainsi, le graphe suivant:
sera reprĂ©sentĂ© par la liste dâadjacence suivante:
adj = [[1, 2], [0, 3], [0], [1], [5], [4]]
On souhaite déterminer les sommets accessibles depuis un sommet donné dans le graphe.
Pour cela, on va procéder à un parcours en profondeur du graphe.
Compléter la fonction suivante.
đ Script Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 def parcours ( adj , x , acc ):
'''Réalise un parcours en profondeur récursif
du graphe donné par les listes d'adjacence adj
depuis le sommet x en accumulant les sommets
rencontrés dans acc'''
if x ... :
acc . append ( x )
for y in ... :
parcours ( adj , ... )
def accessibles ( adj , x ):
'''Renvoie la liste des sommets accessibles dans le
graphe donné par les listes d'adjacence adj depuis
le sommet x.'''
acc = []
parcours ( adj , ... )
return acc
Exemple :
đ Script Python >>> accessibles ([[ 1 , 2 ], [ 0 ], [ 0 , 3 ], [ 1 ], [ 5 ], [ 4 ]], 0 )
[ 0 , 1 , 2 , 3 ]
>>> accessibles ([[ 1 , 2 ], [ 0 ], [ 0 , 3 ], [ 1 ], [ 5 ], [ 4 ]], 4 )
[ 4 , 5 ]
RĂ©ponse
Complétez le code ci-dessous
def parcours(adj, x, acc):bksl-nl '''Réalise un parcours en profondeur récursifbksl-nl du graphe donné par les listes d'adjacence adj bksl-nl depuis le sommet x en accumulant les sommetsbksl-nl rencontrés dans acc'''bksl-nl if x ...: bksl-nl acc.append(x)bksl-nl for y in ...: bksl-nl parcours(adj, ...) bksl-nlbksl-nldef accessibles(adj, x):bksl-nl '''Renvoie la liste des sommets accessibles dans lebksl-nl graphe donné par les listes d'adjacence adj depuisbksl-nl le sommet x.'''bksl-nl acc = []bksl-nl parcours(adj, ...) bksl-nl return accbksl-nlbksl-nl
Solution
def parcours(adj, x, acc):bksl-nl '''RĂ©alise un parcours en profondeur rĂ©cursifbksl-nl du graphe donnĂ© par les listes d'adjacence adj bksl-nl depuis le sommet x en accumulant les sommetsbksl-nl rencontrĂ©s dans acc'''bksl-nl if x not in acc: bksl-nl acc.append(x)bksl-nl for y in adj[x]: bksl-nl parcours(adj, y, acc) bksl-nlbksl-nldef accessibles(adj, x):bksl-nl '''Renvoie la liste des sommets accessibles dans lebksl-nl graphe donnĂ© par les listes d'adjacence adj depuisbksl-nl le sommet x.'''bksl-nl acc = []bksl-nl parcours(adj, x, acc) bksl-nl return accbksl-nlbksl-nltry:bksl-nl assert accessibles([[1, 2], [0], [0, 3], [1], [5], [4]], 0) == [0, 1, 2, 3]bksl-nl assert accessibles([[1, 2], [0], [0, 3], [1], [5], [4]], 4) == [4, 5]bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nlbksl-nl