def makeAutomata(self):
        Q = [self.empty]

        # On remplit d'abord Q
        for i in range(0, len(self.S)):
            b = False
            for j in range(0, i):
                if i != j and self.S.table[i] == self.S.table[j]:
                    b = False
                    break
                if self.S.key[
                        i] not in Q and self.S.table[i] != self.S.table[j]:
                    b = True
            if b:
                Q.append(self.S.key[i])

        automata = Automata(self.alphabet, Q)

        # Ensuite, on peut remplir les tables Fa et Fr
        for qu in range(len(Q)):
            if self.allKey.getValue(Q[qu] + self.empty) == 1:
                automata.Fa.append(qu)
            else:
                automata.Fr.append(qu)

        # Enfin, on peut créer la table contenant les états et les transitions
        for qu in range(len(Q)):
            for a in self.alphabet:
                for qw in range(len(Q)):
                    if self.getRow(Q[qu] + a) == self.getRow(Q[qw]):
                        automata.setValue(qw, qu, a)
                        break

        print("\n-- Q  ------------------------------")
        print(automata.Q)
        print("\n-- Fa ------------------------------")
        print(automata.Fa)
        print("\n-- Fr ------------------------------")
        print(automata.Fr)

        return automata