import random
voisins = [[1, 2, 3, 4, 5],
[0, 2, 3],
[0, 1, 5],
[0, 1],
[0],
[0, 2]]
def voisin_alea(voisins, s):
return voisins[s][random.randrange(len(voisins[s]))]
def marche_alea(voisins, i, n):
if n == 0:
return i
return marche_alea(voisins, voisin_alea(voisins, i), n - 1)
def simule(voisins, i, n_tests, n_pas):
results = [0] * len(voisins)
for _ in range(n_tests):
j = marche_alea(voisins, i, n_pas)
results[j] += 1
return [total / n_tests for total in results]
frequences = simule(voisins, 3, 1000, 10)
print(f"Fréquences obtenues : {frequences}")
print(f"L'ordinateur 0 a la fréquence la plus élevée avec {frequences[0] * 100:.1f}% de chances.")
def temps_propagation(voisins, s):
sommet = s
pas = 0
visites = {s}
while len(visites) < len(voisins):
sommet = marche_alea(voisins, sommet, 1)
if sommet not in visites:
visites.add(sommet)
pas += 1
return pas
print(f"Temps de propagation depuis le sommet 3 : {temps_propagation(voisins, 3)} étapes")
Fréquences obtenues : [0.336, 0.173, 0.185, 0.109, 0.066, 0.131]
L'ordinateur 0 a la fréquence la plus élevée avec 33.6% de chances.
Temps de propagation depuis le sommet 3 : 30 étapes