Cours de mathématiques 1° année : Théorie des langages version du 16/04/17
M.M. Département Informatique I.U.T. Bordeaux I
Décembre 2000
1
Langages formels
Projet de cours
Idées en vrac à organiser :
Minimisation d’un automate
Algo de reconnaissance : automate à pile.
Exos : mots du Grand Dyck ; palindromes ; etc…union de tel et tel ;
intersection pas toujours algébrique. Grammaires régulières pour les
expressions rationnelles déjà vues. Passer du dessin d'un automate à sa
spécification abstraite et vice versa.
Cours de mathématiques 1° année : Théorie des langages version du 16/04/17
M.M. Département Informatique I.U.T. Bordeaux I
Décembre 2000
2
Plan
1. Langages
2. Systèmes de réécriture
3. Langages rationnels
4. Langages reconnaissables
5. Langages algébriques
Introduction
La notion de langage formel est à distinguer (entre autres) de celle de
langage de programmation, même s’il existe des liens entre un
langage formel et un langage de programmation : les mots d’un
langage formel seront étudiés indépendamment de toute sémantique.
On se préoccupe seulement de questions syntaxiques.
On peut rattacher la théorie d’abord aux travaux du mathématicien
américain Stephen Cole Kleene dont les préoccupations étaient
avant tout orientées vers les fondements des mathématiques (à
rapprocher de Gödel, Turing, Church) ; à l’occasion de certains de ses
travaux, il est amené au milieu des années 50 (1956) à définir une
classse de langages formels, les langages dits réguliers ou langages
de Kleene, ou encore langages rationnels.
Quelques années plus tard, le linguiste américain Noam Chomsky
(qui avait fait aussi des études de mathématiques et de philosophie),
s’interroge sur les mécanismes qui permettent la production du
langage (quelques règles apprises en très peu d’années nb. infini de
phrases syntaxiquement correctes) et sa reconnaissance (un enfant se
rend très vite compte si une phrase qu’il entend est ou non une phrase
de sa langue, i.e. syntaxiquement correcte) ; à partir de ces réflexions,
il travaille sur la (très vieille) notion de grammaire, apportant des
définitions nouvelles, très précises, qui lui permettent de proposer des
théorèmes et une classification : parmi les grammaires, les
grammaires algébriques.
Mais si la théorie provient de divers horizons, son succès vient de sa
grande fécondité dans plusieurs domaines essentiels de l’informatique,
au premier rang desquels la compilation.
Cours de mathématiques 1° année : Théorie des langages version du 16/04/17
M.M. Département Informatique I.U.T. Bordeaux I
Décembre 2000
3
1. Langages
1.1. Définitions et notations
Définition 1 : on appelle alphabet un ensemble fini non vide. Les
éléments d’un alphabet sont appelés lettres.
Remarque : la notion d’ensemble donne un contenu précis (définition,
propriétés, opérations possibles, etc…) aux notions communes
d’alphabet et de lettre. Mais le fait de nommer alphabet un ensemble
fini quelconque ne le munit évidemment d’aucune structure
particulière, et ne le distingue en rien du même ensemble que l’on
n’aurait pas ainsi baptisé.
Exemples :
X1 = { 2, 4, 8, 16, 24, 48}
X2 = {a, b, c, d, e, f}
X3 = {‘0‘, ‘1‘,‘2‘,‘3‘}
Sont des alphabets.
Définition 2 : soit n un entier naturel ; un mot f de longueur n sur un
alphabet X est une application de {1, 2, … n} dans X.
La longueur n du mot f se note |f|.
Exemples : f = (16, 16, 4, 2) et g = (4, 8, 48, 2, 4, 24) sont des mots
sur X1. On a |f| = 4 et |g| = 6
De même u = (a,a,a,d,a,f,a,d,a) est un mot sur X2.
L’application de dans X est appelée le mot vide ; ce mot, de
longueur nulle, est noté ou 1X.
Notation : lorsqu’il n’y a pas d’ambiguïté, on note un mot f sous la
forme
f(1) f(2) f(3) … f(n) plutôt que (f(1), f(2), … f(n))
Exemples : abba est un mot sur X2.
Mais 248 n’est pas un mot sur X1 : (2, 4, 8) ? (2, 48) ? (24, 8) ?
Cours de mathématiques 1° année : Théorie des langages version du 16/04/17
M.M. Département Informatique I.U.T. Bordeaux I
Décembre 2000
4
Par ailleurs, la notation d’un mot par juxtaposition des lettres conduit
à ne pas distinguer le mot f de longueur 1 et la lettre f(1) : sauf en de
rares cas, il est inutile d’alourdir les explications en distinguant
systématiquement le mot a de la lettre a !
Notation : le nombre d’occurrences de la lettre x dans le mot f se note
|f|x.
Cette notion est suffisamment claire ; notons cependant que
formellement, le nombre d’occurrences de x dans f est le cardinal de
l’image réciproque de {x} : Card f-1 {x}
Notation : l’ensemble de tous les mots sur un alphabet X est noté X*.
Remarque : cet ensemble est infini.
Exercice : montrer que X* est dénombrable.
Réponse : on peut le faire en s’inspirant de la méthode de Gödel pour
les listes : X est fini, on peut donc numéroter ses éléments ; par
exemple X = {a, b, c} n(a) = 1, n(b) = 2, n(c)=3
Ensuite, un mot f sur X étant donné, on considère les |f| premiers
nombres premiers, que l’on note p(1) (=2) , p(2), etc…
On forme alors le nombre (f) =
f
i
ifn
ip
1
))((
)(
Exemple : f = acbaacb
(f) = 21x32x53x71x111x133x172
= 110002142250
Par l’unicité de la décomposition en facteurs premiers,
(f) = (f’) f = f’ et est injective ; les mots de X* ne sont pas plus
nombreux que les entiers naturels. Cqfd.
Exercice : quel mot de X* a pour numéro 415800
415800 = 23x33x52x71x111
Cours de mathématiques 1° année : Théorie des langages version du 16/04/17
M.M. Département Informatique I.U.T. Bordeaux I
Décembre 2000
5
donc c c b a a
Même question avec numéro 30 ? c’est a a a
Et numéro 15 ? aucun : 3 x 5 et il n’y a pas eu 2.
Définition 3 : On définit sur X* une loi de composition interne notée .
ou <vide>, appelée produit de concaténation :
X* x X* X*
(f, g) fg, avec
fg (i) = f(i) i {1, 2, … |f|}
fg (i) = g(i-|f|) i {|f|+1, … |f|+|g|}
Exemple :
Avec l’alphabet X2 ci-dessus prenons
u = ac, v = dc
u v = acdc
Propriétés du produit de concaténation :
Il est clair que cette loi est associative :
u (v w) = (u v) w
D’autre part elle admet le mot vide pour élément neutre :
x X*, x = x = x
Ces propriétés sont très intuitives : il suffit de considérer des suites de
lettres. Mais il est possible de les vérifier de façon plus formelle à
partir des définitions : ce peut être un excellent exercice…
Remarque très importante : les deux propriétés ci-dessus font de
l’ensemble X* muni du produit de concaténation un monoïde. On
désigne souvent X* par l’expression « le monoïde libre ».
Dans cette expression, l’adjectif libre signifie que les éléments de X
ne sont liés entre eux par aucune relation.
On remarque enfin que le produit de concaténation n’est pas en
général commutatif.
u = ac, v = dc
u. v = acdc v. u = dcac
1 / 41 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !