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):
    infectes = [0] * len(voisins)
    infectes[s] = 1
    pas = 0
    tous_infectes = [1] * len(voisins)
    
    print(infectes)
    while  infectes !=  tous_infectes:
        nouveau_infectes = [0] * len(voisins)
        for infecte in infectes:
            sommet_aleatoire = marche_alea(voisins, infecte, 2)  # Marche aléatoire
            nouveau_infectes[sommet_aleatoire] = 1

        for i in range(len(voisins)):
            if nouveau_infectes[i]==1 and infectes[i]==0:
                infectes[i]=1

        print(infectes)
        pas += 1

    return pas

print(f"Temps de propagation depuis le sommet 3 : {temps_propagation(voisins, 3)} étapes")
Fréquences obtenues : [0.322, 0.171, 0.194, 0.123, 0.057, 0.133]
L'ordinateur 0 a la fréquence la plus élevée avec 32.2% de chances.
[0, 0, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0]
[1, 1, 1, 1, 1, 1]
Temps de propagation depuis le sommet 3 : 2 étapes