Passage d une expression rationnelle àun automate fini non-déterministe



Documents pareils
Université Paris-Dauphine DUMI2E 1ère année, Applications

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Les structures de données. Rajae El Ouazzani

Résolution de systèmes linéaires par des méthodes directes

Définitions. Numéro à préciser. (Durée : )

La mesure de Lebesgue sur la droite réelle

CH.6 Propriétés des langages non contextuels

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Théorème du point fixe - Théorème de l inversion locale

Intégration et probabilités TD1 Espaces mesurés Corrigé

Calcul différentiel. Chapitre Différentiabilité

Quelques Algorithmes simples

1 Définition et premières propriétés des congruences

Cours d Analyse. Fonctions de plusieurs variables

Théorèmes de Point Fixe et Applications 1

chapitre 4 Nombres de Catalan

Chapitre 7. Récurrences

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Résolution d équations non linéaires

3 Approximation de solutions d équations

Calcul fonctionnel holomorphe dans les algèbres de Banach

Fondements de l informatique Logique, modèles, et calculs

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Continuité en un point

Une forme générale de la conjecture abc

MIS 102 Initiation à l Informatique

Limites finies en un point

1 Recherche en table par balayage

ARBRES BINAIRES DE RECHERCHE

Problèmes de Mathématiques Filtres et ultrafiltres

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Sur certaines séries entières particulières

Arbres binaires de recherche

Image d un intervalle par une fonction continue

Le produit semi-direct

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Initiation à la Programmation en Logique avec SISCtus Prolog

LE PROBLEME DU PLUS COURT CHEMIN

Simulation centrée individus

Exemple 4.4. Continuons l exemple précédent. Maintenant on travaille sur les quaternions et on a alors les décompositions

Utilisation des tableaux sémantiques dans les logiques de description

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Logique. Plan du chapitre

La fonction exponentielle

Initiation à l algorithmique


Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Calcul différentiel sur R n Première partie

Les indices à surplus constant

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Cours de mathématiques

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Simulation de variables aléatoires

Théorie de la mesure. S. Nicolay

DOCM Solutions officielles = n 2 10.

Structures algébriques

Algorithmique, Structures de données et langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Correction du baccalauréat S Liban juin 2007

Théorie des Langages

Introduction à la théorie des graphes. Solutions des exercices

Capes Première épreuve

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Recherche dans un tableau

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Suites numériques 3. 1 Convergence et limite d une suite

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Continuité et dérivabilité d une fonction

Chapitre 2 Le problème de l unicité des solutions

Développement décimal d un réel

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

La classification automatique de données quantitatives

Correction du Baccalauréat S Amérique du Nord mai 2007

Pourquoi l apprentissage?

Calculabilité Cours 3 : Problèmes non-calculables.

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Développements limités. Notion de développement limité

Théorie de la Mesure et Intégration

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Plus courts chemins, programmation dynamique

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Les arbres binaires de recherche

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Proposition. Si G est un groupe simple d ordre 60 alors G est isomorphe à A 5.

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Algorithmes d'apprentissage

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Correction de l examen de la première session

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Cours 02 : Problème général de la programmation linéaire

Programmation linéaire et Optimisation. Didier Smets

Transcription:

Passage d une expression rationnelle àun automate fini non-déterministe Djelloul Ziadi Jean-Luc Ponty Jean-Marc Champarnaud Résumé Le but de cet article est de présenter un nouvel algorithme séquentiel en temps Ω(n 2 ) pour la conversion d une expression rationnelle simple, ayant n occurrences de symboles, en son automate de Glushkov (automate d états finis, non nécessairement déterministe, sans ε-transitions, ayant n + états, représenté par sa table de transitions) Les algorithmes produits par A Brüggemann-Klein et par CH Chang et R Paige évaluent les opérations de fermeture (étoile de Kleene) en unions (d ensembles de transitions) disjointes, selon les deux variantes suivantes : δ A =(δ\(δ A)) A = δ (A\(δ A)) A Brüggemann-Klein introduit la notion de Star Normal Form (forme normale de fermeture) et calcule au plus tard les transitions induites par un opérateur de fermeture Chang et Paige évaluent de façon paresseuse la fonction de transitions avec une structure de données appelée CNNFA (Compressed Normal NFA) à base de forêts d états Àcomplexité temporelle égale, notre algorithme est intéressant pour les raisons suivantes Tout d abord il repose sur une représentation originale de l automate de Glushkov, basée sur des forêts d états différentes de celles de Chang et Paige Le passage de l expression à cette représentation de l automate est en temps linéaire par rapport au nombre d occurrences de lettres n; la traduction en table de transitions est en Ω(n 2 ) L évaluation des opérations de fermeture sur cette représentation est réalisée en unions disjointes par un algorithme récursif original en temps linéaire par rapport à n Par ailleurs, cet algorithme séquentiel se prête bien à la parallélisation dans le modèle PRAM Received by the editors May 95 Communicated by M Boffa 99 Mathematics Subject Classification : 68-02, 68-06, 68P05, 68Q68 Key words and phrases : Automates, expressions rationnelles, automates de Glushkov Bull Belg Math Soc (997), 77 20

78 D Ziadi J-L Ponty J-M Champarnaud Introduction Dans le cadre du développement du logiciel AUTOMATE [7][8] nous cherchons à obtenir des algorithmes performants, notamment pour la conversion d une expression rationnelle en un automate fini B W Watson [] a établi une taxinomie des algorithmes de construction d un automate fini à partir d une expression rationnelle L automate obtenu, selon les algorithmes, est ou n est pas déterministe et contient ou non des ε-transitions Dans cet article nous nous intéresserons aux algorithmes de construction de l automate de Glushkov qui est une représentation naturelle d une expression rationnelle [] Soit E une expression rationnelle, on note s la taille de E (en notation postfixée) et n le nombre d occurrences de symboles dans E On peut sans perte de généralité (et sans modifier la complexité des algorithmes étudiés) considérer que deux opérateurs de fermeture ne peuvent apparaître dans la relation père-fils dans l arbre syntaxique de E Il est aisé de voir que, sous cette hypothèse, s et n sont du même ordre de grandeur Par conséquent, nous exprimerons les complexités des algorithmes en fonction de n La construction directe de l automate de Glushkov d une expression rationnelle E est en O(n ) [0] Récemment A Brüggemann-Klein [6] a montré que cette complexité peutêtre ramenée à O(n 2 ) Son algorithme consiste à transformer l expression E en une expression E appelée forme normale de fermeture de E à partir de laquelle l algorithme de Glushkov fournit l automate de E en O(n 2 ) La structurededonnées utilisée par A Brüggemann-Klein pour représenter un ensemble est une liste chaînée Plus récemment Chang et Paige [9] ont adopté une structure de données appelée CNNFA (compressed normal NFA) qu ils utilisent pour simuler la fonction de transition δ Ainsi une représentation de l automate de Glushkov peut être calculée en O(n) en utilisant un espace mémoire en O(n) En premier lieu nous présenterons la terminologie et les conventions d écriture utilisées dans ce rapport, ainsi que certaines définitions utiles Par la suite, nous verrons l algorithme tel qu il a été décrit par Glushkov [0] [6] En troisième lieu il s agit de présenter les améliorations apportées par A Brüggemann-Klein puis par Chang et Paige, d en fournir une interprétation, pour ensuite les comparer Enfin nous présenterons un nouvel algorithme qui utilise la structure de l arbre syntaxique de l expression E pour construire une représentation originale de l automate de Glushkov, basée sur des forêts d états L intérêt de cette structure de données est qu elle est calculée en temps O(n) grâce à un algorithme récursif adapté; la table de transitions s en déduit en Ω(n 2 ) 2 Définitions et conventions d écriture Dans cette section, nous introduisons la terminologie et les notations utilisées dans cet article A quelques exceptions près ces notations peuvent être trouvées dans [6] Soit Σ un ensemble fini non vide de symboles, appelé alphabet Σ représente l ensemble des mots sur Σ Le mot vide est noté ε Les symboles de l alphabet sont représentés par les premières lettres minuscules de l alphabet telles que a, b, c L union ( ), le produit ( ) etlafermeture( )sontlesopérations rationnelles classiques sur les parties de Σ

Passage d une expression rationnelle à un automate fini non-déterministe 79 Définition 2 [5] Les langages rationnels de Σ sont les éléments de la plus petite famille, fermée pour les trois opérations rationnelles, qui contient les singletons et le langage vide Définition 22 [2] Une expression rationnelle sur un alphabet Σ est définie récursivement comme suit : est une expression rationnelle qui représente l ensemble vide ε est une expression rationnelle qui représente le langage {ε} a Σ,a est une expression rationnelle qui représente le langage {a} Si F et G sont deux expressions rationnelles qui représentent respectivement les langages L(F )et L(G) alors: l expression rationnelle (F )+(G) représente le langage L(F ) L(G), l expression rationnelle (F ) (G) représente le langage L(F ) L(G), l expression rationnelle (F ) représente le langage i=0 L i (F ) Afin de préciser la position des symboles dans l expression, les symboles sont indicés dans l ordre de lecture Par exemple à partir de l expression (a + ε)ba on obtient l expression indicée (a + ε)b 2 a ; les indices sont appelés positions et sont représentés par les dernières lettres minuscules de l alphabet telles que x, y, z L ensemble des positions pour une expression E est noté Pos(E) Si F est une sousexpression de E, on note Pos E (F ) le sous-ensemble des positions de E qui sont positions de F 2 χ est l application qui fait correspondre à chaque position de Pos(E) le symbole de Σ qui apparaît à cette position dans E A toute expression E on associe bijectivement une expression indicée E Onnoteraσ = {α,, α n }, où n = Pos(E), l alphabet de E L automate de Glushkov Afin de construire un automate d états finis non déterministe (abbr AFN) reconnaissant L(E), Glushkov a établi trois fonctions que l on peut définir de la façon suivante sur l expression indicée E : Définition 2 First(E) ={x Pos(E) u σ : α x u L(E)} First(E) représente l ensemble des positions initiales des mots du langage L(E) Définition 2 Last(E) ={x Pos(E) u σ : uα x L(E)} Last(E) représente l ensemble des positions finales des mots du langage L(E) avec L 0 (F )={ε} 2 pour E = F + G et E = F G, Pos E (F ) Pos E (G) = ; poure, Pos(E )=Pos(E)

80 D Ziadi J-L Ponty J-M Champarnaud Définition 25 Follow (E,x)={y Pos(E) v σ, w σ : vα x α y w L(E)} Follow (E,x) représente l ensemble des positions qui suivent immédiatement la position x dans l expression E Par abus de langage, on notera First(E) pour First(E), Last(E) pour Last(E) et Follow (E,x) pourfollow (E,x) Définition 26 On définit par récurrence la fonction Null E qui vaut {ε} si ε appartient au langage L(E) et sinon Null = (26) Null ε = {ε} (262) Null a = (26) Null F +G = Null F Null G (26) Null F G = Null F Null G (265) Null F = {ε} (266) Notation 27 Pour tout ensemble X, onnotei X la fonction de X dans {{ε}, } telle que : { si x / X I X (x) = {ε} si x X Proposition 28 First peut être calculée récursivement comme suit : First( ) = (28) First(ε) = (282) First(α x ) = {x} (28) First(F + G) = First(F ) First(G) (28) First(F G) = First(F ) Null F First(G) (285) First(F ) = First(F ) (286) Proposition 29 Last peut être calculée récursivement comme suit : Last( ) = (29) Last(ε) = (292) Last(α x ) = {x} (29) Last(F + G) = Last(F ) Last(G) (29) Last(F G) = Last(G) Null G Last(F ) (295) Last(F ) = Last(F ) (296) x/ Pos(E) Follow(E,x)=

Passage d une expression rationnelle à un automate fini non-déterministe 8 Proposition 20 Follow (E,x) peut être calculée récursivement comme suit : Follow (,x) = (20) Follow (ε, x) = (202) Follow (a, x) = (20) Follow (F + G, x) = I Pos(F ) (x) Follow (F, x) I Pos(G) (x) Follow (G, x) (20) Follow (F G, x) = I Pos(F ) (x) Follow (F, x) I Pos(G) (x) Follow (G, x) I Last (F ) (x) First(G) (205) Follow (F,x) = Follow (F, x) I Last (F ) (x) First(F ) (206) Ces fonctions permettent de définir l automate M qui reconnaît le langage L(E) On a : M =(Q, σ, δ, s I,F) Q = Pos(E) {s I } 2 x First(E), δ(s I,α x )={x} x Pos(E), y Follow (E,x), δ(x, α y )={y} F = Last(E) Null E {s I } A partir de M on construit l automate M E =(Q, Σ,δ,s I,F) de la façonsuivante:lesarcsdem E se déduisent de ceux de M en remplaçant leur étiquette α x par χ(x) On a donc : δ = {(q,a,q ) q Q, q Q, a Σ, α x (q,α x,q ) δ et χ(x) =a} Proposition 2 Dans l automate M E, tous les arcs arrivant en un même état ont la même étiquette : } (p, a, q) δ (p a = b,b,q) δ Preuve On remarque que par construction les arcs de M sont de la forme (x, α y,y) Il s en suit que les arcs de M sont de la forme (x, χ(y),y) Proposition 22 Si l automate M reconnaît le langage L(E) alors l automate M E reconnaît le langage L(E)

82 D Ziadi J-L Ponty J-M Champarnaud Preuve Soit L(M) le langage reconnu par l automate M et L(M E ) le langage reconnu par l automate M E Par construction, L(M) =L(E) Montrons que L(M E )=L(E) L(M E ) L(E) : Soit u = u u 2 u p L(M E ), avec u j Σ Il existe un chemin réussi dans M E, (s I,i,i 2,,i p ), d étiquette u u 2 u p Le même chemin est également réussi dans M, oùsonétiquette est α i α i2 α ip, avec χ(α ij )=u j, j [,p] Comme L(M) =L(E), on a : α i α ip L(E) On en déduit χ(α i ) χ(α ip ) L(E), soit u L(E) 2 L(E) L(M E ): Soit u = u u 2 u p L(E), avec u j Σ Il existe une suite de positions (i,i 2,,i p ) telles que χ(α ij )=u j, j [,p] et α i α i2 α ip L(E) Comme L(E) =L(M), on a α i α i2 α ip L(M) Le chemin (s I,i,i 2,,i p ) est donc réussi dans M Il l est également dans M E,parconséquent χ(α i ) χ(α ip ) L(M E ), soit u L(M E ) L automate M E est appelé automate de Glushkov de l expression E Il peut être défini directement comme suit : avec, Q = Pos(E) {s I } M E =(Q, Σ,δ,s I,F) 2 a Σ,δ(s I,a)={x First(E)/χ(x) =a} x Q, a Σ,δ(x, a)={y/y Follow (E,x) etχ(y) =a} F E = Last(E) Null E {s I } Remarquons que Berstel et Pin [] présentent le calcul récursif des fonctions First, Last et Follow dans le cadre plus général des langages locaux Algorithme de Glushkov Une implémentation de base de l algorithme de Glushkov, rappelée dans [6] est la suivante : On construit l arbre syntaxique T (E) correspondant à l expression E Chaque nœud de cet arbre représente une sous-expression E de E et àchaquenœud on associe les variables suivantes : First() : liste qui représente l ensemble First(E ) Last() : liste qui représente l ensemble Last(E ) Follow (, x) : liste qui représente l ensemble Follow(E,x) Null :vaut{ε} si L(E ) reconnaît le mot vide, sinon

Passage d une expression rationnelle à un automate fini non-déterministe 8 Ces variables sont calculées lors d un parcours postfixé de l arbre T (E) g et d désignent respectivement le fils gauche et le fils droit d un nœud étiqueté + ou et f désigne le fils d un nœud étiqueté Lecodeincrémental suivant permet de calculer ces variables en chaque nœud Selon que vaut : First() = ; Last() = ; Null = ; ε : First() = ; Last() = ; Null = {ε}; x : First() ={x}; Last() ={x}; Null = ; Follow(, x)= ; +:First() =First( g ) First( d ); Last() = Last( g ) Last( d ); Null = Null g Null d ; : First() =First( g ) Null g First( d ); Last() = Last( d ) Null d Last( g ); Null = Null g Null d ; pour tout x Last( g ) faire Follow(, x) =Follow( g,x) First( d ); finpour : First() =First( f ); Last() = Last( f ); Null = {ε}; pour tout x Last( f ) faire Follow(, x) =Follow( f,x) First( f ); [] finpour finselonque Toutes les unions d ensembles, mise à part l union [], sont disjointes et peuvent être implémentées en O(), ceci en concaténant les listes représentant les ensembles en question Il est possible de réaliser l union [] en temps constant en calculant Follow (, x) pour tout x de Last f, par l une des deux formules suivantes : Follow(, x) =[Follow( f,x) \ First f ] First f () Follow(, x) =Follow( f,x) [First f \ Follow( f,x)] (2) Ces deux approches ont donné lieu à deux algorithmes : l algorithme de Brüggemann-Klein [6] basé sur la formule (); l algorithme de Chang et Paige [9] basé sur la formule (2)

8 D Ziadi J-L Ponty J-M Champarnaud Algorithme de A Brüggemann-Klein On dit qu une expression E est sous forme normale de fermeture (FNF) si ellevérifie, pour toute expression H telle que H soit une sous-expression de E, la condition suivante : x Last(H), Follow (H, x) First(H) = L intérêt de travailler sur une expression sous forme normale de fermeture est que l opération fermeture yestréalisée à l aide d unions disjointes L algorithme de Brüggemann-Klein consiste à construire, à partir d une expression E, une expression E telle que : E est sous forme normale de fermeture 2 M E = M E E peut être calculée à partir de E en temps linéaire Afin de calculer E, toute expression H telle que H est une sous-expression de E est remplacée par une expression H telle que : H vérifie la condition FNF First(H )=First(H) Last(H )=Last(H) Follow (H,x)=Follow (H,x) x Pos(H) Définition [6] H est définie récursivement de la façon suivante : [H = ε ou ] H = [H = a] H = a [H = F + G] H = F + G FG si Null F = et Null G = [H = FG] H F = G si Null F = et Null G = {ε} FG si Null F = {ε} et Null G = F + G si Null F = {ε} et Null G = {ε} [H = F ] H = F Remarque 2 Si Null F = et Null G = {ε} alors F = F et (FG) = FG En effet, si Null F = alors il n existe pas de transition allant d un état de Last(F ) àunétat de First(F ) De même, si Null F = {ε} et Null G = alors G = G et (FG) = FG Proposition Follow (H,x) = Ainsi définie, H vérifie la propriété suivante: I Last (H) (x) [Follow (H, x)\first(h)] I Pos (H)\Last(H) (x) Follow (H, x)

Passage d une expression rationnelle à un automate fini non-déterministe 85 Preuve La preuve se fait par récurrence sur la taille de l expression H La proposition est évidente pour les expressions de taille 0 et Supposons qu elle soit vraie pour les expressions de taille inférieure à n Soit H une expression de taille n, montrons que la proposition est vraie pour H : Nous distinguons trois cas : [H = F + G],avec F n et G n Pour tout x de Pos(H), on a : Follow (H,x)=I Pos(F ) (x) Follow (F,x) I Pos(G) (x) Follow (G,x), par hypothèse de récurrence on a : Follow (F,x) = I Last (F ) (x) [Follow (F, x)\first(f )] I Pos(F )\Last (F ) (x) Follow (F, x) et Follow (G,x) = I Last (G) (x) [Follow (G, x)\first(g)] I Pos(G)\Last (G) (x) Follow (G, x) d où Follow (H,x) = I Last (F ) (x) [Follow (F, x)\first(f )] I Last (G) (x) [Follow (G, x)\first(g)] I Pos(F )\Last (F ) (x) Follow (F, x) I Pos(G)\Last (G) (x) Follow (G, x) donc Follow (H,x) = I Last (H) (x) [Follow (H, x)\first(h)] I Pos(H)\Last(H) (x) Follow (H, x) 2 [H = FG],avec F n et G n Sur le modèle précédent, on effectue une démonstration par récurrence Quatre cas sont à envisager : Null F = et Null G = entraîne Follow (H,x)=Follow (FG, x) Null F = et Null G = {ε} entraîne Follow (H,x)=Follow (F G, x) Null F = {ε} et Null G = entraîne Follow (H,x)=Follow (FG,x) Null F = ε et Null G = ε entraîne Follow (H,x)=Follow (F + G,x), traité en [H = F ],avec F = H Comme précédemment, la démonstration se fait par récurrence à partir de l égalité suivante: Follow (H,x)=Follow (F,x) Définition On définit E récursivement de la façon suivante : [E = ε a] E = E [E = F + G] E = F + G [E = FG] E = F G [E = F ] E = F Exemple 5 Calcul de E pour E =(a b ) ab (voir Figure )

86 D Ziadi J-L Ponty J-M Champarnaud T(E) T(E ) 0 0 b 9 b 7 2 a 8 2 a 6 + 7 a b 2 5 a b 2 5 6 a a a b 0 b a b 2 a b a Figure : E =(a b ) ab; E =(a + b) ab; M E = M E E =((a b ) ab) =((a b ) a) b =((a b ) ) a b =(a b ) ab =((a ) (b ) ) ab =(a b ) ab =(a b ) ab =(a + b ) ab =(a + b ) ab E =(a + b) ab A Brüggemann-Klein démontre dans [6] que E ainsi définie vérifie les trois propriétés : E est sous forme normale de fermeture 2 M E = M E E peut être calculée à partir de E en temps linéaire ce qui permet d énoncer le théorème suivant : Théorème 6 [6] L automate de Glushkov M d une expression rationnelle E peut être calculé entempsω(n 2 ), en passant par la forme normale de fermeture de E

Passage d une expression rationnelle à un automate fini non-déterministe 87 5 Algorithme de Chang et Paige L algorithme de Glushkov permet de construire la fonction de transition δ selon la définition suivante : Définition 5 δ = 5 δ ε = 52 δ a = 5 δ F +G = δ F δ G 5 δ FG = δ F δ G ( Last(F ) First(G) ) 55 δ F = δ F ( Last(F ) First(F ) ) 56 Toutes les unions qui figurent dans la définition 5 sont disjointes, exceptée la dernière : δ F Last(F ) First(F ) (56) Pour se ramener à une union disjointe, Chang et Paige [9] définissent l ensemble suivant : et remplacent la formule (56) par : Nred(F )= [ Last(F ) First(F ) ] \δ F δ F = δ F Nred(F ) D autre part, ils proposent de calculer Nred(F ) de façon récursive, selon les formules suivantes : Définition 52 Nred( ) = Nred(ε) = Nred(a) = Last(a) First(a) Nred(G + H) = Nred(G) Nred(H) Last(H) First(G) Last(G) First(H) Nred(GH) = Null H Nred(G) Null G Nred(H) Last(H) First(G) Nred(G ) = Afin de pouvoir comparer les approches de Chang et Paige et de A Brüggemann- Klein, nous désignons par δ la fonction de transition calculée par l algorithme de Chang et Paige et par d celle qui est calculée par l algorithme de A Brüggemann- Klein

88 D Ziadi J-L Ponty J-M Champarnaud E=H δ = d = d H \ Last(H) x First(H) U Last(H) x First(H) δ = U δ H Last(H) x First(H) \ δ H Figure 2: d = δ Définition 5 d est calculée récursivement comme suit : d = d ε = d a = d F +G = d F d G d FG = d F d G Last(F ) First(G) d F = d F Last(F ) First(F ) (F est remplacée par (F ) ) où d F = d F \[Last(F ) First(F )] Proposition 5 Pour toute expression rationnelle E nous avons d = δ Preuve d et δ correspondent aux deux variantes possibles pour calculer une union en union disjointe (cf fig2) La preuve se fait par récurrence sur la taille de E E =0, E = la proposition 5 est évidente 2 E = n + (a) [E = F + G] sachantqued F = δ F et d G = δ G d F d G = δ F δ G d = δ (b) [E = FG] sachantqued F = δ F et d G = δ G d F d G = δ F δ G d = δ (c) [E = F ]sachantqued F = d F = δ E Posons R = First(F )etl = Last(F ), d = d F L R = [ δ F \(L R) ] L R fig 2 (d) d = δ F L R = δ F [ ] (L R)\δ F fig 2 (δ) d = δ F Nred(F )=δ Chang et Paige utilisent une structure de données leur permettant de calculer une représentation de δ en temps O(n) etenespaceo(s); et de passer àlamatrice de transition en O(n 2 )

Passage d une expression rationnelle à un automate fini non-déterministe 89 0 2 i Pos( i )) 0 {,2,} {,2} 2 {} {2} {} Figure : Ensembles Pos( i ) des feuilles associées aux nœuds i 6 Un nouvel algorithme Nous présentons dans cette section un algorithme original qui calcule une représentation de l automate de Glushkov M E d une expression rationnelle E en temps et en espace O(n) Dans cet algorithme, le calcul des First est effectué sur une forêt déduite de l arbre T (E), de même pour le calcul des Last La fonction de transitions δ de l automate M E est représentée par un ensemble de liens entre ces deux forêts, un lien correspondant à un produit cartésien L F où L est un ensemble Last et F un ensemble First 6 Calcul des First Soit T (E) l arbre syntaxique associé à l expression E A chaque nœud est associé le sous-arbre de racine et l ensemble des feuilles de ce sous-arbre, que l on notera Pos() par abus d écriture Cet ensemble peut être représenté par une liste Chaque nœud, y compris une feuille, dispose d un pointeur vers la feuille la plus à gauche et d un pointeur vers la feuille la plus à droite, ce qui permet d accéder en temps constant à l ensemble Pos() associé à un nœud (voir figure ) A partir de l arbre T (E), on construit la forêt TF(E) qui représente l ensemble des First définis par Glushkov, de la manière suivante : TF(E) est initialisée par une copie de T (E); chaque nœud de T (E) est rebaptisé dans TF(E) pour chaque nœud étiqueté, on supprime le lien avec son fils droit d si L(E g ) ne reconnaît pas le mot vide (voir figure ) On respecte ainsi la définition : First(FG) =First(F ) Null F First(G) pour chaque nœud : on met à jour le pointeur le plus à gauche et le pointeur le plus àdroite on relie la feuille la plus à droite de son fils gauche à la feuille la plus à gauche de son fils droit

90 D Ziadi J-L Ponty J-M Champarnaud g + d g d g d g + + + d 2 (a) ε L(E g ), le lien (, d ) est supprimé g d g d g d + + + (b) ε L(E g ), le lien (, d ) est conservé Figure : Mise à jour des liens pour le calcul de First Remarque 6 Par la proposition 28 on a : First(F +G) =First(F ) First(G)etFirst(F )= First(F ) Par conséquent l initialisation de TF(E) par une copie de T (E) assure que les liens relatifs aux nœuds étiquetés autrement que par sont corrects 2 L arbre syntaxique inchangé permet d accéder aux différents arbres de la forêt TF(E) une fois les liens supprimés Après élimination de ces liens et mise à jour des pointeurs, on obtient la forêt TF(E), pour chaque nœud de laquellel ensemblepos()est exactementl ensemble First de la sous-expression E A l intérieur d un arbre de TF(E) les feuilles sont chaînées On accède en temps constant à First(E ) En particulier First(E) = Pos( 0 ) Sur l exemple de la figure 6, pour l expression E =(a b 2)a (b + a 5 )(b 6 a 7 ), First(E) est l ensemble associé à la racine de l arbre A 0 de la forêt TF(E) 62 Calcul des Last De la même façon qu on construit la forêt des First, on construit la forêt des Last TL(E) (chaque nœud de T (E) est rebaptisé dans TL(E)), en respectant la définition 29 Dans TL(E), on supprime pour chaque nœud étiqueté le lien avec son fils gauche g si le langage L(E d ) ne reconnaît pas le mot vide (voir figure 5) On respecte ainsi la définition : Last(FG) =Last(G) Null G Last(F )

Passage d une expression rationnelle à un automate fini non-déterministe 9 g + d g + d + g d g d + (a) ε L(E d ), le lien (, g ) est supprimé g + d + + g d g d (b) ε L(E d ) le lien (, g ) est conservé Figure 5: Mise à jour des liens pour le calcul de Last De même que pour la forêt TF(E), pour chaque nœud de TL(E) onmetàjour les différents pointeurs A chaque nœud de la forêt TL(E) est associé un ensemble Pos() qui est exactement l ensemble Last de la sous-expression E A l intérieur d un arbre de TL(E) les feuilles sont chaînées On accède en temps constant à Last(E ) En particulier, Last(E) =Pos( 0 ) Sur l exemple de la figure 6, pour l expression E =(a b 2)a (b + a 5 )(b 6 a 7 ), Last(E) est l ensemble associé àlaracine de l arbre A de la forêt TL(E) 6 Calcul de First(E) et de Last(E) Rappelons que si 0 est la racine de l arbre T (E), First(E) est l ensemble Pos( 0 ) dans la forêt TF(E) etlast(e) est l ensemble Pos( 0 ) dans la forêt TL(E) Lemme 62 Pour toute expression rationnelle E de taille s, nous pouvons calculer First(E) en un temps O(n) en utilisant un espace mémoire en O(n) Preuve La construction de l arbre T (E) à partir d une expression rationnelle E s effectue en temps linéaire sur la taille de E En effet les expressions rationnelles peuvent être décrites par des grammaires LL() [] D autre part, le calcul récursif des pointeurs vers la feuille la plus à gauche et la feuille la plus à droite dans l arbre T (E) s effectue en O(n) La mise à jour de ces pointeurs dans la forêt TF(E) et le chaînage des feuilles est également en O(n) Par conséquent, la forêt des First TF(E) peutêtre calculée en O(n) en utilisant un espace mémoire en O(n) De même, Lemme 6 Pour toute expression rationnelle E dont le nombre d occurrences de lettres est n, nous pouvons calculer Last(E) en un temps O(n) en utilisant un espace mémoire en O(s)

92 D Ziadi J-L Ponty J-M Champarnaud 0 T(E) + 6 7 5 TF(E) 0 0 + 6 7 5 TL(E) 2 0 0 + 6 7 5 Liens supprimes lors de la construction des forets Figure 6: Les forêts TF(E) ettl(e) de l expression E =(a b 2 )a (b + a 5 )(b 6 a 7 )

Passage d une expression rationnelle à un automate fini non-déterministe 9 6 Calcul de δ 6 Représentation de δ Il s agit d une représentation de δ par un ensemble de liens entre les forêts TL(E) et TF(E) δ est l ensemble des arcs de l automate de Glushkov de l expression E δ peut être calculé récursivement sur l arbre T (E) à partir des deux ensembles suivants : est l ensemble des arcs calculés lors de l évaluation du nœud D est l ensemble des arcs calculés avant l évaluation du nœud On a les formules suivantes : Last(E g ) First(E d ) si est étiqueté = Last(E f ) First(E f ) si est étiqueté sinon si est une feuille D = D f si est étiqueté D g D d sinon δ = D 0 ({s I } First(E)) Proposition 6 ( ) δ = T (E) ( {s I } First(E) ) Preuve Pour toute expression rationnelle de taille on a : = et D = Supposons que pour toute expression E, telle que < E <n,onait: D = T (E) Montrons que la propriété est vraie pour toute expression de taille inférieure ou égale à n :SoitE telle que E = n { Df On a D = si est étiqueté D g D d sinon Par hypothèse de récurrence, on a : D f =, T (E f ) D g =, T (E g ) D d = T (E d ) Par conséquent on a :

9 D Ziadi J-L Ponty J-M Champarnaud TL(E) 0 TF(E) 0 0 2 2 5 2 5 i ig if id Last First - - - {} {} 2 - - {} {} {(,)} 5 - - - {2} {2} - 5 - {2} {2} {(2,2)} 2 - {,2} {,2} {(,2)} 0 - - {,2} {,2} {(,),(,2),(2,),(2,2)} Figure 7: Calcul des pour l expression E =(a b 2 ) ( ) si est étiqueté D = T (E f ) ( ) ( ) sinon T (E g ) T (E g ) soit D = T (E ) La propriété est donc vraie pour toute expression, en particulier : D 0 = ( T (E) ) D où :δ = ( {s I } First(E) ) T (E) Représentation de δ :chaque non vide est un produit cartésien de la forme Last(E ) First(E ) représenté par un lien (, ) entre le nœud de la forêt TL(E) correspondant à et le nœud de la forêt TF(E) correspondant à ; δ est donc représenté par l ensemble L de tous ces liens Complexité ducalculdel : ajouter un lien à L se fait en temps constant; on obtient tous les liens en faisant le parcours récursif de T (E) L est donc calculé en temps O(s) 62 Elimination des liens redondants Soit S il existe tel que, on dit que le lien représentant est redondant Sur l exemple de la figure 7 on a : 0, 2 0 et 0, 2 et sont donc redondants Eliminer les liens redondants permettra d exprimer δ sous forme d union d ensembles disjoints Les deux propositions suivantes permettent de caractériser les

Passage d une expression rationnelle à un automate fini non-déterministe 95 T(E) TL(E) TF(E) φ F( ) φ F( ) Figure 8: Correspondance entre les nœuds de T (E), T L(E) et T F(E) liens redondants Rappel : Soient deux nœuds s et s d une forêt Le nœud s est descendant du nœud s si et seulement si s appartient à l arbre de racine s Proposition 65 Soient et deux nœuds dans T (E), et et les nœuds correspondants dans TF(E) Alors : { si est descendant de : First(E ) First(E ) sinon : First(E ) First(E )= Preuve Rappelons que l ensemble des feuilles de l arbre de racine, Pos(), est égal à First(E ) Si est descendant de, alors l arbre de racine est un sous-arbre de l arbre de racine Parconséquent Pos( ) est inclus dans Pos() Donc First(E ) est inclus dans First(E ) Si n est pas descendant de, alors les arbres de racine et sont disjoints Par conséquent Pos()etPos( )sontdisjointsetdoncfirst(e )etfirst(e ) sont disjoints Soit un nœud de T (E), (resp ) le nœud correspondant dans TL(E) (resp TF(E)) Supposons Désignons par le nœud de TL(E) correspondant au fils de si est étiqueté, ou au fils gauche de si est étiqueté Désignons par F ( )lenœuddetf(e) correspondant au fils de si est étiqueté,ouau fils droit de si est étiqueté est donc l ensemble Pos( ) Pos(F ( )) Sur la structure de données utilisée, est représenté par un lien entre dans TL(E) et F ( )danstf(e) (voir figure 8) Proposition 66 Soient et 2 deux nœuds de T (E) Soient et 2 les nœuds correspondants dans TL(E) Soient et 2 définis comme précédemment Soient

96 D Ziadi J-L Ponty J-M Champarnaud TL(E) TF(E) F( ) 2 2 2 F( 2 ) Figure 9: 2 F( )etf( 2)définis{ comme précédemment On a : 2 2 est descendant de dans TL(E) F ( 2) est descendant de F ( ) dans TF(E) Preuve = Pos( ) Pos(F ( )) 2 = Pos( 2) Pos(F ( 2)) 2 { Pos( ) Pos( 2 ) Pos(F ( )) Pos(F ( 2)) 2 prop65 { 2 est descendant de dans TL(E) F ( 2 ) est descendant de F ( )danstf(e) L algorithme éliminer décrit ci-dessous met en œuvre la proposition 66 pour éliminer les liens redondants Précisons quelques points utiles àlacompréhension de l algorithme : Les liens (,F( )) et ( 2,F( 2)) de la propriété 66 sont les liens (a, F (a)) et (b, F (b)) de l algorithme; a et b sont des nœuds de TL(E) oubiennesont pas définis (nil) La fonction D(x, y) testesix est descendant de y dans la forêt TF(E); x et y sont des nœuds de TF(E) ou bien ne sont pas définis On a : D(nil, nil) = D(nil,y) = D(x, nil) = faux Les fonctions g(a),d(a),f(a) fournissent le fils gauche, le fils droit, ou le fils (cas de la fermeture) du nœud a de TL(E) L algorithme permet d éliminer les liens redondants dans un arbre de la forêt TL(E) Le parcours de cet arbre est tel que b est toujours descendant de a L algorithme est appelé sur chaque arbre de la forêt TL(E), b prenant pour valeur la racine de l arbre, et a la valeur nil

Passage d une expression rationnelle à un automate fini non-déterministe 97 Appel b a F (b) F (a) D(F (b),f(a)) Action(s) 0 nil nil nil faux Eliminer(,nil) (2) 2 nil nil faux Eliminer( 2, )() Eliminer(, )(7) 2 vrai Supp le lien ( 2, ) Eliminer(, )() vrai Supp le lien (, ) Eliminer(nil, )(5) Eliminer(nil, )(6) 5 nil - - - - 6 nil - - - - 7 nil faux Eliminer( 5, )(8) 8 5 5 vrai Supp le lien ( 5, 5 ) Eliminer(nil, )(9) Eliminer(nil, ) (0) 9 nil - - - - 0 nil - - - - Figure 0: Déroulement de l algorithme Eliminer sur l exemple de la figure 7 Algorithme Eliminer Eliminer(b,a) begin if b nilthen if D(F(b),F(a)) then F(b) nil (supp du lien (b,f(b))) switch (b) case, +,x: Eliminer(g(b),a) Eliminer(d(b),a) case : else if F(b) nilthen switch (b) case, +,x: case : else switch (b) case, +,x: case : endif endif endif end Eliminer(f(b),a) Eliminer(g(b),b) Eliminer(d(b),b) Eliminer(f(b),b) Eliminer(g(b),a) Eliminer(d(b),a) Eliminer(f(b),a) b a b a b = b = Complexité de l algorithme d élimination : L algorithme est exécuté sur chaque arbre de la forêt TL(E) Au cours de son exécution chaque nœud de T (E) est visité une fois et une seule La suppression d un lien (F (b) nil) est en temps constant, sous réserve que : Dans TF(E) les arbres sont indexés de manière distincte Un nœud de TF(E) estnuméroté par un triplet formé par

98 D Ziadi J-L Ponty J-M Champarnaud T(E) 0 9 b 2 8 a 6 5 a 7 b 2 LPar RPar ( ( ( ( ( ( ) ) ( ( ) ) ) ) ( ) ) ( ) ) 5 6 9 0 5 8 7 8 2 6 7 9 20 nœud 0 2 5 6 7 8 9 LPar 5 6 9 0 5 8 RPar 20 7 8 7 2 6 9 Figure : Exemple de parenthésage pour E =(a b 2) a b le numéro d arbre dans la forêt TF(E) 2 le numérodelaparenthèse ouvrante (Lpar( i )) qui lui est associée dans l arbre T (E) (cf fig ) le numéro de la parenthèse fermante (Rpar( i )) qui lui est associée dans l arbre T (E) (cf fig ) Remarque 67 La numérotation des parenthèses (fig ) est réalisée en temps linéaire lors de la construction de l arbre T (E) Ainsi l indexation de l ensemble des nœuds de la forêt TF(E) par un triplet est réalisée en temps linéaire F (b) est indexé par le triplet (Arb(b), Lpar(b), Rpar(b)) et F (a) est indexé par le triplet (Arb(a), Lpar(a), Rpar(a)); le test de descendance D(F (b), F(a)) s écrit donc : D ( F (b),f(a) ) = ( { }} { (Arb(a) =Arb(b) ) ((Lpar(b) Lpar(a)) (Rpar(b) Rpar(a))) ) } {{ } A A est vrai si a et b sont dans le même arbre dans la forêt TF(E) B est vrai si b est descendant de a dans la forêt TF(E) B

Passage d une expression rationnelle à un automate fini non-déterministe 99 Par conséquent, ce test peut être fait en temps constant Lemme 68 La représentation de δ par un ensemble de liens non redondants peut être calculée en temps O(n) Cette représentation permet de calculer δ comme une union d ensembles disjoints La relation entre la forme normale de fermeture et notre algorithme d élimination des liens redondants est fournie par la proposition suivante : Proposition 69 si E est sous forme normale de fermeture, alors : ( ) δ = ( {s I } First(E) ) Preuve T (E) D une part, la propriété 66 nous permet d affirmer qu après terminaison de l algorithme d élimination, la condition suivante est vérifiée : Pour tout et tout 2 dans TL(E), tels que F ( )etf ( 2 )existentdans TL(E) ona: ( 2 est descendant de ) (F ( 2 ) n est pas descendant de F ( )) D autre part, si E est sous forme normale de fermeture, pour toute expression H telle que H soit une sous-expression de E, ona: x Last(H), Follow (H, x) First(H) = Soit le nœud de TL(E) correspondant à la sous-expression H Comme x Last(H), on a : x est descendant de Soit un descendant de dans TL(E) telquex soit descendant de et tel que F ( )existe On a : First(E ) Follow (H, x) Supposons que F ( ) soit descendant de F () Alors First(E ) First(H) On en déduit que Follow (H, x) First(H), ce qui est en contradiction avec la condition FNF Parconséquent, F ( )nepeutêtre descendant de F () 6 De la représentation par forêts à l automate de Glushkov Il s agit de construire la table de transitions de l automate M L ensemble First( 0 ) permet de trouver les arcs issus de l état initial s I On parcourt l arbre T (E); chaque fois que l on rencontre un lien Last() First( ), M[i, j]reçoit j, i Last(), j First( ) Les liens étant non redondants, on fait cette opération exactement une fois pour chaque arc D où une étape réalisée en temps proportionnel au nombre de transitions, c est àdireenω(n 2 ) Lemme 60 Le passage de la représentation de δ par un ensemble de liens non redondants à la table de transitions est en Ω(n 2 )

200 D Ziadi J-L Ponty J-M Champarnaud 65 Algorithme Nous présentons ci-dessous les étapes importantes de l algorithme général pour le passage d une expression rationnelle à son automate de Glushkov Construction de l arbre T (E) et initialisation de ses nœuds O(n) 2 Construction des forêts TL(E) ettf(e) O(n) Calcul des ensembles O(n) Suppression des liens redondants O(n) 5 Passage à la matrice de transitions O(n 2 ) Théorème 6 Nous pouvons calculer l automate de Glushkov M E associé à une expression rationnelle E en temps Ω(n 2 ) en utilisant un espace mémoire de l ordre de O(n 2 ) Preuve 60 La preuve de ce théorème est une déduction des lemmes 62, 6, 68 et 66 Exemple de construction L exemple suivant (figure 2) donne les principales étapes de construction de l automate de Glushkov L ensemble des arcs de l automate (figure ) est donné par l union des ensembles i disjoints, à laquelle on ajoute les arcs menant d un état initial unique aux éléments de l ensemble First( 0 ) δ = 2 0 ({s I } First( 0 )) δ = {(0, ), (0, 2), (0, ), (, ), (, 2), (2, ), (2, 2), (, ), (2, ), (, )} Les états finaux de l automate sont les éléments de l ensemble Last( 0 ), auxquels on ajoute l état initial si E reconnaît le mot vide 7 Conclusion L algorithme de A Brüggemann-Klein commence par une phase de prétraitement qui consiste à transformer l expression en forme normale de fermeture Le calcul de δ se fait alors en unions disjointes Notre algorithme calcule une représentation de δ comme un ensemble de produits cartésiens (non évalués) dont seule une union disjointe est finalement calculée Il fournit une représentation par forêts de l automate de Glushkov de E en temps linéaire en la taille de E Un algorithme naïf permet d en déduire la table de M E en temps proportionnel au nombre de transitions, donc avec la même complexité que l algorithme de A Brüggemann-Klein De plus, la nature même de cette structure de données intermédiaire semble intéressante D Ziadi en a tiré parti pour construire un algorithme parallèle optimal dans le modèle CREW-PRAM [] [2]

Passage d une expression rationnelle à un automate fini non-déterministe 20 T(E) TL(E) TF(E) 0 0 0 b 9 b 9 b 9 2 a 8 2 a 8 2 a 8 6 6 6 5 a b 2 7 5 a b 2 7 5 a b 2 7 0 0 9 9 0 2 8 2 8 6 6 5 2 7 5 7 i Last ( i ) First( i ) i 5 {} {} = {} {} Last ( 5 ) First( 5 )={} {} = {(,)} 7 {2} {2} = 6 {2} {2} Last ( 7 ) First( 7 )={2} {2} = {(2,2)} {,2} {,2} Last ( ) First( 6 )={} {2} = {(,2)} 2 {,2} {,2} Last ( ) First( )={, 2} {, 2} = {(,),(,2),(2,),(2,2)} 8 {} {} = {} {,2,} Last ( 2 ) First( 8 )={, 2} {} = {(,),(2,)} 9 {} {} = 0 {} {,2,} Last ( ) First( 9 )={} {} = {(,)} Figure 2: exemple de construction sur l expression E =(a b 2) a b

202 D Ziadi J-L Ponty J-M Champarnaud a a a b 0 b a b 2 a b a Figure : L automate de Glushkov de l expression E =(a b 2) a b Références [] AAho,RSethietJ-DUllman,Compilateurs : Principes, techniques et outils, InterEditions, Paris (99) [2] A Aho et JD Ullman, Concepts fondamentaux de l Informatique, Dunod, Paris (992) [] J Berstel et J-E Pin, Local languages and the Berry-Sethi algorithm, rapport LITP 95/, IBP (995) [] G Berry et R Sethi, From Regular Expression to Deterministic Automata, Theoret Comput Sci 8 (996) 7 26 [5] D Beauquier, J Berstel et Ph Chrétienne, Eléments d algorithmique, Masson, Paris (992) [6]ABrüggemann-Klein, Regular Expressions into Finite Automata, Theoret Comput Sci 20 (99) 97 2 [7] J-M Champarnaud, AUT : un langage pour la manipulation des automates et des semi-groupes finis, Théorie des automates et applications, ed D Krob, Deuxièmes journées franco-belges, Publication de l Université derouen76 (99) 29 [8] J-M Champarnaud et G Hansel, AUTOMATE, a computing package for automata and finite semigroups, Journ Symbolic Computation 2 (99) 97 220 [9] CH Chang et R Paige, From regular expressions to dfa s using compressed nfa s Lecture Notes Comput Sci 6 (992) 88 08 [0] V-M Glushkov, The abstract theory of automata, Russian Mathematical Surveys 6 (96) 5 [] BW Watson, Taxonomies and Toolkits of Regular Language Algorithms, CIP- DATA Koninklijke Bibliotheek, Den Haag, Ph D, Eindhoven University of Technology (995) [2] D Ziadi, Algorithmique parallèle et séquentielle des automates, Thèsededoctorat, Université de Rouen, 996, rapport LIR àparaître

Passage d une expression rationnelle à un automate fini non-déterministe 20 [] D Ziadi et J-M Champarnaud, Algorithme parallèle efficace de passage d une expression rationnelle à un automate, LIR950 Informatique Fondamentale, Université de Rouen (995), soumis Djelloul Ziadi, Jean Luc Ponty et Jean-Marc Champarnaud Laboratoire d Informatique de Rouen Université derouen Place E Blondel F-7682 Mont-Saint Aignan Cédex (France) {ziadi,ponty,jmc}@diruniv-rouenfr