transducteurs et additionneurs

publicité
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 ne 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 An et Ap qui reconnaissent des mots sur Σ = {0, 1}. Les mots de L (An )
et L (Ap ) peuvent être vus comme des nombres binaires. L'automate An est le codage de l'ensemble
des nombres binaires (éventuellement une innité) qu'il reconnaît L (An ) = {n1 , n2 , . . .}. De même
L (Ap ) = {p1 , p2 , . . .}
On va voir qu'il est possible de constuire un automate, noté An ⊕ Ap , qui reconnaît exactement
l'ensemble des sommes formées de nombres n ∈ L (An ) et p ∈ L (Ap ). Autrement dit, L (An ⊕ Ap ) =
{n + p | n ∈ L (An ), p ∈ L (Ap )}.
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 An ⊕ Ap par un algortihme ecace en O((N × P )2 ) où N est
la taille An et P celle de Ap .
1
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).
i/o
Les transitions d'un transducteur sont de la forme q −−→ q 0 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'un transducteur T est le langage de
l'automate obtenu en considérant les transitions de T comme des transitions d'automate classique ;
i/o
i
c'est-à-dire en considérant uniquement la partie q −
→ q 0 des transitions q −−→ q 0 .
Li (T ) = L (Input(T ))
avec
i/o
def
d'entrée
i
Input(q −−→ q 0 ) = q −
→ q0
Le langage de sortie d'un transducteur T est le langage de l'automate obtenu en considérant uniquement
i/o
o
la partie q −
→ q 0 des transitions q −−→ q 0 .
1
Lo (T ) = L (Output(T ))
avec
def
i/o
o
Output(q −−→ q 0 ) = q −
→ q0
Exécution d'un transducteur (à rédiger)
Exercice Donnez un transducteur
inverse les 0 et les 1.
T qui reconnaît les mots sur Σ = {0, 1} commençant 1 et qui
Exercice Donnez un transducteur T qui reconnaît tous les mots sur Σ = {0, 1} et qui supprime les
0.
Exercice Donnez un transducteur T qui reconnaît tous les mots sur Σ = {0, 1} et qui supprime les
1 situés après un 0.
Produit d'un automate
et d'un transducteur
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 .
A
i/o
(qa , qt ) −−→(qa0 , qt0 ) ∈ A × T
T
si et seulement si
i
qa −
→ qa0 ∈ A
et
i/o
qt −−→ qt0 ∈ 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
def
= Output(A × T )
Exercice
Q1. Donnez un automate A qui reconnaît les nombres binaires pairs écrits avec les unités à gauche.
Exemples :
- (1)N ≡ (1)2 ≡ (1.0.0.0.0)2 ≡ (1.0∗ )2 ∈
/ L (A)
∗
- (2)N ≡ (0.1)2 ≡ (0.1.0 )2 ∈ L (A)
- (3)N ≡ (1.1)2 ≡ (1.1.0∗ )2 ∈
/ L (A)
solution
89:;
/ ?>=<
a0
def
A=
1
0
0
G?>=<
89:;
FED
/ @ABC
a1
L
0
Q2. Faîtes le produit de A par le transducteur T qui reconnaît tous les mots et inverse les 0 et les 1.
solution
def
A×T =
?>=<
/ 89:;
a
1/0
1
0
?()*+
/.-,
>=<
/ 89:;
q ≡
I
?>=<
0123
7654
/ 89:;
a0 ×
J
0
0/1
2
HIJK
/ ONML
(a,q)
1/0
0/1
HIJK
@ABC
GFED
/ ONML
(a0 ,q)
I
0/1
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.
solution
0
ONML
/ HIJK
(a,q)
def
Output(A × T ) =
1
HIJK
@ABC
GFED
/ ONML
(a0 ,q)
I
≡ nombres binaires impairs
1
Addition numérique des langages de deux automates Pour constuire l'automate An ⊕ Ap , on
transforme l'un d'eux (le plus simple), disons Ap en
des mots de An par le transducteur-additionneur Tp
transducteur-additionneur
Tp , on prend l'image
def
An ⊕ Ap = Output(An × Tp )
2
Algorithme de construction d'un transducteur additionneur
2.1 Remarque préliminaire
Lorsqu'on veut additionner deux nombres n et p, on complète le plus court des deux par des 0 an
d'obtenir des nombres de même taille ou on leur ajoute même un 0 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 :
sens du calcul
−−−−−−−−→
111111
+ 11
0100001
=n
=p
111111 retenue
1111110 = n complété
+ 1100000 = p complété
0100001
détail des calculs :
Tout nombre binaire p est équivalent à p.0∗ : le nombre p auquel on a ajouté des 0 non signicatifs.
2.2 Étapes de constructions du transducteur-additionneur associé à Ap
Étant donné un automate Ap sur l'alphabet Σ = {0, 1}, l'algorithme suivant produit un transducteur
qui implante l'addition numérique avec retenue d'un nombre p du langage L (Ap ).
Exemple :
def
On commence par un exemple simple en considérant l'automate A =
89:;
/ ?>=<
a0
89:;
0123
7654
/ ?>=<
a1
1
étape 1 : extension de Ap avec des 0 non-signicatifs À chaque état accepteur de Ap on ajoute
/.-,
l'extension suivante qui reconnaît les 0 non-signicatifs : ()*+
()*+
// .-,
E
0
1
0
+1
+0
Puis on renomme les transitions −
→ et −
→ de Ap en −−→ et −−→.
Exemple :
Pour Ap , on obtient
89:;
/ ?>=<
a0
1
89:;
0123
7654
/ ?>=<
a1
89:;
0123
7654
/ ?>=<
a2 qui se simplie en
H
0
on obtient alors une chose qui n'est ni un automate ni un transducteur
def
A⊕
p =
89:;
/ ?>=<
a0
89:;
/ ?>=<
a0
+1
1
89:;
0123
7654
/ ?>=<
a2
H
89:;
0123
7654
/ ?>=<
a2
H
+0
3
0
Transformation des transitions
+?
−−→
en transitions de transducteur
Chaque transition
0/..
+1
q −−→ q 0 doit incrémenter le digit lu en entrée ; elle donne donc naissance à deux transitions −−→
1/..
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 = 0),
(q, r = 1).
+1
Une transition q −−→ q 0 génère donc les transitions suivantes dans le transducteur :
0/1
(q, r = 0) −−
→(q 0 , r = 0)
+1
1/0
(q, r = 0) −−
→(q 0 , r = 1)
+1
0/0
(q, r = 1) −−
→(q 0 , r = 1)
+1
1/0
(q, r = 1) −−
→(q 0 , r = 1)
+1
car
r = 0 +1 +
le
'0' lu
donne
1
et
r=0
car
r = 0 +1 +
le
'1' lu
donne
0
et
r=1
car
r = 1 +1 +
le
'0' lu
donne
0
et
r=1
car
r = 1 +1 +
le
'1' lu
donne
1
et
r=1
+0
Une transition q −−→ q 0 génère donc les transitions suivantes dans le transducteur :
0/0
(q, r = 0) −−
→(q 0 , r = 0)
+0
1/1
(q, r = 0) −−
→(q 0 , r = 0)
+0
0/1
(q, r = 1) −−
→(q 0 , r = 0)
+0
1/0
(q, r = 1) −−
→(q 0 , r = 1)
+0
car
r = 0 +0 +
le
'0' lu
donne
0
et
r=0
car
r = 0 +0 +
le
'1' lu
donne
1
et
r=0
car
r = 1 +0 +
le
'0' lu
donne
1
et
r=0
car
r = 1 +0 +
le
'1' lu
donne
0
et
r=1
L'état initial de T est l'état initial de A avec la retenue égale à 0.
Les états accepteurs du transducteur sont les états de la forme (q, r = 0) avec q accepteur et une
retenue égale à 0.
Exemple :
89:;
/ ?>=<
a0
def
À partir de A⊕
p =
+1
89:;
0123
7654
/ ?>=<
a2
H
on obtient le transducteur :
+0
def
Tp =
PQRS
/ WVUT
(a0 ,r=0)
+0: 0/0,1/1
PQRS
HIJK
ONML
/ WVUT
a2 ,r=0
+1
ss9
+0 sss
s
1/0 +1
ss
sss 0/1
PQRS
WVUT
(a2 ,r=1)
V
0/1
qu'on écrit plus simplement
def
Tp =
()*+
// .-,
0/0,1/1
()*+
/.-,
/ ?


1/0


 0/1
()*+
/.-,
Y
0/1
1/0
+0: 1/0
2.3 Généralition et algorithme
Le Transducteur-additionneur T associé à un automate A sur l'alphabet Σ = {0, 1} est déni de la
manière suivante :
4
+0
q −−→ q 0 ∈ Ap
+1
q −−→ q 0 ∈ Ap



(q, r



=⇒
(q, r




 (q, r


(q, r






 (q, r
=⇒


(q, r





 (q, r

0/0, 1/1

= 0) −−−−−→(q 0 , r = 0) 



0/1
0
∈ Tp
= 1) −−→(q , r = 0)



1/0


= 1) −−→(q 0 , r = 1)

0/1
= 0) −−→(q 0 , r = 0) 





1/0

0
= 0) −−→(q , r = 1) 
∈ Tp
0/0

= 1) −−→(q 0 , r = 1) 




1/1

0
= 1) −−→(q , r = 1) 
q ∈ Init(Ap ) =⇒ (q, r = 0) ∈ Init(Tp )
q ∈ Acc(Ap ) =⇒ (q, r = 0) ∈ Acc(Tp )
Tout état avec une retenue (. . . , r = 1) ne peut-être ni initial, ni accepteur.
Exercice
Q1. Donnez l'automate An qui reconnaît les nombres binaires pairs écrits avec les unités à gauche et
donnez une expression régulière équivalente.
solution
def
An =
89:;
/ ?>=<
a0
1
0
0
G?>=<
89:;
FED
/ @ABC
a1
L
≡ 0.(1|0)∗
0
Q2. Construire le transducteur-additionneur Tp associé à l'automate Ap def
=
@ABC
/ GFED
a0
1
@ABC
/ GFED
a1
0
1
GFED
?>=<
89:;
/ @ABC
a2
Q3. À partir de l'automate An et du transducteur-additionneur Tp , constuire l'automate qui reconnait
le langage {n + p | n ∈ L (An ), p ∈ L (Ap )}.
5
Téléchargement