Automate fini minimal

publicité
Théorie des langages
Automate fini minimal
Elise Bonzon
[email protected]
LIPADE - Université Paris Descartes
http://www.math-info.univ-paris5.fr/vbonzon/
1
Automate fini minimal
1. Minimisation
2. Automate des résiduels
3. Test de minimalité
4. Algorithme de Moore
2
Minimisation
Un exemple
• Automate déterministe
• Le langage reconnu est
L = {ac, bc}
1
c
a
0
3
c
b
2
• Il existe d’autres automates qui
reconnaissent L
• On souhaite trouver le plus petit
automate, c’est à dire l’automate
complet ayant le plus petit nombre
d’états qui reconnaı̂t L
3
Un exemple
• Ici, tous les mots reconnus à partir
de l’état 2 le sont aussi à partir de
l’état 1
⇒ on fusionne ces deux états, et on
complète
1
c
a
0
3
c
b
2
4
Un exemple
• Ici, tous les mots reconnus à partir
de l’état 2 le sont aussi à partir de
l’état 1
⇒ on fusionne ces deux états, et on
complète
1
c
a
0
3
c
b
0
a,b
c
1, 2
c
3
a,b,c
a,b
2
P
a,b,c
4
Minimisation
Théorème
Tout langage rationnel est reconnu par un unique automate
déterministe minimal.
5
Minimisation
Théorème
Tout langage rationnel est reconnu par un unique automate
déterministe minimal.
→ La minimalité porte sur le nombre d’états d’un automate complet !
5
Deux problèmes de minimisation
Donnée : Une expression régulière
• On veut construire l’automate minimal qui reconnait
le langage décrit par cette expression régulière
⇒ Les résiduels
Donnée : Un automate fini déterministe M
• On veut construire l’automate minimal qui reconnait
le langage L(M)
⇒ L’équivalence d’états
6
Automate des résiduels
Résiduels
Résiduels à gauche
Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ .
Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le
langage :
w −1 L = {u ∈ Σ∗ | w .u ∈ L}
v ∈L
w
u
7
Résiduels
Résiduels à gauche
Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ .
Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le
langage :
w −1 L = {u ∈ Σ∗ | w .u ∈ L}
v ∈L
Pour L = {ab, ba, aab}, on a
w
u
• a−1 L = {b, ab}
• b−1 L = {a}
• c −1 L = ∅
• (ab)−1 L = {}
7
Résiduels
Résiduels à gauche
Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ .
Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le
langage :
w −1 L = {u ∈ Σ∗ | w .u ∈ L}
v ∈L
Pour L = {ab, ba, aab}, on a
w
u
Pour L = aa(bb + c)∗ , on a
• a−1 L = {b, ab}
• a−1 L = a(bb + c)∗
• b−1 L = {a}
• b−1 L = ∅
• c −1 L = ∅
• c −1 L = ∅
• (ab)−1 L = {}
• (aab)−1 L = b(bb + c)∗
7
Résiduels : propriétés
• −1 L = L
• ∅−1 L = ∅
• (uv )−1 L = v −1 (u −1 L)
8
Résiduels : propriétés
• −1 L = L
• ∅−1 L = ∅
• (uv )−1 L = v −1 (u −1 L)
(uv )−1 L = {w ∈ Σ∗ | uvw ∈ L}
= {w ∈ Σ∗ | vw ∈ u −1 L}
= {w ∈ Σ∗ | w ∈ v −1 (u −1 L)}
= v −1 (u −1 L)
uvw ∈ L
u
v
w
8
Rappel : langage généré à partir d’un état
Langage généré à partir d’un état par un automate
Le langage généré à partir d’un état q par un automate
M = hQ, Σ, δ, q0 , F i, noté L(q) est l’ensemble des mots acceptés à
partir de cet état.
∗
L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (qf , ) et qf ∈ F }
Le langage généré par un automate M est défini par
L(M) = L(q0 )
9
Rappel : langage généré à partir d’un état
Langage généré à partir d’un état par un automate
Le langage généré à partir d’un état q par un automate
M = hQ, Σ, δ, q0 , F i, noté L(q) est l’ensemble des mots acceptés à
partir de cet état.
∗
L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (qf , ) et qf ∈ F }
Le langage généré par un automate M est défini par
L(M) = L(q0 )
Etat accessible
Un état q est accessible s’il existe un chemin de qo à q dans M.
9
Langage Lq d’un automate
Si M = hQ, Σ, δ, q0 , F i est déterministe, avec L(M) = L, on a pour tout
w ∈ Σ∗ , et q ∈ Q
∗
(q0 , w ) 7→ (q, ) ⇒ w −1 L = Lq
Preuve :
x ∈ w −1 L ⇔ wx ∈ L
∗
⇔ ∃qf ∈ F : (q0 , wx) 7→ (qf , )
∗
∗
⇔ ∃qf ∈ F : (q0 , wx) 7→ (q, x) 7→ (qf , )
∗
⇔ ∃qf ∈ F : (q, x) 7→ (qf , )
⇔ x ∈ Lq
10
Langage Lq et résiduels
Théorème
L’ensemble des résiduels à gauche de L, noté R(L) est fini.
11
Langage Lq et résiduels
Théorème
L’ensemble des résiduels à gauche de L, noté R(L) est fini.
Proposition
Soit M = hQ, Σ, δ, q0 , F i un automate déterministe et complet dont
tous les états sont accessibles. On a :
R(L) = {Lq (M), q ∈ Q}
11
Langage Lq et résiduels
Théorème
L’ensemble des résiduels à gauche de L, noté R(L) est fini.
Proposition
Soit M = hQ, Σ, δ, q0 , F i un automate déterministe et complet dont
tous les états sont accessibles. On a :
R(L) = {Lq (M), q ∈ Q}
Conséquence immédiate : A partir d’une expression régulière pour L, on
peut construire l’automate minimal qui reconnaı̂t L et dont chaque état
correspond à un élément de R(L).
11
Construction de l’automate minimal
1. Un langage L est reconnaissable si et seulement si le nombre de ses
résiduels est fini
2. L’automate déterministe minimal complet reconnaissant L est
l’automate tel que :
• les états sont numérotés de 0 à n − 1, où n est le nombre de résiduels
de L ;
• chaque résiduel Li correspond à un état noté i ;
• l’état initial 0 correspond au résiduel de L par rapport à ,
c’est-à-dire L lui-même (L0 = −1 L = L) ;
• il existe une transition (i; a; j) si et seulement si Lj = a−1 Li ;
• i est un état final si et seulement si ∈ Li .
L’automate défini ainsi est appelé automate des résiduels.
12
Exemple
L = b∗ a(a + b)(= L0 )
δ
→ L0
a
b
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
δ
→ L0
a
b
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
δ
→ L0
a
L1 = a + b
b
L0
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
δ
→ L0
L1
a
L1 = a + b
b
L0
a−1 L1 = = L2
b−1 L1 = = L2
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
δ
→ L0
L1
a
L1 = a + b
L2 = b
L0
L2 = a−1 L1 = = L2
b−1 L1 = = L2
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
a−1 L1 = = L2
δ
→ L0
L1
← L2
a
L1 = a + b
L2 = b
L0
L2 = b−1 L1 = = L2
a−1 L2 = ∅ = L3
b−1 L2 = ∅ = L3
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
a−1 L1 = = L2
δ
→ L0
L1
← L2
a
L1 = a + b
L2 = L3 = ∅
b
L0
L2 = L3 = ∅
b−1 L1 = = L2
a−1 L2 = ∅ = L3
b−1 L2 = ∅ = L3
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
a−1 L1 = = L2
b−1 L1 = = L2
δ
→ L0
L1
← L2
L3
a
L1 = a + b
L2 = L3 = ∅
b
L0
L2 = L3 = ∅
a−1 L2 = ∅ = L3
b−1 L2 = ∅ = L3
a−1 L3 = ∅ = L3
b−1 L3 = ∅ = L3
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
a−1 L1 = = L2
b−1 L1 = = L2
δ
→ L0
L1
← L2
L3
a
L1 = a + b
L2 = L3 = ∅
L3 = ∅
b
L0
L2 = L3 = ∅
L3 = ∅
a−1 L2 = ∅ = L3
b−1 L2 = ∅ = L3
a−1 L3 = ∅ = L3
b−1 L3 = ∅ = L3
13
Exemple
L = b∗ a(a + b)(= L0 )
a−1 L0 = a + b = L1
b−1 L0 = L0
a−1 L1 = = L2
b−1 L1 = = L2
a
−1
δ
→ L0
L1
← L2
L3
a
L1 = a + b
L2 = L3 = ∅
L3 = ∅
0
L2 = ∅ = L3
a
b
L0
L2 = L3 = ∅
L3 = ∅
1
b−1 L2 = ∅ = L3
a,b
b
a−1 L3 = ∅ = L3
b−1 L3 = ∅ = L3
a,b
3
a,b
2
13
Un autre exemple
L = (a + b)∗ ab
δ
a
b
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
δ
→ L0
a
b
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
δ
→ L0
a
L1
b
L0
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
δ
→ L0
L1
a
L1
b
L0
a−1 L1 = (a + b)∗ ab + b + ∅ = L1
b−1 L1 = (a + b)∗ ab + = L2
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
δ
→ L0
L1
a
L1
L1
b
L0
L2
a−1 L1 = (a + b)∗ ab + b + ∅ = L1
b−1 L1 = (a + b)∗ ab + = L2
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
a−1 L1 = (a + b)∗ ab + b + ∅ = L1
δ
→ L0
L1
← L2
a
L1
L1
b
L0
L2
b−1 L1 = (a + b)∗ ab + = L2
a−1 L2 = (a + b)∗ ab + b + ∅ = L1
b−1 L2 = (a + b)∗ ab + ∅ = L0
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
a−1 L1 = (a + b)∗ ab + b + ∅ = L1
δ
→ L0
L1
← L2
a
L1
L1
L1
b
L0
L2
L0
b−1 L1 = (a + b)∗ ab + = L2
a−1 L2 = (a + b)∗ ab + b + ∅ = L1
b−1 L2 = (a + b)∗ ab + ∅ = L0
14
Un autre exemple
L = (a + b)∗ ab
a−1 L0 = (a + b)∗ ab + b = L1
b−1 L0 = (a + b)∗ ab = L0
a−1 L1 = (a + b)∗ ab + b + ∅ = L1
b−1 L1 = (a + b)∗ ab + = L2
δ
→ L0
L1
← L2
b
∗
L2 = (a + b) ab + ∅ = L0
b
L0
L2
L0
b
a
a−1 L2 = (a + b)∗ ab + b + ∅ = L1
−1
a
L1
L1
L1
a
0
1
a
b
b
2
14
Test de minimalité
Minimisation : 2ème problème
Donnée : Un automate fini déterministe M
• On veut construire l’automate minimal qui reconnait
le langage L(M)
⇒ Fusionner les états équivalents
15
Etats séparés
Intuition
Deux états sont séparés par un mot si le chemin étiqueté par ce mot et
partant de l’un des deux états aboutit dans un état final, tandis que le
chemin étiqueté par ce mot et partant de l’autre état aboutit dans un
état qui n’est pas final.
16
Etats séparés
Intuition
Deux états sont séparés par un mot si le chemin étiqueté par ce mot et
partant de l’un des deux états aboutit dans un état final, tandis que le
chemin étiqueté par ce mot et partant de l’autre état aboutit dans un
état qui n’est pas final.
b
a
• sépare les états 1 et 2
b
0
a
2
• aab ne sépare pas 1 et 2
• sépare les états 0 et 1
a
• a sépare les états 0 et 2
1
b
16
Test de minimalité
Minimalité
Un automate déterministe complet est minimal si et seulement si pour
tout couple d’états p et q, il existe un mot qui sépare p et q.
• Ce résultat donne un moyen de montrer qu’un automate est minimal
→ Il suffit d’exhiber pour chaque paire d’états p et q un mot qui les
sépare
• Par exemple, l’automate précédent est minimal
• Deux états qui ne sont séparés par aucun mot seront dit équivalents
17
Algorithme de Moore
Congruence de Nérode
Equivalence d’états
Etant donné un automate fini déterministe M, deux états p et q sont
équivalents si leurs langages associés respectifs sont identiques :
p ≈ q si et seulement si Lp (M) = Lq (M)
Autrement dit,
∗
∗
Soient p 0 , q 0 définis ∀w ∈ Σ∗ , par (q, w ) 7→ (q 0 , ) et (p, w ) 7→ (p 0 , ).
Alors
(
q 0 ∈ F et p 0 ∈ F , ou
(p ≈ q) ⇔ ∀w ∈ Σ∗ ,
q 0 6∈ F et p 0 6∈ F
• p ≈ q signifie que p et q ne sont séparés par aucun mot
• On note p ≈n q le fait que p et q ne sont séparés par aucun mot de
longueur inférieure ou égale à n
18
Congruence de Nérode
• La relation ≈ est une relation d’équivalence appelée congruence de
Nérode.
• Rappel : une relation d’équivalence est réflexive, symétrique et
transitive
• ∀n ≥ 0, la relation ≈n est également une relation d’équivalence
• Si q est un état, on note [q] l’ensemble des états qui lui sont
équivalents
19
Exemple
b
1
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3?
b
1
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F
b
1
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F
• 0 ≈ 1?
b
1
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F
• 0 ≈ 1 ? Non, b sépare 0 et 1
b
1
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F
• 0 ≈ 1 ? Non, b sépare 0 et 1
b
1
• 3 ≈ 4?
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
20
Exemple
• 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F
• 0 ≈ 1 ? Non, b sépare 0 et 1
b
1
• 3 ≈ 4 ? Oui
3
a
b
a
0
a
a
a
5
b
b
2
b
4
a,b
• 3 ∈ F , 4 ∈ F , et
• ∀w ∈ Σ∗ ,
∗
(3, aw ) 7→ (p, ),
∗
(4, aw ) 7→ (q, ), avec
p, q ∈ F ;
• ∀w ∈ Σ∗ ,
∗
(3, bw ) 7→ (p, ),
∗
(4, bw ) 7→ (q, ), avec
p, q 6∈ F ;
20
Automate minimal
Automate minimal
Soit M = hQ, Σ, δ, q0 , F i un automate complet déterministe dont tous
les états sont accessibles.
L’automate minimal associé à M est Mmin = hQ 0 , Σ, δ 0 , [q0 ], F 0 i, avec
• Q 0 = {[q], q ∈ Q}
• δ 0 = {([p], x, [q] | ∃p 0 ∈ [p], ∃q 0 ∈ [q] tels que (p 0 , x, q 0 ) ∈ δ}
• F 0 = {[f ], f ∈ F }
21
Algorithme de Moore
Donnée : un automate complet déterministe accessible
Résultat : la congruence de Nérode et l’automate minimal
reconnaissant le langage reconnu par l’automate donné en
entrée
Principe : l’algorithme calcule lettre par lettre les mots séparant les
états, et attribue un numéro (en chiffre romain) à chaque
classe d’équivalence d’états.
22
Algorithme de Moore
1. Construire un tableau dont les colonnes sont les différents états de
l’automate
2. Séparer les états finaux et non finaux en deux classes :
• Numéroter par I l’état de la première colonne ;
• Numéroter par I ou II chaque état, de façon à associer le même
numéro à tous les états finaux, et l’autre numéro à tous les états non
finaux
3. Créer une ligne pour chaque x ∈ Σ. Associer à chaque état p le
numéro correspondant à l’état q tel que δ(p, x) = q
4. Bilan : on compare les numéro obtenus sur chaque ligne pour
chaque état : deux colonnes différentes donnent deux classes
d’équivalences différentes
• Numéroter par I l’état de la première colonne
• Si la seconde colonne est identique à la première, lui associer le
numéro I . Sinon, lui associer le numéro II.
• Poursuivre jusqu’à ce que toutes les colonnes soient numérotées
5. Recommencer les étapes 3. et 4. jusqu’à obtenir deux bilans
successifs identiques
23
Algorithme de Moore
• Les états de l’automate minimal complet sont les classes obtenues
dans le dernier bilan
• Les transitions sont celles trouvées lors de la dernière application de
l’étape 3.
• L’état initial de l’automate minimal est la classe d’équivalence
contenant l’état initial de l’automate donné en entrée
• Les états finaux sont les classes d’équivalences qui contiennent des
états finaux de l’automate donné en entrée
24
Exemple
0
1
a
a
0
b
b
3
aa
2
b
2
3
4
5
b
a
4
1
5
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
1
I
2
I
3
II
4
II
5
I
b
a
4
0
I
5
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
a
0
I
1
I
2
I
3
II
4
II
5
I
5
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
a
0
I
I
1
I
I
2
I
I
3
II
II
4
II
II
5
I
I
5
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
a
b
0
I
I
I
1
I
I
II
2
I
I
II
3
II
II
I
4
II
II
I
5
I
I
I
5
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
a
b
Bilan
0
I
I
I
I
1
I
I
II
2
I
I
II
3
II
II
I
4
II
II
I
5
I
I
I
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
a
b
Bilan
0
I
I
I
I
1
I
I
II
II
2
I
I
II
3
II
II
I
4
II
II
I
5
I
I
I
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
a
b
Bilan
0
I
I
I
I
1
I
I
II
II
2
I
I
II
II
3
II
II
I
4
II
II
I
5
I
I
I
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
a
b
Bilan
0
I
I
I
I
1
I
I
II
II
2
I
I
II
II
3
II
II
I
III
4
II
II
I
III
5
I
I
I
I
b
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
b
a
b
Bilan
a
0
I
I
I
I
II
1
I
I
II
II
II
2
I
I
II
II
II
3
II
II
I
III
III
4
II
II
I
III
III
5
I
I
I
I
I
a,b
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
b
a,b
a
b
Bilan
a
b
0
I
I
I
I
II
II
1
I
I
II
II
II
III
2
I
I
II
II
II
III
3
II
II
I
III
III
I
4
II
II
I
III
III
I
5
I
I
I
I
I
I
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
b
a,b
a
b
Bilan
a
b
Bilan
0
I
I
I
I
II
II
I
1
I
I
II
II
II
III
II
2
I
I
II
II
II
III
II
3
II
II
I
III
III
I
III
4
II
II
I
III
III
I
III
5
I
I
I
I
I
I
IV
25
Exemple
1
a
a
0
b
b
3
aa
2
b
b
a
4
5
b
a,b
a
b
Bilan
a
b
Bilan
a
b
Bilan
0
I
I
I
I
II
II
I
II
II
I
1
I
I
II
II
II
III
II
II
III
II
2
I
I
II
II
II
III
II
II
III
II
3
II
II
I
III
III
I
III
III
IV
III
4
II
II
I
III
III
I
III
III
IV
III
5
I
I
I
I
I
I
IV
IV
IV
IV
25
Exemple
On obtient :
a
b
Bilan
a
b
Bilan
a
b
Bilan
0
I
I
I
I
II
II
I
II
II
I
1
I
I
II
II
II
III
II
II
III
II
2
I
I
II
II
II
III
II
II
III
II
3
II
II
I
III
III
I
III
III
IV
III
4
II
II
I
III
III
I
III
III
IV
III
5
I
I
I
I
I
I
IV
IV
IV
IV
I
a
a,b
II
b
IV
a,b
b
III
a
25
Un autre exemple
a
b
0
a
1
b
3
a
b
2
a,b
26
Un autre exemple
a
b
0
a
a
1
II
2
II
3
II
1
b
3
0
I
b
2
a,b
26
Un autre exemple
a
b
0
a
1
b
3
a
a
0
I
II
1
II
II
2
II
II
3
II
II
b
2
a,b
26
Un autre exemple
a
b
0
a
1
b
3
a
a
b
0
I
II
I
1
II
II
II
2
II
II
II
3
II
II
II
b
2
a,b
26
Un autre exemple
a
b
0
a
1
b
3
a
b
a
b
Bilan
0
I
II
I
I
1
II
II
II
II
2
II
II
II
II
3
II
II
II
II
2
a,b
26
Un autre exemple
a
b
0
a
1
b
3
a
b
2
a
b
Bilan
a
b
Bilan
0
I
II
I
I
II
I
I
1
II
II
II
II
II
II
II
2
II
II
II
II
II
II
II
3
II
II
II
II
II
II
II
a,b
26
Un autre exemple
a
b
Bilan
a
b
Bilan
0
I
II
I
I
II
I
I
1
II
II
II
II
II
II
II
2
II
II
II
II
II
II
II
3
II
II
II
II
II
II
II
On obtient :
b
0
a,b
a
1
26
Téléchargement