Langages ambigus et séries algébriques

publicité
Langages ambigus et séries algébriques
Simon Forest
Dans l’article “Analytic models and ambiguity of context-free languages”,
Philippe Flajolet met en avant des méthodes afin de déterminer si des languages
issus de grammaire sans contexte (ou Context-Free Grammar) sont ambigus.
Ces méthodes sont toutes basées sur le théorème de Chomsky-Schutzenberger,
qui stipule que la fonction génératrice d’un langage non ambigu est algébrique.
Ainsi, par contraposée, pour montrer l’ambiguité intrinsèque d’un langage, il
suffit de montrer que sa série génératrice n’est pas algébrique. Ce document est
un résumé de l’article de Flajolet.
1
Introduction
Une spécification sans contexte d’un langage L est dite ambigue s’il existe
un mot w ∈ L tel qu’il existe plusieurs façons de produire w à partir de la
spécification.
Exemple 1. si L = {am bn cp |n = m ou n = p}, alors une spécification sans
contexte de L est
L → XC + AY
X → aXb + Y → bY c + A → aA + C → cC + On voit que cette spécification est ambigue pour le mot w = abc.
On dit alors qu’un langage est essentiellement ambigu lorsqu’il ne possède
pas de spécification sans contexte non ambigue.
Il est difficile de montrer qu’un langage est ambigu directement : montrer une
propriété pour toutes les spécifications possibles n’est pas facile. On montre donc
l’ambiguité d’un langage indirectement en utilisant le théorème de Chomsky et
de Schutzenberger :
P
Définition 1. Soit l =
ln z n . On dit que l est algébrique sur un corps K s’il
existe P (z, y) ∈ K[X, Y ] − 0 tel que P (z, l(z)) = 0. Sinon, on dit qu’elle est
transcendante.
Théorème 1. (Chomsky-Schutzenberger) Soit l la série génératrice d’un langage L. Alors si L est non ambigu, l est algébrique sur Q.
Par contraposée, on a alors :
1
Théorème 2. Soit l la série génératrice d’un langage L. Alors si l est transcendante, L est essentiellement ambigu.
Donc pour montrer qu’un langage est essentiellement ambigu, il suffit de
montrer que sa série génératrice est transcendante. Pour cela, on dispose de
plusieurs critères que l’on va exposer avec des exemples.
2
Valeur d’une série algébrique
On a déjà une première propriété sur les séries algébriques :
Théorème 3. Si l(z) est une série algébrique et ω est un nombre algébrique,
alors l(ω) est algébrique.
Exemple 2. Soit O le langage
O = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ ou |w|y = |w|ȳ }
On a O = O1 ∪ O2 avec
O1 = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ }
et
O2 = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ }
On note I = O1 ∩ O2 . On a alors O(z) = O1 (z) + O2 (z) − I(z). On trouve
facilement une grammaire sans contexte non ambigue pour O1 :
O1 → AX
A → (x + y)A + X → xAX x̄A + x̄AXxA + De même pour O2 . Ainsi, O1 , O2 sont algébriques. Pour montrer que O(z) est
transcendante, il suffit de montrer que I(z) est transcendante. On remarque
alors que
X
n n 2
X
2n 2k
2n − 2k
2n
n
I2n =
=
2k
k
n−k
n
k
k=0
k=0
D’après l’identité de Vandermonde, I2n =
étant une intégrale de Wallis
I(z) =
2
π
Z
π
2
n 2
2n
. On peut alors voir I(z) comme
1
(1 − 16z 2 sin2 (θ))− 2 dθ
0
qui possède des valeurs transcendantes en des points algébriques (par exemple :
Th. Shneider, Einführung in die transzendenten Zahlen). Donc I(z) est transcendante, donc O est essentiellement ambigu.
2
3
Singularités d’une série algébrique
Voici une seconde propriété sur les singularités des séries algébriques :
Théorème 4. Soit l(z) une série algébrique sur Q. Alors l(z) a un nombre fini
de singularités qui sont des nombres algébriques. De plus, si P ∈ K[X, Y ] tel
que P (z, l(z)) = 0, alors si z est une singularité de l(z), il vérifie au moins une
des propriétés suivantes :
(X,Y )
— Si R(X, Y ) := resultanty [P (X, Y ), ∂P ∂Y
], alors R(z, Y ) = 0
— Pd (z) = 0 où Pd est le polynôme qui est le cœfficient du monôme de plus
haut degré dans P (X, Y ) ∈ K[X][Y ]
Ainsi, on obtient un deuxième critère pour tester l’ambiguité d’un langage :
Si l(z) vérifie l’une des deux propriétés suivantes, alors L est essentiellement
ambigu :
— l(z) a un nombre infini de singularités
— une singularité de l(z) n’est pas algébrique
— une singularité de l(z) n’annule pas R(y) ni Pd
Exemple 3. Soit S le langage S = {an bv1 an v2 |n ≥ 1; v1 , v2 ∈ {a, b}? }. S peut
se décomposer de façon non ambigue :
X
S=
an bRn an {a, b}?
n≥1
avec
Rn = (( + a + · · · + an−1 )b)?
Mais ce n’est pas une grammaire pour autant vu que la somme est infinie. Cependant, cela nous permet d’exprimer S(z) :
S(z) =
avec
Rn (z) =
+∞
z X 2n
z Rn (z)
1 − 2z n=0
1
1−z
=
n−1
1 − z(1 + z + · · · + z
)
1 − 2z + z n+1
Donc on a
S(z) =
z X z 2n
1 − 2z
Pn (z)
n≥1
n+1
où Pn (z) = 1 − 2z + z
. Avec une analyse de fonction classique, on remarque
que Pn a une unique racine sur ] 21 ; 1[ que l’on note xn . La suite des xn est
strictement décroissante.
Ainsi, on en déduit que S(z) a une infinité de singularités sur le disque
D(0, 43 ). Donc S(z) n’est pas algébrique et S est essentiellement ambigu.
4
Asymptotique près d’une singularité
On dispose d’une propriété sur l’asymptotique d’une série algébrique près
d’une singularité :
3
Théorème 5. Soit l(z) une série algébrique et α une singularité de l(z). Au
voisinage de α, on a un développement :
X
z
l(z) =
ak (1 − )kr
α
k≥−m
+
avec m ∈ N, r ∈ Q , (ak )k nombres algébriques. En particulier, au voisinage
d’une singularité, l(z) admet un équivalent de la forme : l(z) ∼ ω(1 − αz )−u ,
avec u ∈ Q+
Exemple 4. Soit K = {n1 . . . nk |∃j, nj+1 6= nj } où n = an b. On a K c =
K1 ∪ K2 avec K1 = {a, b}? a et K2 = {n1 . . . nk |∀j, nj = nj+1 }. Donc
X
1
1
K(z) =
−
−
z k(n+1)
1 − 2z
1 − 2z
k≥1,n≥0
On a donc que K(z) est transcendante si D(z) =
dentale. Or
X
D(z) =
d(m)z m
P
k≥1,n≥1
z kn est transcen-
m≥1
où d(m) est le nombre de diviseurs de m. D(z) admet alors une singularité en
1− . On peut alors montrer à l’aide d’une transformée de Mellin que
D(z) ∼z→1− (1 − z)−1 log(
1
)
1−z
ce qui ne peut pas être l’équivalent d’une série algébrique près d’une singularité
à cause du facteur log.
5
Asymptotique des cœfficients
On a une propriété sur l’asymptotique des cœfficients d’une série algébrique :
Théorème 6. Si l(z) est algébrique, alors on a l’asymptotique suivante pour
les cœfficients de la série :
m
ln =
β n ns X
Ci ωin + O(βnt )
Γ(s + 1) i=0
avec s ∈ Q − {−1, −2, . . .}, t < s, β un nombre algébrique positif, Ci , ωi
algébriques et |ωi | = 1.
En particulier, si ln ∼ γβ n nr , alors si β n’est pas algébrique, r ∈
/ Q, ou
Γ(r + 1)γ est transcendant, alors l(z) est transcendante.
Exemple 5. Soit Ω = {w ∈ {a, b, c}? | |w|a 6= |w|b ou |w|b 6= |w|c }. On a alors
Ωc = {w ∈ {a, b, c}? | |w|a = |w|b = |w|c }.
La série génératrice I(z) de Ωc est alors
X 3n I(z) =
z 3n
n,
n,
n
n
√
3
En utilisant la formule de Stirling, on obtient l’équivalent I3n ∼ 33n 2πn
. Le fac−1
teur en n étant exclu pour une série algébrique, I(z) est ainsi transcendante,
1
donc Ω(z) = 1−3z
− I(z) aussi. Donc le langage Ω est transcendant.
4
6
Équation sur les cœfficients
Les cœfficients d’une série algébrique doivent vérifier une formule de récurrence :
Théorème 7. Si l(z) est une série algébrique,
alors il existe des polynômes
Pm
q0 , . . . , qm tels que, pour n ≥ n0 , on a j=0 qj (n)Ln−j = 0.
P
En particulier, si l(z) = n aφ(n) z φ(n) avec aφ(n) 6= 0 alors si φ(n + 1) −
φ(n) → +∞, la série est transcendante.
Exemple 6. Soit G6= = {n1 . . . np |∃j, nj 6= j}. On a
Gc6= = G1 ∪ G2
avec
G1 = {a, b}? a
et
G2 = {n1 . . . np |∀j, nj = j}
P
P
(n+3)n
On a G2 (z) = n≥1 z 2
donc pour φ(n) = (n+3)n
, G2 (z) = n z φ(n) et
2
φ(n + 1) − φ(n) → ∞ donc, d’après le théorème, la série est transcendante.
z
1
− 1−2z
− G2 (z) est transcendante et donc le langage G6= est
Ainsi G6= = 1−2z
essentiellement ambigu.
7
Conclusion
Ainsi, dans cet article, Flajolet donne des méthodes pour montrer le caractère essentiellement ambigu de langages issus d’une grammaire sans contexte.
Ces méthodes rendent la démonstration beaucoup plus simple qu’une approche
brutale. Ces méthodes sont toutes basées sur la contraposée du théorème de
Chomsky-Schutzenberger qui stipule qu’un langage issu d’une grammaire sans
contexte non ambigue a une série génératrice algébrique. On cherche alors à
montrer qu’une série génératrice est transcendante. Flajolet donne des méthodes
génériques mais on peut en fait utiliser toute technique qui montre qu’une série
est transcendante.
Plusieurs questions restent cependant ouvertes. Par exemple, on ne sait
pas exactement quelle est la classe de séries dans laquelle tombent les séries
génératrices de langages ambigus, à part que c’est une sous-classe des séries
transcendantes. Aussi, on peut se demander quels peuvent être les cœfficients
d’une série génératrice associée à un langage essentiellement ambigu. Par exemple,
existe-t-il L essentiellement ambigu tel que ln ∼ exp(cn) pour un certain c ? On
peut aussi chercher à caractériser une classe encore plus précise : la classe des
langages infiniment ambigus (langages tels que pour toute grammaire, on peut
toujours trouver des mots qui ont plus de N décompositions, pour tout N ).
5
Téléchargement