L2: cours I4c Langages et automates Olivier Togni, LE2I (038039)3887 olivier.togni@u-bourgogne.fr Modifié le 31 mai 2007
Sommaire Utiles pour compilation, interprétation,... 1. Langages rationnels 2. Langages reconnaissables 3. Langages algébriques
Langages rationnels Les mots - alphabet=ensemble fini de symboles (lettres) - mot sur alphabet A : suite finie de lettres de A - A =ensemble des mots définis sur A - mot vide ɛ A - longueur d un mot u : u =nb de lettres. u a =nb d occurences de a dans u. - opération de concaténation sur A : si u = abc et v = cac alors u.v = abccac. Rem : opération associative (u(v.w) = (u.v)w) mais pas commutative ( u, v, u.v v.u). - notation : le mot aaabbab sera raccourci en a 3 b 2 ab. - (A,., ɛ) est un monoïde (ensemble muni d une opération associative et d un élément neutre, mais pas forcement d inverse comme dans un groupe).
Langages rationnels Langages rationnels - Langage formel sur A= ensemble fini ou infini de mots de A : L A. - opérations : * complémentation L = {u A, u L} * union L 1 L 2 = {u A, u L 1 ou u L 2 } * intersection L 1 L 2 = {u A, u L 1 et u L 2 } * produit L 1.L 2 = {u A, u = u 1 u 2, u 1 L 1 et u 2 L 2 } * fermeture itérative : L est l ensemble des mots formés par un concaténation finie de mots de L : L = {ɛ} L L 2 L 3.... L + = L {ɛ}.
Langages rationnels Expressions rationnelles Définition Un langage est dit rationnel s il s écrit de manière finie à l aide des opérations d union, de produit et de fermeture transitive à partir des lettres de l alphabet et du mot vide. défini par une expression rationnelle. De façon formelle : Définition Une expression rationnelle est définie de façon inductive par : - est une expression rationnelle, - si a est une lettre, a est une expression rationnelle, - si E est une expression rationnelle, E aussi, - si E 1 et E 2 sont des expr. rationnelles, E 1 + E 2 et E 1 E 2 aussi.
Langages rationnels Exemple Ex : si A = {a, b, c}, A = (a b c) = (a + b + c). Ex : sur {a, b}, donner les expressions rationnelles correspondant au langages suivants : mots ayant 1 seule occurence de b mots contenant abab mots ne contenant pas abab.
Langages reconnaissables Langages reconnaissables Définition Un automate fini A est un sextuplet (A, Q, T, λ, I, F ) avec : - A alphabet fini appelé alphabet d entrée, - Q ensemble fini d états, - T ensemble des transitions, - λ : T A étiquettes des transitions, - I ensemble des états initiaux, - F ensemble des états terminaux (ou finals), Rem : (Q, T, λ) est un graphe orienté étiqueté (les arcs ont une valeur ou étiquette qui est une lettre de A).
Langages reconnaissables Exemple
Langages reconnaissables Langage reconnu par un automate Soit r = q 0, q 1,..., q p un chemin dans A La trace λ(r) de r est le mot de A formé par les étiquettes portées par les arcs qui composent le chemin : λ(r) = λ(q 0, q 1 )λ(q 1, q 2 )... λ(q p 1, q p ). Définition Le langage reconnu par un automate A est l ensemble des traces de tous les chemins qui partent d un état initial et aboutissent à un état final : L(A) = {λ(r) A, r = q 0, q 1,..., q p, q 0 I, q p F }. Définition Un langage L est reconnaissable ssi il existe un automate fini A tel que L = L(A).
Langages reconnaissables Exemple : Langage reconnu par l automate de l ex précédant
Langages reconnaissables Automates minimaux et complets Il existe souvent plusieurs solutions d automates correspondant à un langage reconnaissable. Il existe une solution utilisant un nombre minimum d états : l automate minimal. Il existe des algos pour minimiser un automate. Définition Un automate est complet ssi q Q, a A, il existe au moins une transition t d origine q et d étiquette a. Il est facile de rendre un automate complet en ajoutant un état appelé puit et toutes les transitions manquantes de chaque état vers ce puit.
Langages reconnaissables Automates déterministes Définition Un automate est déterministe ssi : - il n y a qu un seul état initial, et - q Q, a A, il existe au plus une transition t d origine q et d étiquette a. Un automate non déterministe est souvent plus facile à construire (qu un déterministe), par contre il est plus facile de tester si un mot appartient à un langage quand on est en présence d un automate déterministe.
Langages reconnaissables Automates déterministes Pour un automate déterministe, on peut définir la fonction ou table de transition δ : Q A Q, qui à partir d un état et d une lettre, donne l état dans lequel on arrive si on suit la transition correspondant à la lettre. Ex :
Langages reconnaissables Automates déterministes Un automate A sera non déterministe si au moins une des situations suivantes à lieu : - A possède au moins deux états initiaux - A possède des transitions étiquetées ɛ - δ n est pas une fonction mais une relation. Il existe des algorithmes pour déterminiser un automate, donc il existe toujours une solution déterministe!!
Langages reconnaissables Exemple Construire un automate déterministe acceptant le langage (aab + aa + aabb)
Langages reconnaissables Algorithme de simulation d un automate déterministe Etat <- etat_initial Tant Que (il reste des lettres) faire Debut Lire(lettre) Etat <- TT[Etat,lettre] //TT=table de transition Fin Si Etat est un etat final alors le mot est reconnu sinon le mot n est pas reconnu
8 de 25 L2: cours I4c Langages et automates Langages reconnaissables Rationnel vs reconnaissable Théorème (Kleene) L est reconnaissable ssi L est rationnel. En d autres termes, il est possible de construire un automate à partir de n importe quelle expression rationnelle et, réciproquement, d associer une expression rationnelle à tout automate. Les langages rationnels (ou reconnaissables) permettent de définir formellement beaucoup de langages, mais pas tous. Par ex le langage {a n b n, n N} n est pas rationnel. Langages algébriques...
Langages algébriques Langages algébriques Basés sur la notion de réécriture... Définition Une grammaire algébrique est un triplet G = (T, N, P) où - T est un alphabet fini dit terminal, - N est un alphabet fini dit non-terminal et disjoint de T, - P est un ensemble fini de règles de production. Une règle est A u, A N, u (N T )
Langages algébriques Exemple T = {a, b}, N = {A, B, S} et P = {S A, S B, B bb, B ɛ, A aa, A ɛ}. Convention : Terminaux=minuscules, non-terminaux= majuscules
Langages algébriques Réécriture Définition Soient f et g deux mots de (N T ). On dit que f se réécrit en g par application de la règle p : A u, que l on note f p g ssi f est de la forme f = f 1 Af 2 et g = f 1 uf 2. Une dérivation est une séquence de réécritures la forme f 1 p1 f 2 p2... f n pn f n+1. On dit qu un mot f se dérive en un mot g, noté f g si f = g ou s il existe une dérivation telle que f 1 = f et f n+1 = g. On ne peut réécrire un mot ne contenant aucun élément non-terminal : un tel mot est dit terminal ou irréductible.
Langages algébriques Langage algébrique Définition Le langage engendré par une grammaire G à partir de A (appelé axiome) est l ensemble des mots irréductibles obtenus par dérivation de A : L(G, A) = {u T, A u}. Ce langage est un langage algébrique. Ex précédent : mots ne contenant que des a ou que des b. Ex : Soit G = ({a, b}, {S}, {s as, S Sb, S ɛ}). Le langage engendré par la grammaire G est L(G, S) = a b.
Langages algébriques Quelques propriétés des langages algébriques L 1 et L 2 algébriques L 1 L 2 et L 1.L 2 algébriques, L 1 et L 2 algébriques L 1 L 2 algébrique, tout langage rationnel (reconnaissable) est algébrique.
Langages algébriques Arbre de dérivation A tout mot d un langage algébrique on peut faire correspondre un arbre de dérivation qui indique par quelle suite de dérivations le mot à été obtenu. La racine de l arbre est le non-terminal de départ et le mot est obtenu par un parcours en largeur les feuilles de l arbre. Si un mot peut être obtenu par deux dérivations différentes, la grammaire est dite ambiguë. Ex : G : S x y z (S) S S S + S est ambiguë car u = x + y z peut être généré par deux arbres de dérivation différents (les 2 dérivations correspondant à u = (x + y) z et u = x + (y z)). Une version non ambiguë de la grammaire précédente est : E E + T T, T T F F, F (E) x y z.
Langages algébriques Construction d une grammaire à partir d un automate Chaque état q i de l automate correspond à un non-terminal Q i de la grammaire et pour chaque transition (q i, q j ) de l automate, on ajoute la règle Q i aq j, où a = λ(q i, q j ) est l étiquette de la transition. Le langage engendré par cette grammaire est le même que l ensemble des mots reconnus par l automate.