Devoirs Terminale

Liste des fichiers Notebook
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