Un automate est incomplet si il peut arriver qu'au cours d'un calcul on ne sache pas quoi faire.
Ceci correspond dans la table de transition à une case sans prochain état pour une lettre donnée.
Pour le compléter, on ajoute un état poubelle à notre automate.
Cet état est un puits dans lequel on reste coincé (toutes transitions sortante reste dans cet été poubelle); et, toute transition manquante devient une transition vers cet état poubelle.
## Déterminisation
* Exemple d-un automate non déterministe à 3 état qui calcule les mots qui commencent et terminent par a et ont au moins deux lettres.
* Calcul sous forme d'un arbre pour aaa, et aaab
* Table de transition
* digression parralèlisme (multi coeurs)
* digression préemption plusieurs processus (commande top)
* digression problème mémoire partagée etc
* retour exemple automate. Super-état. Déterminisation.
### Méthode.
* On part de l'état initial, on note les états accessibles depuis cet état.
Méthode pour tester si deux automates sont équivalents (acceptent et rejettent exactement les mêmes mots).
Provisio : il faut que la machine soit déterministe (hypothèse nécessaire pour la preuve) et complète (hypothèse simplificatrice pour la preuve).
* On regarde tous les mots jusqu'à une taille qui est le produit du nombre d'état des automates.
* Il faut que les deux automates disent la même chose (accepter ou rejeter) sinon on a trouvé un contre-exemple et on répond non, ils ne sont pas équivalents.
* Si c'est le cas on répond oui, ils sont équivalents.
La méthode de la machine bi-coeur (similarité avec la construction précédente de déterminisation) permet de démontrer que cette méthode fonctionne et donner soit un contre-exemple, soit une preuve que les deux machines sont équivalentes.
L'idée consiste à simuler de manière synchrone les deux automates en parallèle.
La machine bi-coeur a une paire d'état au début correspondant à la paire des états initiaux.
Il faut que à chaque étape de construction de son programme, les deux coeurs disent la même chose.