Académique Documents
Professionnel Documents
Culture Documents
Docteur en Sciences
Objectifs du cours :
Ce cours permet à l’étudiant d’acquérir une parfaite maı̂trise des principes
des langages de par leurs formes.
l’épithète “formels” précise que nous étudions les mots des langages du
point de vue de leur “forme” et non de ce qu’ils pourraient évoquer à un
locuteur de ce langage. Cette notion s’oppose à celle du “sens” des mots
et des phrases, qui est certes essentielle, et fait l’objet de la
“sémantique” des langages.
Objectifs du cours :
Ce cours permet à l’étudiant d’acquérir une parfaite maı̂trise des principes
des langages de par leurs formes.
l’épithète “formels” précise que nous étudions les mots des langages du
point de vue de leur “forme” et non de ce qu’ils pourraient évoquer à un
locuteur de ce langage. Cette notion s’oppose à celle du “sens” des mots
et des phrases, qui est certes essentielle, et fait l’objet de la
“sémantique” des langages.
Volume horaire :
Pour atteindre la maı̂trise de cours l’étudiant a besoin de 45 heures avec
l’enseignant en classe. En outre, des efforts personnels lui seront exigés ce
qui peut représenter un volume de 30 heures de travaux personnels.
Objectifs du cours :
Ce cours permet à l’étudiant d’acquérir une parfaite maı̂trise des principes
des langages de par leurs formes.
l’épithète “formels” précise que nous étudions les mots des langages du
point de vue de leur “forme” et non de ce qu’ils pourraient évoquer à un
locuteur de ce langage. Cette notion s’oppose à celle du “sens” des mots
et des phrases, qui est certes essentielle, et fait l’objet de la
“sémantique” des langages.
Volume horaire :
Pour atteindre la maı̂trise de cours l’étudiant a besoin de 45 heures avec
l’enseignant en classe. En outre, des efforts personnels lui seront exigés ce
qui peut représenter un volume de 30 heures de travaux personnels.
Modalités d’évaluation :
Interrogations écrites ou orales, contrôle continu, examen final à l’écrit
et/ou à l’oral.
Utilité
En linguistique, cette discipline apporte un cadre formel à l’étude
du langage naturel. En informatique, elle a permis de formaliser la
conception des langages informatiques, améliorant ainsi l’analyse
syntaxique et la compilation des programmes.
Exemples
G1 = (X , V , R, S) avec : X = {a, b}; V = {S, T }; R = {S →
aSb, S → T , T → bTa, T → }
G2 = (X , V , R, S) où
R = {S → aSb, S → , S → bTa, T → bTa, T → }
G3 = (X , V , R, S) avec X = {a, b}; V = {S, T1 , T2 }; R =
{S → T1 T2 , T1 → aT1 b, T1 → , T2 → bT2 a, T2 → }
Automate
Un automate est un quintuplet, A = (X , Q, D, A, δ) où :
X est un ensemble fini, l’alphabet d’entrée
Q est un ensemble, l’ensemble des états
D ⊂ Q est l’ensemble des états de départ
A ⊂ Q est l’ensemble des états d’arrivée
δ ⊂ Q × X × Q est l’ensemble des transitions
Un automate fini est un automate A = (X , Q, D, A, δ) dont
l’ensemble d’états, Q, est fini.
Exemples
Posons X = {a, b}, Q1 = {1, 2}, D1 = {1}, A1 = {2}, δ1 =
{(1, a, 1), (1, b, 2), (2, b, 2)}.A1 = (X , Q1 , D1 , A1 , δ1 ) est un
automate fini.
Automate déterminisé.
Définition récursive
Une définition récursive est une définition dans laquelle intervient
ce que l’on veut définir.
Exemple : n! = n × (n − 1)!
Définition récursive
Une définition récursive est une définition dans laquelle intervient
ce que l’on veut définir.
Exemple : n! = n × (n − 1)!
Algorithme récursif
Un algorithme est dit récursif lorsqu’il est défini en fonction de
lui-même.
Exemple :
Récursivité simple
Un seul appel récursif
dans la définition
1 si n = 0 ,
Exemple : fact(n) =
n × fact(n − 1) sinon.
Récursivité simple
Un seul appel récursif
dans la définition
1 si n = 0 ,
Exemple : fact(n) =
n × fact(n − 1) sinon.
Récursivité multiple
Une définition récursive peut contenir plus d’un appel récursif.
Exemple :
1 si p = 0 ou n = p ,
Comb(n, p) =
Comb(n − 1, p − 1) + Comb(n − 1, p) sinon.
Récursivité mutuelle
Des définitions sont dites mutuellement récursives si elles
dépendent les unes des autres.
Exemple: Parité
vrai si n = 0 , faux si n = 0 ,
Pair (n) = et Impair (n) =
Impair (n − 1) sinon. Pair (n − 1) sinon.
Récursivité mutuelle
Des définitions sont dites mutuellement récursives si elles
dépendent les unes des autres.
Exemple: Parité
vrai si n = 0 , faux si n = 0 ,
Pair (n) = et Impair (n) =
Impair (n − 1) sinon. Pair (n − 1) sinon.
Récursivité imbriquée
La fonction est appelée comme paramètre dans sa propre définition.
Exemple : Fonction
d’Ackermann
n + 1 si m = 0 ,
Ack(m, n) = Ack(m − 1, 1) si m > 0 et n = 0
Ack(m − 1, Ack(m, n − 1)) sinon.
Principe et intérêt
Ce sont les mêmes que ceux de la démonstration par récurrence en
mathématiques. On doit avoir :
un certain nombre de cas dont la résolution est connue, ces
“cas simples” formeront les cas d’arrêt de la récursion ;
un moyen de se ramener d’un cas “compliqué” à un cas “plus
simple”.
La récursivité permet d’écrire des algorithmes concis et élégants.
Difficultés
la définition peut être dénuée de sens :
Exemple :
Algorithme A(n)
renvoyer A(n)
il faut être sûr que l’on retombera toujours sur un cas connu, c’est-à-dire
sur un cas d’arrêt ; il nous faut nous assurer que la fonction est
complètement définie, c’est-à-dire, qu’elle est définie sur tout son
domaine d’applications.
Difficultés
la définition peut être dénuée de sens :
Exemple :
Algorithme A(n)
renvoyer A(n)
il faut être sûr que l’on retombera toujours sur un cas connu, c’est-à-dire
sur un cas d’arrêt ; il nous faut nous assurer que la fonction est
complètement définie, c’est-à-dire, qu’elle est définie sur tout son
domaine d’applications.
Moyen
Existence d’un ordre strict tel que la suite des valeurs successives des
arguments invoqués par la définition soit strictement monotone et finit toujours
par atteindre une valeur pour laquelle la solution est explicitement définie.
Complexité algorithmique
Mesure du nombre d’opérations fondamentales qu’effectue un
algorithme sur un jeu de données (en temps) ou la quantité de
mémoire nécessaire pour qu’un algorithme s’exécute (en espace).
Complexité algorithmique
Mesure du nombre d’opérations fondamentales qu’effectue un
algorithme sur un jeu de données (en temps) ou la quantité de
mémoire nécessaire pour qu’un algorithme s’exécute (en espace).
Notations de Landau
f = O(g ) ⇔ ∃n0 ≥ 0, ∃c ≥ 0, ∀n ≥ n0 , f (n) ≤ c.g (n)
f = Ω(g ) ⇔ ∃n0 ≥ 0, ∃c ≥ 0, ∀n ≥ n0 , f (n) ≥ c.g (n)
f = Θ(g ) ⇔ f = O(g ) et g = O(f ).
Dans ce cours, nous ne traiterons que de la complexité
temporelle.
Complexité au meilleur
Plus petit nombre d’opérations qu’aura à exécuter l’algorithme sur
un jeu de données de taille n (borne inférieure).
Complexité au meilleur
Plus petit nombre d’opérations qu’aura à exécuter l’algorithme sur
un jeu de données de taille n (borne inférieure).
Complexité au pire
Plus grand nombre d’opérations qu’aura à exécuter l’algorithme sur
un jeu de données de taille n (borne supérieure).
Complexité au meilleur
Plus petit nombre d’opérations qu’aura à exécuter l’algorithme sur
un jeu de données de taille n (borne inférieure).
Complexité au pire
Plus grand nombre d’opérations qu’aura à exécuter l’algorithme sur
un jeu de données de taille n (borne supérieure).
Complexité en moyenne
Moyenne des complexités de l’algorithme sur des jeux de données
de taille n. P
C (d)
Tmoy (n) = d∈Dn
|Dn |
Tenir compte de la probabilité d’apparition de chacun des jeux de
données.
Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation
Chapitre 4 : Complexité algorithmique
Optimalité
Algorithme optimal
Algorithme dont la complexité est minimale parmi les algorithmes
de sa classe.
RAM
Machine à accès aléatoire. Cette machine a deux
caractéristiques : séquentielle et déterministe.
Machine séquentielle
Processeur unique, les instructions sont exécutées l’une après
l’autre sans opérations simultanées.
Machine déterministe
Les mêmes données fournies au même programme produisent les
mêmes résultats indépendamment du moment et de
l’environnement de l’exécution.
Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation
E xer ci ces ! ! !
• 3. Montrer que :
1 f (n) = 60n2 + 5n + 1 est O(n2 )
2 f (n) = 60n3 + 5n2 − 6n + 7 est O(n3 )
3 f (n) = 3n2 + 7n − 8 est Θ(n2 )
4 f (n) = 2n + 1 est O(n2 )
5 f (n) = 4n + 3 est O(n9 )
• 4. Quel est l’ordre de complexité de :
1 f (n) = 3n2 + 2n log(n) − 5n + 8
2 f (n) = cos n
3 f (n) = 3n3 + 7n3 log(n) − 12
Calculabilité
Domaine scientifique traitant de la capacité de résoudre un
problème algorithmiquement.
Calculabilité
Domaine scientifique traitant de la capacité de résoudre un
problème algorithmiquement.
Machine de Turing
Quintuplet M = (Q, Γ, δ, q0 , F ) où Q désigne l’ensemble fini des
états de la machine, Γ l’ensemble fini de symboles pouvant être
écrits sur la bande de la machine (incluant le symbole “blanc”
pouvant apparaı̂tre infiniment sur la bande de la machine),
δ : Q × Γ → Q × Γ × {−1, +1} est la fonction de transition, q0 est
l’état initial, et F ⊆ Q est l’ensemble des états finaux.
Calculabilité
Domaine scientifique traitant de la capacité de résoudre un
problème algorithmiquement.
Machine de Turing
Quintuplet M = (Q, Γ, δ, q0 , F ) où Q désigne l’ensemble fini des
états de la machine, Γ l’ensemble fini de symboles pouvant être
écrits sur la bande de la machine (incluant le symbole “blanc”
pouvant apparaı̂tre infiniment sur la bande de la machine),
δ : Q × Γ → Q × Γ × {−1, +1} est la fonction de transition, q0 est
l’état initial, et F ⊆ Q est l’ensemble des états finaux.
Théorème de Church-Turing
Tout calcul fondé sur une méthode effective peut être effectué par
une machine de Turing.
Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation
Machine de Turing
Classe P
Ensemble des langages qui sont décidables en temps polynomial
par une machine de Turing déterministe. Autrement dit :
Classe NP
Ensemble des langages qui sont décidés en temps polynomial par
une machine de Turing non déterministe. Autrement dit :
• Partition
Entrée : Un ensemble S de n entiers positifs.
• Partition
Entrée : Un ensemble S de n entiers positifs.
Question : Peut-on partitionner S en deux sous-ensembles S 0
et S 00 tels que la somme des éléments de S 0 soit égale à la
somme des éléments de S 00 ?
• Partition
Entrée : Un ensemble S de n entiers positifs.
Question : Peut-on partitionner S en deux sous-ensembles S 0
et S 00 tels que la somme des éléments de S 0 soit égale à la
somme des éléments de S 00 ?
Certificat : Couple (S 0 , S 00 ).
• Partition
Entrée : Un ensemble S de n entiers positifs.
Question : Peut-on partitionner S en deux sous-ensembles S 0
et S 00 tels que la somme des éléments de S 0 soit égale à la
somme des éléments de S 00 ?
Certificat : Couple (S 0 , S 00 ).
• Satisfiabilité (SAT)
Entrée : Une formule booléenne φ.
• Partition
Entrée : Un ensemble S de n entiers positifs.
Question : Peut-on partitionner S en deux sous-ensembles S 0
et S 00 tels que la somme des éléments de S 0 soit égale à la
somme des éléments de S 00 ?
Certificat : Couple (S 0 , S 00 ).
• Satisfiabilité (SAT)
Entrée : Une formule booléenne φ.
Question : φ est-elle satisfiable ?
• Partition
Entrée : Un ensemble S de n entiers positifs.
Question : Peut-on partitionner S en deux sous-ensembles S 0
et S 00 tels que la somme des éléments de S 0 soit égale à la
somme des éléments de S 00 ?
Certificat : Couple (S 0 , S 00 ).
• Satisfiabilité (SAT)
Entrée : Une formule booléenne φ.
Question : φ est-elle satisfiable ?
Certificat : affectation des valeurs Vrai et Faux aux
variables.
réduction polynomiale
Soit A et B deux problèmes de décision. Le problème A peut être
réduit en temps polynomial au problème B, ce qui s’écrit A ≤P B,
s’il existe une fonction f exécutable en temps polynomial tel que
pour toute instance w de A, la réponse au problème A sur
l’instance w est Oui ⇔ la réponse au problème B sur l’instance
f (w ) est Oui. Alors on dit que f est une réduction polynomiale
de A vers B
Théorème 6. Si A ≤P B et B ∈ P alors A ∈ P.
Problème NP-complet
Soit A un problème de décision. A est NP-complet si :
• A ∈ NP et
Théorème 6. Si A ≤P B et B ∈ P alors A ∈ P.
Problème NP-complet
Soit A un problème de décision. A est NP-complet si :
• A ∈ NP et
• Chaque problème B de NP peut être réduit en temps
polynomial au problème A.
En résumé :
• On énonce clairement le problème A dont on veut montrer
qu’il est NP-complet
• On montre que A ∈ NP en donnant un certificat.
• On énonce clairement un problème B dont on sait qu’il est
NP-complet.
• On décrit une réduction polynomiale f qui transforme B en A
• On prouve que f est bien une réduction polynomiale de B en
A : Pour toute entrée w de B on obtient une entrée f (w ) de
A telle que la solution au problème B sur l’instance w est
Vrai si et seulement si la solution au problème A sur
l’instance f (w ) est Vrai.
attenti on ! ! !