Vous êtes sur la page 1sur 82

Cours de Langages formels et compilation

Deuxième licence en Informatique

Prof. Ruffin-Benoı̂t M. Ngoie

Docteur en Sciences

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Présentation du cours

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Présentation du cours

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Présentation du cours

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Contrat pédagogique

Il s’agit d’une convention entre l’enseignant et les apprenants.


Quelques points d’entente :
Heure de début des enseignements

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Contrat pédagogique

Il s’agit d’une convention entre l’enseignant et les apprenants.


Quelques points d’entente :
Heure de début des enseignements
Usage d’appareils de télécommunication

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Contrat pédagogique

Il s’agit d’une convention entre l’enseignant et les apprenants.


Quelques points d’entente :
Heure de début des enseignements
Usage d’appareils de télécommunication
Durée des enseignements

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Contrat pédagogique

Il s’agit d’une convention entre l’enseignant et les apprenants.


Quelques points d’entente :
Heure de début des enseignements
Usage d’appareils de télécommunication
Durée des enseignements
Pauses éventuelles

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Contrat pédagogique

Il s’agit d’une convention entre l’enseignant et les apprenants.


Quelques points d’entente :
Heure de début des enseignements
Usage d’appareils de télécommunication
Durée des enseignements
Pauses éventuelles
Autres avis

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Organisation du cours

Ce cours est organisé en 4 chapitres :


Chapitre 1 : Introduction à la théorie des langages
Chapitre 2 : Théorie des automates
Chapitre 3 : Fonctions récursives
Chapitre 4 : Complexité algorithmique
Chapitre 5 : Programmation procédurale en Python

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à
la théorie des langages

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Origines

Noam Chomsky (1928 –) Marcel-Paul Schützenberger (1920

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Utilité des langages formels

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Préliminaires

On appelle alphabet un ensemble fini des signes ou symboles.


On note X l’alphabet des symboles dits terminaux.
La concaténation est l’opération qui permet de construire
des mots.
X 2 est donc l’ensemble des mots de deux lettres, X 3 est donc
l’ensemble des mots de trois lettres, ... écrits avec l’alphabet
X.
Le mot vide  est le mot sans lettre, élément neutre de la
concaténation ; si u ∈ X n , on a u = u = u. On a X 0 = {}

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Préliminaires (suite)

La longueur d’un mot u, notée |u| , correspond au nombre


total de symboles de u (chaque symbole étant compté autant
de fois qu’il apparaı̂t). Par convention, || = 0. Autre notation
utile, |u|a compte le nombre total d’occurrences
P du symbole a
dans le mot u. On a naturellement : |u| = a∈X |u|a
[ [
On pose X ∗ = X i et X + = Xi.
i≥0 i≥1
L’ensemble X ∗ est donc l’ensemble de tous les mots, y
compris le mot vide, qu’on peut écrire sur X . L’ensemble X +
est l’ensemble de tous les mots, sauf le mot vide ; on a
X + = X ∗ \ {}
La concaténation est une opération associative.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Grammaires

Une grammaire est un quadruplet G = (X , V , R, S) où :


X est l’alphabet des symboles terminaux,
V est l’ensemble fini des variables,
R est l’ensemble fini des règles de dérivation,
S est une variable particulière appelée axiome

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 1 : Introduction à la théorie des langages
Grammaires

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 → }

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des
automates

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Automates

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Automates

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Automates

Langage accepté - Fonction de transition


Lors de l’arrêt, la machine est dans l’une des trois configurations
suivantes :
Le mot n’est pas entièrement lu mais aucune transition n’est
possible : le mot est rejeté.
Le mot a été lu, mais l’état dans lequel se trouve la machine
n’est pas un état final : le mot est rejeté.
Le mot a été lu, et l’état dans lequel se trouve la machine est
un état final, marqué par un double cercle : le mot est accepté
(on dit aussi reconnu).
L’ensemble des mots reconnus par un automate est appelé
Langage accepté par l’automate.
TP : Dresser la fonction de transition de l’automate A1 .
Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation
Chapitre 2 : Théorie des automates
Automates déterministes

Automate déterministe - Automate déterministe complet


Un automate A = (X , Q, D, A, δ) est déterministe ssi
Card(D) = 1
∀q ∈ Q, ∀x ∈ X , Card({q 0 ∈ Q, (q, x, q 0 ) ∈ δ}) ≤ 1

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Automates déterministes

Automate déterministe - Automate déterministe complet


Un automate A = (X , Q, D, A, δ) est déterministe ssi
Card(D) = 1
∀q ∈ Q, ∀x ∈ X , Card({q 0 ∈ Q, (q, x, q 0 ) ∈ δ}) ≤ 1

Automate déterministe complet


Un automate A = (X , Q, D, A, δ) est déterministe complet ssi
Card(D) = 1
∀q ∈ Q, ∀x ∈ X , Card({q 0 ∈ Q, (q, x, q 0 ) ∈ δ}) = 1

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Déterminisation

Algorithme Subset construction


Cf Travaux pratiques et dirigés.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Déterminisation

Automate déterminisé.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 2 : Théorie des automates
Minimalisation

La minimalisation consiste à réduire le nombre des états pour un


automate. Il existe plusieurs algorithmes dédiés à ce problème
dont :
Algorithme de Moore (lorsque l’automate est déterministe)
Algorithme de Brzozowski (pour un automate quelconque)

Edward F. Moore (1925 – 2003) Janusz A. Brzozowski (1935 – 2019)

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions
récursives

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Définition récursive – Algorithme récursif

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)!

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Définition récursive – Algorithme récursif

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 :

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Formes de récursivité

Récursivité simple
Un seul appel récursif 
dans la définition
1 si n = 0 ,
Exemple : fact(n) =
n × fact(n − 1) sinon.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Formes de récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Formes de récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Formes de récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Principe et dangers de la récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Principe et dangers de la récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 3 : Fonctions récursives
Principe et dangers de la récursivité

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité
algorithmique

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Définition & notations

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).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Définition & notations

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Types de complexité

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).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Types de complexité

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).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Types de complexité

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 ! ! !

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Exercices

1 Etudier la complexité des algorithmes ci-dessous :


• 1. Algorithme 1
Lire n
l ←0
Pour i ← 1 à n faire
Pour j ← 1 à 2n faire
l ←l +1
Fin Pour
Fin Pour
Ecrire l
• 2. Algorithme 2
Lire n
l ←0
Pour i ← 1 à n faire
Pour j ← 1 à i faire
Pour k ← j à n faire
l ←l +1
Fin Pour
Fin Pour
Fin Pour
Ecrire l

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Exercices

• 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

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Théorèmes

Théorème 1 : Si f1 (n) = O(g1 (n)) et f2 (n) = O(g2 (n)) alors


f1 (n) + f2 (n) = O(max{g1 (n), g2 (n)})

Théorème 2 : Si f (n) = O(g (n)) alors ∀k > 0, f (n) = O(k.g (n))

Théorème 3 : Si f (n) = O(g (n)) et h(n) ≥ g (n), ∀n ≥ n0 (avec


n0 ∈ N) alors f (n) = O(h(n))

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Machine de Turing

Calculabilité
Domaine scientifique traitant de la capacité de résoudre un
problème algorithmiquement.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Machine de Turing

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Machine de Turing

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

Machine de Turing universelle


Turing a démontré qu’il existait des machines de Turing
M = (Q, Γ, δ, q0 , F ) pouvant simuler les calculs de toutes les
machines de Turing.

Pour que M puisse simuler M 0 il faut montrer comment encoder le


quintuplet (Q 0 , Γ0 , δ 0 , q00 , F 0 ) décrivant M 0 sur le ruban de M (Cf.
Ordinateur).

Il n’y a pas de différence formelle entre données et


programme. Tous les deux sont des données pour une
machine de Turing universelle.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Indécidabilité

Existe-t-il une méthode algorithmique permettant de résoudre tous


les problèmes ? Non ! ! !

Il existe des problèmes qui ne sont pas décidables, i.e. pour


lesquels il n’existe pas de machine de Turing permettant de les
résoudre.
Théorème 4 (Turing, 1936). Etant donné une machine de Turing
M et pour toute entrée x de cette machine, déterminer si M
s’arrête ou pas sur l’entrée x est indécidable.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Complexité de problèmes

Complexité temporelle définie par les machines de Turing


Soit M une machine de Turing déterministe qui s’arrête sur toutes
les entrées. La complexité temporelle de M est la fonction
f : N → N, où f (n) est le nombre maximum d’étapes que M utilise
pour n’importe quelle entrée de taille n. On dit que M s’exécute
en temps f (n).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Complexité de problèmes

Complexité temporelle définie par les machines de Turing


Soit M une machine de Turing déterministe qui s’arrête sur toutes
les entrées. La complexité temporelle de M est la fonction
f : N → N, où f (n) est le nombre maximum d’étapes que M utilise
pour n’importe quelle entrée de taille n. On dit que M s’exécute
en temps f (n).

Complexité d’un problème définie par les machines de Turing


Soit t : N → R+ une fonction. La classe de complexité de temps
TIME (t(n)) est l’ensemble de tous les langages qui sont décidables
par une machine de Turing déterministe en temps t(n).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Complexité de problèmes

Classe P
Ensemble des langages qui sont décidables en temps polynomial
par une machine de Turing déterministe. Autrement dit :

P = ∪k∈N TIME (nk )

P correspond en pratique à l’ensemble des problèmes qui sont


traitables en un temps raisonnable par un ordinateur.

Temps d’exécution d’une machine de Turing non déterministe


Soit N une machine de Turing non déterministe qui est un
décideur. Le temps d’exécution de N est la fonction f : N → N,
où f (n) est le nombre d’étapes que N utilise pour n’importe quelle
entrée de taille n. Soit t : N → R+ une fonction. La classe de
complexité de temps NTIME (t(n)) est l’ensemble de tous les
langages qui sont décidables par une machine de Turing non
déterministe enProf.temps f (n).
Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation
Chapitre 4 : Complexité algorithmique
Complexité de problèmes

Temps d’exécution d’une machine de Turing non déterministe


Soit N une machine de Turing non déterministe qui est un
décideur. Le temps d’exécution de N est la fonction f : N → N,
où f (n) est le nombre d’étapes que N utilise pour n’importe quelle
entrée de taille n. Soit t : N → R+ une fonction. La classe de
complexité de temps NTIME (t(n)) est l’ensemble de tous les
langages qui sont décidables par une machine de Turing non
déterministe en temps f (n).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Complexité de problèmes

Temps d’exécution d’une machine de Turing non déterministe


Soit N une machine de Turing non déterministe qui est un
décideur. Le temps d’exécution de N est la fonction f : N → N,
où f (n) est le nombre d’étapes que N utilise pour n’importe quelle
entrée de taille n. Soit t : N → R+ une fonction. La classe de
complexité de temps NTIME (t(n)) est l’ensemble de tous les
langages qui sont décidables par une machine de Turing non
déterministe en temps f (n).

Classe NP
Ensemble des langages qui sont décidés en temps polynomial par
une machine de Turing non déterministe. Autrement dit :

NP = ∪k∈N NTIME (nk )

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Classe NP

Proposition. Un langage A sur un alphabet Σ est dans NP si et


seulement si il existe un polynôme p(n) et un langage B ∈ P tels
que
x ∈ A ⇔ ∃y ∈ Σp(|x|) (x, y ) ∈ B
Le mot y justifiant l’appartenance de x à A est appelé certificat.
Autrement dit : Soit, pour une instance donnée, une solution à un
problème de décision et un certificat, il est possible de prouver en
temps polynomial (grâce au certificat) que la solution du problème
est correcte.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.
Question : G possède-t-il une clique de taille k ?

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.
Question : G possède-t-il une clique de taille k ?
Certificat : Ensemble des k sommets formant une clique (on
vérifie en temps polynomial que ces k sommets forment bien
une clique).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.
Question : G possède-t-il une clique de taille k ?
Certificat : Ensemble des k sommets formant une clique (on
vérifie en temps polynomial que ces k sommets forment bien
une clique).
• Chaı̂ne hamiltonienne
Entrée : Un graphe non orienté G .

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.
Question : G possède-t-il une clique de taille k ?
Certificat : Ensemble des k sommets formant une clique (on
vérifie en temps polynomial que ces k sommets forment bien
une clique).
• Chaı̂ne hamiltonienne
Entrée : Un graphe non orienté G .
Question : G possède-t-il une chaı̂ne hamiltonienne ?

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Tous les problèmes de P appartiennent à NP.


• Clique
Entrée : Un graphe non orienté G et un entier k.
Question : G possède-t-il une clique de taille k ?
Certificat : Ensemble des k sommets formant une clique (on
vérifie en temps polynomial que ces k sommets forment bien
une clique).
• Chaı̂ne hamiltonienne
Entrée : Un graphe non orienté G .
Question : G possède-t-il une chaı̂ne hamiltonienne ?
Certificat : Chaı̂ne hamiltonienne.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• Partition
Entrée : Un ensemble S de n entiers positifs.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• 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 ?

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• 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 ).

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• 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 φ.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• 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 ?

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Exemples de problèmes dans NP

• 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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
P versus NP

• P est la classe des problèmes dont on peut rapidement trouver


une solution (rapidement = temps polynomial).
• NP est la classe des problèmes dont on peut rapidement
vérifier qu’une solution en est bien une solution.
• Question : P = NP ?
Malgré de nombreuses recherches, cette question n’est pas
résolue. Il est conjecturé que P 6= NP mais on ne connaı̂t
pas de problème de NP dont il est prouvé qu’il
n’appartienne pas à P.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Problèmes NP-complets

Cook et Levin dans les années 1970 ont découvert certains


problèmes de NP dont la complexité est liée à la complexité de la
classe NP entière : si un algorithme polynomial existe pour un
de ces problèmes alors tous les problèmes de NP peuvent
être résolus en temps polynomial. Ces problèmes sont dits
NP-complets.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Perspectives éventuelles

• En théorie, pour prouver que P = NP ou P 6= NP, se


concentrer sur un problème NP-complet et montrer qu’il peut
ou ne peut pas se résoudre en un temps polynomial.
• En pratique, pour prouver qu’un problème est NP-complet,
montrer qu’il est peu probable qu’un algorithme polynomial
existe pour ce problème (puisqu’il est conjecturé que
P 6= NP).
• Le premier problème qui a été montré NP-complet est le
problème de satisfiabilité (SAT).
Théorème 5. Sat ∈ P ⇔ P = NP.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Réduction polynomiale

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

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Réduction polynomiale

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

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Réduction polynomiale

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Réduction polynomiale

Théorème 7. Si B est NP-complet et B ≤P A avec A ∈ P alors A


est NP-complet.
Problème NP-complet
Pour montrer qu’un problème A est NP-complet :
• On montre que A ∈ NP et

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Réduction polynomiale

Théorème 7. Si B est NP-complet et B ≤P A avec A ∈ P alors A


est NP-complet.
Problème NP-complet
Pour montrer qu’un problème A est NP-complet :
• On montre que A ∈ NP et
• On montre qu’il existe un problème NP-complet B tel que
B ≤P A.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 4 : Complexité algorithmique
Comment montrer qu’un problème est NP-complet

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.

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


Chapitre 5 :
Programmation
procédurale en Python

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation


M er ci p our votr e

attenti on ! ! !

Prof. Ruffin-Benoı̂t M. Ngoie Cours de Langages formels et compilation

Vous aimerez peut-être aussi