def determinise(automate: Automaton):
    automateDet = Automaton("deterministe")
    automateDet.initial = automate.initial
    listeEtats = []
    listeEtats.append(set([automate.initial.name]))
    listeEtatsNew = listeEtats
    print(listeEtats)
    while len(listeEtats) != 0:
        elt1 = listeEtats[0]
        listeEtats = listeEtats[1:]
        for elt11 in elt1:
            for x in automate.alphabet:
                EtatDest = []
                for (source, symbol, destination) in automate.transitions:
                    if source == str(elt11) and symbol == x:
                        EtatDest.append(destination)
                if (len(EtatDest) != 0) and EtatDest not in listeEtatsNew:
                    listeEtats.append(EtatDest)
                    listeEtatsNew.append(EtatDest)
                    automateDet.add_transition(str(elt1), x, str(EtatDest))
    for etat in automate.acceptstates:
        for elt1 in listeEtatsNew:
            if etat in elt1:
                automateDet.make_accept(str(elt1))
    return automateDet