// alp-complet.c // << Algorithmique du texte >> // Maxime Crochemore, Christophe Hancart et Thierry Lecroq // Vuibert, 2001. #include <stdio.h> #include "chl.h" #include "cellule.h" #include "liste.h" #include "ensemble.h" #include "fifo.h" #include "couple.h" #include "automate.h" #include "arbre.h" Automate alpComplet(Ensemble X) { Automate M; Couple couple; Etat p, q, q0, r, s; File F; Lettre a; M = arbre(X); q0 = initial(M); F = fileVide(); for (a = PREMIERELETTRE; a <= DERNIERELETTRE; ++a) { q = cible(q0, a); if (q == NULL) fixerCible(q0, a, q0); else enfiler(F, nouveauCouple(q, q0)); } while (!fileEstVide(F)) { couple = (Couple)defilement(F); p = (Etat)(couple->comp1); r = (Etat)(couple->comp2); if (terminal(r)) terminal(p) = VRAI; for (a = PREMIERELETTRE; a <= DERNIERELETTRE; ++a) { q = cible(p, a); s = cible(r, a); if (q == NULL) fixerCible(p, a, s); else enfiler(F, nouveauCouple(q, s)); } } return(M); }