Cours A&G Vers l'ordinateur quantique Données innies On a vu dans les chapîtres précédents qu'un automate permet de représenter de manière nie (et même compacte) une innité de données. En eet, un automate A a un nombre ni d'états alors que le langage qu'il reconnaît L (A) est le plus souvent inni. Le miracle vient du fait que l'automate ne représente pas directement les données mais un calcul à eectuer pour obtenir les données. On a donc échangé de l'espace mémoire (celui des données) contre du temps (le temps nécessaire pour les calculer). Le même principe de représentation des données sous forme de calcul permet de représenter l'innité des décimales du nombre π par un programmme (d'un millier de ligne) qui calcule la n e décimale de π pour tout n N. Innités d'opérations Maintenant qu'on sait représenter des données innies, on aimerait eectuer des calculs sur ces données sans avoir à les énumérer sinon on sera à nouveau confronter à l'inni. C'est possible dans une certaine mesure et les automates en orent un bon exemple. Construction d'additionneurs L'objectif de ce chapître est de faire un pas vers l'informatique quantique capable de réaliser une innité d'opérations en un temps ni. Considérons des automates A n et A p qui reconnaissent des mots sur Σ = {, }. Les mots de L (A n ) et L (A p ) peuvent être vus comme des nombres binaires. L'automate A n est le codage de l'ensemble des nombres binaires (éventuellement une innité) qu'il reconnaît L (A n ) = {n, n 2,...}. De même L (A p ) = {p, p 2,...} On va voir qu'il est possible de constuire un automate, noté A n A p, qui reconnaît exactement l'ensemble des sommes formées de nombres n L (A n ) et p L (A p ). Autrement dit, L (A n A p ) = {n + p n L (A n ), p L (A p )}. Pour calculer et acher explicitement cet ensemble, il faudrait faire une innité d'opérations. L'utilisation d'automates permet de contourner cet obstacle et d'obtenir une représentation compacte de cet ensemble sous la forme d'un automate A n A p par un algortihme ecace en O((N P ) 2 ) où N est la taille A n et P celle de A p. Transducteur Un transducteur T est un automate qui consomme des symboles dans un ux d'entrée et produit des symboles sur un ux de sortie (un automate est un cas particulier de transducteur qui ne produit rien). Les transitions d'un transducteur sont de la forme q i/o q où i est le symbole consommé sur le ux d'entrée par la transition et o est le symbole produit sur le ux de sortie. La transition consomme i et produit o : on dit donc que o est la traduction du symbole i ; d'où le nom de transducteur. Ainsi, lorsqu'on exécute un transducteur T sur un mot ω, il se comporte comme un automate et s'il reconnaît le mot il produit une traduction du mot sur le ux de sortie. Langage d'entrée, langage de sortie Le langage d'entrée d'un transducteur T est le langage de l'automate obtenu en considérant les transitions de T comme des transitions d'automate classique ; c'est-à-dire en considérant uniquement la partie q i q des transitions q i/o q. L i (T ) = L (Input(T )) avec Input(q i/o q ) = q i q Le langage de sortie d'un transducteur T est le langage de l'automate obtenu en considérant uniquement la partie q o q des transitions q i/o q.
L o (T ) = L (Output(T )) avec Output(q i/o q ) = q o q Exécution d'un transducteur (à rédiger) Donnez un transducteur T qui reconnaît les mots sur Σ = {, } commençant et qui inverse les et les.. Donnez un transducteur T qui reconnaît tous les mots sur Σ = {, } et qui supprime les Donnez un transducteur T qui reconnaît tous les mots sur Σ = {, } et qui supprime les situés après un. Produit d'un automate A et d'un transducteur T Le principe est le même que pour les automates (à nombre) d'états ni : on exécute simultanément A et T ; pour avancer de concert il faut que A et T soient d'accord sur le symbole d'entrée, et on garde la partie production des transitions de T. (q a, q t ) (q i/o a, q t) i A T si et seulement si q a q a i/o A et q t q t T Image d'un automate A par un transducteur T La traduction (ou l'image) des mots de A par un transducteur correspond au langage de sortie de l'automate produit A T, c'est donc Image de A par T = Output(A T ) Q. Donnez un automate A qui reconnaît les nombres binaires pairs écrits avec les unités à gauche. Exemples : - ()N () 2 (...) 2 (. ) 2 / L (A) - (2)N (.) 2 (.. ) 2 L (A) - (3)N (.) 2 (.. ) 2 / L (A) = a A a Q2. Faîtes le produit de A par le transducteur T qui reconnaît tous les mots et inverse les et les. A T = a a / q (a,q) / / (a,q) / / 2
Q3. Donnez l'automate qui correspond aux mots de A traduit par le transducteur T. et décrire en une phrase le langage reconnu par cet automate. Output(A T ) = (a,q) (a,q) nombres binaires impairs Addition numérique des langages de deux automates Pour constuire l'automate A n A p, on transforme l'un d'eux (le plus simple), disons A p en transducteur-additionneur T p, on prend l'image des mots de A n par le transducteur-additionneur T p A n A p = Output(A n T p ) 2 Algorithme de construction d'un transducteur additionneur 2. Remarque préliminaire Lorsqu'on veut additionner deux nombres n et p, on complète le plus court des deux par des an d'obtenir des nombres de même taille ou on leur ajoute même un pour prévoir le cas d'une retenue en n d'addition. Exemple : on considére des nombres binaires écrits avec les unités à gauche et donc on fait l'addition de gauche à droite : = n + = p détail des calculs : sens du calcul retenue = n complété + = p complété Tout nombre binaire p est équivalent à p. : le nombre p auquel on a ajouté des non signicatifs. 2.2 Étapes de constructions du transducteur-additionneur associé à A p Étant donné un automate A p sur l'alphabet Σ = {, }, l'algorithme suivant produit un transducteur qui implante l'addition numérique avec retenue d'un nombre p du langage L (A p ). Exemple : On commence par un exemple simple en considérant l'automate A = a a étape : extension de A p avec des non-signicatifs À chaque état accepteur de A p on ajoute l'extension suivante qui reconnaît les non-signicatifs : ɛ Puis on renomme les transitions et de A p en + et +. Exemple : Pour A p, on obtient a ɛ a a 2 qui se simplie en a a 2 on obtient alors une chose qui n'est ni un automate ni un transducteur A p = a + a 2 + 3
Transformation des transitions +? en transitions de transducteur Chaque transition q + q doit incrémenter le digit lu en entrée ; elle donne donc naissance à deux transitions /.. /.. et en fonction de l'entrée et en tenant compte de la retenue. On indique la valeur de la retenue dans les états du transducteur qui sont donc de la forme (q, r = ), (q, r = ). Une transition q + q génère donc les transitions suivantes dans le transducteur : (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = Une transition q + q génère donc les transitions suivantes dans le transducteur : (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = (q, r = ) / + (q, r = ) car r = + + le '' lu donne et r = L'état initial de T est l'état initial de A avec la retenue égale à. Les états accepteurs du transducteur sont les états de la forme (q, r = ) avec q accepteur et une retenue égale à. Exemple : À partir de A p = a + a 2 + on obtient le transducteur : T p = (a,r=) +: /,/ / a 2,r= + + / + / (a 2,r=) +: / qu'on écrit plus simplement / /,/ T p = / / / 2.3 Généralition et algorithme Le Transducteur-additionneur T associé à un automate A sur l'alphabet Σ = {, } est déni de la manière suivante : 4
q + q A p = q + q A p = /, / (q, r = ) (q, r = ) (q, r = ) (q /, r = ) T p (q, r = ) / (q, r = ) (q, r = ) / (q, r = ) (q, r = ) / (q, r = ) (q, r = ) / (q, r = ) (q, r = ) / (q, r = ) q Init(A p ) = (q, r = ) Init(T p ) q Acc(A p ) = (q, r = ) Acc(T p ) T p Tout état avec une retenue (..., r = ) ne peut-être ni initial, ni accepteur. Q. Donnez l'automate A n qui reconnaît les nombres binaires pairs écrits avec les unités à gauche et donnez une expression régulière équivalente. A n = a a.( ) Q2. Construire le transducteur-additionneur T p associé à l'automate A p = a a a 2 Q3. À partir de l'automate A n et du transducteur-additionneur T p, constuire l'automate qui reconnait le langage {n + p n L (A n ), p L (A p )}. 5