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