Professional Documents
Culture Documents
ǫ
0
1
ǫ
ǫ ǫ
1
ǫ
ǫ
ǫ
Logique(s)
ǫ
Langages
0
ǫ
ǫ
Algorithmes
ǫ
ǫ
Narendra.Jussien@emn.fr
njussien.e-constraints.net/lla
c
2004, 2005, 2006 narendra jussien – tous droits réservés
Ces notes de cours font partie d’un enseignement réalisé à l’Institut de Mathématiques Ap-
pliquées, Angers, durant les années universitaires 2004/2005 et 2005/2006.
Ce document doit énormément au cours tel qu’il a été dispensé par Yvon L’Hospitalier à l’IMA
au cours de l’année 1991/1992 et a bénéficié des sources d’informations suivantes (en dehors
des références bibliographiques reportées en fin de document) :
– Le Petit Larousse, grand format 1992 ;
– Le Robert Brio, 2004 ;
– http ://www.webencyclo.com ;
– http ://www.evene.fr ;
– http ://www.lofs.ucl.ac.be/log/LogNuls/LogNuls1.html ;
– http ://mathworld.wolfram.com/Zermelo-FraenkelAxioms.html ;
– http ://www.bibmath.net/ ;
– http ://www.slav.uni-sofia.bg/~niki/grammaires/gram1/gram1a.html
Merci à Guillaume Rochart, à l’époque doctorant à l’école des Mines de Nantes, pour sa
relecture attentive d’une première version de ce document.
Né en 1973, Narendra Jussien est titulaire d’un doctorat en informatique de l’université de Rennes 1 depuis 1997
et d’une habilitation à diriger des recherches (HDR) depuis 2003. Il a rejoint le département informatique de
l’École des Mines de Nantes (EMN) en 1998 où il enseigne l’Informatique. Ses activités de recherche portent
sur la programmation par contraintes, sujet sur lequel il est auteur de plusieurs publications. Il a dirigé l’équipe
« contraintes » de l’EMN de 2001 à 2003 et a été responsable du thème « contraintes discrètes » du laboratoire
d’informatique de Nantes-Atlantique (LINA) en 2003. Narendra Jussien est président de l’association française
pour la programmation par contraintes (AFPC).
ii
iii
logique, [lOZik] n.f. — xiiie ; lat. logica, gr. logikê, de logos « raison ». I. Étude scien-
tifique des conditions de vérité des propositions. II. 1. Manière de raisonner.
2. Enchaı̂nement cohérent d’idées, manière de raisonner juste.
algorithme, [algOöitm] n.m. — 1554 ; lat. médiév. Al-Khawarizmi, pris pour nom com-
mun, égalt. sous la forme algorismus. Ensemble des règles opératoires qui
définissent la suite des calculs à effectuer pour obtenir la solution d’un problème.
I Logique(s) 1
II Langages et algorithmes 99
v
table des matières
6 Automates 117
6.1 Automates finis déterministes . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2 Automates finis non déterministes . . . . . . . . . . . . . . . . . . . . . . . . 122
6.3 Application : recherche dans un texte . . . . . . . . . . . . . . . . . . . . . . . 130
9 Complexité 187
9.1 Complexité des algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9.2 Complexité des problèmes : classes P et NP . . . . . . . . . . . . . . . . . . . 196
9.3 Autres classes de complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.4 Décidabilité et complexité en pratique . . . . . . . . . . . . . . . . . . . . . . 210
Bibliographie 253
Annexes 255
vi
structure et conventions
vii
module un
logique(s)
1
chapitre un
L’explication des lois de la logique a été une œuvre de longue haleine, depuis ses origines
en Grèce jusqu’à nos jours. Le critère que l’on peut retenir pour marquer la naissance de
la logique est le passage de l’implicite➲ à l’explicite➲, de l’usage implicite d’une logique à sa
formulation.
3
1 – une brève histoire de la logique
4
chapitre deux
Emmanuel Kant
5
2 – logique des propositions
C = {¬, ∧, ∨, →, ↔}
☞ exemple : (p) ∧ (q) est une formule du calcul propositionnel (elle est de la forme
➌, composée de deux formules de la forme ➊). Par contre, p ∧ q n’en est pas
une (du moins telles que nous les avons définies).
(est équivalent à). Le connecteur ∧ est aussi appelé conjonction et le connecteur ∨, disjonction.
6
aspects syntaxiques
les travaux sur les grammaires➲ génératives2 de Noam Chomsky➠. Une grammaire générative
G de type 2 se présente sous la forme :
G = {VN , VT , S, R}
où :
– VN désigne le vocabulaire non terminal, à savoir ici S. Ainsi, VN = {S} ;
– VT désigne le vocabulaire terminal. Ici, VT = {(, )} ∪ P ∪ C ;
– S est le symbole de départ ;
– R est l’ensemble des règles de la grammaire. Ici, R = RN ∪RT avec3 RN = {r | ∈ C}
où :
r¬ = (S, ¬(S))
∀ ∈ C \ {¬} r = (S, (S)(S))
et RT = {rp |p ∈ P } avec rp = (S, p).
✒ nota bene : Le vocabulaire terminal est constitué des mots du langage. Ainsi,
dans la grammaire de la langue française, {le, chat, mange, la, souris}, font-ils
partie du vocabulaire terminal alors que les mots {article, nom, groupe nominal,
groupe verbal, phrase} font plutôt partie du vocabulaire non terminal. Notons
ici, que certains mots du vocabulaire non terminal peuvent sembler faire partie
du vocabulaire terminal mais, en pratique, il est nécessaire de les distinguer.
Une grammaire de Chomsky GCP de type 2 définissant les formules du calcul proposi-
tionnel est donc :
On dit qu’un mot est correct (qu’il appartient au langage généré par une grammaire
G) si et seulement si c’est un mot sur VT (il appartient à VT∗ ) et qu’il « dérive » de S par
l’application d’un nombre fini de règles.
✒ nota bene : VT∗ représente toutes les combinaisons possibles d’un nombre
quelconque (éventuellement nul) d’éléments de VT . On les appelle les « mots »
sur VT .
7
2 – logique des propositions
☞ exemple : (p) ∧ (q) est correct dans GCP car c’est bien un mot sur VT (il est
constitué d’éléments de VT juxtaposés) et qu’il peut être obtenu à partir de
S en appliquant successivement les règles r∧ , rp et rq . On note :
r
∧ rp rq
S =⇒ (S) ∧ (S) =⇒ (p) ∧ (S) =⇒ (p) ∧ (q)
➽ exercice 2 : Montrer que ((p) ∧ (q)) → (r) est correct pour GCP .
L’ensemble des mots corrects dans une grammaire G est appelé langage engendré par
G. Il est noté L(G). Par définition, F = L(GCP ).
où :
– VN = { <proposition>, <implication>, <terme>, <facteur>, <proposition secondaire>,
<proposition primaire>}
– VT est inchangé
– R est donné sous la forme BNF suivante :
<prop.> ::= <impl.> | <prop.> ↔ <impl.>
<impl.> ::= <terme> | <implication> → <terme>
<terme> ::= <fact.> | <terme> ∨ <fact.>
<fact.> ::= <prop. sec.> | <fact.> ∧ <prop. sec.>
<prop. sec.> ::= <prop. prim.> | ¬ <prop. prim.>
<prop. prim.> ::= (<prop.>) | p (avec p ∈ P )
8
aspects syntaxiques
où :
– VT′ = P ∪ C ;
– S est le symbole de départ ;
′ ′
– RN = {r | ∈ C} où :
′
r¬ = (S, S¬)
′
∀ ∈ C \ {¬} r = (S, SS)
9
2 – logique des propositions
Notation préfixée
On définit la grammaire de Chomsky de type 2 suivante :
où :
– S est le symbole de départ ;
′′ ′′
– RN = {r | ∈ C} où :
′′
r¬ = (S, ¬S)
′′
∀ ∈ C \ {¬} r = (S, SS)
r¬ ,r→ ,r∧
☞ exemple : Soit F = ¬(p ∧ q → r) formule de F . On a S =⇒ F . La
formule correspondante F ′ de F ′ s’obtient alors par la séquence r¬
′ ′
, r→ ′
, r∧ .
′
On a alors directement F = pq ∧ r → ¬. Notons ici qu’aucun séparateur
n’est nécessaire.
✒ nota bene : On peut définir de la même façon des correspondances entre les
règles de GCP et G′′CP ainsi que les correspondances inverses permettant de
réaliser toutes les traductions de formules.
10
aspects sémantiques
2.2.1 Définitions
À chaque connecteur logique c (c ∈ C), on associe un opérateur c. Ainsi, au connecteur
¬ est associé l’opérateur unaire ¬ de {, } dans {, } tel que ¬() = et ¬() = .
Les opérateurs binaires (∧, ∨, →, ↔) sont donnés par les tableaux4 de la figure 2.1.
4 La lecture se fait de la gauche vers la droite pour les opérateurs non commutatifs.
11
2 – logique des propositions
∧ ∨ → ↔
✒ nota bene : Par la suite, nous noterons δ au lieu de δ lorsqu’il n’y aura pas
d’ambiguı̈té possible.
Une autre représentation des opérateurs binaires correspondant aux connecteurs de GCP
se fait par table de vérité comme dans la figure 2.2. Chaque ligne de la table de vérité
correspond alors à une interprétation ou valeur de vérité. On peut ainsi écrire une table de
vérité pour une formule.
12
aspects sémantiques
p q r ¬p ¬p → q q↔r (¬p → q) ∧ (q ↔ r)
p ¬p p ∧ ¬p
Une formule F est une tautologie➲ (on note ⊢ F ) si et seulement si elle est toujours
vraie : ∀δ, δ(F ) = . On note T l’ensemble des tautologies. On a : T ⊂ F ⊂ VT∗ .
13
2 – logique des propositions
p ¬p p ∨ ¬p
p q ¬p p→q ¬p ∨ q
14
aspects sémantiques
– ⊢ (F ∨ ) ↔ F et ⊢ (F ∧ ) ↔ F éléments neutres
– ⊢ (F ∨ ) ↔ et ⊢ (F ∧ ) ↔ éléments absorbants
– ⊢ (F ∨ ¬F ) ↔ tiers exclu
– ⊢ (F ∧ ¬F ) ↔ non contradiction
– ⊢ ¬(¬F ) ↔ F double négation
– ⊢ ¬(F ∨ G) ↔ (¬F ∧ ¬G) loi de De Morgan➠
– ⊢ ¬(F ∧ G) ↔ (¬F ∨ ¬G) autre loi de De Morgan
– ⊢ (F → (G → H)) ↔ ((F ∧ G) → H) simplification
Théorème 1
Soit δ ∈ {, }P . Considérons δ ′ ∈ {, }P défini par : ∀p ∈ P, δ ′ (p) =
δ(f (p)) alors :
δ′ = δ ◦ f
Il est possible de démontrer ce résultat par récurrence (forte) sur la longueur (nombre
de constituants) des formules.
➊ si |F | = 1, on a F ∈ P et on a clairement le résultat
➋ supposons le résultat établi pour toute formule de longueur au plus égale à n et soit
F de longueur n + 1. On a alors deux cas possibles :
➀ F = ¬(H) avec H ∈ F et |H| = n − 2. On a alors les égalités suivantes :
δ ′ (F ) = ¬(δ ′ (H)) = ¬(δ(f (H))) = δ(¬(f (H))) = δ(f (¬(H))) = δ(f (F ))
15
2 – logique des propositions
Corollaire 1
T est stable pour tout morphisme de substitution, c’est-à-dire :
∀f, f (T ) = T
Corollaire 2
Soient deux morphismes de substitutions f1 et f2 tels que ∀p ∈ P, ⊢ f1 (p) ↔
f2 (p). Alors, on a :
∀F ∈ F, ⊢ f1 (F ) ↔ f2 (F )
16
aspects sémantiques
Une formule sera notée F (p1 , p2 , . . . , pn ) si et seulement si les seules variables proposi-
tionnelles ayant des occurences5 dans F sont prises dans {p1 , p2 , . . . , pn }, c’est-à-dire :
∗
F ∈ ({p1 , p2 , . . . , pn } ∪ C ∪ {(, )})
À toute formule F telle que l’on ait F (p1 , p2 , . . . , pn ), on associe la fonction booléenne
n-aire F telle que pour δ ∈ {, }P vérifiant ∀i ∈]n], δ(pi ) = xi , on ait :
⊢ F ↔ G si et seulement si F =G
Théorème 2
Toute fonction booléenne peut être représentée par une formule.
17
2 – logique des propositions
Nous allons prouver le résultat par récurrence sur l’ordre de la fonction booléenne.
➊ n = 1 ; il existe 4 fonctions booléennes d’une variable. Elle sont rappelées dans le
tableau6 de la figure 2.7. Pour i ∈ [3], ϕi est représenté par Fi avec F0 = p ∧ ¬p,
F1 = p, F2 = ¬p et F3 = p ∨ ¬p.
➋ supposons le résultat établi jusqu’à l’ordre n et soit ϕ une fonction booléenne (n + 1)-
aire. À partir de ϕ, on définit deux fonctions booléennes n-aires en posant, pour
(x1 , . . . , xn ) ∈ {, }n :
ϕ′ (x1 , . . . , xn ) = ϕ(x1 , . . . , xn , )
ϕ′′ (x1 , . . . , xn ) = ϕ(x1 , . . . , xn , )
ϕ0 ϕ1 ϕ2 ϕ3
18
aspects sémantiques
Théorème 3
{¬, ∨} est un système complet de connecteurs.
Corollaire 1
Les systèmes suivants sont des systèmes complets de connecteurs :
19
2 – logique des propositions
p q p↑q p↓q
Fig. 2.8 — Tables de vérité des opérateurs nand (↑) et nor (↓)
Formes normales
Les éléments de P , ensemble des variables propositionnelles, sont appelés littéraux
positifs. Les éléments de P¬ , ensemble des négations des variables propositionnelles (P¬ =
{¬p|p ∈ P }), sont appelés littéraux négatifs.
➲ normaliser Une formule F est dite sous forme normale disjonctive si et seulement si :
➲ disjonction _
F = Hi et ∀i ∈]k], Hi ∈ (P ∪ P¬ ∪ {∧, (, )})+
i∈]k]
✒ nota bene : V + représente toutes les combinaisons possibles d’un nombre quel-
conque (nécessairement non nul) d’éléments de V . Hi est alors une conjonc-
tion de littéraux et F une disjonction de conjonctions (un ∨ de ∧).
Si, de plus, dans chaque Hi figurent toutes les variables ou leur négation, on parle alors
de forme canonique.
20
aspects sémantiques
☞ exemple : (p∧q)∨(p∧r) est une formule sous forme normale disjonctive mais elle
n’est pas sous forme canonique. Par contre, (p∧q∧r)∨(p∧q∧¬r)∨(p∧¬q∧r)
est une formule sous forme normale disjonctive canonique.
➽ exercice 18 : Montrer que les deux formules de l’exemple précédent sont tau-
tologiquement équivalentes.
✒ nota bene : Hi est alors une disjonction de littéraux (ou clause) et F une
conjonction de clauses (un ∧ de ∨).
Théorème 4
Toute formule du calcul propositionnel est équivalente à une formule sous
forme normale disjonctive.
21
2 – logique des propositions
Corollaire 1
Toute formule du calcul propositionnel est équivalente à une formule sous
forme normale conjonctive
22
aspects sémantiques
Le diagramme de Karnaugh est aussi utile pour calculer les formes normales disjonctives
et conjonctives. Ainsi, à partir du diagramme de Karnaugh de la formule (p ∧ q) ↔ r donné
par la figure 2.9, on peut, en regardant les conditions d’obtention d’un , donner tout
simplement une forme normale disjonctive canonique.
Une telle formule peut être simplifiée. Ainsi, dans l’exemple précédent, (¬p ∧ ¬q ∧ ¬r) ∨
(¬p∧q∧¬r) est équivalente (en factorisant) à (¬p∧¬r)∧(¬q∨q) ce qui s’écrit aussi (¬p∧¬r).
Le diagramme de Karnaugh peut aider à faire de telles simplifications. En effet, les deux
formules que nous avons simplifiées correspondent à des cases contiguës du diagramme. On
peut généraliser ce résultat à des groupes de 4, 8, . . ., 2n cases contiguës7 ayant même
valeurs.
7 On n’oubliera pas dans ce processus que le diagramme de Karnaugh est un tore multidimensionnel,
c’est-à-dire que deux cases non contiguës physiquement peuvent l’être logiquement.
23
2 – logique des propositions
☞ exemple : Pour tout ensemble E, P(E), l’ensemble des parties de E est une
algèbre de Boole, avec ⊕ = ∪, ⊗ = ∩, ⊥ = ∅, ⊤ = E et la complémentation
est l’opération usuelle sur les ensembles (c’est-à-dire ∁E ).
24
aspects algébriques
Théorème 5
⊕ et ⊗ sont idempotentes :
a⊕a=a a⊗a=a
Théorème 6
⊤ et ⊥, neutres pour, respectivement, ⊗ et ⊕ sont absorbants pour, respec-
tivement, ⊕ et ⊗ :
a⊕⊤=⊤ a⊗⊥=⊥
Théorème 7
Les lois de de Morgan s’appliquent :
a⊕b=a⊗b a⊗b=a⊕b
Théorème 8
Les lois suivantes (dite d’absorption) sont vérifiées :
a ⊕ (a ⊗ b) = a a ⊗ (a ⊕ b) = a
25
2 – logique des propositions
On peut aussi définir une algèbre de Boole à partir d’un ensemble A ordonné par la
relation ∝ tel que tout sous-ensemble à deux éléments {x, y} a une borne supérieure notée
sup(x, y) et une borne inférieure notée inf(x, y). En effet, en posant x ⊕ y = inf(x, y) et
x ⊗ y = sup(x, y), on obtient les conditions précisées ci-dessus en s’assurant de plus que
A possède un plus grand élément (noté ⊤) et un plus petit élément (noté ⊥) et que tout
élément possède un complément x qui vérifie : sup(x, x) = ⊤ et inf(x, x) = ⊥.
➽ exercice 30 : Montrer que dans un anneau de Boole, tout élément est son propre
symétrique pour la loi 6.
26
aspects algébriques
Théorème 9
Tout anneau de Boole est un treillis de Boole
Théorème 10
Tout treillis de Boole est un anneau de Boole.
De même, pour tout ensemble E, l’ensemble des applications de E dans {, } noté
{, }E est une algèbre de Boole. On posera (f ⊗ g)(x) = f (x) ∧ g(x), (f ⊕ g)(x) =
f (x) ∨ g(x).
27
2 – logique des propositions
✒ nota bene : On notera les liens étroits entre les opérations ⊕ (resp. ⊗, 6), ∪
(resp. ∩, △) et ∨ (resp. ∧, xor).
F1 ≡ F2 ssi ⊢ F1 ↔ F2
☞ exemple :
p\
→ q = {p → q, ¬p ∨ q, ¬q ∨ ¬p, . . .}
On établit que F/≡ muni de la relation d’ordre ∝ définie par : H ∝ K ssi ⊢ H → K est
une algèbre de Boole avec :
– Hb ⊗K b =H \ ∧K
– Hb ⊕K b =H \ ∨K
– Hb = ¬Hd
ˆ
– ⊤ = = T l’ensemble des tautologies
– ⊥= ˆ = T¬ l’ensemble des antilogies
Théorème 12
F/≡ ne peut être isomorphe à l’anneau de Boole des parties d’un ensemble
E
En effet, supposons qu’il existe un isomorphisme f de P(E) dans F/≡ . Soit a ∈ E, alors
f ({a}) = (Fd) avec F = F (p1 , . . . , pn ). Comme a 6= ∅ (ce n’est pas le plus petit élément de
P(E), on a : Fb 6= . ˆ Donc, en posant G = F ∧ pn+1 , on a G b 6= .
ˆ Comme ⊢ G → F (par
définition de G), on a : Gb ∝ Fb avec G 6= F . L’isomorphisme f donne : f −1 (G) b ( f −1 (Fb)
b ( {a}. D’où : f −1 (G)
c’est-à-dire f −1 (G) b = ∅ c’est-à-dire G
b= ˆ ce qui est contradictoire.
28
aspects déductifs
Théorème 13
F/≡ est isomorphe à un anneau de parties de l’ensemble E = {, }P ,
c’est-à-dire un sous-ensemble non vide de E stable pour la complémentation
et l’union.
Théorème 14
A ⊢ G si et seulement si ⊢ (F1 ∧ . . . ∧ Fn ) → G.
29
2 – logique des propositions
Théorème 15
A ⊢ G si et seulement si F1 ∧ . . . ∧ Fn ∧ ¬G est inconsistante.
Une démonstration➲ (ou une déduction) dans un système formel S est une suite
d’énoncés A1 , . . . , An telle que tout énoncé Ai est un axiome de S ou une conséquence
des énoncés précédents par l’application de l’une des règles d’inférence. Un théorème➲ de
S est le dernier énoncé d’une démonstration de S.
30
aspects déductifs
✒ nota bene : Les règles d’inférence sont utilisées de manière automatique dans
les démonstrations. Il faut bien distinguer les preuves faites jusqu’à présent
(notion de conséquence logique) et les démonstrations qui ont un caractère
plus automatique (voire « aveugle »).
✒ nota bene : Un système formel peut ne pas être décidable. C’est le cas du
calcul des prédicats, par exemple, comme nous le verrons dans le chapitre 3
au paragraphe 3.3.4 page 70.
Soit J un ensemble de formules. Un énoncé A est dit déductible8 sous les hypothèses
J , ce qui est noté J |= A si et seulement s’il existe une suite finie d’énoncés A1 , . . . , An
telle que :
➊ An = A
➋ ∀i ∈]n], Ai est un axiome ; Ai ∈ J ; ou Ai découle d’énoncés précédents par l’utilisation
d’une des règles d’inférence.
Les règles d’inférence couramment utilisées que sont le modus ponens, le modus tollens
et le syllogisme peuvent s’écrire :
– modus ponens : p → q, p |= q
– modus tollens : p → q, ¬q |= ¬p
– syllogisme : p → q, q → r |= p → r
➽ exercice 38 : Montrer que pour ces règles, on peut remplacer |= par ⊢. Que
cela signifie-t-il ?
31
2 – logique des propositions
➽ exercice 41 : Montrer que les trois schémas d’axiomes proposés sont des tau-
tologies.
La seule règle de déduction utilisée dans ce système formel est le modus ponens (noté
mp dans les démonstrations) :
A, A → B |= B
Proposition 1
|= A → A
32
aspects déductifs
Proposition 2
si A1 , . . . , An−1 |= An → B alors A1 , . . . , An |= B
si A1 , . . . , An |= B alors A1 , . . . , An−1 |= An → B
A1 , . . . An−1 |= An → (C → B) (2.1)
et
A1 , . . . An−1 |= An → C (2.2)
33
2 – logique des propositions
L’application du modus ponens sur les équations 2.1 et 2.3 donne alors :
L’application du modus ponens sur les équations 2.2 et 2.4 donne alors :
A1 , . . . , An−1 |= An → B
Corollaire 1
|= A → B si et seulement si A |= B
✒ nota bene : Ce corollaire permet de faire un lien fort entre « implication » (au
sens logique : connecteur →) et « démonstration » (|=).
Proposition 4
On peut démontrer les résultats suivants :
➊ |= (A → B) → ((B → C) → (A → C))
➋ |= B → ((B → C) → C)
➌ |= ¬B → (B → C)
➍ |= ¬¬B → B
➎ |= B → ¬¬B
➏ |= (A → B) → (¬B → ¬A)
➐ |= B → (¬C → ¬(B → C))
➑ |= (B → A) → ((¬B → A) → A)
34
aspects déductifs
si |= A alors ⊢A
✒ nota bene : Ce théorème peut aussi se lire : tout ce qui est démontrable est vrai.
Il montre que le calcul propositionnel (dans le système formel que l’on s’est
donné) est correct : on ne peut démontrer des choses fausses. Ce théorème
est facilement démontrable en raisonnant de la même manière que pour la
preuve de la proposition 3.
si ⊢ A alors |= A
✒ nota bene : Ce théorème peut aussi se lire : tout ce qui est vrai est démontrable.
Il montre que le calcul propositionnel (dans le système formel que l’on s’est
donné) est complet. Il est démontré dans [Delahaye, 1986].
|=≡⊢ (2.5)
Théorème 18
Le calcul propositionnel est décidable.
35
2 – logique des propositions
on cherche à savoir s’il s’agit d’un théorème, de tester la valeur de δ(F ) pour toutes les
interprétations δ possibles (il y a en a 2n ). Cette méthode nous donne bien un algorithme
pour démontrer que F est un théorème. C’est la définition de la décidabilité d’un système
formel (voir page 31).
Soit le système formel R dont l’alphabet est V = {¬, ∨} ∪ P , FR l’ensemble des clauses
sur V , AR = ∅ et la seule règle d’inférence est le principe de résolution. Dans R, une
démonstration est une résolution. Une résolution est dite linéaire si et seulement si à
chaque étape, Ci+1 est obtenue par résolution à partir de Ci et d’une autre clause. L’ordre
de prise en compte des clauses dans le cadre d’une résolution s’appelle une stratégie.
36
aspects déductifs
✒ nota bene : La proposition précédente est une conséquence directe du théorème 15.
Proposition 8
✒ nota bene : Les deux dernières propositions permettent de faire le lien entre la
sémantique des formules du calcul propositionnel et une opération mécanique
de démonstration basée sur une règle simple : le principe de résolution. Il
s’agit là d’un ensemble d’outils remarquables nous permettant d’automatiser
les démonstrations de satisfiabilité des formules du calcul propositionnel.
{P → S, S → T, P } ⊢ T
37
2 – logique des propositions
1: H ¬P ∨ S
2: H ¬S ∨ T
3: H P
4: reso 1 · 3 S
5: reso 2 · 4 T
Une autre démonstration (linéaire) est :
1: H ¬P ∨ S
2: H ¬S ∨ T
3: reso 1 · 2 ¬P ∨ T
4: H P
5: reso 3 · 4 T
Enfin, on peut utiliser la résolution (linéaire) avec réfutation. On cherche alors
à montrer :
{¬P ∨ S, ¬S ∨ T, P, ¬T } ⊢
1: H ¬T (on part toujours de la négation de la conclusion)
2: H ¬S ∨ T
3: reso 1 · 2 ¬S
4: H ¬P ∨ S
5: reso 3 · 4 ¬P
6: H P
7: reso 5 · 6
➽ exercice 45 : Montrer que modus ponens, modus tollens et syllogisme sont des
cas particuliers du principe de résolution.
✒ nota bene : La notion de contraposition n’a plus de sens lorsqu’on travaille sous
forme clausale. En effet, p → q et ¬q → ¬p sont représentés par la même
clause : ¬p ∨ q.
38
la théorie des nombres typographiques
11 Sx est le « successeur » de x.
12 ∀ et ∃ sont appelés des quantificateurs. Les propriétés des quantificateurs sont introduites plus
précisément dans le chapitre suivant.
39
2 – logique des propositions
40
la théorie des nombres typographiques
41
chapitre trois
Albert Camus
Le mythe de Sisyphe
43
3 – logique du premier ordre
– ces langages permettent de représenter non seulement des relations, mais aussi des
fonctions.
Enfin, l’expression premier ordre désigne ces langages, qui sont les plus utilisés, de
ceux d’ordre supérieur, comme du second ordre, dans lesquels il est possible de quanti-
fier également les relations et les fonctions. L’étude du calcul du premier ordre (calcul des
prédicats➲) suit la même progression que celle du calcul propositionnel. Les premières sec-
tions concernent la définition du langages et la construction des formules, puis la sémantique
est présentée en termes de structures et d’interprétation des formules dans les structures. En-
fin, les aspects déductifs sont traités avec toujours pour objectif un souci de démonstration
automatique.
« tel que ». On pourra se reporter au paragraphe 3.1.5 pour plus d’informations relatives à l’écriture de
formules avec quantificateurs.
44
aspects syntaxiques
✒ nota bene : Un terme ne possède pas de valeur de vérité, il s’agit juste d’un
nom. Par contre, un atome en possède une, il peut être vrai ou faux.
Les formules du calcul des prédicats du premier ordre sont définies récursivement comme
suit :
➊ un atome est une formule
➋ si F et G sont des formules, alors ¬(F ), (F ) ∧ (G), (F ) ∨ (G), (F ) → (G) et (F ) ↔ (G)
sont des formules.
➌ si F est une formule et x une variable, alors ∀x(F ) et ∃x(F ) sont des formules
➍ toute formule est générée par un nombre fini d’application des règles ➊, ➋ et ➌.
☞ exemple :
∀x∃y (R(x, f (a, y), z) → ¬T (g(b), z))
– x, y et z sont des variables
– a et b sont des constantes
– f (a, y) et g(b) sont des termes
– R(x, f (a, y), z) et T (g(b), z) sont des atomes
– ¬T (g(b), z) est une formule
– R(x, f (a, y), z) → ¬T (g(b), z) est une formule
– ∃y (R(x, f (a, y), z) → ¬T (g(b), z)) est une formule
– ∀x∃y (R(x, f (a, y), z) → ¬T (g(b), z)) est une formule
✒ nota bene : Le langage courant n’étant pas toujours très précis, on notera les
modélisations correctes d’expressions courantes :
tous les A sont B 7→ ∀x, A(x) → B(x)
seuls les A sont B 7→ ∀x, B(x) → A(x)
aucun A n’est B 7→ ∀x, A(x) → ¬(B(x))
quelques A sont B 7→ ∃x, A(x) ∧ B(x)
45
3 – logique du premier ordre
Soient F une formule bien formée, x une variable et t un terme. t est substituable
à x (libre pour x) si et seulement si aucune occurrence libre de x dans F ne devient une
occurrence liée dans F [t/x]. Dans le cas contraire, il faut renommer les variables liées de la
proposition ou les variables du terme pour pouvoir effectuer la substitution.
46
aspects sémantiques
Attention, ici le y de la deuxième formule n’a bien sûr rien à voir avec le y de
la première.
47
3 – logique du premier ordre
– une interprétation des prédicats : une application Ip qui, à tout prédicat P d’arité n
et à tout n-uplet de valeurs de D, associe une valeur dans {, }.
Comme en calcul propositionnel, les formules ont une valeur de vérité qui dépend de l’in-
terprétation choisie. Pour une interprétation I donnée, on appelle valuation v des variables
relatives à I, toute application de l’ensemble des variables dans D. Pour une valuation v
donnée, l’interprétation d’une formule non close est obtenue en substituant aux variables
libres leurs valeurs dans D (on dit aussi en assignant aux variables des valeurs). Puis, de
façon inductive, on calcule la valeur des termes dans D en commençant par les termes in-
clus. L’interprétation des prédicats est réalisée lorsque celle des termes qui les composent est
achevée. Enfin, la valeur de vérité de la formule est calculée à partir de celles des formules
atomiques :
– la valeur de vérité d’un atome est la valeur de vérité du prédicat
– la valeur de vérité d’une formule non atomique, construite à partir de formules ato-
miques valuées, est calculée au moyen des tables de vérité des connecteurs du calcul
propositionnel données au paragraphe 2.2.1 page 11.
48
aspects sémantiques
– la valeur de vérité des formules contenant des variables quantifiées est calculée ainsi :
– ∃x(ϕ) a pour valeur s’il existe une valuation v ′ qui coı̈ncide avec v sauf en x et
qui assigne d ∈ D à x, telle que l’interprétation de ϕ[d/x] soit . Sinon, ∃x(ϕ) a
pour valeur .
– ∀x(ϕ) a pour valeur si pour toute valuation v ′ qui coı̈ncide avec v sauf en x et
qui assigne d ∈ D à x, l’interprétation de ϕ[d/x] est . Sinon, ∀x(ϕ) a pour valeur
.
Une formule F est dite valide si et seulement si il existe une interprétation I telle que
pour toute valuation, F soit vraie. I est un modèle de F .
3 On peut se passer des valuations en ne considérant que des formules closes ou leur clôture. La clôture
49
3 – logique du premier ordre
50
aspects sémantiques
✒ nota bene : Il existe d’autres signes mutificateurs (la variable muette est
représentée par ) :
Z b
\ X
f : 7→ f (x) . . . d { ∈ I| . . .}
∈I ∈I a
Les quantificateurs ∀ et ∃ sont duaux l’un de l’autre. Ainsi, pour toute formule F , on
a:
51
3 – logique du premier ordre
Théorème 20
Toute formule du calcul des prédicats est équivalente à une formule sous
forme prénexe.
Nous allons montrer ce résultat par récurrence sur le nombre n de symboles de connec-
teurs et quantificateurs.
➊ n = 0, alors F est une formule atomique déjà sous forme prénexe
52
aspects sémantiques
✒ nota bene : Les étapes de mise sous forme prénexe d’une formule quelconque
sont les suivantes :
➊ Éliminer les connecteurs → et ↔ (on utilisera pour cela les équivalences
tautologiques présentées page 14).
➋ Transporter les symboles de négation devant les formules atomiques (on
utilisera les lois de de Morgan – rappelées page 14, les propriétés de la
double négation et les équations 3.1 et 3.2).
➌ Renommer si nécessaire les variables pour pouvoir appliquer les équations
3.5 à 3.10.
➍ Transporter les quantificateurs devant la formule de façon à obtenir
la forme prénexe. On utilisera pour cela les propriétés des opérateurs
présentées ci-dessus.
☞ exemple : Soit la formule ∀xP (x) → ∃xP (x). Cette formule est équivalente à
∃x(¬P (x) ∨ P (x)) qui est sous forme prénexe.
53
3 – logique du premier ordre
Forme de Skolem
Une formule F sous forme prénexe est dite sous forme de Skolem➠ si et seulement
si les quantificateurs existentiels précèdent les quantificateurs universels, c’est-à-dire, si et
seulement si F s’écrit :
∃xi . . . ∃xn ∀y1 . . . ∀ym A(x1 , . . . , xn , y1 , . . . , ym , z1 , . . . , zp )
où A est un énoncé sans quantificateur.
Théorème 21
Toute formule du calcul des prédicats est équivalente à une formule sous
forme de Skolem.
54
aspects sémantiques
Une formule sous forme de Skolem est dite sous forme standard de Skolem si et
seulement si la partie sans quantificateurs est sous forme normale conjonctive.
Théorème 22
Toute formule du calcul des prédicats est équivalente à une formule sous
forme standard de Skolem.
✒ nota bene : Une formule F sous forme prénexe est dite sous forme de Her-
brand➠ si et seulement si tous les quantificateurs universels précédent les
quantificateurs existentiels c’est-à-dire que F s’écrit (A est un énoncé sans
quantificateur) :
55
3 – logique du premier ordre
Forme clausale
Les littéraux dans le calcul des prédicats sont les formules atomiques ou atomes (ap-
pelés littéraux positifs) ou leurs négations (appelées littéraux négatifs). Une clause est
une disjonction finie de littéraux. La forme clausale d’une formule est la conjonction des
clauses associées ou l’ensemble des clauses associées à cette formule.
Plus précisément, la forme clausale d’une formule F est constituée de l’ensemble des
clauses de la forme standard de Skolem de cette formule où :
➊ les variables quantifiées universellement sont conservées et les fonctions (y compris les
fonctions de Skolem) ne sont pas modifiées
➋ les variables quantifiées existentiellement sont remplacées par des constantes (toutes
différentes)
➌ les variables sont renommées d’une clause à l’autre
∃f ∃g∀x((¬P (x, f (x)) ∨ R(x, f (x), g(x))) ∧ (Q(x, g(x)) ∨ R(x, f (x), g(x))))
∀x∃yp(x, y) → ∃y∀xp(x, y)
56
aspects déductifs
57
3 – logique du premier ordre
58
aspects déductifs
✒ nota bene : Il faut savoir que la théorie ZF n’est pas axiomatisée de façon finie.
En effet, l’axiome de remplacement n’est pas un seul axiome mais plutôt
une famille infinie d’axiomes. Montague en 1961 a montré qu’il n’existe pas
d’ensemble fini d’axiomes logiquement équivalent à l’ensemble infinis de la
théorie ZF.
On peut fournir un modèle simple (dit modèle de Schwartz➠) pour le système ➊–➍
augmenté de l’axiome ➐ (axiomes de l’exemple précédent). Les objets que l’on manipule
sont les entiers naturels. On s’intéresse à leur développement « dyadique » (c’est-à-dire leur
développement en puissances de 2). Ainsi, le développement dyadique de 7 est 22 + 21 + 20
car 7 = 23 + 21 + 20 . Les exposants sont alors les éléments de l’ensemble considéré. Ainsi,
7 = {0, 1, 2}.
Considérons l’ensemble {1, 2} = 6. On définit la paire (a, b) par l’ensemble {{a}, {a, b}}.
Ainsi, on a (1, 2) = {{1}, {1, 2}} = {2, 6} = 68.
59
3 – logique du premier ordre
☞ exemple :
On définit un triplet (a, b, f ) par la paire (a, (b, f )). Un triplet peut être considéré comme
une application : a est l’ensemble de départ, b est l’ensemble d’arrivée et f représente les
associations de valeurs pour l’application sous forme de paires.
60
aspects déductifs
Définitions
Soit C un ensemble de clauses. Considérons H0 ensemble des symboles de constantes
ayant au moins4 une occurrence dans C. On définit Hi ensemble de termes clos de C de
niveau i par : [
Hi = Hi−1 ∪ {f (t1 , . . . , tn )}
f/n ,tj ∈Hi−1
H0 = {a}
H1 = H0 ∪ {f (a)} = {a, f (a)}
..
.
Hi = {a, . . . , f i−1 (a)} ∪ {f (a), f (f (a)), . . . , f i (a)} = {f j (a)|j ∈ [i]}
61
3 – logique du premier ordre
Théorème de Herbrand
➽ exercice 78 : Montrer que C = {¬P (x) ∨ Q(f (x)), P (g(b)), ¬Q(y, z)} est
insatisfiable.
Corollaire 1
Un ensemble C de clauses est satisfiable si et seulement si tout ensemble fini
de réalisations de base est satisfiable.
62
aspects déductifs
Applications
Le théorème de Herbrand trouve une application directe dans la preuve qu’une for-
mule est universellement valide. En effet, pour cela, il faut prouver que sa négation est
insatisfiable (on applique alors le principe de réfutation – théorème 15 page 30).
est universellement valide. Supposons qu’elle ne le soit pas. Il existe alors une
interprétation I et une valuation telle que la négation soit vraie. On a :
63
3 – logique du premier ordre
L’ensemble C ′ = {¬p(a) ∨ p(b), p(a) ∨ q(a), ¬q(a), ¬p(b)} est insatisfiable (on
a pris x1 = x2 = a, y = b), validant ainsi le raisonnement.
64
aspects déductifs
Par contre, on voit tout de suite qu’en substituant f (a) à x1 dans C1 et a à x2 dans
C2 , on obtient les instances de bases C1′ = P (f (a)) ∨ Q(f (a)) et C2′ = ¬P (f (a)) ∨ R(a) qui
donnent par résolution Q(f (a)) ∨ R(a).
Plus généralement, en substituant f (x1 ) à x1 dans C1 et x1 à x2 dans C2 , on obtient la
résolvante Q(f (x1 )) ∨ R(x1 ), qui est plus « générale » que celle obtenue précédemment.
Substitution, unification
Une substitution est un ensemble fini de la forme {t1 /v1 , . . . , tn /vn } où les vi sont des ➲ substituer
variables, chaque ti est un terme différent de vi et les variables ont au plus une occurrence
à droite des « / ».
☞ exemple : {a/x, f (a)/y, g(f (b))/z} que l’on lira « a remplace x, f (a) remplace
y et g(f (b)) remplace z ».
☞ exemple : θ = {f (y)/x, z/y} et λ = {a/x, b/y, y/z} donnent {f (b)/x, y/y, a/x, b/y, y/z}.
θ ◦ λ est donc {f (b)/x, y/z}
Eθ = P (f (y), z, z)
θ λ
E = P (x, y, z) Eθ ◦ λ = P (f (b), y, y)
θ◦λ
Une substitution θ est appelée unificateur d’un ensemble {E1 , . . . , Ek } si et seulement ➲ unifier
si E1 θ = . . . = Ek θ. L’ensemble {E1 , . . . , Ek } est dit unifiable.
65
3 – logique du premier ordre
☞ exemple : L’unificateur minimal de {P (a, x), P (a, f (y))} est ainsi σ = {f (y)/x}.
66
aspects déductifs
Algorithme d’unification
[Chang et Lee, 1973] propose une première version de l’algorithme d’unification :
[Genesereth et Nilsson, 1986] en propose une version récursive. Dans cette version, in-
formelle, on cherche à unifier deux expressions représentées sous forme de listes. Ainsi, le
littéral P (x, F (a, y)) est noté (P x(F ay)).
67
3 – logique du premier ordre
Nous allons commencer par formaliser l’ensemble des propositions. On considère les
prédicats suivants : av(x) pour « x est avare » ; al(x) pour « x est altruiste » ; coq(x) pour
« x conserve les coquilles d’œufs ».
Une formalisation du raisonnement précédent est donc :
➊ ∀x(av(x) → ¬al(x))
➋ ∀x(coq(x) → av(x))
➌ ∀x(al(x) → ¬coq(x))
La mise sous forme clausale de ce raisonnement (l’expression ➍ est la négation de l’ex-
pression ➌) donne :
➊ {¬av(x1 ) ∨ ¬al(x1 )}
➋ {¬coq(x2 ) ∨ av(x2 )}
➌ {¬al(x3 ) ∨ ¬coq(x3 )}
➍ {al(a), coq(a)}
68
aspects déductifs
1: ➍ al(a)
2: ➊ ¬av(x1 ) ∨ ¬al(x1 )
3: subst ¬av(a) ∨ ¬al(a) (unif {al(x1 ), al(a)} = {a/x1 })
4: reso 1 · 3 ¬av(a)
5: ➋ ¬coq(x2 ) ∨ av(x2 )
6: subst ¬coq(a) ∨ av(a) (unif {av(x2 ), av(a)} = {a/x2 })
7: reso 4 · 6 ¬coq(a)
8: ➍ coq(a)
9: reso 7 · 8
On a ainsi identifié un ensemble d’instances de base insatisfiable : {al(a), ¬av(a) ∨
¬al(a), ¬coq(a) ∨ av(a), coq(a)}. Celui-ci nous permet, en appliquant le théorème de Her-
brand, de montrer que le raisonnement est valide.
Une autre façon de prouver ce résultat est de faire un raisonnement par résolution
sans réfutation. Dans ce cas-là, le but est d’atteindre la conclusion par résolution à partir
des simples hypothèses. Ici, nous allons, à partir des expressions ➊ et ➋, tenter d’obtenir
l’expression ➌.
1: ➊ ¬av(x1 ) ∨ ¬al(x1 )
2: ➋ ¬coq(x2 ) ∨ av(x2 )
3: subst ¬coq(x1 ) ∨ av(x1 ) (unif {av(x1 ), av(x2 )} = {x1 /x2 })
4: reso 1 · 3 ¬al(x1 ) ∨ ¬coq(x1 )
5: subst ¬al(x3 ) ∨ ¬coq(x3 ) (substitution utilisée : {x3 /x1 })
On obtient ici exactement la conclusion que l’on cherchait à obtenir, validant ainsi le
raisonnement.
69
3 – logique du premier ordre
✒ nota bene : Le calcul des prédicats est indécidable. Il n’existe pas d’algorithme
permettant de décider à tout coup si une formule close est vraie ou fausse.
On constate dans les preuves réalisées par résolution avec ou sans réfutation que le
mécanisme d’unification permet une sorte de calcul au sein de la logique. Cette analogie avec
le calcul est à la base de l’utilisation de la logique comme langage de programmation dont
l’archétype est le langage prolog. En prolog, on se limite à un sous-ensemble décidable
du calcul des prédicats : on ne manipule que des clauses dites de Horn. Une clause de Horn
possède au plus un littéral positif. Cette limitation n’est pas restrictive en pratique rendant
prolog un langage évolué particulièrement puissant.
70
chapitre quatre
Charles Péguy
Notes sur M. Bergson
La logique classique (le calcul propositionnel ou le calcul des prédicats) est caractérisée
par son caractère binaire : tout est soit vrai, soit faux. La logique classique est aussi mono-
tone : la valeur de vérité des propositions ou des formules ne peut évoluer. Pour répondre à
ces limitations (car en réalité, tout n’est pas binaire et tout n’est pas monotone), de nouvelles
logiques ont été proposées à partir des années 1920. Certaines sont plurivalentes (plusieurs
valeurs de vérité), d’autres sont non vérifonctionnelles (leur sémantique ne dépend pas que
des valeurs immédiates des expressions) ou encore ont des données floues, etc.
Aussi, contrairement à la logique traditionnelle, les logiques non classiques peuvent
examiner la vérité et la fausseté des propositions dans leur rapport à l’action (logique
déontique➲), au temps (logique temporelle), aux faits (logique modale), à la croyance et au ➲ modalité
savoir (logique épistémique➲). Ces logiques ont donc un contenu sémantique.
On peut donner deux grandes classes de logiques non classiques :
– des extensions comme les logiques modales (dont les logiques temporelle et déontique
sont un cas particulier) ;
– des logiques rivales : logiques multivalentes et logique floue.
71
4 – logiques non classiques
Ces modalités peuvent être considérées comme des opérateurs unaires qui, une fois
appliqués à des propositions, donnent d’autres propositions. Toutefois, ils sont différents
72
logiques modales
des opérateurs logiques usuels (disjonction, conjonction, implication, . . .), qui eux sont
vérifonctionnels, c’est-à-dire que la valeur d’une proposition formée de l’un d’entre eux
ne dépend que de la valeur de ses constituants immédiats. Les opérateurs modaux, en vertu
de leur signification intuitive, ne sont pas vérifonctionnels : la connaissance de la vérité de
« p » ne suffit pas à déterminer la valeur de vérité de « p ». Par conséquent, les opérateurs
modaux ne peuvent pas être définis par les opérateurs vérifonctionnels usuels.
✒ nota bene : (M ) précise que ce qui est nécessaire doit être. Notons que (M )
serait (intuitivement) incorrect si devait être lu « cela devrait être le cas
que ... » ou « il a été le cas que ... ». L’axiome (M ) permet de distinguer la
logique (purement) modale des autres logiques modales.
73
4 – logiques non classiques
74
logiques modales
p p
w1 w3
p
w2
¬p p
w5 w4
Fig. 4.2 — Un cadre de Kripke. Les arcs indiquent la relation d’accessibilité R. Les cercles contiennent les
propositions vraies dans chacun des mondes de l’univers.
On définira les valeurs de vérité des modalités en fonction des mondes possibles de la
façon suivante :
– P est vrai si P est vrai dans tous les mondes accessibles (directement) ; il sera en
particulier vrai dans le monde « réel » qui est un des mondes possibles
– ♦P est vrai si P est vrai dans un monde accessible
– P est faux si P est faux dans un monde accessible
– ♦P est faux si P est faux dans tous les mondes accessibles
75
4 – logiques non classiques
✒ nota bene : Voici trois principes classiques non applicables à la logique déontique :
➀ le paradoxe de l’obligation dérivée : le principe du « faux implique tout »
ne s’applique pas à la logique déontique. Il est faux de dire que :
O(¬p) → O(p → q).
➁ le principe d’adjonction ne s’applique pas à la logique déontique. Il est
faux de dire que : O(p) → O(p ∨ q).
➂ contrairement à la logique modale, ou le monde actuel peut être un
monde possible, le monde actuel de la logique déontique ne peut être
un monde admissible, sinon aucune action immorale n’aurait lieu dans
le monde actuel. Il est faux de dire que : O(p) → p.
76
logiques modales
77
4 – logiques non classiques
✒ nota bene : Allen a proposé dans [Allen, 1984] une représentation à l’aide
d’intervalles (représentant un événement dans sa durée) dans le traitement
du temps. Les relations d’Allen sont :
– I précède J : I < J ⇔ ∀u ∈ I∀v ∈ J, u < v
– I touche J : ImJ ⇔ max(I) = min(J)
– I chevauche J : IoJ ⇔ min(I) < min(J) < max(I) < max(J)
– I est dans J : IdJ ⇔ I ⊂ J
– I débute J : IsJ ⇔ min(I) = min(J) ∧ max(I) < max(J)
– I termine J : IeJ ⇔ min(I) > min(J) ∧ max(I) = max(J)
L’algèbre d’Allen est un ensemble d’intervalles muni des 13 relations formées
par l’égalité, les 6 relations antiréflexives ci-dessus et leurs relations réciproques.
L’algèbre d’Allen permet de faire du raisonnement temporel.
78
logiques modales
Hp PHp HPp Pp
FHp GPp
GHp p FPp
PGp HFp
Gp FGp GFp Fp
– ➊ termine ➌
– ➌ débute ➋
– ➊ touche ➋
– ➊ chevauche ➍
79
4 – logiques non classiques
A ¬A ∧ ❍ ∨ ❍ → ❍ ↔ ❍
❍ ❍
❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍
❍ ❍ ❍
➽ exercice 92 : Vérifier que les trois axiomes suivants sont vérifiés dans L3 pour
toute interprétation de p et q.
– SA1 : p → (q → p)
– SA2 : ((p → ¬p) → p) → p
– SA3 : (¬p → ¬q) → (q → p)
3 Il est possible de donner une valeur mathématique à ces valeurs de vérité : 0 pour et 1 pour
classiquement. La valeur pour ❍ est alors 21 . C’est une valeur qui permet de faire le lien avec les opérateurs
usuels.
80
logiques multivalentes
A ¬A ∧ ❍ ∨ ❍ → ❍ ↔ ❍
❍ ❍
❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍ ❍
❍ ❍ ❍
Dans K3, aucune loi logique n’est possible. Seules quelques lois sémantiques, comme les
définitions des opérateurs peuvent être formulées. La contamination de la valeur indéterminée
81
4 – logiques non classiques
sur la résultante est dite « faible » dans K3, dans la mesure où celle-ci n’est effective que
lorsque les deux composantes de la proposition sont indéterminées.
➽ exercice 94 : Vérifier si les trois axiomes suivants sont vérifiés dans K3 pour
toute interprétation de p et q.
– SA1 : p → (a → p)
– SA2 : ((p → ¬p) → p) → p
– SA3 : (¬p → ¬q) → (q → p)
➽ exercice 95 : Vérifier si les trois axiomes suivants sont vérifiés dans B3 pour
toute interprétation de p et q.
– SA1 : p → (q → p)
– SA2 : ((p → ¬p) → p) → p
– SA3 : (¬p → ¬q) → (q → p)
82
logiques multivalentes
p↔p ≡
p∨q ≡ (p → q) → q
p∧q ≡ ¬(¬p ∨ ¬q)
p→q ≡ ¬p ∨ p ≡ ¬(p ∧ ¬p)
p↔q ≡ (p → q) ∧ (q → p)
On peut alors définir les valeurs de vérité des différentes opérateurs de la façon suivante :
δ(¬p) = 1 − δ(p)
δ(p ∧ q) = min(δ(p), δ(q))
δ(p ∨ q) = max(δ(p), δ(q))
δ(p → q) = min(1, 1 − δ(p) + δ(q))
83
4 – logiques non classiques
✒ nota bene : Une interprétation classique de ces différentes valeurs de vérité est
de les considérer comme des probabilités de réalisation.
✒ nota bene : En français, le mot « flou » est de connotation négative, il n’en est
rien en réalité. En effet, venant à l’origine du mot « duvet » (en anglais « fuzzy,
c’est-à-dire le duvet qui couvre le corps des poussins), le terme « fuzzy »
signifie « indistinct, brouillé, mal défini ou mal focalisé ». La « fuzzy logic »
originale est traduite « logique floue » en français.
84
logique floue
✒ nota bene : Lorsque fA est à valeur dans {0, 1}, on obtient les sous-ensembles
classiques. Les cas extrêmes de sous-ensembles flous de X sont respectivement
X lui-même, lorsque fA prend la valeur 1 pour tous les éléments de X, et
l’ensemble vide ∅ lorsque fA est nulle sur tout X.
➋ sa hauteur, notée h(a), le plus fort degré avec lequel un élément de X appartient à
A.
h(a) = sup fA (x)
x∈X
➌ son noyau, noté noy(A), l’ensemble des éléments de X qui appartiennent de façon
absolue (avec un degré 1) à A.
noy(A) = {x ∈ X | fA (x) = 1}
➍ sa cardinalité, noté |A|, le degré global avec lequel les éléments de X appartiennent
à A. X
|A| = fA (x)
x∈X
85
4 – logiques non classiques
rA
r
s u rs A′
1.0 r
r
0.5 r uA′′
r
s
0 u u s
r
Paris Angers Nantes
Fig. 4.7 — Sous-ensembles flous pour des choix d’habitation
fA
1
0
âge
0 10 20 30 40 50
Fig. 4.8 — Sous-ensemble flou la « trentaine »
On note dans la suite F(X) l’ensemble de tous les sous-ensembles flous de X. Un sous-
ensemble flou A ∈ F(X) est dit plus spécifique que B ∈ F(X) si et seulement si noy(A) 6=
∅, noy(A) ( noy(B) et supp(A) ⊆ supp(B). Un sous-ensemble flou A ∈ F(X) est dit plus
précis que B ∈ F(X) de même noyau que lui si et seulement si supp(A) ( supp(B).
86
logique floue
➽ exercice 101 : Quel est l’union des ensembles A et A′ de la figure 4.7 ? Quel
est leur intersection ?
87
4 – logiques non classiques
fA
A
1 B
0
âges
0 10 20 30 40 50 60
fB
A∪B A∩B Ac
1
0
âges
0 10 20 30 40 50 60
Fig. 4.9 — Variations autour de « trentaine » et « quarantaine ».
88
logique floue
Aα = {x ∈ X | fA (x) ≥ α}
fA A0.5
1.0
0.5
0
âges
0 10 20 30 40 50
Fig. 4.10 — α-coupe pour la « trentaine »
➽ exercice 102 : Quelles sont les α-coupes de niveau 0.1, 0.4, 0.5 0.6, 0.7, 0.8 et
0.9 pour l’ensemble A de la figure 4.7 ?
Lorsque les opérations sur les ensembles flous sont compatibles avec les opérations clas-
siques, on a :
– (A ∩ B)α = Aα ∩ Bα
– (A ∪ B)α = Aα ∪ Bα
– A ⊆ B → Aα ⊆ Bα
La famille des α-coupes d’un sous-ensemble flou est une représentation de ce sous-
ensemble. On a :
89
4 – logiques non classiques
☞ exemple : Soit X1 = {P, A, N }, l’univers des lieux proposés pour une résidence
et X2 = {M, A} l’univers de choix entre une maison et un appartement.
Les sous-ensembles flous A1 = 0.8/P + 0.6/A + 0.4/N , A2 = 0.3/M +
0.7/A représentent des préférences relatives à chacun des deux univers. Une
préférence relative aux deux univers de façon globale est représentée par leur
produit cartésien, défini comme A = 0.3/(P, M )+0.3/(A, M )+0.3/(N, M )+
0.7/(P, A)+0.6/(A, A)+0.4/(N, A), ce qui correspond à une préférence pour
un appartement à Paris, éventuellement à Angers ou Nantes, toutes les autres
hypothèses étant acceptables mais très modérément.
90
logique floue
✒ nota bene : Cette définition est la plus classiquement utilisée. Mais, on peut
remplacer l’opérateur min par un autre opérateur, en particulier, les autres
opérateurs vus précédemment (page 88). D’autre part, cette définition est
compatible avec la composition ordinaire lorsque les relations R1 et R2 ne
sont pas floues. Elle est particulièrement facile à obtenir quand les ensembles
de références sont finis. En effet, le calcul de la composition peut être considéré
comme un produit matriciel pour lequel on remplace l’addition par l’opération
« max » et la multiplication par l’opération « min ».
On définit les propriétés classiques des relations pour les relations floues de la façon
suivante :
– symétrie ∀(x, y) ∈ X × X fR (x, y) = fR (y, x)
– réflexivité ∀x ∈ X fR (x, x) = 1
– transitivité R ◦ R ⊆ R, en particulier dans le cas de la composition max-min utilisée
précédemment, on obtient :
Une relation floue réflexive et transitive est un pré-ordre flou. Si R est de plus anti-
symétrique, c’est une relation d’ordre floue, elle correspond à l’idée de classement ou la
91
4 – logiques non classiques
représentation de l’antériorité. Par contre, si elle est symétrique, c’est relation de simila-
rité, elle correspond à la notion de ressemblance. Les relations floues sont utilisées dans les
méthodes d’aide à la décision.
Quantités floues
On considère les sous-ensembles flous convexes de R, c’est-à-dire, les sous-ensembles
F ∈ F(R) tels que toute α-coupe de F est une partie convexe de R, ou encore :
Un sous-ensemble flou normalisé de R est appelé quantité floue. Une valeur modale
d’une quantité floue Q est un élément m de R tel que fQ (m) = 1. Un intervalle flou est
une quantité floue convexe. Il correspond à un intervalle de l’ensemble des réels dont les
limites sont imprécises. Un nombre flou est un intervalle flou de fonction d’appartenance
semi-continue supérieurement et de support compact, admettant une unique valeur modale.
Il correspond à un nombre réel connu imprécisément.
fI fM
a m b R
On note alors I = (m, m′ , a, b)LR un intervalle flou de type L-R et, comme cas particulier
corrrespondant à m = m′ , M = (m, a, b)LR un nombre flou de type L-R.
92
logique floue
✒ nota bene : Les quantités floues ont souvent des fonctions d’appartenance
linéaires par morceaux (forme trapézoı̈dale pour les intervalles flous, forme
triangulaire pour les nombres flous, comme sur la figure 4.11). Elles sont alors
de type L-R avec R(x) = L(x) = max(0, 1 − x). Sur cet exemple, on a :
I = (2, 4, 0.5, 0.5)LR et M = (3.5, 0.2, 0.2)LR .
Étant donnés deux intervalles flous du même type L-R, I = (m, m′ , a, b)LR et J =
(n, n′ , c, d)LR , on définit les opérations ci-dessous :
– l’opposition : −I = (−m′ , −m, b, a)RL
– la somme : I ⊕ J = (m + n, m′ + n′ , a + c, b + d)LR
– la différence : I ⊖ J = (m − n′ , m′ − n, a + d, b + c)LR si L = R
93
4 – logiques non classiques
dans la figure 4.12. On s’autorise ici à décrire la taille d’un être humain par les
qualificatifs : minuscule, petit, moyen, grand et immense. Si on voulait décrire
également la taille d’un humain par sa valeur précise, il faudrait ajouter dans
TV tous les singletons de X.
0
80 100 120 140 160 180 200
Fig. 4.12 — Exemple de variable linguistique (V, X, TV ) utilisée pour décrire la taille d’êtres humains
Modificateurs linguistiques
94
logique floue
Propositions floues
La valeur de vérité d’une proposition floue élémentaire « V est A » est définie par la
fonction d’appartenance fA de A.
Une proposition floue générale est obtenue par la composition de propositions floues
élémentaires « V est A », « W est B », . . . pour des variables V , W , . . . supposées non
interactives. La plus simple est la conjonction de propositions floues élémentaires « V est
A et W est B » où V et W sont définies sur des ensembles de références X et Y , et elle est
associée au produit cartésien A×B caractérisant la variable conjointe (V, W ) sur l’ensemble
X × Y . Sa valeur de vérité est donc définie par min(fA (x), fB (y)) en tout point (x, y) de
X × Y . De même, la valeur de vérité d’une disjonction de propositions floues est définie par
max(fA (x), fB (y)) en tout point (x, y) de X × Y .
Plus généralement, on peut construire des propositions floues par conjonction, disjonc-
tion ou implication portant sur des propositions floues quelconques.
Un quantificateur flou est un sous-ensemble flou de l’ensemble R des nombres réels,
mais le plus souvent de [0, 1] qui décrit un nombre de cas ou une proportion approximative,
tels que « dans la plupart des cas », « rarement », « dans quelques cas », « généralement »,
...
0
0 0.25 0.50 0.75 1.00
Fig. 4.13 — Exemple de représentation du quantificateur flou « la plupart »
95
4 – logiques non classiques
pour une fonction Φ choisie de telle sorte que, dans le cas où A et B son définis de façon
précise et certaine5 , l’implication floue soit identique à l’implication de la logique classique. Il
n’existe pas une façon unique de généraliser l’implication de la logique classique. Le tableau
de la figure 4.14 indique les implications floues le plus souvent employées.
96
logique floue
fA fB
a b poids c d prix
Fig. 4.15 — Deux caractérisations dans le contexte du commerce de diamants
y
x [0, c[ ]c, d[ [d, ∞[ fA (x)
[0, a[ 1 1 1 0
b−x y−c
]a, b[ b−a min(1 − x−a
b−a + d−c , 1) 1 x−a
b−a
x−c
[b, ∞[ 0 d−c 1 1
x−c
fB (y) 0 d−c 1
Les informations disponibles pour déterminer la conclusion sont donc, d’une part, celles
relatives à la règle, quantifiées par l’implication floue fR qui décrit le lien causal entre « V
est A » et « W est B », et, d’autre part, celles relatives au fait observé, quantifiées par la
fonction d’appartenance fA′ . La fonction d’appartenance de B ′ est donc calculée comme
une combinaison de fR et de fA′ de la forme :
6 On considère ici des propositions floues élémentaires mais le même schéma s’applique au cas de propo-
97
4 – logiques non classiques
Fig. 4.17 — Principaux opérateurs de modus ponens généralisé utilisables avec les implications floues du
tableau de la figure 4.14
98
module deux
langages et algorithmes
99
chapitre cinq
Ambrose Bierce
101
5 – langages formels et grammaires
Une propriété intéressante pour un ensemble infini est la dénombrabilité, c.-à-d. la ca-
pacité, pour cet ensemble, de lister et numéroter ses éléments.
☞ exemple :
– N l’ensemble des entiers positifs est dénombrable. On peut sans am-
biguı̈té se référer au ième entier positif.
– Z est aussi dénombrable. Il suffit d’alterner les entiers positifs et négatifs
dans l’ordre croissant de leur valeur absolue. Tous les éléments de Z
sont assurés d’apparaı̂tre dans cette liste.
Plus formellement, un ensemble est dénombrable s’il peut être mis en bijection avec N.
On dit alors que N et l’ensemble dénombrable sont équipotents➲.
Théorème 25
Soit E un ensemble. Il n’existe pas de bijection entre E et P(E) c.-à-d. E
et P(E) ne sont pas équipotents.
102
rappels : dénombrement d’ensembles
En effet, supposons qu’il existe une bijection f entre E et P(E). Soit A = {x ∈ E|x 6∈
f (x)}. f étant bijective, il existe a ∈ E tel que A = f (a).
➊ si a ∈ A, on a a ∈ f (a) et donc a 6∈ A par définition de A
➋ si a 6∈ A, on a a 6∈ f (a) et donc a ∈ A par définition de A
L’hypothèse est donc absurde, ce qui prouve le résultat.
✒ nota bene : R est indénombrable. On peut même montrer que [0, 1[ l’ensemble
des réels entre 0 (compris) et 1 (non compris) est indénombrable. Nous al-
lons raisonner par réfutation. Supposons l’ensemble [0, 1[ dénombrable. Si
on représente les éléments de cet ensemble à l’aide de la notation décimale
usuelle, si une liste des éléments de l’ensemble existe, on a alors (chaque aij
est un simple chiffre) :
réel 1 0.a11 a12 a13 . . .
réel 2 0.a21 a22 a23 . . .
réel 3 0.a31 a32 a33 . . .
..
. 0. · · ·
Tout entier élément de [0, 1[ doit appartenir à cette énumération. Considérons
le réel 0.a11 a22 a33 . . . (construit à partir de la « diagonale »). Transformons
chaque aii en un bii tel que :
aii + 1 si aii < 9
bii =
0 si aii = 9
103
5 – langages formels et grammaires
ordinaux infinis (ou transfinis). L’existence des ordinaux transfinis est assuré par l’axiome
de l’infini (axiome ➏ page 58).
Le premier nombre ordinal transfini est noté ω (en référence à la dernière lettre de
l’alphabet grec). Il correspond à l’ensemble des nombres entiers naturels N. L’addition des
nombres entiers naturels, traduite en terme d’ensembles, permet de généraliser l’addition
aux nombres ordinaux transfinis. Cette addition est associative mais pas commutative. Elle
donne lieu à une arithmétique sur les nombres ordinaux transfinis. On montre qu’il existe
une infinité de nombres ordinaux transfinis :
✒ nota bene : Les ordinaux ne forment pas un ensemble, au sens des axiomes
ZFC (la théorie axiomatique des ensembles habituelle rappelée au chapitre 3
section 3.3.1), mais une classe propre. Ceci peut-être mis en évidence grâce
au paradoxe de Burali-Forti : l’ensemble des ordinaux serait par définition un
ordinal mais qui serait alors strictement plus grand (aussi par définition) que
tous les ordinaux. Ceci est évidemment contradictoire.
✒ nota bene : ℵ est parfois noté 2ℵ0 par analogie avec les cardinaux finis car
R est en bijection avec l’ensemble des parties de N. On a donc avec cette
notation que ℵ0 < 2ℵ0 . De manière plus générale, on montre que le cardinal
de l’ensemble des parties d’un ensemble est toujours strictement plus grand
ℵ0
que l’ensemble de départ. Ainsi, ℵ0 < 2ℵ0 < 22 < · · ·. Il existe donc une
infinité de nombre cardinaux transfinis !
104
rappels : dénombrement d’ensembles
✒ nota bene : ℵ n’a rien à voir avec ∞. En effet, autant certains ℵ peuvent être
plus grands que d’autres mais ∞ est simplement l’infini (limite de la droite
des réels).
Une énumération de Gödel d’un ensemble est l’affectation d’un entier naturel à
chaque élément de l’ensemble telle que :
➊ g est une bijection
➋ il existe un algorithme permettant effectivement de calculer le nombre de Gödel de
n’importe quel élément
➌ g −1 est calculable
1 Penser par exemple à l’ensemble des entiers naturels pairs par rapport à l’ensemble des entiers naturels
2 Les 0 à gauche sont ici significatifs.
105
5 – langages formels et grammaires
2 3
Fig. 5.1 — Deux versions d’un même graphe – sans (à gauche) et avec (à droite) des sommets nommés
☞ exemple : Soit Γ l’ensemble des graphes avec des sommets non nommés. La
figure 5.1 présente (à gauche) un exemple de tel graphe (ici à 4 sommets
et 5 arêtes). Γ possède la particularité d’avoir un représentant par classe
d’équivalence selon la relation d’isomorphisme de graphe. On peut montrer
que Γ est dénombrable en affectant à chaque élément G ∈ Γ un nombre de
Gödel g(G). La première étape consiste à nommer les sommets de G à l’aide
n premiers nombres premiers p1 , p2 , . . ., pn . Ainsi, une énumération possible
est :
pk1 1 × pk2 2 × · · · × pknn
Q e(i,j)
où chaque ki est égal à : nj=1 pj où e(i, j) est le nombre d’arêtes entre
les sommets i et j.
Ainsi sur le graphe de la figure 5.1 (étiqueté tel que reporté à droite), on
obtient :
2 2
23 ×5
× 32 ×3×5
× 52×3 × 7 = 245 × 360 × 56 × 7
Un mot représenté à l’aide de m symboles (y compris les répétitions) est dit de longueur
m.
106
mots et langages
Le mot vide est représenté par le symbole ǫ qui est un mot sans symbole et donc de
longueur 0. La longueur d’un mot x est noté |x|.
S
Si on note Σi les mots de longueur i sur Σ, on a : Σ⋆ = n∈N Σn .
S
✒ nota bene : On note Σ+ = n∈N⋆ Σn . On a : Σ+ = Σ⋆ \ {ǫ}.
➽ exercice 106 : Soit Σ = {a, b}. Proposer une numérotation des mots sur Σ, les
éléments de Σ⋆ . Quel est le numéro de aaaaaa ? Et celui de aababa ? Quel
est le mot de numéro 156 ?
Ainsi, 00 01 11 sera plutôt écrit 00 01 11. L’espace est alors un mot de longueur 1 différent du mot vide.
107
5 – langages formels et grammaires
➽ exercice 107 : Soit Σ = {a, b, c}. Proposer une numérotation des mots sur Σ,
les éléments de Σ⋆ . Quel est le numéro de cba ? Quel est le mot de numéro
511 ?
☞ exemple : Si x = a1 a2 . . . am et y = b1 b2 . . . bn alors xy = a1 a2 . . . am b1 b2 . . . bn .
Soit un mot z ∈ Σ⋆ pouvant s’écrire xy avec {x, y} ∈ Σ⋆ 2 . x est alors appelé un préfixe
de z et y est appelé un suffixe de z.
Si {w, z} ∈ Σ⋆ 2 sont tels que z = xwy pour un couple {x, y} ∈ Σ⋆ 2 donné, w est une
sous-chaı̂ne de z.
☞ exemple : Les sous-chaı̂nes de z = 00110 sont ǫ, 0, 1, 00, 01, 10, 11, 001, 011,
110, 0011, 0110 et z lui-même.
108
mots et langages
✒ nota bene : f est entièrement déterminée par sa restriction à V qui est système
générateur de V ⋆ . En effet, si x = x1 x2 . . . xn alors f (x) = f (x1 )f (x2 ) . . . f (xn ).
On a de plus f (ǫ) = ǫ.
➽ exercice 108 : Parmi les morphismes ci-dessous, quels sont les codages ?
– V = {a, b} et W = {x, y}
➊ f définie par f (a) = x, f (b) = y
➋ g définie par g(a) = x, g(b) = x
➌ h définie par h(a) = x, h(b) = ǫ
– V = {a, b, c, d} et W = {x, y}
➊ f définie par f (a) = xx, f (b) = xy, f (c) = yx, f (d) = yy
➋ g définie par g(a) = x, g(b) = yx, g(c) = yyx, g(d) = yyy
109
5 – langages formels et grammaires
☞ exemple : Le langage des nombres est défini sur un alphabet Σ = {0, 1, . . . , 9}.
02, 00310, 3200 sont alors des mots sur Σ. On définira le langage des nombres
comme les mots sur Σ qui ne commencent pas par 0. Ainsi, 1233 et 3200
seront des mots du langages mais pas 00310.
La concaténation (ensembliste) comme la concaténation sur les mots est associative mais
pas commutative. L’ensemble à un seul élément contenant le mot vide est élément neutre
pour cette opération : pour tout langage L, L{ǫ} = {ǫ}L = L.
✒ nota bene : Attention, {ǫ} et ∅ sont deux ensembles différents. ∅ est absorbant
pour la concaténation. En effet, on a L∅ = ∅L = ∅.
Lorsqu’on concatène un langage avec lui-même, le résultat LL est noté L2 . Cette définition
est généralisée : L0 = {ǫ}, L1 = L, Li = LLi−1 i−1
S∞= Li L pour tout i ≥ 2. On définit la
⋆
clôture de Kleene➠ de L, notée L , comme i=0 L .
Dans la suite de ce document, on ne s’intéresse qu’à certains types de langages, ceux
engendrés par une grammaire de Chomsky➠ ou reconnus par des automates.
5.3.1 Définition
Une grammaire de Chomsky➠ G est un quadruplet (VN , VT , S, R) où :
– VN désigne un ensemble fini appelé vocabulaire non terminal (ou catégories syn-
taxiques)
110
grammaires de chomsky (1956)
☞ exemple : Soit G = ({S}, {0, 1}, S, {(S, 0S1), (S, 01)}). G est une grammaire
de Chomsky.
Il existe plusieurs façons équivalentes de représenter les règles d’une grammaire de Chom-
sky :
∀r ∈ R, γ(r) ∈ VN
∀r ∈ R, |γ(r)| ≤ |δ(r)|
– Une grammaire sans restriction sur les règles est dite de type 0.
✒ nota bene : Les langages de programmation usuels ont généralement une gram-
maire de type 2.
111
5 – langages formels et grammaires
5.3.3 Dérivation
Une grammaire de Chomsky est générative, elle engendre un langage. La définition de
ce langage est basée sur la notion de dérivation.
Un mot y dérive immédiatement d’un mot x si et seulement si il existe une règle r
et deux mots g et d de V ⋆ tels que :
x = gγ(r)d et y = gδ(r)d
r
On notera x −→G y (ou encore x −→G y ou x −→ y lorsqu’il n’y a pas d’ambiguı̈té).
Soit =⇒G la fermeture réflexive et transitive4 de la relation −→G . La relation =⇒G est
appelée dérivation. On notera r̂ la suite de règles permettant de dériver y de x ce qui
r̂
done : x =⇒G y.
Une dérivation à gauche consiste à remplacer systématiquement le non terminal le
plus à gauche dans l’expression à dériver. Inversement, une dérivation à droite consiste
à remplacer systématiquement le non terminal le plus à droit dans l’expression à dériver.
☞ exemple : 000111 (que l’on peut noter 03 13 ) est un mot du langage engendré
par la grammaire G de l’exemple précédent. En effet, il dérive de S par l’ap-
plication de deux fois la règle r1 puis d’une fois la règle r2 . On a :
1r 1 r 2 r
S −→ 0S1 −→ 00S11 −→ 000111
(r1 )2 r2
On peut aussi noter plus simplement : S =⇒ 000111.
4 La
S
fermeture réflexive et transitive d’une relation R est n∈N Rn .
112
des grammaires aux automates
✒ nota bene : i ne peut bien sûr prendre ses valeurs que dans l’intervalle d’entiers
[0, 3].
Proposition 9
Si l’on note Ti l’ensemble des langages de type i, on a les inclusions strictes
suivantes :
T3 ( T2 ( T1 ( T0
➽ exercice 110 : Soit G = ({S, B, C}, {a, b, c}, S, R) où R = {(S, aSBC), (S, aBC),
(CB, BC), (aB, ab), (bB, bb), (bC, bc), (cC, cc)}. Déterminer le type de G ainsi
que le langage engendré par G.
Considérons la grammaire G = ({S, A, B}, {0, 1}, S, R) avec R = {(S, 0A), (S, 1B),
(A, 0A), (A, 0S), (A, 1B), (B, 1B), (B, 1), (B, 0), (S, 0)}. G est clairement une grammaire de
type 3 puisqu’on a bien :
∀r ∈ R, γ(r) ∈ VN ∧ δ(r) ∈ VT VN ∪ VT
113
5 – langages formels et grammaires
0 A
1
1
S 0
1 B 0
0 1
fin
0 0 1 1 1 0
S → A → A → B → B → B → fin
5 On verra dans le chapitre 6 qu’on peut toujours le faire pour une grammaire de type 3.
114
des grammaires aux automates
Pour obtenir L(G) le langage engendré par la grammaire, il suffit de parcourir de toutes
les façons possibles le graphe de S à « fin ». Ainsi, dans notre cas, il y a deux types de tels
chemins :
– ceux qui ne contiennent que des 0 (ils ne passent que par A, puis reviennent en S
avant d’aller en « fin »). Il s’agit de l’ensemble des mots : {0n |n 6= 0, n 6= 2} que l’on
peut noter aussi (0+ \ 00) où 0+ représente les mots ne contenant que des 0 et au
moins un et 00 l’ensemble contenant le mot ayant uniquement deux 0.
– ceux qui contiennent un nombre quelconque de 0 (passage éventuel en A), puis au
moins un 1 (passage en B) puis au choix, un 0 ou un 1 (sortie de B vers « fin »).
Cet ensemble se note : 0⋆ 1+ (0 + 1). Ici, la juxtaposition simple représente représente
la concaténation ; le +, un choix ; x⋆ l’ensemble des mots ne contenant que des x et
éventuellement aucun ; et, x+ l’ensemble des mots ne contenant que des x et au moins
1 c.-à-d. x+ = x⋆ \ {ǫ}.
Le langage engendré par G peut alors s’écrire :
Les notations que l’on vient d’introduire sont appelées expressions régulières et le graphe
que nous avons manipulé est un automate. Ces notions font l’objet des chapitres suivants.
115
chapitre six
automates
Leibniz
Les automates sont des machines idéalisées (abstraites) qui permettent d’effectuer des
calculs. Dès les années 1930, bien avant que les premiers ordinateurs voient le jour, Alan
Turing➠ a étudié une telle machine abstraite qui possédait l’ensemble des capacités des
ordinateurs actuels sur le plan de ce qu’ils peuvent calculer. Son but était de connaı̂tre la
limite à ce qu’une machine est capable de calculer. Dans les années 1940, 1950, sont apparues
des machines plus simples qu’on appelle maintenant « automates finis ». Ces automates,
initialement conçus pour modéliser le cerveau humain, sont utiles dans différents domaines
en informatique :
– la production de logiciels pour concevoir et tester le comportement de circuits ;
– la partie « analyse lexicale » des compilateurs (c.-à-d. l’étape cruciale à laquelle le
compilateur décompose le texte en entrée en un ensemble d’unités logiques) ;
– la production de logiciels pour scruter de grandes portions de textes à la recherche de
mots, phrases ou autres motifs ;
– la production de logiciels pour vérifier tout type de systèmes ayant un nombre fini
d’états distincts (comme des protocoles de communication ou d’échanges sécurisés
d’information).
Ils représentent des objets mathématiques et non pas des objets physiques, ils peuvent
donc être définis et non pas construits. Les automates effectuent les calculs grâce à deux
classes d’objets qu’ils manipulent : la classe des entrées que l’automate accepte et la classe
des sorties que l’automate produit. Le rapport entre les éléments de l’entrée et les éléments
de la sortie est déterminé par la structure de l’automate.
Dans les années 1950, Chomsky➠ a étudié les grammaires formelles (vues au chapitre 5).
Comme nous le verrons, ces grammaires ont de très forts liens avec la notion d’automates.
117
6 – automates
a1 a2 ··· an ···
e0
6.1.1 Définition
Un automate fini1 déterministe (AFD) est un quintuplet A = (E, V, τ, e0 , F ) où :
– E est l’ensemble fini d’états
– V est un vocabulaire (d’entrée) fini
– τ : E × V −→ E est une fonction dite de transition
– e0 ∈ E est l’état initial
– F ⊂ E est l’ensemble des états terminaux
Concrètement, on peut représenter un automate fini déterministe comme une unité
mécanique possédant une tête de lecture posée sur un ruban se déplaçant dans un seul
sens. En cours de fonctionnement, l’automate est dans l’état e ∈ E et sa tête de lecture est
située devant le symbole a ∈ V . Il passe alors dans l’état τ (e, a) et la tête de lecture avance
d’une case vers la droite (ou le ruban se déplace d’une case vers la gauche). Ainsi, à l’état
initial un automate devant un mot a1 a2 . . . an peut être représenté comme sur la figure 6.1.
La tête de lecture se trouve alors sur le symbole du ruban situé le plus à gauche.
Si, après avoir parcouru complètement le mot de départ w = a1 a2 . . . an , l’automate se
trouve dans un des états terminaux, alors on dit que w a été reconnu ou accepté par
l’automate.
118
automates finis déterministes
☞ exemple : Soit A = ({e0 , e1 , e2 , e3 }, {0, 1}, τ, e0 , {e0 }). τ est représentée par
la table de transition suivante :
0 1
e0 e1 e2
e1 e0 e3
e2 e3 e0
e3 e2 e1
119
6 – automates
e0 e1
0
1 1 1 1
0
e2 e3
1 1 1 0 1 0
e0
1 1 1 0 1 0
e2
1 1 1 0 1 0
e0
120
automates finis déterministes
1 0
e0 e1 e2
0 1 0, 1
➽ exercice 113 : Soit A = ({e0 , e1 , e2 , e3 , e4 }, {a, b}, τ, e0 , {e2 }). τ est représentée
par la table de transition suivante :
a b
e0 e1 e4
e1 e4 e2
e2 e3 e4
e3 e4 e2
e4 e4 e4
2 µ est désigne le morphisme d’effacement qui ne conserve que les occurrences de x c.-à-d. ∀y 6=
x
x, µx (y) = ǫ ∧ µx (x) = x.
121
6 – automates
6.2.1 Définition
Un automate fini non déterministe (AFN) est un quintuplet A = (E, V, τ, e0 , F )
où :
– E est l’ensemble fini d’états
– V est un vocabulaire (d’entrée) fini
– e0 ∈ E est l’état initial
– F ⊂ E est l’ensemble des états terminaux (ou d’acceptation)
– τ : E × V −→ P(E) est une fonction dite de transition
122
automates finis non déterministes
0 1
e0 e1 e2
0, 1
Fig. 6.5 — Un automate fini non déterministe acceptant les chaı̂nes finissant en 01.
☞ exemple : Soit A = ({e0 , e1 , e2 }, {0, 1}, τ, e0 , {e2 }). τ est représentée par la
table de transition suivante :
0 1
e0 {e0 , e1 } {e0 }
e1 ∅ {e2 }
e2 ∅ ∅
123
6 – automates
Dans ce contexte, le langage accepté par l’automate fini non-déterministe est alors :
☞ exemple : Le langage accepté par l’automate de la figure 6.5 est l’ensemble des
mots terminant par 01 c.-à-d. T (A) = {w | ∃y ∈ V ⋆ , w = y01}. En effet,
montrons par récurrence que :
➊ τ̂ (e0 , w) contient e0 pour tout w
➋ τ̂ (e0 , w) contient e1 si et seulement si w se termine par 0
➌ τ̂ (e0 , w) contient e2 si et seulement si w se termine par 01
Nous allons raisonner pour cela sur la longueur de w.
➀ Si |w| = 0, alors w = ǫ. La proposition ➊ est vérifiée par définition de
τ̂ . De même, les propositions ➋ et ➌ sont naturellement vérifiées (en
effet, ǫ ne finit ni par 0 ni par 01).
➁ Supposons que w puisse s’écrire xa où a est un symbole de V (ici 0 ou
1). Nous supposons que les propositions ➊ à ➌ sont vérifiées pour x.
Ainsi, |w| = n + 1 = |x| + 1.
➊ τ̂ (e0 , x) contient e0 . Comme les transitions possibles à partir de e0
conduisent toutes à e0 lui-même, la proposition est vérifiée aussi
pour w.
➋ Supposons que w se termine par 0. Comme, d’après ➊, τ̂ (e0 , x)
contient e0 et qu’il y a une transition partant de e0 vers e1 sur
l’entrée 0, on en conclut que τ̂ (e0 , w) contient e1 . De plus, si on
suppose inversement que τ̂ (e0 , w) contient e1 , la seule possibilité
pour atteindre l’état e1 , d’après le diagramme, consiste à avoir une
entrée de type x0. Nous prouvons ainsi que la proposition ➋ est
vérifiée pour w.
➌ La preuve de cette proposition est similaire.
La proposition ➌ montre directement que le langage accepté par l’automate
est bien constitué des mots se terminant en 01 puisque e2 est le seul état
accepté.
124
automates finis non déterministes
➽ exercice 117 : Soit A = ({e0 , e1 , e2 , e3 , e4 }, {0, 1}, τ, e0 , {e2 , e4 }). τ est représentée
par la table de transition suivante :
0 1
e0 {e0 , e3 } {e0 , e1 }
e1 ∅ {e2 }
e2 {e2 } {e2 }
e3 {e4 } ∅
e4 {e4 } {e4 }
➽ exercice 118 : Donner les automates finis non déterministes pour accepter les
langages suivants :
➊ l’ensemble des mots sur le vocabulaire {0, 1, . . . , 9} tel que le dernier
chiffre soit apparu auparavant dans le mot
➋ l’ensemble des mots sur le vocabulaire {0, 1, . . . , 9} tel que le dernier
chiffre ne soit jamais apparu auparavant dans le mot
➌ l’ensemble des mots sur le vocabulaire {0, 1} tels qu’il existe deux zéros
séparés par un nombre de positions multiple de 4 (zéro étant un multiple
de 4)
✒ nota bene : Les vocabulaires d’entrée pour N et D sont les mêmes. De plus,
l’état de départ de D est l’ensemble contenant l’unique état de départ de N .
125
6 – automates
0 0, 1
1
{e0 , e1 } ∅ e1
0 0
0
{e0 } 0 1 {e0 , e1 , e2 } 0 1
1 1
{e0 , e2 } 1 e2
{e1 , e2 }
0, 1
Fig. 6.6 — L’automate fini déterministe associé à l’automate de la figure 6.5 – construction exhaustive
126
automates finis non déterministes
1 0
0 1
{e0 } {e0 , e1 } {e0 , e2 }
Fig. 6.7 — L’automate fini déterministe associé à l’automate fini non-déterministe de la figure 6.5 – construc-
tion « paresseuse »
☞ exemple : Dans le cas de l’automate représenté sur la figure 6.5, l’état {e0 } est
un état de l’automate D. On a τD ({e0 }, 0) = {e0 , e1 } et τD ({e0 }, 1) = {e0 }
(il suffit d’observer pour cela le diagramme précité). On obtient alors une
ligne complète de la table de transition de D (la deuxième ligne de la table
de l’exemple précédent).
Seul un des deux ensembles résultat est véritablement « nouveau » (l’autre
{e0 } a déjà été examiné, il s’agit de l’état de départ) : {e0 , e1 }. Les transitions
pour cet état sont : τD ({e0 , e1 }, 0) = {e0 , e1 } et τD ({e0 , e1 }, 1) = {e0 , e2 }
(la cinquième ligne de la table de l’exemple précédent). En effet :
On démontre ce théorème est montrant, par récurrence sur la longueur du mot d’entrée
w tout simplement que :
127
6 – automates
✒ nota bene : Ici, les deux fonctions τ̂ renvoient bien un ensemble d’états de EN
mais τ̂D considère cet ensemble comme un des états de ED (l’ensemble des
parties de EN ) alors que τ̂N considère cet ensemble comme un sous-ensemble
de EN .
➊ Soit w de longueur 0 c.-à-d. w = ǫ. Par définition (tant d’un automate fini déterministe
qu’un automate fini non déterministe), τ̂D ({e0 }, ǫ) = τ̂N (e0 , ǫ) = {e0 }.
➋ Supposons w mot de longueur n + 1 et supposons l’équation 6.1 vraie au rang n.
Supposons w = xa où a est le symbole final de w. Par hypothèse de récurrence, on a :
τ̂D ({e0 }, x) = τ̂N (e0 , x). Supposons cet ensemble d’états de N égal à : {p1 , p2 , . . . , pk }.
D’une part, par définition de τ̂ pour un automate fini non déterministe, on a :
k
[
τ̂N (e0 , w) = τN (pi , a) (6.2)
i=1
➽ exercice 119 : Quel est l’automate fini déterministe associé à l’automate fini non
déterministe complètement défini par la table de transition suivante (l’état de
départ est marqué de → et l’état terminal est marqué de ⋆).
0 1
→p {p, q} {p}
q {r} {r}
r {s} ∅
⋆s {s} {s}
128
automates finis non déterministes
➽ exercice 120 : Quel est l’automate fini déterministe associé à l’automate fini non
déterministe complètement défini par la table de transition suivante (l’état de
départ est marqué de → et les états terminaux sont marqués de ⋆).
0 1
→p {q, s} {q}
⋆q {r} {q, r}
r {s} {p}
⋆s ∅ {p}
➽ exercice 121 : Quel est l’automate fini déterministe associé à l’automate fini non
déterministe complètement défini par la table de transition suivante (l’état de
départ est marqué de → et les états terminaux sont marqués de ⋆).
0 1
→p {p, q} {p}
q {r, s} {t}
r {p, r} {t}
⋆s ∅ ∅
⋆t ∅ ∅
✒ nota bene : Il existe une définition des automates finis non déterministes qui
permet de prendre en compte des transitions sur ǫ (des ǫ-transitions). On les
appelle des ǫ-automates. Il est alors possible de généraliser assez facilement les
notions d’extension de la fonction de transition, de langage, etc. De plus, on
peut montrer donner pour chaque ǫ-automate un automate fini déterministe
équivalent. Pour cela, il suffit d’appliquer la méthode de construction pares-
seuse vue pour les automates finis non déterministes en ajoutant à chaque
ensemble d’états manipulé ce qu’on appelle son ǫ-clôture, c.-à-d. l’ensemble
des états accessibles à partir de chacun des états de l’ensemble en n’emprun-
tant que des ǫ-transitions.
129
6 – automates
130
application : recherche dans un texte
w e b
2 3 4
1 Σ
5 6 7 8
e b a y
Fig. 6.8 — Un automate fini non déterministe pour rechercher les mots web et ebay. Sur la figure, Σ
représente l’ensemble des caractères imprimables du code ASCII.
131
6 – automates
✒ nota bene : En général, il y a un état dans l’AFD pour chaque état dans l’AFN.
Mais, dans l’étape ➋, deux états peuvent conduire au même ensembles d’états
de l’AFN et ainsi devenir un unique état dans l’AFD. C’est le cas, par exemple,
lorsque deux mots-clés commencent par la même lettre (a par exemple) ; ainsi,
les deux états de l’AFN atteints depuis e0 en suivant l’arc étiqueté a conduisent
au même ensemble d’états de l’AFN et donc seront fusionnés dans l’AFD.
Les transitions de l’AFD associé sont calculées comme présenté dans la section 6.2.3.
☞ exemple : Considérons l’état 135 de la figure 6.9. L’AFN de la figure 6.8 possède
des transitions sur le symbole b depuis les états 3 et 5 vers, respectivement,
les états 4 et 6. Ainsi, il existe une transition entre 135 et 146 étiquetée par
b dans l’AFD (car 1 est toujours accessible de 1 quelque soit l’entrée). Le
symbole e ne permet pas de sortir des états 3 et 5 dans l’AFN, mais il existe
une transition étiquetée e entre 1 et 5. L’AFN présente donc une transition de
135 vers 15 étiquetée par e. De la même façon, sur le symbole w, 135 mène
à 12.
Pour tous les autres symboles, il n’y a aucune transition au départ de 3
ni de 5 dans l’AFN. De plus, au départ de 1, on ne peut qu’aller vers 1. Ainsi,
dans l’AFD, 135 mène à 1 sur n’importe quel symbole de Σ excepté b, e et
w (ce qui est noté Σ-b-e-w sur la figure 6.9).
132
application : recherche dans un texte
Σ-a-e-w
Σ-b-e-w
w
w
w
Σ-e-w
e b
12 135 146
w
e e w
w a
1 w
w
e b a y
15 16 17 18
Σ-e-w e
Σ-b-e-w
e
e
e
Σ-a-e-w
Σ-e-w-y
Σ-e-w
Fig. 6.9 — Automate fini déterministe associé à l’automate fini non déterministe de la figure 6.8.
➽ exercice 122 : Donner un automate fini non déterministe pour reconnaı̂tre les
chaı̂nes de caractères : abc, abd et aacd. On supposera le vocabulaire limité
à {a, b, c, d}. Convertir cet automate en automate fini déterministe.
133
chapitre sept
langages et automates
Michel Foucault
Langages, au sens de Chomsky, et automates ont beaucoup en commun. Nous allons ainsi
montrer dans ce chapitre que tout langage de type 3 (c.-à-d. engendré par une grammaire de
type 3) est régulier (reconnaissable à l’aide d’un automate fini). Plus généralement, on peut
en fait associer à chaque type de langue un automate correspondant. Le tableau suivant
récapitule ces correspondances :
Nom Génération Reconnaissance
linéaire à droite type 3 ou expression régulière automate finis
non contextuel type 2 ou gram. algébrique automate à pile
contextuel type 1 ou gram. contextuelle automate à mémoire
linéairement bornée
récursivement énumérable type 0 ou gram. générale machine de Turing
Nous aborderons la notion de machine de Turing dans le chapitre suivant.
135
7 – langages et automates
Proposition 10
La relation RA associée à l’automate fini déterministe A = (E, V, τ, e0 , F )
possède les propriétés suivantes :
➊ RA est une relation d’équivalence compatible à droite avec la
concaténation
➋ RA est d’index fini
➌ T (A) est une union de classes de RA
∀x ∈ V ⋆ ∀y ∈ V ⋆ , xRA y → ∀z ∈ V ⋆ , xzRA yz
136
automates et langages
Proposition 11
La relation RL associée au langage L ⊂ V ⋆ possède les propriétés suivantes :
➊ RL est une relation d’équivalence compatible à droite avec la
concaténation et pour laquelle L est une union de classes.
➋ RL est moins fine que toute relation d’équivalence R sur V ⋆ compatible
à droite avec la concaténation et pour laquelle L est une union de
classes.
Théorème 27 (Nerode)
Soit un langage L ⊂ V ⋆ . Les énoncés suivants sont équivalents :
➊ L est régulier, c’est-à-dire qu’il peut être reconnu par un automate à
un nombre fini d’états
➋ L est l’union de classes d’une relation d’équivalence R sur V ⋆ compa-
tible à droite avec la concaténation et d’index fini
➌ RL est d’index fini
137
7 – langages et automates
– La proposition 11 nous a permis de montrer que RL était la moins fine des relations
d’équivalence sur V ⋆ compatibles à droite avec la concaténation et pour lesquelles L est
une union de classes. R étant d’index fini (➋ du théorème 27), RL l’est nécessairement
aussi (puisque moins fine). Ainsi, ➋ implique ➌.
– Il reste à montrer que ➌ implique ➊ c’est-à-dire que si RL est d’index fini, alors L
peut être reconnu par un automate à un nombre fini d’états. Considérons l’automate
fini déterministe AL = (E, V, τ, e0 , F ) tel que :
– E = V ⋆ /RL (ensemble fini puisque RL est d’index fini)2 .
– e0 = cl(ǫ)
– F = {cl(x) | x ∈ L}
– τ est définie par ∀x ∈ V ⋆ , ∀a ∈ V, τ (cl(x), a) = cl(xa)
On a alors le résultat suivant (démontrant ➊) :
T (AL ) = {x ∈ V ⋆ | τ̂ (cl(ǫ), x) ∈ F }
= {x ∈ V ⋆ | cl(x) ∈ F }
= {x ∈ V ⋆ | x ∈ L} car L est une union de classes
= L
L’automate AL que l’on vient de définir en démontrant le théorème 27 est très particulier.
Théorème 28
AL est l’automate fini déterministe minimal permettant de reconnaı̂tre L. Il
n’existe donc pas d’automate fini déterministe reconnaissant L ayant moins
d’états que AL .
En effet, considérons un automate A tel que L = T (A). RA est alors plus fine que RL
(proposition 11). Alors, le nombre d’états de A (qui est au moins égal à l’index de RA ) est
au moins égal au nombre d’états de AL qui lui-même est égal à l’index de RL . On ne pourra
donc pas trouver d’automate avec moins d’états.
138
automates et langages
Une autre façon de montrer qu’un langage n’est pas régulier consiste à utiliser le théorème
suivant :
Théorème 29
Soit L un langage régulier. Il existe une constante n (dépendant de L) tel
que tout mot w de L tel que |w| ≥ n puisse être décomposé en trois mots,
w = xyz tels que :
➊ y 6= ǫ
➋ |xy| ≤ n
➌ ∀k ≥ 0, xy k z ∈ L
En effet, comme L est régulier, il existe un automate fini déterministe A tel que L =
T (A). Supposons que A soit constitué de n états. Maintenant, considérons un mot w de
longueur supérieure ou égale à n. On a w = a1 a2 · · · am avec m ≥ n et chaque ai un élément
du vocabulaire. Pour i allant de 0 à n, on définit l’état pi = τ̂ (e0 , a1 a2 · · · ai ) où τ est la
fonction de transition de A et e0 son état de départ. pi est ainsi l’état atteint après avoir lu
les i premiers symboles de w. On a : p0 = e0 .
Nécessairement, les pi ne peuvent être tous différents les uns des autres puisqu’il y en a
n + 1 et qu’il n’existe que n états distincts dans l’automate. Ainsi, on peut déterminer deux
entiers i et j tels que 0 ≤ i < j ≤ n tels que pi = pj . On a alors w = xyz où :
➀ x = a1 a2 · · · ai
➁ y = ai+1 ai+2 · · · aj
➂ z = aj+1 aj+2 · · · am
Ainsi, x permet d’atteindre pi , y permet de revenir à pi et z permet de finir w. La figure 7.1
montre les relations entre ces différentes chaı̂nes sur l’automate. On constate ici que x peut
être vide (lorsque i vaut 0) ; z peut être vide (si j = n = m) mais y ne peut jamais être
vide (car i < j). La décomposition de w en xyz vérifie donc la propriété ➊ du théorème 29.
De même, la condition ➋ est vérifiée naturellement (xy est de longueur j ≤ n).
Il nous reste pour démontrer le théorème 29 à vérifier la propriété ➌. Considérons l’au-
tomate A et l’entrée xy k z pour un k supérieur ou égal à 0.
➀ si k = 0, alors l’automate part de l’état e0 = p0 pour aller vers l’état pi à la lecture de
x puis de ce même état vers l’état d’acceptation de l’automate représenté figure 7.1 à
la lecture de z. Ainsi, A accepte xz qui est donc dans L.
➁ si k > 0, A va de e0 = p0 vers pi à la lecture de x puis de k fois de pi vers pi à la
lecture des k instances de y puis enfin vers l’état d’acceptation de la figure 7.1 à la
lecture de z montrant ainsi que xy k z ∈ L.
139
7 – langages et automates
y = ai+1 · · · aj
x = a1 · · · ai z = aj+1 · · · am
p0 pi
Fig. 7.1 — Toute chaı̂ne plus longue que le nombre d’états d’un automate doit provoquer la répétition d’au
moins un état.
➽ exercice 123 : Montrer que les langages suivants ne sont pas réguliers :
➊ {1n | n premier}
➋ {0n 1m | n ≤ m}
✒ nota bene : D’une manière générale, un automate fini n’est pas capable de
« compter ».
Langages réguliers
Montrons que L = {0m 1n | m ∈ N⋆ , n ∈ N⋆ } est régulier. Pour cela, nous allons calculer
l’index de RL la relation d’équivalence de associée à L.
– cl(ǫ) = {ǫ}. En effet, considérons un autre élément potentiel x 6= ǫ de cette classe. Si
x contient au moins un 1, considérons z = 01. On a alors : ǫz ∈ L mais xz 6∈ L. x
ne peut donc être dans la même classe que ǫ. De même, si x n’est constitué que de 0,
140
automates et langages
0
cl(ǫ) cl(0)
1 0, 1 0 1
1
cl(1) cl(01)
0
Fig. 7.2 — L’automate fini déterministe minimal permettant de reconnaı̂tre le langage {0m 1n | m ∈ N⋆ , n ∈
N⋆ }
✒ nota bene : D’après le théorème 28, l’automate fini déterministe de la figure 7.2
est l’automate minimal permettant de reconnaı̂tre L.
On peut aussi utiliser les deux théorèmes suivants montrant l’équivalence entre langages
réguliers et langages de type 3 (c.-à-d. engendrable à l’aide d’une grammaire de type 3).
141
7 – langages et automates
Théorème 30
Tout langage de type 3 est régulier
x∼y ↔ ∀M ∈ VN ∪ {ǫ}, (S =⇒ xM ) ↔ (S =⇒ yM )
✒ nota bene : L est reconnu par l’automate fini non déterministe A = (VN ∪
{f }, V, S, {f }). Considérant x ∈ V et y ∈ VN quelconques, τ est définie de
la façon suivante :
– (y, x) ∈ R ↔ f ∈ τ (y, x)
– ∀z ∈ VN , (y, xz) ∈ R ↔ z ∈ τ (y, x)
– τ (f, x) = ∅
3 On se souviendra que les grammaires de type 3 sont « linéaire à droite »– voir chapitre 5 et plus
142
automates et langages
0
0
S M
1 0
Théorème 31
Tout langage régulier est de type 3.
➽ exercice 126 : Le langage des mots sur {0, 1} interprétés comme la représentation
binaire d’un entier congru à 0 modulo 5 est-il régulier ? Si oui, donner un au-
tomate minimal permettant de reconnaı̂tre ce langage.
143
7 – langages et automates
Théorème 32
L’ensemble T3 des langages de type 3 sur un vocabulaire V constitue une
algèbre de Boole d’ensembles.
Pour cela, il suffit, d’une part, de montrer que ∅ est un langage régulier ; et que, d’autre
part, les opérations d’union, d’intersection et de complémentation4 sont stables sur T3 .
➀ Considérons A = (E, V, τ, e0 , ∅). On a T (A) = ∅. Ce dernier est donc régulier.
➁ Soit A = (E, V, τ, e0 , F ) et L = T (A) = τe−1 0
(F ). Ainsi, L = V ⋆ \ L = τe−1 0
(E \ F )
′
ce qui signifie que L est reconnu par A = (E, V, τ, e0 , E \ F ). T3 est donc stable par
complémentation.
➂ Soit A1 = (E1 , V, τ1 , e1 , F1 ) et A2 = (E2 , V, τ2 , e2 , F2 ). Soit A = (E1 ×E2 , V, τ, (e1 , e2 ),
F1 × F2 ) avec :
On pose :
∀X ∈ V ⋆ , τ̂ ((e1 , e2 ), X) = (τ̂ (e1 , X), τ̂ (e2 , X))
Ainsi, on a X ∈ T (A) si et seulement si :
✒ nota bene : En particulier, l’union de deux langages réguliers est régulier car
L1 ∪ L2 = L1 ∩ L2 .
reportera au chapitre 2 (en particulier la section 2.3 à partir de la page 24) pour des rappels sur les algèbres
de Boole.
144
propriétés des langages réguliers
Théorème 33
Tout langage fini est régulier
Comme T3 est stable par rapport à l’union, il suffit de montrer que les langages réduits
à un mot unique sont réguliers. Soit X = x1 x2 · · · xn ∈ V ⋆ le mot du langage. L = {X} est
bien évidemment engendré par la grammaire de type 3 suivante :
Théorème 34
Le produit de deux langages réguliers L1 et L2 est régulier.
A3 = (E1 ∪ E2 , V, τ3 , e1 , F3 )
145
7 – langages et automates
Théorème 35 S
Si L est régulier, sa clôture L⋆ = n∈N Ln est régulier.
Théorème 36 (Kleene➠)
T3 est le plus petit sous-ensemble de P(V ⋆ ) stable par rapport à l’union, au
produit et à la clôture qui contient les sous-ensembles finis de V ⋆
Soit M le plus petit sous-ensemble de P(V ⋆ ) stable par rapport à l’union, au pro-
duit et à la clôture qui contient les sous-ensembles finis de V ⋆ . L’ensemble des résultats
précédents permet de montrer directement que M ⊂ T3 . Il nous reste à prouver que tout
langage régulier appartient à la famille M. Soit L le langage régulier reconnu par l’automate
déterministe :
A = ({e1 , . . . , en }, V, τ, e1 , F )
Posons pour (i, j, k) ∈]n]3 , Rij
0
= {x ∈ V |τ (ei , x) = ej )} et :
k
Rij = {X ∈ V ⋆ |τ (ei , X) = ej ∧∀Y ∈ V + ∀Z ∈ V + (X = Y Z∧∃ℓ, τ (ei , Y ) = eℓ ) → ℓ ≤ k}
k
Ainsi, Rij désigne l’ensemble des mots X tels que l’automate commençant à les lire dans
l’état ei termine dans l’état ej sans être jamais passé par un état eℓ tel que ℓ > k. Dans
k
Rij , on distingue :
➀ les mots X tels que l’état ek n’est jamais atteint en cours de calcul (c.-à-d. les mots
k−1
de Rij )
k−1 k−1
➁ les mots composés d’un mot de Rik suivi d’un certain nombre de mots de Rkk puis
k−1 k−1 k−1 ⋆ k−1
d’un mot de Rkj . En d’autres termes, les mots de Rik (Rkk ) Rkj .
On peut donc écrire :
k k−1 k−1 ⋆ k−1 k−1
Rij = (Rik (Rkk ) Rkj ) ∪ Rij (7.3)
146
expressions régulières
k
Montrons pour i et j quelconques, par récurrence sur k, que Rij ∈ M.
0 0
➀ Rij est élément de M car Rij est fini
➁ supposons le résultat établi pour tout entier h strictement inférieur à k c.-à-d. ∀h ∈
j
]k], Rij ∈ M. La relation 7.3 et la stabilité par rapport de M par rapport à l’union,
k
au produit et à la clôture nous donne : Rij ∈ M.
S n
Remarquons, finalement que : L = j∈]n],ej ∈F R1j . Ainsi, L ∈ M.
✒ nota bene : Tout langage régulier sur V peut s’exprimer à l’aide de sous-
ensembles finis de V ⋆ en utilisant les opérations d’union, de produit et de
clôture. On parle d’« expressions régulières ».
5 Par convention, nous utilisons cette représentation pour décrire une expression régulière liée à un
symbole.
147
7 – langages et automates
☞ exemple : Si l’on souhaite représenter l’ensemble des mots qui alternent des 0
et des 1, une façon simple est de partir de 01, puis d’en prendre la clôture
(01)⋆ . Mais, il nous manque ici les mots qui commencent par un 1 et ceux
qui finissent pas un 0. Il y a deux manières de régler ce problème. On peut
aussi partir de 10 et alors l’expression régulière que l’on cherche est :
(ǫ + 1)(01)⋆ (ǫ + 0)
✒ nota bene : L’ordre standard de priorité au sein des expressions régulière est le
suivant : tout d’abord la clôture, puis le produit et enfin l’union. Ainsi, 01⋆ +1
se lit en fait (0(1⋆ )) + 1.
148
expressions régulières
Éliminer un état s consiste à supprimer tous les chemins qui passent par s dans l’auto-
mate. Si on souhaite ne pas modifier le langage reconnu par l’automate, il est alors nécessaire
d’utiliser des transitions étiquetées par des mots et non plus des symboles. Ainsi, sur un
arc allant de l’état p à l’état q, on pourra faire figurer tous les mots (étiquettes) obtenus en
allant de p à q en passant par s. Il est bien évidemment irréalisable de lister tous ces mots.
Heureusement, nous sommes sûrs que cet ensemble de mots peut être représentés par une
expression régulière.
Le langage de l’automate obtenu après élimination d’états intermédiaires est l’union
pour tous les chemins de l’état de départ à un état d’acceptation des langages obtenus par
la concaténation des langages rencontrés le long du chemin.
✒ nota bene : Cette façon de voir les choses est tout à fait compatible avec les
définitions de langages reconnus par les automates vues jusqu’à présent. En
effet, chaque symbole a (ou même ǫ s’il est autorisé) peut être vu comme
une expression régulière dont le langage est un constitué mot unique {a} (ou
{ǫ})
La figure 7.4 présente un état générique s sur le point d’être éliminé. On suppose ici que
dans l’automate considéré, s a pour prédécesseurs les états q1 , q2 , . . . , qk et pour successeurs
p1 , p2 , . . . , pm . Bien sûr, il est possible que des q soit des p mais dans tous les cas s n’est
ni parmi les p et les q même s’il existe une boucle sur s (comme on peut le voir sur la
figure 7.4). Les arcs de qi à s sont étiquetés par une expression régulière Qi ; les arcs de s à
pj sont étiquetés par l’expression régulière Pj . La boucle sur s est étiquetée S. Enfin, Rij
est l’expression régulière étiquetant l’arc entre qi et pj .
✒ nota bene : Si les arcs mentionnés n’existent pas, l’expression régulière les
étiquetant est alors ∅.
La figure 7.5 montre ce que devient l’automate après élimination de l’état s. Tous les arcs
mettant en jeu s ont disparu. En compensation, on introduit pour chaque prédécesseur qi et
chaque successeur pj , une expression régulière représentant tous les chemins éliminés c.-à-d.
les chemins démarrant en qi , allant s, bouclant sur s zéro ou plusieurs fois, et finalement,
allant en pj . Cette expression est tout simplement : Qi S ⋆ Pj . Cette dernière est ajoutée (par
union) à l’expression pré-existant sur l’arc reliant qi à pj .
La démarche pour construire une expression régulière à partir d’un automate est alors
la suivante :
➊ Pour chaque état d’acceptation q, éliminer tous les états intermédiaires entre e0 (état
de départ) et q.
➋ Si q 6= e0 , on obtient un automate à deux états tel que celui de la figure 7.6. L’expres-
sion régulière associée au langage est alors : (R + SU ⋆ T )⋆ SU ⋆ .
➌ Si e0 est un état d’acceptation, alors on obtient un automate à un unique état tel que
celui de la figure 7.7 dont l’expression régulière le représentant est : R⋆ .
149
7 – langages et automates
R1m
R11
q1 p1
Q1 P1
S
Qk Pk
qk pm
Rkm
Rkl
➍ L’expression régulière représentant l’automate est alors l’union de toutes les expres-
sions calculées à partir des automates réduits en appliquant les règles ➋ et ➌ pour
chacun des états d’acceptation de l’automate initial.
☞ exemple : Soit l’automate fini non déterministe de la figure 7.8 qui accepte
tous les mots composés de 0 et de 1 dont l’avant-dernière ou l’antépénultième
position est un 1. La première étape consiste à convertir cet automate en un
automate étiqueté par des expressions régulières. On obtient l’automate de la
figure 7.9. Ensuite, il s’agit d’éliminer l’état B. En effet, celui-ci n’est ni état
de départ, ni état d’acceptation, il sera éliminé de toutes les réductions.
L’état B a un prédécesseur A et un successeur C. Selon les conventions de
la figure 7.4, on a Q1 = 1, P1 = 0+1, R11 = ∅ (car il n’y a pas d’arc entre A
et C) et S = ∅ car il n’y a pas de boucle sur B. Ainsi, l’expression sur le nouvel
arc entre A et C est : ∅ + 1∅⋆ (0 + 1). On peut simplifier cette expression
en notant que ∅ est neutre pour l’union et que L(∅⋆ ) = L(∅0 ) = {ǫ} (car
∅ est absorbant pour le produit – voir page 110). On obtient alors au final :
150
expressions régulières
R11 + Q1 S ⋆ P1
q1 p1
R1m + Q1 S ⋆ Pm
Rk1 + Qk S ⋆ P1
Rkm + Qk S ⋆ Pm
qk pm
R U
S
151
7 – langages et automates
0, 1
1 0, 1 0, 1
A B C D
Fig. 7.8 — Un AFN acceptant les mots ayant un 1 en avant-dernière ou antépénultième position
0+1
1 0+1 0+1
A B C D
Fig. 7.9 — L’automate de la figure 7.8 avec des expressions régulières comme étiquettes
152
expressions régulières
0+1
1(0 + 1) 0+1
A C D
0+1
1(0 + 1)(0 + 1)
A D
0+1
1(0 + 1)
A C
0 0, 1
1 2
153
7 – langages et automates
Fig. 7.14 — Les automates de base pour l’association d’un automate à une expression régulière
0 1
→ e1 e2 e1
e2 e3 e1
⋆e3 e3 e2
154
expressions régulières
R
ǫ ǫ
ǫ ǫ
S
ǫ
R S
ǫ ǫ
R
155
7 – langages et automates
0
ǫ ǫ
ǫ ǫ
1
0
ǫ ǫ
ǫ ǫ
ǫ ǫ
1
(0 + 1)⋆ 1(0 + 1)
✒ nota bene : Un tel ǫ-automate peut être simplifié en supprimant les ǫ-transitions,
on obtient alors un automate tout à fait similaire à celui de la figure 7.12.
156
expressions régulières
0
ǫ ǫ
ǫ ǫ
ǫ ǫ
1 ǫ
ǫ
1
0
ǫ ǫ ǫ
ǫ ǫ
1
➽ exercice 133 : Soit A = (E, Σ, τ, e0 , {ef }) un ǫ-automate tel que e0 ne soit pas
un successeur et ef un prédécesseur. Décrire le langage accepté par l’automate
résultant des modifications sur A (ceci en terme de L = T (A)) :
➊ ajout d’une ǫ-transition entre ef et e0
➋ ajout d’une ǫ-transition entre e0 et tout état présent sur un chemin issu
de e0
➌ ajout d’une ǫ-transition entre tout état présent sur un chemin aboutis-
sant à ef et ef
➍ les modifications ➋ et ➌ simultanément
157
7 – langages et automates
des mots-clés du langage. Ces expressions régulières sont alors codées en interne sous la forme
d’un automate déterministe ou non qui est alors simulé pour identifier les motifs recherchés.
UNIX offre un certain nombre de raccourcis pour permettre d’écrire des expressions
régulières sur l’alphabet ASCII beaucoup plus succinctement. Ainsi :
– le symbole . (un point) représente un caractère quelconque
– [a1 a2 . . . ak ] est un raccourci pour l’expression régulière : a1 + a2 + · · · + ak
– entre des crochets, une expression du type x-y représente l’ensemble des caractères
entre x et y dans l’ordre ASCII. Ainsi, les nombres peuvent représentés par [0-9],
les caractères majuscules par [A-Z] et l’ensemble des caractères alphanumériques par
[A-Za-z0-9].
– il existe des notations spéciales pour les ensemble de caractères souvent utilisés :
– [:digit:] est la même chose que [0-9]
– [:alpha:] est la même chose que [A-Za-z]
– [:alnum:] est la même chose que [A-Za-z0-9]
Enfin, divers opérateurs sont utilisé dans les expressions régulières UNIX :
– l’opérateur | est utilisé à la place de +
– l’opérateur * est utilisé à la place de ⋆
– l’opérateur ? signifie « zéro ou un ». Ainsi, R? en UNIX est la même chose que ǫ + R
dans nos notations
– l’opérateur + signifie « un ou plus ». Ainsi, R+ en UNIX est la même chose que RR⋆
dans nos notations
– l’opérateur {n} signifie « n copies ». Ainsi, R{5} est UNIX est la même chose que
RRRRR dans nos notations
✒ nota bene : UNIX autorise l’utilisation de parenthèses pour grouper les expres-
sions. Les opérateurs ?, + et {n} sont considérés comme * lorsqu’il s’agit de
comparer des priorités.
158
des automates pour tout type de langage
ǫ-AFN AFN
ER AFD
159
chapitre huit
calculabilité, décidabilité
Leibniz
Jusqu’à présent, nous nous sommes intéressés à l’étude des langages au travers des plus
simples d’entre eux, les langages de type 3. Nous pourrions continuer notre étude en nous
intéressant aux langages de type 2. En effet, les langages de programmation tombant souvent
dans cette catégorie, cela semblerait pertinent. Nous avons vu dans le chapitre précédent
que de tels langages pouvaient être reconnus à l’aide d’un automate particulier dit automate
à pile. [Hopcroft et al., 2001] présente un panorama complet de ces automates et de leurs
propriétés vis-à-vis des langages de type 2.
Nous allons maintenant changer d’optique et plutôt nous intéresser aux aspects plus
généraux des langages et en particulier quels langages peuvent être définis à l’aide d’un
outil informatique quelconque. Nous nous intéressons donc plus maintenant aux limites
des ordinateurs. Nous montrerons ainsi qu’il existe des problèmes qui ne peuvent pas être
résolus à l’aide d’un ordinateur et nous introduirons la notion de machine de Turing qui
est reconnue comme un modèle théorique des ordinateurs actuels. À l’aide des machines de
Turing, nous serons alors capables d’introduire les notions fondamentales de « calculabilité »
et « décidabilité ».
161
8 – calculabilité, décidabilité
✒ nota bene : L’algorithme d’Euclide (que l’on retrouve dans son ouvrage « Éléments »
dans le livre VII, propositions I et II) permet de calculer le pgcd de deux entiers
m et n.
➊ diviser m par n ; soit r le reste (0 ≤ r < n)
➋ si r = 0, fin : le pgcd de m et n est n
➌ sinon m ← n, n ← r, retourner en ➊.
an xn + an−1 xn−1 + · · · + a1 x + a0 = 0
1 Un graphe est eulérien lorsqu’il est possible de parcourir avec un crayon toutes ses arêtes sans lever le
crayon et sans jamais passer deux fois sur la même arête. Un tel parcours forme alors un chemin eulérien.
On pourra aussi consulter la mini-biographie de Leonhard Euler➠.
2 Un chemin est hamiltonien s’il permet de passer une et une seule fois par chacun des sommets d’un
graphe.
162
langages et problèmes
163
8 – calculabilité, décidabilité
– si L est représenté à l’aide d’un automate fini déterministe, l’algorithme est très simple
puisqu’il suffit de simuler l’automate sur w et de regarder tout simplement si en
partant de l’état de départ, on atteint un état d’acceptation. Avec une représentation
idoine de la table de transition, l’algorithme possède alors une complexité temporelle
polynômiale de l’ordre de |w|.
– si L est représenté par un autre type d’automate (ou par une expression régulière), il
suffit de se ramener un automate fini déterministe équivalent (c’est toujours possible,
on l’a vu au chapitre 7).
164
langages et problèmes
mais aucune dès que n ≥ 3 il n’en n’a plus (c’est ce qu’on appelle le dernier théorème de
Fermat).
On définit maintenant le « problème du coucou » ainsi : étant donné un programme Java,
est-ce que les 6 premiers caractères affichés par ce programme forment la chaı̂ne coucou.
Comme il a fallu près de 300 ans à des mathématiciens pour dire si le programme de la
figure 8.2 qui ne fait qu’une dizaine de lignes affichait ou non coucou, on peut raisonnable-
ment penser que de dire si un programme donné, pour une entrée donnée, affiche coucou
est un problème difficile. Résoudre ce problème (le problème du coucou) à l’aide d’un ordi-
nateur, revient à écrire un programme qui, étant donné un programme P et une entrée I
dit si P exécuté sur l’entrée I affiche coucou. Nous allons montrer qu’un tel programme ne
peut pas exister.
Supposons qu’un tel programme (appelons-le H) existe. H prend donc deux entrées :
un programme P et son entrée I. Sa sortie est une chaı̂ne unique qui est oui si P affiche
coucou sur l’entrée I et non sinon. Il donne quoi qu’il arrive l’un ou l’autre résultat, il ne
165
8 – calculabilité, décidabilité
✒ nota bene : Un problème qui peut être résolu par un algorithme tel que H
qui dit toujours correctement si une instance donnée du problème a pour
réponse « oui » ou « non » est dit « décidable ». Sinon, le problème est dit
« indécidable ».
Nous allons montrer que le problème du coucou est indécidable. Pour cela, nous allons
faire quelques modifications très simples sur H. Tout d’abord, nous faisons la supposition
(non restrictive) suivante : toute les sorties de H sont réalisées sous forme de caractères
et la seule instruction d’affichage utilisée est System.out.print. La première modification
consiste à modifier la sortie non. L’idée est de remplacer dans H (qui est censé exister) toutes
les instructions System.out.print qui affichent4 non par System.out.print("coucou").
Ainsi, le nouveau programme que l’on nomme H1 affichera coucou à chaque fois que H
afficherait non.
La seconde modification consiste à restreindre H1 à :
➊ ne prendre qu’une unique entrée (P ) et non pas P et I
➋ faire en sorte que P soit son entrée (son I) pour lui-même
Pour cela, il suffit de modifier H1 (donnant alors le programme H2 ) de la façon suivante :
➊ H2 lit l’entrée P en entier et la stocke dans un tableau A créé en mémoire pour
l’occasion
➋ H2 simule H1 mais à chaque fois qu’H1 lirait une partie de l’entrée P ou I (originelles),
H2 lit dans la copie stockée dans A. Pour savoir où H1 est rendu dans P et I, il suffit
de maintenir dans H2 deux marqueurs de position dans A.
uniquement sur le n.
166
machines de turing
✒ nota bene : On peut montrer facilement d’une autre façon l’existence d’un
problème indécidable. En effet, on se souvient qu’un « problème » quelconque
peut se ramener au problème de l’appartenance d’un mot à un langage.
Or, l’ensemble des langages différents sur un alphabet quelconques n’est pas
dénombrable (on l’a déja vu dans le chapitre 5 page 110). Mais, l’ensemble
des programmes (qui sont des chaı̂nes finis sur un sous-ensemble de l’alphabet
ASCII) est lui dénombrable. Il y a donc considérablement moins de programme
que de langages. En prenant un langage au hasard, il est quasiment certain
qu’il correspond à un problème indécidable. Bien évidemment, ce qui nous
intéresse en réalité n’est sûrement pas les langages aléatoires.
Notre démonstration ici est purement informelle, nous allons maintenant introduire un
outil formel très puissant qui va nous permettre de préciser la notion de décidabilité et
au-delà de calculabilité.
167
8 – calculabilité, décidabilité
unité de contrôle
$ X1 X2 Xi Xn $ $
Au tout début du xxe siècle, David Hilbert➠ s’est posé la question de trouver un algo-
rithme permettant donner la valeur de vérité d’une proposition mathématique quelconque.
Il s’est plus particulièrement intéressé au calcul des prédicats (l’objet de notre chapitre 3).
Comme le calcul des prédicats est suffisamment expressif pour énoncer une affirmation du
type : « ce programme affiche coucou », nous savons maintenant qu’un tel algorithme ne
peut exister.
En 1931, Kurt Gödel➠ a publié son fameux théorème d’incomplétude. Il a construit une
formule du calcul des prédicats concernant les entiers, qui affirme que la formulle elle-même
ne peut pas être prouvée ni infirmée dans le calcul des prédicats. Sa technique ressemble
beaucoup au programme contradictoire H2 qui a été introduit précédemment.
Le calcul des prédicats n’est pas la seule façon de décrire ce qui est « calculable à l’aide
d’un ordinateur ». D’autres notations ont été proposées. Alan Turing➠ a proposé en 1936
la notion de machine de Turing comme un modèle de tout ce qui est calculable. Ce modèle,
comme nous allons le voir, est plutôt orienté « simulation d’un ordinateur » plutôt que
« simulation d’un programme ». Ce qui est fascinant c’est qu’à l’époque où Turing propose
son modèle, aucun ordinateur n’existe encore.
✒ nota bene : On peut montrer que tous les modèles sérieux proposés jusqu’à
présent pour représenter ce qui est calculable à l’aide d’un ordinateur ont le
même pouvoir d’expression : ils calculent les mêmes fonctions ou reconnaissent
les mêmes langages. L’hypothèse (que l’on ne peut prouver) du fait que quelle
que soit la façon dont on calcule, on ne pourra pas calculer autre chose que
ce dont sont capables les ordinateurs actuels (et les machines de Turing) est
appelée la thèse de Turing➠-Church➠.
8.2.1 Définition
Une machine de Turing peut être représentée comme sur la figure 8.3. Une telle machine
est constituée d’une « unité de contrôle » qui peut se trouver dans un nombre fini d’états
distincts. Cette unité de contrôle manipule un « ruban » divisée en « cellules ». Chaque
cellule contient un (et un seul) symbole quelconque provenant d’un ensemble fini. Dans son
168
machines de turing
état initial, l’« entrée » de la machine est un mot constitué d’un nombre fini de symboles
provenant d’un « vocabulaire d’entrée ». Cette entrée est placée sur le ruban. Toutes les
autres cellules (infiniment vers la droite et infiniment vers la gauche) contiennent un symbole
spécial (noté ici $). Ce symbole ne peut être un élément du vocabulaire d’entrée, il fait partie
du « vocabulaire de calcul » (et ne peut apparaı̂tre qu’accolé à une suite infinie de $).
L’unité de contrôle possède une « tête de lecture » qui est toujours positionnée sur une
cellule du ruban. On dit alors que la machine « lit » la cellule. Au départ, la tête de lecture est
sur la cellule la plus à gauche contenant un symbole du mot d’entrée. Un « mouvement » de
la machine de Turing est une fonction de l’état courant de l’unité de contrôle et du symbole
lu par la tête de lecture. En un mouvement, la machine de Turing va :
➊ changer d’état (l’état suivant peut être le même que l’état courant)
➋ écrire un symbole de calcul sur la cellule lue (ce symbole – pas nécessairement nouveau
– remplace ce qui était sur le ruban)
➌ se déplacer5 d’une cellule vers la droite ou la gauche
Formellement, on peut décrire une machine de Turing M à l’aide d’un 6-uplet.
M = (E, W, V, τ, e0 , F )
✒ nota bene : La fonction τ n’est pas nécessairement définie pour toutes les
combinaisons possibles (dans ces cas-là la machine s’arrête). Par contre, à
situation donnée, le comportement de la machine est unique. La machine est
déterministe. Plus complètement, les machines de Turing définies ici sont des
machines de Turing déterministe à un ruban.
5 Dans cette définition, la tête de lecture doit se déplacer. Cette restriction apparente ne limite en
rien ce que la machine peut calculer car une machine acceptant des mouvements dont le déplacement est
stationnaire peut facilement être simulée par une machine avec déplacement effectif obligatoire.
169
8 – calculabilité, décidabilité
τ 0 1 X Y $
e0 (e1 , X, D)
e1 (e1 , 0, D) (e2 , Y, G) (e1 , Y, D)
e2 (e4 , 0, G) (e3 , X, D) (e2 , Y, G)
e3 (e3 , Y, D) (e5 , Y, D)
e4 (e4 , 0, G) (e0 , X, D)
où :
– e est l’état courant de la machine de Turing
– la tête de lecture lit actuellement le symbole en position i en partant de la gauche du
mot
– X1 X2 · · · Xn est la portion de la chaı̂ne entre le non-$ le plus à gauche et celui le plus
à droite (la seule exception est lorsque la tête de lecture est à gauche ou à droite de
ces deux extrémités – i vaut alors 1 ou n)
170
machines de turing
✒ nota bene : On notera parfois X1 X2 · · · Xi−1 eXi Xi+1 · · · Xn , ainsi : (e, X1 · · · Xn , i).
qX1 · · · Xn ⊢ p$Y X2 · · · Xn
qX1 · · · Xn ⊢ pX2 · · · Xn
➽ exercice 139 : Quels sont les mouvements observés par la machine de Turing
de l’exemple précédent sur les mots :
➊ 01
➋ 0101
➌ 0011
➍ 00011
171
8 – calculabilité, décidabilité
0/0G
X/XD
e0 e4
Y/YD
0/XD 0/0G
On peut enfin représenter une machine de Turing à l’aide d’un diagramme similaire à
ceux présentés pour représenter les automates finis. Ce diagramme de transition consiste en
un ensemble de nœuds représentants les états de la machine de Turing. Un arc d’un état q
vers un état p est étiqueté par une ou plusieurs étiquettes de la forme : X/Y Z où X et Y
sont des éléments du vocabulaire de calcul (y compris $ pour X) et Z une direction (G ou
D). Un tel arc représente le fait que τ (p, X) = (q, Y, Z). Comme pour les automates finis,
un état d’acceptation est doublement cerclé et un état de départ est marqué une d’un arc
entrant sans prédécesseur.
172
machines de turing
τ 1 0
e0 (e1 , 0, D)
e1 (e1 , 1, D) (e2 , 1, D)
e2 (e2 , 1, D) (e3 , 0, G)
e3 (e4 , 0, D) (e3 , 0, G)
e4 (e5 , 0, D)
➽ exercice 140 : Quels sont les mots acceptés par la machine de Turing dans
l’exercice précédent ? Quel est le rôle de chacun des états de la machine de
Turing ?
Il y a une autre définition d’acceptation qui existe pour les machines de Turing : l’ac-
ceptation par arrêt. On dit qu’une machine de Turing s’arrête lorsqu’elle se trouve dans
un état e devant un symbole X pour lequel aucun mouvement n’est défini (c.-à-d. τ (e, X)
n’est pas défini).
➽ exercice 141 : Quels sont les mots de l’exercice 139 pour lesquels la machine
de Turing s’arrête ?
On peut toujours s’arranger pour qu’une machine de Turing s’arrête lorsqu’elle accepte
(au sens originel) un mot. Par contre, on ne peut pas toujours s’assurer qu’une machine
s’arrête lorsqu’elle n’accepte pas. Nous le verrons dans la section 8.3.2.
173
8 – calculabilité, décidabilité
$/$D
e0 e9
$/$D
0/0D
e12 e11 e10
1/$D 1/$D
0/$D
0m 10n sur le ruban et termine avec un mot 0mn à la place. Pour cela, on
utilise un sous-programme de copie (représenté figure 8.6) qui transforme une
description instantanée de type 0m−k 1e1 0n 10(k−1)n en : 0m−k 1e5 0n 10kn .
174
machines de turing
0/XD $/0G
e1 e2 e3
1/1G X/XD
1/1D
e4 e5
X/0G
175
8 – calculabilité, décidabilité
ban). Les entrées sont introduites sur le premier ruban, toutes les autres sont vides.
Les déplacements peuvent être stationnaires.
➌ machines de Turing non déterministes : la fonction de transition sur un état et un sym-
bole donnée peut renvoyer plusieurs mouvements simultanément (de manière similaire
aux automates non déterministes).
✒ nota bene : Pour cela, il est nécessaire de supposer (ce qui n’est pas tellement
restrictif) que l’ordinateur simulé :
➀ ne contient que des instructions qui augmente au plus de 1 la longueur
maximale d’un mot ;
➁ ne contient que des instructions qu’une machine de Turing multi-rubans
pourrait réaliser sur des mots de longueur k en un temps de l’ordre de
k2 opérations.
176
machine de turing et langages
Nous allons montrer qu’il existe au moins un langage sur {0, 1} qui n’est pas récursivement
énumérable. Pour cela, nous allons avoir besoin de montrer que les machines de Turing
peuvent codées de manière unique par un mot.
Nous allons numéroter toutes les grammaires de type 0 ayant pour vocabulaire terminal
{0, 1} (ceci est clairement non restrictif). Soit G = (VN , {0, 1}, S, R) avec
– VN = {A1 , A2 , . . . , An }
177
8 – calculabilité, décidabilité
– S = A1
– V = VN ∪ {0, 1}
– R = {ri |i ∈]p]} où ∀i ∈]p], γ(ri ) ∈ VN+ ∧ δ(ri ) ∈ V ⋆
On choisit alors le codage suivant :
– chaque Ai est codé par : 01i+2
– 0 est codé par 01 et 1 par 011
– le symbole de dérivation est codé par 00 et le séparateur de règles par 001
En ce qui concerne les règles, on a (en se souvenant que G est de type 0) :
– le codage de la partie gauche est toujours un élément de L1 = {01i+2 |i ∈]n]}+
– le codage de la partie droite est toujours un élément de L2 = {01i |i ∈]n + 2]}⋆
Ainsi, le codage d’une règle est toujours un élément de L3 = L1 (00)L2 . G étant complètement
caractérisée par sa suite de règles r1 , . . . , rp , le codage de la grammaire G est un élément
de L = (L3 (001))⋆ L3 .
L est une expression régulière, L est donc de type 3. L est dénombrable. L’ensemble des
grammaires de type 0 est donc dénombrable.
011100014 015 001014 00015 013 001014 00011001015 00013 014 001015 0001
On peut donc associer à toute machine de Turing un codage qui nous permettra de
numéroter ces machines. On peut montrer que tout langage sur {0, 1} qui peut être ac-
cepté par une machine de Turing peut l’être par une machine de Turing dont le voca-
bulaire de calcul est {0, 1, $}. Nous allons donc coder ce type de machine. Soit M =
(E, {0, 1}, {0, 1}, τ, q1 , $, F ) une machine de Turing. On note les symboles 0, 1 et $ res-
pectivement X1 , X2 et X3 . De même, on notera la direction G, D1 et la direction D, D2 .
Un mouvement τ (ei , Xj ) = (ek , Xℓ , Dm ) sera alors codé :
178
machine de turing et langages
Le nombre de mouvements possibles pour une machine donnée étant fini, on peut
numéroter ces mouvements. On notera mi le code correspondant au mouvement numéro i.
Une machine de Turing étant complètement déterminée par les mouvements la définissant,
on peut coder une machine de Turing présentant r mouvements de la façon suivante :
➽ exercice 144 : Soit M = ({q1 , q2 , q3 }, {0, 1}, {0, 1}, τ, q1 , {q2 }) où τ est constituée
des règles :
– τ (q1 , 1) = (q3 , 0, D)
– τ (q3 , 0) = (q1 , 1, D)
– τ (q3 , 1) = (q2 , 0, D)
– τ (q3 , $) = (q3 , 1, G)
Quel est le code de M ?
Théorème 38
Le langage Ld = {wi |wi 6∈ L(Mi )} n’est pas récursivement énumérable.
Supposons qu’il existe une machine de Turing M telle que L(M ) = Ld . Comme Ld
est un langage sur {0, 1}, M fait partie de la liste des machines Turing que l’on vient de
construire. Il existe donc i tel que : M = Mi . On peut maintenant considérer wi .
➊ Si wi ∈ Ld , alors Mi accepte wi . Or, par définition de Ld , wi ne peut alors être dans
Ld = L(Mi )
➋ Si wi 6∈ Ld , alors Mi n’accepte pas wi mais alors wi devrait être dans Ld = L(Mi )
On constate donc une contradiction, M ne peut alors pas exister. Ld n’est donc pas
récursivement énumérable.
179
8 – calculabilité, décidabilité
Cette notion de décidabilité est importante car il est souvent plus important de déterminer
l’existence ou non d’un algorithme pour résoudre un problème donné (savoir si le langage
associé est récursif) que de savoir qu’il existe ou non une procédure (sans garantie de ter-
minaison – langage récursivement énumérable). En effet, le fait que la machine de Turing
puisse ne pas s’arrêter ne nous permet pas de savoir quand répondre non. Il y a donc trois
catégories de problèmes :
– les problèmes décidables – langages récursifs
– les problèmes non décidables mais calculables – langages récursivement énumérables
mais non récursifs
– les problèmes non calculables – langages non récursivement énumérables
Nous allons montrer dans cette partie qu’il existe au moins un problème dans la deuxième
catégorie.
Théorème 39
Le complémentaire d’un langage récursif est récursif
180
machine de turing et langages
Soit L = L(M ) un langage récursif (M est donc une machine de Turing qui s’arrête
toujours). On construit M̄ telle que L̄ = L(M̄ ). M̄ se comporte comme M mais les modifi-
cations suivantes sont apportées à M :
➊ les états d’acceptation de M deviennent des états de non acceptation dans M̄ c.-à-d.
dans ces états, M̄ s’arrête mais n’accepte pas
➋ M̄ possède un nouvel état d’acceptation r (aucun mouvement ne peut être effectué
depuis cet état)
➌ pour toutes les combinaisons (état de M , symbole pour M ) telles qu’aucune transition
ne soit possible (c.-à-d. que M s’arrête sans accepter), ajouter une transition vers l’état
d’acceptation r
Comme M s’arrête toujours, la machine M̄ ainsi construite le fait aussi. De plus, M̄
accepte exactement les mots que M n’accepte pas. Ainsi, M̄ accepte L̄.
Théorème 40
Si un langage L et son complément sont tous les deux récursivement
énumérables, alors L est nécessairement récursif (et L̄ aussi)
Soit L = L(M1 ) et L̄ = L(M2 ). Considérons M une machine de Turing à deux rubans qui
simule simultanément M1 et M2 (un ruban pour chaque machine et des états combinaison
des états de M1 et M2 ). Sur une entrée w ∈ L, M1 accepte, M accepte aussi et s’arrête.
Pour w 6∈ L, M2 accepte, M s’arrête alors mais n’accepte pas. Ainsi, sur toute entrée M
s’arrête et L(M ) = L. Ainsi, on a montré que L était récursif.
✒ nota bene : Ld est un langage qui n’est pas récursivement énumérable. L¯d ne
peut donc pas être récursif. Par contre, L¯d peut être soit non récursivement
énumérable soit récursivement énumérable mais non récursif. En fait, L¯d se
trouve dans cette dernière situation, nous allons le montrer par la suite.
181
8 – calculabilité, décidabilité
Théorème 42
Il existe au moins un langage récursif qui n’est pas de type 1
Théorème 43
Le langage Lu = {(M, w)|w ∈ L(M )} est récursivement énumérable mais
pas récursif.
Nous allons construire une machine de Turing U telle que Lu = L(U ). U étant une
machine dont le vocabulaire d’entrée est {0, 1}, il existe j tel que U = Mj (au sens du
codage de la section 8.3.1). Une manière simple de construire U est de construire une
machine de Turing multi-rubans. Un premier ruban permet de stocker l’entrée (le code la
machine M suivie de son entrée), un second ruban permet de stocker le ruban simulé de
M (en utilisant le même type de codage), un troisième ruban stocke l’état courant de M
(l’état qi est représenté à l’aide de i 0 consécutifs) et un quatrième et dernier ruban sert de
ruban à tout faire.
Le fonctionnement général de U permet de :
7 En effet, l’ensemble des grammaires de type 0 qui le contient, l’est
182
machine de turing et langages
➊ s’assurer que l’entrée considérée correspond bien au codage d’une machine de Turing.
Si ce n’est pas le cas, U s’arrête sans accepter. Comme nous avons considéré qu’un
codage incorrect représentait une machine de Turing sans transition et qui donc n’ac-
cepte aucune entrée, le fonctionnement est correct.
➋ initialiser le second ruban avec le codage de w
➌ placer 0 l’état de départ de M sur le troisième ruban et déplacer la tête de lecture
d’une cellule sur le second ruban pour atteindre la première cellule simulée.
➍ simuler une transition de M (rechercher la transition idoine, l’exécuter, etc.)
➎ si M ne présente pas de transition réalisable, M s’arrête dans la simulation et donc
U doit faire de même
➏ si M arrive dans un état d’acceptation alors U aussi
De cette façon U simule le fonctionnement de M sur w et U accepte la paire (M, w) si
et seulement si M accepte w. Ainsi, L(U ) = Lu . Lu est bien récursivement énumérable.
Nous allons montrer par l’absurde que Lu ne peut être récursif. Supposons qu’il le soit :
selon le théorème 39, L¯u est récursif. Mais, si on connaı̂t une machine de Turing M qui
accepte L¯u alors, on peut construire une machine de Turing M ′ qui accepte Ld :
➊ Soit w une entrée de M , M ′ transforme alors tout d’abord cette entrée en ww
➋ M ′ simule M sur cette nouvelle entrée. Si w = wi alors M ′ permet de savoir si Mi
accepte wi . Comme L(M ) = L¯u , M accepte si et seulement si Mi n’accepte pas wi
soit si et seulement si wi ∈ Ld .
Or ceci est impossible puisque nous avons montré que Ld n’est pas récursivement
énumérable. Lu n’est donc pas récursif.
Réductions
Soit deux problèmes (à réponse oui-non) P1 et P2 . On dit que P1 se réduit en P2 s’il
existe un algorithme permettant de transformer une instance de P1 en une instance de P2
ayant même réponse. Formellement un tel algorithme est une machine de Turing qui prend
en entrée une instance de P1 et qui s’arrête en ayant sur son ruban une instance de P2 .
183
8 – calculabilité, décidabilité
Théorème 44
S’il existe une réduction de P1 vers P2 alors :
➊ si P1 est indécidable alors P2 l’est aussi
➋ si P1 correspond à un langage non récursivement énumérable alors P2
aussi
184
un problème indécidable : le problème de correspondance de post
Étant donnée une instance de PCP, cette instance possède-t-elle une solution ?
☞ exemple : Soit V = {0, 1}, A = {1, 10111, 10} et B = {111, 10, 0}. Cette
instance de PCP possède une solution. On pose m = 4, i1 = 2, i2 = 1,
i3 = 1 et i4 = 3. On a alors : w2 w1 w1 w3 = x2 x1 x1 x3 = 101111110. On
peut représenter cette solution par la liste : 2, 1, 1, 3.
Cette solution n’est pas unique. 2, 1, 1, 3, 2, 1, 1, 3 en est une autre.
➽ exercice 146 : Soit V = {0, 1}, A = {01, 001, 10} et B = {011, 10, 00}. Cette
instance de PCP possède-t-elle une solution ?
185
chapitre neuf
complexité
Albert Jacquard
Dans ce chapitre, nous nous intéressons maintenant aux langages récursifs (problèmes
décidables). Nous allons tout d’abord chercher à mesurer la capacité des algorithmes à
résoudre plus ou moins vite les problèmes auxquels ils sont confrontés. Nous nous intéresserons
donc à ce qu’on appelle la complexité des algorithmes. Ensuite, nous étudierons les problèmes
eux-mêmes afin d’être capable de déterminer si certains sont plus difficiles que d’autres.
Cette difficulté peut se mesurer à l’aide de la complexité du « meilleur » algorithme définissable
pour les résoudre. Nous serons alors capables de classifier les problèmes décidables en
différentes classes qui possèdent des propriétés particulières. Il s’agit alors de complexité
des problèmes.
187
9 – complexité
✒ nota bene : certains codages n’ont pas cette propriété : par exemple, choisir
de coder un entier n en binaire donne une donnée de taille log2 n alors qu’un
codage unaire donne une taille n. Ils ne sont pas équivalents à un temps
polynômial près.
1 L’espace occupé sur le ruban correspond à la portion finie du ruban infini qui est représentée dans la
description instantanée.
188
complexité des algorithmes
Calculer exactement les complexités spatiales et temporelles peut s’avérer une tâche fas-
tidieuse. Pour éviter cet écueil, on utilise la notion de classe de complexité, notion introduite
dans [Knuth, 1997]. On définit ansi les classes de fonctions suivantes :
➊ O(f ) = {g|∃c∃n0 ∈ N, ∀n ≥ n0 , g(n) ≤ c × f (n)}
➋ o(f ) = {g|∀c∃n0 ∈ N, ∀n ≥ n0 , g(n) ≤ c × f (n)}
➌ Ω(f ) = {g|∃c∃n0 ∈ N, ∀n ≥ n0 , g(n) ≥ c × f (n)}
➍ Θ(f ) = Ω(f ) ∩ O(f )
Ainsi, on dira qu’une fonction g est de l’ordre de f si et seulement si g ∈ O(f ).
Les complexités introduites jusqu’à présent sont des complexités « au pire ». Elles
évaluent le pire cas qui puisse se poser pour une entrée donnée. Il existe d’autre manières
d’évaluer la complexité : complexité « en moyenne » (ou « amortie »), etc. Celles-ci sont
souvent autrement plus ardues à calculer.
189
9 – complexité
Suivant l’état de l’unité centrale et le symbole lu par chaque tête de lecture, la machine
peut effectuer certaines ou toutes les opérations suivantes :
– changer l’état de l’unité centrale ;
– écrire un nouveau symbole dans chacune (ou certaines ) des cellules situées sous les
têtes d’écriture ;
– déplacer certaines des têtes de lecture à gauche (G), à droite (D) ou les laisser « sta-
tionnaires » (S).
Formellement, une machine de Turing à k-rubans est un sextuplet :
M = (E, V, W, τ, e0 , ef )
où :
– E est un ensemble fini d’états ;
– W est le vocabulaire d’entrée ;
– V est le vocabulaire « global » de calcul utilisé ;
– e0 est l’état initial ;
– ef est l’état terminal ou final ;
– τ est une fonction partiellement définie de E × (V ∪ {$})k dans E × ((V ∪ {$}) ×
{G, D, S})k .
Une description instantanée pour une telle machine est un k-uplet (α1 , α2 , . . . , αk ) avec
αi = xey (où xy est le mot écrit sur le ruban i, e étant l’état de l’unité centrale).
Une machine k-rubans M = (E, V, W, τ, e0 , ef ) accepte le mot x1 x2 . . . xn si et seulement
s’il existe une description instantanée (α1 , α2 , . . . , αk ) avec une occurrence de ef dans chaque
αi telle que :
où ⊢⋆M désigne la fermeture réflexive et transitive de la relation ⊢M (⊢M est définie par :
D1 ⊢M D2 si seulement si D1 devient D2 après un unique mouvement de la machine).
190
complexité des algorithmes
La définition de la complexité temporelle pour une telle machine ne change pas. Pour la
complexité spatiale, il suffit de prendre en compte les différents rubans pour calculer l’espace
maximum occupé (on détermine sur quel ruban se produit le pire cas et on considère ce pire
cas).
191
9 – complexité
Théorème 47
Soit L un langage reconnu par une machine de Turing à k-rubans en un
temps T (n). L est alors reconnu par une machine de Turing avec un seul
ruban en un temps O(T (n)2 ).
En effet, chacun des rubans utilise au plus T (n) cellules (le nombre de mouvements
correspond au nombre de cellules parcourues). Il suffit alors de coder les contenus des
différents rubans sur le ruban unique de la machine de Turing déterministe classique. Chaque
mouvement nécessite alors le parcours et la mise à jour de cette simulation. Ceci se fait en
O(T (n)). La simulation des T (n) mouvements est donc réalisable en O(T (n)2 ).
Nous avons vu au chapitre 8 section 8.2.5 page 175 que les machines de Turing multi-
rubans servaient à la simulation des ordinateurs modernes. Nous venons maintenant de
voir que nous pouvions calculer la complexité d’un algorithme en travaillant directement
sur le langage et qu’il n’était pas nécessaire de « redescendre » au niveau des machines
de Turing pour ce faire car le rapport entre les complexités au niveau « langage » et au
niveau « machine de Turing » n’est qu’un polynôme connu fonction de la taille de la donnée
d’entrée.
M = (E, V, W, τ, e0 , ef )
où : τ est une fonction de transition définie de E × (V ∪ {$})k dans P(E × ((V ∪ {$}) ×
{G, D, S})k ). Les notions de description instantanée et de langage engendré ne changent
pas.
192
complexité des algorithmes
Tab. 9.2 — Une machine de Turing 3-rubans non déterministe pour résoudre le problème partition.
entrée est un mot de la forme 10i1 . . . 10ik codant les différents « poids » pour
chacun des éléments de A. On a :
193
9 – complexité
Théorème 49
Si M est une machine de Turing non déterministe de complexité T (n), il
existe une constante c et une machine de Turing déterministe M ′ tels que
L(M ) = L(M ′ ) et que la complexité de M ′ soit O(cT (n) ).
✒ nota bene : Toute la question est de savoir si cette simulation est aussi en
Ω(cT (n) ). À l’heure actuelle, nul ne le sait.
194
complexité des algorithmes
10 20 30 40 50 60
n 10−5 s 2 × 10−5 s 3 × 10−5 s 4 × 10−5 s 5 × 10−5 s 6 × 10−5 s
n2 10−4 s 4 × 10−4 s 9 × 10−4 s 1.6 × 10−3 s 2.5 × 10−3 s 3.6 × 10−3 s
n3 10−3 s 8 × 10−3 s 2.7 × 10−2 s 6.4 × 10−2 s 12.5 × 10−2 s 21.6 × 10−2 s
n5 1/10s 3.2s 24.3s 1.7mn 5.2mn 13mn
2n 10−3 s 1s 17.9mn 12.7j 35.7a 366si
3n 6 × 10−2 s 58mn 6.5a 3855si 2 × 108 si 1013 si
Tab. 9.3 — Évolution du temps nécessaire à l’exécution d’un algorithme de complexité donnée (en ligne) en
fonction de la taille de la donnée (en colonne). L’hypothèse de base est un temps d’exécution par opération
d’une µs (10−6 s).
On peut se poser la question de savoir s’il existe des algorithmes dont la complexité se
situe entre une complexité polynômiale ou une complexité exponentielle. Ils existent bien
sûr. Lorsqu’on parle de complexité exponentielle, on cherche juste à montrer que le temps
d’exécution est plus grand que n’importe quel polynôme.
195
9 – complexité
ordinateur actuel 100 fois plus rapide 1000 fois plus rapide
n N1 100 × N1 1000 × N1
n2 N2 10 × N2 31.6 × N2
n3 N3 4.64 × N3 10 × N3
n5 N4 2.5 × N4 3.98 × N4
2n N5 N5 + 6.64 N5 + 9.97
3n N6 N6 + 4.19 N6 + 6.29
Tab. 9.4 — Évolution de la taille d’un problème traitable en un temps fixé en fonction de la puissance de
l’ordinateur (en colonne) et de la complexité de l’algorithme (en ligne)
en n (puisque log2 n pour n assez grand est plus grand que n’importe quelle
2
constante k). D’un autre côté, nlog2 n = 2(log2 n) . Cette fonction croı̂t donc
plus lentement que n’importe quelle fonction 2cn pour c > 0.
On note N P l’ensemble des langages récursifs qui peuvent être reconnus par une machine
de Turing non déterministe en un temps de complexité polynomiale.
☞ exemple : Le problème partition introduit section 9.1.2 page 192 est dans
N P puisque la machine de Turing non déterministe dont la table de transition
est décrite dans le tableau 9.2 permet de le résoudre et est de complexité
polynomiale.
196
complexité des problèmes : classes p et np
Proposition 12
Pour montrer qu’un problème est dans N P, il faut et il suffit d’être capable
de vérifier en temps polynômial avec un algorithme déterministe une réponse
« oui » (une solution au problème).
En effet, si une telle machine de Turing M existe, il suffit alors de définir une ma-
chine de Turing non déterministe M ′ générant de manière non déterministe de générer les
informations nécessaires pour donner une réponse positive (par exemple, une solution au
problème – c’est ce qu’on appelle un certificat) et de simuler M sur M ′ pour vérifier la
réponse. De manière similaire, si on possède une machine de Turing non déterministe M ′
pour reconnaı̂tre le langage associé au problème, il suffit pour un mot du langage donné
de sélectionner une séquence de mouvements permettant l’acceptation et de définir M en
fonction des mouvements effectifs de la machine (on connaı̂t en effet les « bonnes » décisions
à prendre).
Théorème 50
P ⊂ NP
En effet, une machine de Turing déterministe est une machine de Turing non déterministe
un peu particulière.
197
9 – complexité
Théorème 51
Soient P1 et P2 deux problèmes tels qu’il existe une réduction polynômiale
de P1 vers P2 . Si P1 n’est pas dans P alors P2 non plus.
Corollaire 1
Soient P1 et P2 deux problèmes tels qu’il existe une réduction polynômiale
de P1 vers P2 . Si P2 est dans P alors P1 aussi
9.2.3 C-complétude
Soit une classe de complexité C (comme P ou N P). On dit qu’un problème P est C-
complet si :
➊ P ∈C
➋ pour tout problème P ′ dans C, il existe une réduction polynômiale de P ′ vers P
✒ nota bene : Un problème C-complet est au moins aussi « dur » que n’importe
quel problème de C. D’ailleurs, lorsque la preuve qu’un problème est dans C
n’est pas encore faite, mais que l’item ➋ est vérifié, on dit qu’un tel problème
est C-dur (ou C-difficile).
Théorème 52
Si P1 est N P-complet et qu’il existe une réduction polynômiale entre P1 et
P2 alors P2 est lui aussi N P-complet.
198
complexité des problèmes : classes p et np
Théorème 53
S’il existe un problème N P-complet qui est dans P, alors P = N P.
Le problème sat (ou de satisfiabilité) est le problème de savoir si une expression donnée
du calcul propositionnel (expression booléenne représentée à l’aide des opérateurs ¬, ∧ et
∨) est satisfaisable.
L’idée générale est de transformer une instance d’un problème P de N P en une instance
de sat en considérant des variables propositionnelles décrivant les états et configurations
successives de la machine M résolvant P et en exprimant un certain nombre de relations
sur ces variables (la tête de la lecture regarde exactement une case par configuration, on
a un seul symbole par case, la machine est dans un seul état, au plus une case peut être
modifiée, etc.). Cette transformation est polynômiale.
199
9 – complexité
✒ nota bene : Le problème de couplage classique (en deux dimensions) est lui
dans P
➽ exercice 160 : Montrer que vc est N P-complet par réduction de 3sat vers vc.
200
autres classes de complexité
Théorème 55
P est clos par complémentation
En effet, lorsque nous avons montré le théorème 39 qui montrait que le complémentaire
d’un langage récursif était lui-même récursif, nous avons utilisé une machine de Turing
modifiée dont le comportement était le même que la machine de Turing initiale (seuls les
états d’acceptation étaient modifiés). Ceci montre indirectement le théorème 55.
✒ nota bene : par contre, on ne sait pas à l’heure actuelle si N P est clos par
complémentation.
On définit la classe co-N P comme étant l’ensemble des langages dont le complément est
dans N P.
☞ exemple : Le problème taut dont une instance est une formule booléenne et
dont la question est de savoir si cette formule est une tautologie est dans
co-N P.
✒ nota bene : une façon de prouver qu’un problème est dans co-N P consiste
à montrer qu’il est possible de vérifier une réponse « non » à l’aide d’un
algorithme déterministe de complexité temporelle polynômiale.
201
9 – complexité
NP co-N P
✒ nota bene : jusqu’à l’heure actuelle, aucun tel problème n’a été identifié
La figure 9.1 représente les positions relatives supposées dans différentes classes vues
jusqu’à présent.
✒ nota bene : bien sûr, si P = N P alors ces différentes classes n’en font plus
qu’une
✒ nota bene : La classe PS est parfois notée pspace. L’intérêt de notre notation
est qu’elle permet d’être consistante avec les notations passées.
202
autres classes de complexité
La classe N PS est l’ensemble des langages récursifs qui peuvent être reconnus par une
machine de Turing non déterministe de complexité spatiale polynomiale.
Proposition 13
P ⊆ PS N P ⊆ N PS
Une machine de Turing ne pouvant visiter plus de cellules qu’elle ne fait de mouvements,
les inclusions ci-dessus sont naturelles.
PS = N PS
Corollaire 1
P ⊆ NP ⊆ PS
Théorème 58
Soit P un problème PS-complet :
➊ si P ∈ P alors P = PS
➋ si P ∈ N P alors N P = PS
203
9 – complexité
NP co-N P
PS = N PS
langages récursifs
Fig. 9.2 — Positions relatives supposées des classes de complexité (de P à PS)
La figure 9.2 présente les positions relatives des classes de complexité vues jusqu’à
présent.
204
autres classes de complexité
✒ nota bene : le deuxième ruban n’a pas besoin d’être initialisé réellement avec
cette séquence aléatoire. On peut utiliser lorsqu’on en a besoin un algorithme
générant un tel nombre.
2 C’est d’ailleurs tout l’intérêt d’une telle machine si on veut être capable de faire des choses différentes
ne peut observer qu’une portion finie du ruban aléatoire. Si on suppose que cette portion est de longueur
m alors la probabilité de chacune des différentes situations possibles est exactement 21m .
205
9 – complexité
Pour un langage L donné, on appelle « faux négatif » un mot w qui est rejeté par M lors
d’une exécution particulière alors que w ∈ L ; on appelle « faux positif », un mot w accepté
par M alors que w 6∈ M .
On ne peut bien sûr jamais ne pas avoir du tout de faux négatifs. Mais, du fait de la
condition ➋, on peut toujours (en répétant autant de fois que nécessaire l’exécution de M
sur w), faire en sorte que la probabilité que le mot w soit un faux négatif pour la machine
M soit aussi petite que souhaité.
Théorème 60
Si un langage L est dans RP, alors pour toute constante c > 0, il existe un
algorithme aléatoire de temps d’exécution polynômial qui donne une réponse
quelle que soit son entrée w (de L) sans donner un faux positif et sans que
la probabilité de donner un faux négatif soit supérieure à c.
206
autres classes de complexité
La classe ZPP (zero-error, probabilistic, polynomial) est basée sur les machines de Turing
aléatoires qui s’arrêtent quelle que soit leur entrée et qui ont un temps d’exécution attendu
avant l’arrêt qui est un polynôme de la taille de l’entrée. Cette machine de Turing accepte
lorsqu’elle entre dans un état d’acceptation et rejette si elle s’arrête avant d’être entrée dans
un tel état.
✒ nota bene : ZPP ressemble beaucoup à P excepté que les algorithmes sont
potentiellement aléatoires et que le temps de calcul pris en compte n’est pas
le temps au pire mais plutôt le temps de calcul escompté (l’espérance au sens
probabiliste du temps de calcul).
Une telle machine de Turing donne toujours la bonne réponse mais le temps d’exécution
peut varier de manière aléatoire.
✒ nota bene : Une telle machine de Turing est dite de type « Las-Vegas ».
Proposition 14
ZPP est clos par complémentation. RP peut ne pas l’être.
En effet, pour ZPP, il suffit de constater que s’il existe un algorithme de type Las-Vegas
pour reconnaı̂tre un langage de ZPP alors ce même algorithme pour lequel on inverse les
conditions d’acceptation et de rejet est aussi de type Las-Vegas et permet de reconnaı̂tre
L̄. Pour RP, il suffit de constater qu’un algorithme de type Monte-Carlo ne traite pas
symétriquement acceptation et rejet. On note co-RP l’ensemble des langages L tels que L̄
est dans RP.
207
9 – complexité
Théorème 61
ZPP = RP ∩ co−RP
208
autres classes de complexité
ZPP
NP RP P co-RP co-N P
PS = N PS
langages récursifs
Fig. 9.3 — Positions relatives supposées des classes de complexité (de P à ZPP)
Proposition 15
P ⊆ ZPP
Proposition 16
RP ⊆ NP
Ce résultat est dû à la différence entre non déterminisme et aléatoire que nous avons déjà
eu l’occasion de préciser plus haut. Il est donc aisé de définir une machine de Turing non
déterministe à partir d’une machine de Turing aléatoire de type Monte-Carlo pour montrer
le résultat.
La figure 9.3 présente le paysage des langages récursifs tels que nous l’avons vu dans ce
chapitre.
✒ nota bene : Encore une fois, si P = N P toutes ces classes se trouvent réduites
à une seule.
209
9 – complexité
☞ exemple : Soit le problème primes dont une instance est un entier p (codé par
un mot sur {0, 1} de longueur n = log2 p) et la question est de savoir si p est
premier (prime number en anglais). On a :
➊ primes ∈ N P (prouvé en 1975)
➋ primes ∈ co-N P
➌ primes ∈ co-RP (prouvé en 1976 – c’est l’algorithme présenté page 9.3.3)
➍ primes ∈ RP (prouvé en 1992 – prouvant donc que primes ∈ ZPP)
✒ nota bene : en 2002 (seulement !), Agrawal, Kayal et Saxena ont montré que
primes ∈ P. Ce n’était pas si évident que cela paraı̂t mais il faut bien voir
√
que l’algorithme qui consiste à réaliser les p divisions pour voir s’il existe un
n
diviseur de p est en Ω(2 2 ) (ce n’est donc clairement pas un polynôme en n).
✒ nota bene : tout ceci est valide tant que on n’a pas prouvé que P = N P ...
210
décidabilité et complexité en pratique
Fig. 9.4 — Je n’arrive pas à trouver un algorithme efficace, j’imagine que je ne suis pas assez doué pour
cela. Illustration tirée de [Garey et Johnson, 1979].
Fig. 9.5 — Je n’arrive pas à trouver un algorithme efficace, parce qu’un tel algorithme n’existe pas. Illus-
tration tirée de [Garey et Johnson, 1979].
211
9 – complexité
Fig. 9.6 — Je n’arrive pas à trouver un algorithme efficace, mais aucune de ces personnes très connues n’a
réussi non plus. Illustration tirée de [Garey et Johnson, 1979].
212
module trois
contexte
213
chapitre dix
indications biographiques
Aristote — Philosophe grec (Stagire, Macédoine, 384 – Chalcis, ı̂le d’Eubée, 322 av. J.-C.).
Son père est médecin du roi de Macédoine, Amyntas II. Aristote demeure vingt ans
à Athènes à l’académie de Platon, d’abord comme étudiant, puis comme disciple et
professeur. Il critique la théorie des idées développée par son maı̂tre mais, jusqu’à la
mort de celui-ci, en 347, il lui garde son amitié. Il quitte alors Athènes, puis devient
précepteur d’Alexandre à la cour de Philippe de Macédoine. Il revient à Athènes
pour fonder sa propre école philosophique, le Lycée, du nom d’un gymnase proche
dédié à Appolon Lycien. À la mort d’Alexandre, Athènes se soulevant contre les
Macédoniens, Aristote se réfugie à Chalcis où il meurt en 322. Le système de pensée
que constitue la philosophie d’Aristote eut une portée exceptionnelle car elle réalisait
une synthèse audacieuse des données culturelles de l’Antiquité, que les civilisations
islamique puis médiévale réactualisèrent. La logique d’Aristote est une logique des
termes, des classes ou des prédicats.
Boole, George — Mathématicien et logicien anglais (Lincoln, 1815 – Cork, Irlande, 1864).
Autodidacte, il reprend un problème posé par Gottfried Wilhelm Leibniz➠, celui de
la characteristica universalis, c’est-à-dire d’un « calcul » qui représenterait les raison-
215
10 – indications biographiques
Buridan, Jean — Philosophe scolastique➥ (Béthune, v. 1300 – id. apr. 1358). Recteur de
l’université de Paris en 1328 et 1340, commentateur et disciple d’Aristote➠, il doit
sa célébrité à la fable dite de l’âne de Buridan, qui, toutefois, ne figure pas dans
ses écrits : placé entre un seau d’eau et un boisseau de blé, un âne se laisse mourir
de faim et de soif, faute de pouvoir choisir entre les deux biens. Buridan aurait eu
216
recours à cette fable dans ses leçons afin de démontrer par l’absurde le caractère
nécessaire du choix, même lorsque les biens entre lesquels il convient de choisir sont
d’égale valeur.
Chrysippe — Philosophe grec (Soli, Asie mineure v. 281 – Athènes, v. 205 av. J.-C.).
Chrysippe s’est attaché à fixer et à organiser la doctrine stoı̈cienne, ce qui le fait ➥ stoı̈cisme
considérer comme le « second fondateur » de cette école après Zénon de Cition. Féru
de logique, il excelle dans la pratique de la dialectique➥ et enrichit également le
corpus stoı̈cien en matière de morale.
217
10 – indications biographiques
Church, Alonzo — Logicien américain (1903 – 1905). Un des plus grands logiciens du xx
e siècle. En 1932, il invente du λ-calcul➥. En 1936, il démontre l’arithmétique est
Cohen, Paul Joseph — Mathématicien américain né le 2 avril 1934 à Long Branch (New
Jersey). Il est surtout connu pour avoir démontré en 1963 que l’hypothèse du continu
était indépendante des axiomes de la théorie des ensembles de Zermelo➠-Fraenkel➠,
travaux qui lui ont valu la Médaille Fields en 1966. Il a utilisé pour cela une méthode
originale, le forcing.
Euclide — Mathématicien grec (autour de 300 avant J.-C.). Le nom d’Euclide désigne
finalement plus un livre, « Les Éléments », et un style de connaissance, l’exposé
➲ axiome axiomatique et déductif➲déduire, qu’un homme. Il est presque certain qu’Euclide
vécut à Alexandrie, en Égypte, sous le règne du roi Ptolémée Ier, autour de 300
avant Jésus-Christ. Il travailla sans doute au Musée, centre intellectuel de cette ville.
Il est plus vieux qu’Archimède et Eratotosthène, de quelques dizaines d’années. Mais
on ne connaı̂t presque rien de l’homme, si ce n’est quelques anecdotes peut-être
significatives, mais sujettes à caution. On raconte qu’à un de ses élèves débutants,
qui lui demandait ce qu’il allait gagner à apprendre cette matière ardue, il fit donner
par un de ses esclaves un pièce de monnaie, puisque, dit le maı̂tre, ce personnage
voulait tirer profit de qu’il apprenait, etc.
Certains historiens doutent même de ce qu’un homme appelé Euclide ait existé,
et voient dans ce nom une sorte de nom d’auteur collectif, derrière lequel se seraient
cachés plusieurs mathématiciens.
« Les Éléments » constituent une encyclopédie du savoir mathématique de la
civilisation grecque du temps. Mais plus que son contenu, c’est l’organisation de
l’ouvrage qui est remarquable. En effet, cette œuvre entreprend de déduire l’ensemble
des résultats mathématiques à partir d’un petit nombre d’entre eux, explicitement
admis. Tous les autres résultats n’apparaissent alors que comme des conséquences
des résultats premiers, à l’issue de raisonnements qui se veulent absolument précis et
rigoureux. La certitude des théorèmes semble découler alors implacablement de celle
des énoncés premiers, et cela sans recours à l’intuition ou à l’évidence sensible, mais
par le seul moyen de la démonstration mathématique.
Ce type de présentation, euclidien, est devenu le modèle même de l’exposé mathé-
matique, et à plus de deux millénaires de distance, le groupe Bourbaki de mathématiciens
français s’est réclamé d’Euclide pour composer au xxe siècle de nouveaux « Éléments
de mathématiques », sous une forme elle aussi encyclopédique et parfaitement déductive
(combien plus vaste et plus ardue, évidemment). Il est clair que les démonstrations
d’Euclide ne pouvaient atteindre à la rigueur parfaite, et qu’elles contiennent de
nombreuses approximations qui les invalident. Mais, tel qu’il est, l’œuvre et surtout
sa conception restent impressionnantes.
218
Comme le veut sa structure, les éléments commencent, dans le Livre I, par des
Définitions, des Demandes ou Postulats, des Notions communes. La fin du Livre I, et
les Livres II, III, IV, traitent de géométrie plane. Le Livre V instaure une rupture, et
traite des Proportions ; cette théorie des proportions est attribuée à Eudoxe. Au xx
e siècle, nous y voyons une théorie de l’ensemble R. Le Livre VI est une application
de la théorie des proportions à la géométrie (on y trouve par exemple le théorème
de Thalès).
Le Livre VII traite d’arithmétique, de ppcm, de pgdc, de nombres premiers, etc.
On y trouve décrit l’algorithme d’Euclide (voir page 162). Le Livre VIII traite des
nombres en suites géométriques, sous l’angle de la divisibilité, et des rapports entiers
ou rationnels. Le Livre IX concerne également l’arithmétique. Le Livre X étudie ce
que nous appellerions, en notre langage, la rationalité d’expressions où figurent des
racines carrées. C’est un des plus difficiles des « Éléments ». Les Livres XI, XII, et
XIII traitent de géométrie dans l’espace, le Livre XIII étudiant plus précisément les
polyèdres réguliers.
Outre les « Éléments », quelques autres ouvrages d’Euclide nous sont parvenus,
avec d’autres, dont il n’est pas l’auteur, mais qui lui étaient traditionnellement at-
tribués.
Euler, Leonhard — Mathématicien et physicien suisse (15 avril 1707 – 18 septembre 1783).
Né à Bâle le 15 avril 1707, Leonhard Euler étudia les mathématiques sur les conseils
de Jean Bernoulli, qui était ami avec son père. Il s’installa à Saint-Petersbourg,
auprès de Pierre le Grand, puis à Berlin sous le règne de Frédéric II, où a chaque fois
il rencontra un environnement scientifique exceptionnel. Son œuvre est considérable.
Euler intervint dans les trois domaines fondamentaux de la science de son époque :
l’astronomie (orbites planétaires, trajectoires des comètes), les sciences physiques
(champs magnétiques, hydrodynamique, optique, nature ondulatoire de la lumière,
etc.), les mathématiques, où il met au premier plan le concept de fonction. On lui
doit aussi la très jolie relation entre les nombres de sommets S, d’arêtes C et de faces
F d’un polyèdre convexe (F − C + S = 2).
La santé d’Euler était assez fragile. Il perdit son œil droit en 1735, puis son oeil
gauche en 1771 en raison d’une cataracte. Il fut donc pendant 12 ans totalement
aveugle. Cela obligeait ce mathématicien très prolixe, qui publia 886 ouvrages, le
tout en 80 volumes, à faire appel à des personnes de son entourage à qui il dictait
ses mémoires. Il décède le 18 septembre 1783 à Saint-Petersbourg d’une hémorragie
cérébrale.
219
10 – indications biographiques
220
Frege, Gottlob — Mathématicien et logicien allemand (Wismar, 1848 – Bad Kleinen,
1925). Après avoir étudié à Iéna et à Göttingen, Frege est nommé professeur de
mathématiques à l’université d’Iéna en 1879. Il est certainement le plus grand lo-
gicien de son temps et, bien que son œuvre soit demeurée longtemps méconnue, le
fondateur de la logique mathématique. Il invente un symbolisme logique très détaillé,
une idéographie permettant d’expliciter la structure d’une proposition ou d’une
démonstration de façon beaucoup plus claire que cela n’était fait jusqu’alors. Il est le
premier à analyser de façon précise la logique des concepts mathématiques. Abordant
la sémantique, il publie une théorie sur les relations entre sens et dénotation. ➲ dénoter
221
10 – indications biographiques
Knuth, Donald Ervin — Informaticien américain né le 10 janvier 1938 à Milwaukee, Wis-
consin, USA. D. E. Knuth est mieux connu en tant qu’auteur de l’ouvrage « The Art
of Computer Programming », une des références dans le domaine de l’informatique,
pour ne pas dire la « bible » des informaticiens. Ce livre a créé un domaine : la
complexité des algorithmes (voir le chapitre 9). Knuth consacre désormais presque
toute son énergie à achever les 7 volumes de cette somme (la première édition du
premier volume remonte à 1968 et seuls trois volumes ont paru). Il est le pionnier
de l’algorithmique, et a fait de nombreuses contributions dans plusieurs branches
de l’informatique théorique. Il est le créateur du système de composition de docu-
ments TEX et du système de création de polices metafont, et a inauguré le concept
de programmation littérale.
Knuth est une figure de l’informatique, connue pour son humour spécial : il offre
par exemple une prime de $2,56 pour chaque faute de frappe ou erreur découverte
222
dans ses livres car « 256 pennies font un dollar hexadécimal ». Les numéros de version
de TEX convergent vers π, c’est-à-dire que les versions se suivent de la sorte : 3, 3.1,
3.14, etc. ; les numéros de version de metafont convergent eux vers e. Il a également
mis en garde les utilisateurs d’un de ses logiciels ainsi : « faites attention aux bogues
dans ce code ; je n’ai fait que le prouver, je ne l’ai pas essayé » 1 .
Il a reçu son bachelor’s degree en mathématiques à la Case Western Reserve
University. Il obtient ensuite son doctorat en mathématiques au California Institute
of Technology en 1963. En 1968, il devient membre de la faculté de l’Université de
Stanford, où il a préalablement reçu un curieux titre académique créé à son intention :
Professor Emeritus of the Art of Computer Programming. En 1971, Knuth fut le
premier à recevoir le prix ACM Grace Murray Hopper Award. Il a reçu de nombreuses
autres distinctions honorifiques, entre autres le prix Turing, la National Medal of
Science, la médaille John von Neumann (États-Unis) ainsi que le prix Kyoto. Il est
élu membre associé de l’Académie des sciences française en 1992 et membre de la
Royal Society en 2003.
Knuth apprécie la musique et aime en particulier jouer de l’orgue. Il dispose
d’un orgue dans sa propre maison qu’il a construit lui-même. Knuth nie cependant
tout talent particulier pour jouer de cet instrument. Il a cessé d’utiliser le courrier
électronique en prétendant qu’il s’en était servi entre 1975 et le 1er janvier 1990, et
que cela suffisait pour toute une vie. Il trouve plus efficace de tenir une correspon-
dance en « mode batch », et y consacrer une journée tous les trois mois, en répondant
par courrier « classique ».
Kripke, Saul Aaron — Philosophe et logicien américain né en 1940. Il a eu une grande
influence dans de nombreux domaines, depuis la logique jusque la philosophie du
langage. Une grande partie de ses travaux ne sont pas publiés, ou n’existent que sous
la forme d’enregistrements et de manuscrits circulant de manière restreinte. Il est
considéré comme l’un des philosophes vivants les plus importants. Kripke est surtout
connu pour trois contributions en philosophie : la logique modale, des travaux sur la
logique des noms propres et des travaux sur le langage privé et les jeux de langage.
223
10 – indications biographiques
Lukasiewicz, Jan — Philosophe et logicien polonais (Lemberg, auj. Lvov, 1878 – Dublin
1956). Il est le premier à avoir énoncé une logique trivalente, admettant le vrai, le
faux et le possible.
224
l’école formaliste qui voit la programmation comme une branche des mathématiques.
En fait, il n’aime pas être identifié à la BNF et dit souvent qu’il préférerait qu’on
l’appelle la Backus-Normal-Form.
Nerode, Anil — Mathématicien américain, né en 1933. Depuis plus de quarante ans, Anil
Nerode produit des travaux fondamentaux dans le domaine des mathématiques ap-
pliquées et de l’informatique théorique : depuis les automates (dont son fameux
théorème), la logique, le calcul symbolique jusqu’aux contraintes, le contrôle, la
modélisation et la simulation. Il est un des pionnier de la recherche sur les systèmes
hybrides.
225
10 – indications biographiques
Post, Emil Leon — Mathématicien américain (Augustów, Pologne 1897 – New-York 1954).
Mathématicien américain né à Augustów (Pologne) et mort à New York. Arrivé aux
États-Unis en 1904, Emil Post obtint son doctorat à luniversité Columbia de New
York en 1920. Il était membre de lAmerican Mathematical Society depuis 1918 et de
lAssociation for Symbolic Logic dès sa fondation en 1935.
Sa thèse de doctorat, publiée en 1921, porte sur le calcul propositionnel de A.
N. Whitehead et B. Russell➠ dont il montre la consistance et le caractère complet.
Ici, consistance et complétude sont définies de façon syntaxique. Cest le début de la
théorie moderne de la démonstration. Pour arriver à ces résultats, il utilise cepen-
dant la méthode « sémantique » des tables de vérité. Il examine ensuite les logiques à
plusieurs valeurs à lépoque où J. Lukasiewicz➠ étudiait, de façon plus philosophique
que mathématique, les logiques à trois valeurs. En 1925, poursuivant les travaux de
sa thèse, il cherche à montrer le caractère incomplet du système des Principia Mathe-
matica de Russell et Whitehead. Les résultats quil obtient ainsi sont contenus dans
ceux que K. Gödel➠ et A. Church➠ obtiendront dans les années 1930. Ses principaux
travaux sont ensuite consacrés à létude des processus effectifs que lon rencontre en
mathématiques.
Ainsi, en 1947, il résout, en même temps que A. A. Markov, le problème posé
par A. Thue en 1914 de savoir sil existe un algorithme permettant de décider, étant
donné un mot sur un alphabet fini et un système fini de relations entre des mots sur
cet alphabet, si le mot donné est équivalent à lidentité dans le monoı̈de quotient du
monoı̈de libre par la plus petite congruence compatible avec les relations données.
Pour montrer quil nexiste pas de tel algorithme, il introduit ce que lon appelle les
systèmes de Post, grâce auxquels on peut exprimer (comme avec les machines de Tu-
ring, les algorithmes de Markov, etc.) le calcul de nimporte quelle fonction récursive.
Ce résultat de Post est équivalent à la non-résolubilité du problème des mots (le
problème de correspondance de Post introduit dans la section 8.4 du chapitre 8)
Ce sont ces différents résultats dindécidabilité qui sont à la base de ceux que lon
rencontre dans la théorie des grammaires formelles.
Pour terminer, indiquons ce que W. Quine➠ écrivait en 1954 à loccasion de la
mort de Post : « Le concept de fonction récursive, concept mathématique précis
rendant compte de la notion de calculabilité, fut découvert indépendamment et sous
des formes différentes par quatre mathématiciens et Post fut lun dentre eux », et,
226
en 1972, W. Quine ajoutait : « La théorie des fonctions récursives dont Post fut un
des cofondateurs est deux fois plus âgée quen 1954 ; elle a bien montré, depuis, quel
champ fertile elle est. »
Pythagore — Philosophe et mathématicien grec (Samos v. 570 – Métaponte v. 480 av. J.-
C.). Il n’a laissé aucune œuvre écrite. Le théorème sur l’hypothénuse, auquel son nom
est resté attaché, était connu des Babyloniens un millénaire avant lui. L’arithmétique
pythagoricienne, limitée aux nombres entiers, incluait une théorie des proportions.
Pythagore considérait que les nombres sont le principe et la source de toutes choses.
Quine, Willard Van Orman — Philosophe et logicien américain (25 juin 1908 - 25 décembre
2000). Willard Van Orman Quine fut l’un des plus importants philosophe et logicien
américain du xxe siècle et l’un des grands représentants de la philosophie analytique.
Il est notamment l’auteur de « Les deux dogmes de l’empirisme », article célèbre qui
critiquait la distinction entre analytique et synthétique et de « Le Mot et la Chose »
(Word and Object, 1960) où il propose sa thèse de l’indétermination de la traduction
radicale et la critique du concept de « signification ». Quine étudia la logique avec
le mathématicien et philosophe Alfred North Whitehead à Harvard. Après sa thèse
en logique mathématique, il fit un voyage en Europe où il rencontra notamment
Rudolf Carnap. Il fut professeur de philosophie à Harvard de 1956 à sa mort. Quine
contribua à la logique formelle, à la fondation des mathématiques mais aussi à la
philosophie du langage et à l’épistémologie.
Robinson, John Alan — Scientifique anglais né en 1930. Robinson est arrivé aux États-
Unis en 1952 après des études à Cambridge. Il étudie la philosophie à l’université
de l’Oregon avant d’aller à Princeton où il devient docteur en Philosophie en 1960.
Temporairement déçu par la philosophie, il travaille pour la société Du Pont en
tant qu’analyste en recherche opérationnelle. C’est là qu’il apprend à programmer
et se met aux mathématiques. C’est en 1961 qu’il s’intéresse à la démonstration
automatique lors d’un séjour dans un laboratoire de mathématiques appliquées. Il y
découvre un article de Martin Davis et Hilary Putnam (qui deviendra son directeur
de thèse) proposant un algorithme de démonstration pour le calcul des prédicats
qui n’avait pas encore été programmé. Robinson se lance dans l’implantation de cet
algorithme et se rend rapidement compte que l’algorithme proposé est relativement
inefficace. Mais, il se rend compte que l’idée développée combinée avec une idée
proposée par Dag Prawitz, donne une méthode de preuve automatique pour le calcul
des prédicats, il l’appelle : la résolution.
227
10 – indications biographiques
des types et de celle des descriptions. Il se distingue aussi comme l’un des fonda-
teurs, avec Gottlob Frege➠, de la logique moderne, et avec Moore, de la philosophie
analytique. En 1900, à l’âge de vingt-huit ans, il publiait déjà son Essai sur les
fondements de la géométrie, puis ses Principia mathematica, en 1910, qui visaient
essentiellement à interpréter les mathématiques comme une extension de la logique.
Il écrivit, au total, 70 ouvrages et plus de 25 000 lettres et articles. Nommé fellow
(professeur résident) au Trinity College de Cambridge en 1894, Russell s’intéresse
aux idées de Leibniz➠, dans lequel il voit le précurseur de la philosophie scientifique.
En 1900, il fait la connaissance de Giuseppe Peano➠ et de sa logique symbolique, qui
se révèle à lui comme un remarquable instrument d’analyse, permettant d’étendre
la précision mathématique à des domaines où régnaient jusqu’alors la confusion du
langage philosophique. Trois ans plus tard, il découvre les travaux de Frege➠, sur
les fondements de l’arithmétique. Toutes ces réflexions amèneront Russell à publier,
entre 1910 et 1913 (avec la collaboration Alfred North Whitehead), ce qu’il considère
comme son œuvre essentielle : les Principia mathematica, gigantesque entreprise dont
on pourrait dire qu’elle a démythisé, désacralisé les mathématiques. Si le philosophe
veut atteindre le réel, considère Russell, c’est vers la science qu’il doit se tourner.
Cependant, tout ne peut être prouvé par les seules mathématiques : pour atteindre
à la totalité de la réalité, il faut donc se soumettre à l’expérience, qui permet de
choisir entre les possibles (La Connaissance humaine, son but et ses limites, 1948).
On parlera désormais d’épistémologies➥ pré- et post- russelliennes.
Saxe, Albert de — Philosophe du xive siècle. Albert de Saxe est un des docteurs les plus
puissants et les plus originaux qui aient illustré la scolastique➥. La tradition de ses
enseignements fut de longue durée. Les maı̂tres de l’École, à la fin du Moyen-Âge et
au début de la Renaissance, les Niphus, les Soto, les Tolet, citent souvent ses écrits
ou s’en inspirent. Ses doctrines n’eurent pas moins d’influence sur les penseurs que
la Science positive préoccupait plus que la Philosophie et la Théologie : Blaise de
Parme, Cardan, Copernic, Guido Ubaldo et, par ce dernier, Galilée ont subi cette
influence, dont leurs œuvres portent la trace reconnaissable.
228
rable. La théorie des distributions pour laquelle il a reçu la médaille Fields en 1950
des mains d’Harold Bohr est devenue un outil essentiel dans des domaines aussi variés
que la théorie des équations aux dérivées partielles – où ses élèves J.L. Lions et B.
Malgrange ainsi que L. Hörmander l’ont merveilleusement illustrée – en physique et
en particulier dans la théorie des champs quantiques où elle joue un rôle essentiel,
dans la théorie des représentations des groupes, et même en théorie des nombres où
joue un rôle clef l’analogue de l’espace de Schwartz dû à F. Bruhat, un autre de ses
élèves.
Skolem, Albert Thoraf — Mathématicien norvégien (Sandsvaer, 1887 – Oslo, 1963). Thoraf
Skolem a travaillé sur les équations diophantiennes, la logique mathématique, la
théorie des groupes, des treillis et des ensembles. En 1912, il a produit la description
d’un treillis libre distributif. Entre 1922 et 1929, il travaille sur des raffinements de
la théorie axiomatique de Zermelo➠. À partir de 1933, il a réalisé un véritable travail
de pionnier autour de la méta-logique et a construit un modèle non standard de
l’arithmétique. Il a aussi travaillé sur une théorie des fonctions récursive qui permet
d’éviter le paradoxe de l’infini dans ce domaine.
229
10 – indications biographiques
Zadeh, Lotfi A. — Mathématicien américain d’origine iranienne né dans les années 1930
à Téhéran. Internationalement reconnu pour ses travaux pionniers sur la théorie des
systèmes linéaires, il a introduit en 1965 la théorie des sous-ensembles flous puis, en
1978 la théorie des possibilités, qui ont donné naissance au champ de recherches sur
la logique floue et ses applications (Intelligence Artificielle➥, linguistique , logique,
analyse décisionnelle, systèmes experts et les réseaux neuronaux). Actuellement, ses
recherches se concentrent sur la logique floue, la programmation (soft computing),
et la toute récente théorie des perceptions discrètes (computational theory of percep-
tions).
Il est actuellement Professeur à l’Université de Californie à Berkeley, directeur du
BISC (Berkeley Initiative in Soft Computing). Il a reçu de très nombreux prix, tels
que le prix de la Fondation Honda en 1989, la médaille d’honneur de IEEE en 1995,
la médaille du millénaire IEEE, la distinction du Richard E. Bellman Control Heritage
qui récompense une oeuvre marquante en automatique et, très récemment, le Allen
Newell Award, plus haute distinction remise par l’ACM en Intelligence Artificielle.
Zermelo, Ernst — Mathématicien allemand (Berlin, 1871 – Freiburg, 1956). Après avoir tra-
vaillé pendant sa thèse sur le calcul des variations de Weierstrass, Zermelo s’intéresse
à la statistique mécanique avant de travailler sur la théorie des ensembles et en par-
ticulier sur l’axiome du choix.
230
chapitre onze
dictionnaire morphologique
axiome — n. m. Proposition indémontrable mais admise par tout le monde sans discussion,
ou admise comme nécessaire (en sciences), et dont on peut déduire des conséquences.
étym. gr. axiôma, de axioun « juger digne, valable ».
catén- — Élément qui signifie « chaı̂ne (attache) ». Il prend aussi la forme caden-. Il apparaı̂t
dans les mots : caténaire, concaténation, cadenas. étym. lat. catena « chaı̂ne ».
co- — Élément qui signifie « avec, ensemble ». syn. sy(n)-. Il s’utilise devant une voyelle
(coauteur, . . .) et devant une consonne dans certains mots (copropriétaire, . . .). Il
prend parfois les formes col- devant l, com- devant b, m, p, cor- devant r et con-
devant les autres consonnes. Il apparaı̂t, par exemple, dans les mots : cofinancer,
cohabiter, colocataire, collaborer, collectif, compacter, compatir, combattre, com-
merce, comparaison, corrélation, concentrer, concitoyen, conjonction, conséquence,
consonance, . . .. rem. quand le deuxième élément commence par un i, ce i prend un
tréma : coı̈ncider. étym. lat. co-, de cum « avec ».
cogn- — Élément qui, en liaison avec l’augment -if, signifie « connaı̂tre ». Il apparaı̂t dans
les mots : cognitif, incognito. étym. lat. cognitum, supin de cognoscere « apprendre,
étudier ».
231
11 – dictionnaire morphologique
cohésion — n. f. • co-, -hér- • Caractère d’un ensemble dont les parties sont solidaires,
unies, harmonisées. contr. confusion, désagrégation, dispersion, dissolution.
dé- — ➊ Élément qui indique le mouvement de haut en bas, au propre ou au figuré. syn.
cat(a)-. Il apparaı̂t dans les mots : dégouliner, déglutir, descendre, dévaler, dépressif,
détracteur, déduire, dots. étym. lat. de, qui indique le mouvement de haut en bas.
— ➋ Élément à valeur intensive. Il prend aussi la forme des-. Il apparaı̂t, par exemple,
dans les mots : déambuler, débonnaire, démontrer, dénoter, détenir. étym. lat. de,
qui indique l’achèvement, la plénitude.
déduire — v. tr. • ➀ dé-, du(ct)- • Conclure, décider ou trouve (qqch.) par un raisonnement,
à titre de conséquence.
dénoter — v. tr. • ➁ dé-, not- • Renvoyer à (un objet, une personne) en parlant d’un signe.
déont- — Élément qui signifie « obligation ». Il apparaı̂t dans les mots : déontique,
déontologie. étym. gr. deon, deontos « ce qu’il faut, ce qui convient ».
déontique — adj. • déont- • Qui constitue une obligation, une nécessité, un devoir. « il
faut » est une modalité déontique.
232
di(s)- — Élément qui signifie l’éloignement, la séparation. syn. ➀ dé-, dia-, sé-. Il apparaı̂t,
par exemple, dans les mots : digression, dimension, discorde, disjonction, district,
disséminer, disséquer, dissuader. étym. lat. dis- qui indique la séparation.
disjonction — n. f. • di(s)-, jonc(t)- • Action de disjoindre (deux questions, des idées) ; son
résultat. contr. conjonction.
drom- — Élément qui signifie « courir ». Il apparaı̂t dans les mots : aérodrome, autodrome,
boulodrome, cynodrome, hippodrome, vélodrome ; palindrome, prodrome, syndrome ;
dromadaire. étym. gr. dromos action de courir, lieu de la course
du(ct)- — Élément qui signifie « mener, faire aller, modifier ». syn. -ig-. Il prend les formes
-duc- ou -duqu- ou du- dans les verbes en -ire (infinitif) et les dérivés de ces verbes. On
trouve ainsi -duc à la finale de noms masculins. Il apparaı̂t dans les mots : ductile,
adduction, conducteur, déductible, induction, introduction, production, réduction,
conduire, traduire, aqueduc, gazoduc, viaduc. étym. lat. ductum, supin de ducere
« conduire, mener ».
équ(i)- — Élément qui signifie « égal ». Il apparaı̂t dans les mots : équateur, équation,
équidistant, équilatéral, équilibre, équinoxe, équipotent, équité, équanimité, équitable,
équivalent ; adéquat ; ex-aequo ; péréquation. étym. lat. aequus « égal ».
équipotent — adj. • équ(i)-, potent- • Se dit d’un ensemble A par rapport à un ensemble B,
s’il existe une bijection de A sur B (ces deux ensembles ont alors même puissance).
233
11 – dictionnaire morphologique
ex- — Élément qui signifie « en dehors, hors de ». Il indique un mouvement vers l’extérieur
(souvent avec l’idée d’éloignement d’un point de départ), ou une position à l’extérieur.
syn. é-, ecto-, exo-. Il précède un élément verbal ou nominal comme dans les exemples
suivants : excursion, exhiber, expliquer, explicite, exploser, extradition, excentrique,
exorbitant. étym. lat. ex « en dehors, hors de ».
explicite — adj. • ex-, -plic-, -it • Qui est suffisamment clair et précis dans l’énoncé ; qui,
étant formellement exprimé, ne peut laisser aucun doute. contr. implicite.
gramm- — Élément qui signifie « lettre, écriture ». syn. ➀ graph(o)-. Il apparaı̂t dans les
mots : anagramme, calligramme, cryptogramme, diagramme, épigramme, idéogramme,
parallélogramme, programme, grammaire. étym. gr. gramma, grammatos « lettre »
et grammê « trait », déverbaux de graphein « écrire, dessiner ».
grammaire — n. f. • gramm- • Ensemble des structures et des règles qui décrivent les
manières les plus usuelles dont s’articulent les mots d’un lexique.
graph(o)- — ➊ Élément à valeur intensive. Il prend aussi la Élément qui signifie « écrire,
écriture (partie visuelle d’une langue) », syn. scri(pt)- ; gramm-, opposé à « parler,
parole (partie sonore) ». Au sens de « signe matériel », il apparaı̂t dans les mots :
graphème, graphie, homographe, orthographe, graphologie ; cryptographie, pictogra-
phie, sténographie ; calligraphie, dysgraphie ; dactylographie, télégraphie, typogra-
vie. Il désigne aussi des objet servant à écrire : graphite, pantographe, normographe.
Au sens de « écrit, texte » (syn. lit(t)ér-), il apparaı̂t dans les mots désignant des
écrits : autographe, épigraphe, monographie, pornographie. On le trouve aussi pour
caractériser un auteur (cacographe) notamment par son sujet (biographe, hagio-
graphe, historiographe) et dans les noms de liste (ex. bibliographie, discographie,
filmographie, nosographie).
— ➋ Élément qui signifie « étudient (un domaine de la connaissance), étude savante
écrite », dans des finales de noms en -graphe, -graphie. Il est parfois opposé à log- (ex.
lexicologue / lexicographe). Il apparaı̂t dans des mots qui désignent des personnes :
démographe, ethnographe, géographe, lexicographe, océanographe, paléographe, etc.
234
et dans des mots qui désignent la science correspondante (en -graphie) : géographie,
musicographie, muséographie, etc.). On le trouve dans d’autres noms qui impliquent
souvent un texte ou des représentations : cosmographie, cristallographie, glyptogra-
phie, hydrographie, orographie, pétrographie, scénographie, sratigraphie.
-hér- — Élément qui signifie « attacher ». Il prend aussi la forme -hés-. Il apparaı̂t dans
les mots : adhérer, cohérent, inhérent, etc. étym. lat. haerere, haesi, haesum « être
attaché, fixé, accroché ».
heuristique — adj. et n. f. Qui sert à la découverte. étym. all. heuristik, heuristisch du grec
heuriskein « trouver ».
-(i)fér- — Élément qui signifie « qui porte, contient ». syn. -lat, -phor-. Il apparaı̂t par
exemple dans : aquifère, calorifère, somnifère, mammifère, conifère, pestiféré, référendum,
circonférence, conférer, différer, indifférencié, inférence, interférer, légiférer, préférer,
proférer, proliférer, référer, transférer, vociférer. étym. lat. -(-)fer-, de ferre « porter »
en composition (ex. cum + ferre → conferre ; leg- + -i- de liaison + -fer → legifer)
-(i)fi(c)- — Élément qui signifie « faire ». syn. -fac(t)-,-fect(u)-,-urg-. Il apparaı̂t dans des
verbes à base nominale dans la finale . . . fier (cocufier, liquéfier, unifier), dans des
noms (amplificateur, bénéfice, codification, difficulté, édifice, efficacité, électrification,
magnificence, modification, sacrifice) et dans des adjectifs (artificiel, déficient, hono-
rifique, magnifique, maléfique, spécifique). étym. lat. -(i)fic- de facere « faire » en
composition.
implicite — adj. • in-, -plic-, -it • Qui est virtuellement contenu, impliqué dans une propo-
sition, un fait, sans être formellement exprimé. contr. explicite.
in- — Élément qui devient il- devant l, im- devant b, m, p, ir- devant r. syn. en-, endo-,
intro-. Il signifie, entre autres, « dans, en, sur » et « vers l’intérieur de », associé à
une base généralement verbale. On le trouve, par exemple, dans : illuminer, imbiber,
immanent, implicite, importer, induction, inhérent, injecter, inné, inscrire, irruption.
étym. lat. in « dans, en ».
induction — n. f. • in-, du(ct)- • Opération mentale qui consiste à remonter des faits à la
loi, de cas singuliers une proposition plus générale. contr. déduction.
235
11 – dictionnaire morphologique
inférence — n. f. • in-, -(i)fér- • Opération logique par laquelle on admet une proposition
en vertu de sa liaison avec d’autres propositions déjà tenus pour vraies.
intrinsèque — adj. Qui est intérieur et propre à l’objet dont il s’agit. étym. lat. intrinsecus
« au-dedans ».
-it ou -ite — Élément qui indique une action accomplie, subie, ou considérer dans son
résultat. La base est le plus souvent verbale, mais l’élément peut suivre aussi, associé
à un préfixe, une base adjectivale (comme érudit). Il apparaı̂t notamment dans des
adjectifs en -it, -ite (comme décrépit), dans des adjectifs en -ite au masculin (comme
composite, explicite, tacite), dans des substantifs masculins en -it (comme appétit,
crédit, débit). étym. lat. -itum, finale de participe passé (ex. eruditum → érudit) ;
-itum, finale à l’accusatif de mots de la quatrième déclinaison (appetitum → appétit).
jonc(t)- — Élément qui signifie « attacher, joindre, relier ». Il apparaı̂t dans les mots :
jonction, adjonction, conjonction, conjoncture, disjonction, subjonctif, conjonctivite.
étym. lat. junctum, supin de jungere « joindre, unir, combiner ».
-lect- — Élément qui signifie « dire, parler ». syn. dic(t)-, fac-, -fess-, -lég-, log-, -nonc(i)-. Il
prend aussi la forme -lex-. Il apparaı̂t dans les mots : dialecte, dyslexie, lexique, etc.
étym. gr. lektos « qu’on peut dire » et lexis « action de parler, manière de parler »,
dérivés de legein « dire ».
lexique — n. m. • -lect- • Ensemble des mots d’une langue, considéré comme l’un des
parties qui forment le code de cette langue.
lexico- — Élément qui signifie « lexique, liste de mots ». Il apparaı̂t dans les mots : lexico-
graphe, lexiocologie, lexicologue. étym. gr. lexicos « qui concerne les mots ».
236
log- — Élément qui signifie « dire (v. tr.) oralement ou par écrit ». syn. dic(t)-, fac-, -fess-
, -lect-, -lég-, -nonc(i)-. Il prend aussi la forme logo- et logue à la finale. Il apparaı̂t
dans les termes qui désignent la rationalité dans le langage : logique, logicien, logiciel,
illogique, syllogisme, tautologie. étym. gr. logos « parole, discours, expression de la
raison ».
méta- — Élément qui signifie « qui est au-delà, qui englobe (ce que désigne la base) ». On
le trouve dans des noms de sciences et les adjectifs correspondants. Il apparaı̂t dans
les mots : métalangage, métalinguistique, métaphysique, etc. étym. gr. meta « après,
au-delà ».
-monstr- — Élément qui signifie « montrer » syn. mon- (→ montrer). Il apparaı̂t dans les
mots : démonstratif, démonstration. étym. lat. monstrare « montrer, faire connaı̂tre,
conseiller ».
-nex- — Élément qui signifie « lien ». Il apparaı̂t dans les mots : annexe, connexe. étym.
lat. nexum, supin de nectere « lier, attacher, nouer ».
normatif — adj. Qui constitue une norme, est relatif aux règles, impose des règles.
not- — Élément qui signifie « connaı̂tre, remarquer ; faire connaı̂tre, être connu ». syn.
(g)nos(t)-. Il apparaı̂t dans les mots : notion, notable, notice, connoter, dénoter,
notoire, notoriété. étym. lat. notus, connu, p. passé de noscere, apprendre à connaı̂tre,
reconnaı̂tre.
237
11 – dictionnaire morphologique
palin- — Élément qui signifie « de nouveau, en sens inverse ». Il apparaı̂t dans les mots :
palindrome, palingénésie, palinodies. étym. gr. palin, de nouveau, à rebours.
-plic- — Élément qui signifie « embrouillé, obscur » et aussi « lié, inextricable ». Il prend
aussi la forme -plex(e)-. Il apparaı̂t dans les mots : explicite, implicite, expliquer,
compliquer, complice, complexe, perplexe, plexus. étym. lat. plicare « plier », intensif
de plectere, plexere « tresse, enlacer » et son participe passé plexus « embrouillé,
ambigu » au figuré.
postulat — n. m. Principe indémontrable (d’un système déductif) qui est la base d’une
démonstration ultérieure.
potent- — Élément qui signifie « qui peut, puissant ». syn. autor-. Il apparaı̂t dans les
mots : équipotent, impotent, omnipotent ; plénipotentiaire, potentat, potentiel, ven-
tripotent. étym. lat. potens, potentis « puissant, qui pouvoir de », participe présent
de posse « pouvoir », remplacé en lat. populaire par potere (qui a donné despote,
potence).
pré- — Élément qui indique l’antériorité dans le temps, dans l’espace ou dans un ordre de
valeur. syn. ante-, pro-. contr. post(er)-, sub-. L’accent disparaı̂t en accord avec la
prononciation (prescrire). Il a un sens temporel dans : préambule, préavis, précaution,
précéder, prédestiner, préhistoire, présage, présomptif, prévenir. Il prend une valeur
spatiale dans : préface, préfixe, prénexe, prénom, préposition. Il signifie aussi l’im-
portance dans un ordre de valeurs : prédominer, préoccuper, prépondérant, prescrire,
présent, préserver, présomptueux, prestance, prétendre, prétention, prévaloir. étym.
lat. prae « devant, en avant, d’abord ».
prédicat — n. m. Ce qui, dans un énoncé, est affirmé à propos d’un autre terme (sujet).
re- — Élément à valeur intensive et qui signifie « davantage, complètement » avec une base
verbales et « rendre (plus) » avec une base nominale ou adjectivale. syn. ➁ dé-. On
le trouve, par exemple, dans : raffiner, ramollir, recherche, réclamer, récriminer, re-
doubler, refroidir, relater, remplir, renier, repaı̂tre, représenter, résolution, ressentir,
réunir, revêtir, rédemption, réchauffer, rembourrer, rembourser, renforcer, se rengor-
ger. étym. lat. re-, red- indiquant un mouvement en arrière, un retour à un état
antérieur.
238
résolution — n. f. • re-,-soudre • Opération par laquelle l’esprit découvre la solution (d’une
difficulté, d’un problème).
sém(a)- — Élément qui signifie « signe et son sens ». Il prend aussi les formes sémant- et
sémio(t)-. Il apparaı̂t dans les mots : monosémique, polysémie, sémaphore, sémantique,
sémiologie, sémiotique. étym. gr. sêma, sêmatos « signe, caractère distinctif, marque »
et sêmeion même sens.
séqu- — Élément qui signifie « suivre ». Il prend aussi la forme séc(u)-. Il apparaı̂t dans les
mots : conséquence, séquelle, séquence, second, secte, consécutif, persécuter. étym.
lat. sequi « suivre » supin de secutum, et secta, habitudes suivies.
-soudre — Élément qui signifie « expliquer ». Il prend aussi la forme sol(u)-. Il apparaı̂t
dans les mots : résolution, solution. étym. lat. solvere « réduire, résoudre », supin
solutum.
-stitu(t)- — Élément qui signifie « état, situation ». syn. -sist-, -stand-, -st(atu)-, -staur-. Il
prend aussi la forme -stice. Il apparaı̂t dans les mots : constituer, destituer, instituer,
prostituer, substituer, armistice, interstice, solstice. étym. lat. -stit- en composition,
supin -stitum, de statuere « établir, poser, déterminer ».
sub- — Élément qui exprime une position inférieure, ce qui est, se fait en-dessous. Il devient
su- devant s (suspect, . . .), suc-, suf-, sup- respectivement devant c, f , p (succession,
suffixe, supporter), et également sus- (susceptible, susciter, suspendre, . . .). On le
trouve aussi sous la forme subter- (dans subterfuge). Il exprime la position en dessous
(sublingual, submerger, substrat, subreptice), la dépendance (subalterne, subjonctif,
subordonner), le faible degré dans une série (subconscient, subdivision, subodorer,
subsister), la proximité dans l’espace ou dans le temps (suburbain, succéder). syn.
hypo-, infra-, sou(s)-. étym. lat. sub, subter « sous ».
239
11 – dictionnaire morphologique
substituer — v. tr. • sub-, -stitu(t)- • Mettre (qqch., qqn) à la place (de qcch., qqun d’autre),
pour faire jouer le même rôle.
supin — n. m. Substantif verbal latin, sur lequel est s’est formé le participe passé en -us.
étym. lat. supinum, de supinus « renversé en arrière ». (en pente, même image que
décliner un mot).
symbole — C e qui, en vertu d’une convention, correspond à une chose, à une relation ou à
une opération (→ icone, signe).
syntaxe — n. f. • sy(n)-, tax(i)- • ➊ ling. Partie de la grammaire qui décrit les règles par
lesquelles les unités linguistiques se combinent en phrases ♦ Ensemble de ces règles,
caractéristiques de telle ou telle langue.
— ➋ fig. Ensemble de règles qui régissent un moyen d’expression donné (musique,
cinéma, . . .).
— ➌ log. Étude des relations entre les expression d’un langage formel.
— ➍ inform. Ensemble des règles d’écriture d’un langage de programmation et
formant la grammaire de ce langage.
tauto- — Élément qui signifie « le même ». syn. homo-, iso-. Il apparaı̂t dans les mots :
tautochrone, tautologie. étym. gr. to auton, « la même chose ».
tautologie — n. f. • tauto-, log- • En logique, proposition complexe qui reste vraie quelle
que soit la valeur de vérité des propositions qui la composent.
tax(i)- — Élément qui signifie « arrangement, ordre ». syn. ordin-. Il prend aussi la forme -
tact- dans certains dérivés. Il apparaı̂t dans les mots : taxidermie, syntaxe, taxinomie,
tactique. étym. gr. taxis « mise en ordre, arrangement ».
240
théor- — Élément qui signifie « examiner ». Il apparaı̂t dans les mots : théorème, théorie.
étym. gr. théôrein « observer, considérer ».
top(o)- — Élément qui signifie « lieu » syn. loc-. Il apparaı̂t dans les mots : biotope, isotope,
topographie, topologie, toponyme, topique, diatopique. étym. gr. topos « lieu ».
topologie — n. f. • top(o)-, log- • Géométrie qui étudie les positions indépendamment des
formes et des grandeurs.
unifier — v. tr. • -(i)fi(c)- • ➊ Faire de plusieurs éléments une seule et même chose ; rendre
unique, faire l’unité de.
— ➋ Rendre semblables (divers éléments)
241
chapitre douze
dictionnaire encyclopédique
dialectique — n. f. Dans son acception première (du gr. dialektikè, « discussion »), le terme
dialectique désigne l’art du dialogue qui cherche à atteindre le vrai par le jeu des ques-
tions et des réponses. Dans la culture grecque classique, à Athènes particulièrement,
la parole joue un rôle très important. Ceux qu’on appelle les sophistes sont des
rhéteurs, des professeurs dans l’art de parler. Parmi les exercices qu’ils préconisent
figurent les « cours doubles », dans lesquels s’affrontent des points de vue contradic-
toires. Socrate, puis Platon radicalisent ce point de vue. Le premier montre comment
un dialogue bien mené permet de détruire les opinions communes, d’en montrer l’ina-
nité ; le second, dans son grand projet pédagogique et politique, situe la technique
243
12 – dictionnaire encyclopédique
dialectique – art de poser les questions qui conviennent et de donner les réponses
adéquates, de diviser les notions en leurs articulations internes – comme la plus
haute des sciences, celle de la connaissance vraie, qui prépare l’âme à se dépendre
des apparences sensibles et à accéder aux plus hautes réalités, les essences ou idées.
Cette définition de la dialectique est fondamentale, puisqu’elle insiste sur le fait que
le savoir ne peut se construire que sur des contradictions dépassées. Cependant, dans
son opposition au platonisme, Aristote➠ inaugure une autre tradition : l’ordre de la
dialectique, selon lui, est du discutable. Ainsi, au syllogisme➲ scientifique qui, partant
de prémisses vérifiées, conclut à un énoncé nécessaire, s’oppose le syllogisme dialec-
tique qui, procédant de prémisses probables, aboutit à une conclusion probable. La
dialectique n’est plus un science mais un art. Cette acception est celle qui est reçue
durant toute la période médiévale et l’âge classique.
épistémologie — n. f. Discipline qui a pour objet les sciences et s’attache à définir les prin-
cipes, les concepts et les méthodes dont elles usent pour se constituer et se développer.
Ce terme récent (début du xxe siècle) – qui est maintenant d’usage courant en philo-
sophie – signifie étymologiquement « réflexion sur la science ». La nécessité de créer
une discipline autonome de ce genre, appartenant classiquement à la logique, s’est
manifestée lorsque le développement et les succès tant théoriques que techniques des
sciences physiques et des sciences sociales ont imposé celles-ci comme étant le lieu par
excellence de la pensée rationnelle. L’épistémologie se distingue de la méthodologie,
telle qu’elle était conçue par la philosophie dans la seconde moitié du xixe siècle et
dans la première moitié du xxe siècle, en ce qu’elle ne prétend aucunement définir
les règles générales que doivent suivre les sciences pour être en conformité avec la
théorie de la vérité philosophiquement établie : l’invention scientifique ne se passe
jamais comme on l’attend, et la philosophie n’a pas d’ordres à donner aux savants
quant aux modalités de leur travail. L’épistémologie prend pour référence la science
qui se fait et s’efforce d’en rendre intelligible le processus. Elle ne se confond pas pour
autant avec l’histoire des sciences : en effet, cette dernière (comme toute histoire)
s’attache à retrouver les événements dans leur singularité et leur absolue contingence ;
elle tient compte des diversités contextuelles (les circonstances individuelles, les « ha-
sards », l’entourage, l’imaginaire). L’épistémologie a pour matériau cette histoire, à
laquelle elle porte fidélité totale ; mais elle s’applique à mettre en évidence la manière
dont s’élaborent les rationalités scientifiques : la phase critique au cours de laquelle le
savant repère l’insuffisance de la théorie dominante dans le champ donné, la réflexion
théorique accompagnant cette phase, la mise en place d’un dispositif expérimental
original, la constitution de la nouvelle théorie ou la définition d’un « objet » nouveau
. . .. La finalité de l’épistémologie n’est pas d’enseigner la science, mais, au contraire,
de préciser ce que les sciences, dans leur diversité et leur fonds commun, nous en-
seignent quant à la rationalité et à la réalité. Aujourd’hui que les sciences prennent
une part de plus en plus grande dans la vie des sociétés et constituent une force
productive, à cette épistémologie interne s’ajoute une réflexion qui s’interroge sur
le statut de cette rationalité en tant qu’elle est institutionnalisée et qu’elle produit
un monde d’objets techniques et un imaginaire qui se substituent à la réalité dite
« naturelle ». Ce qui est alors en question, ce sont le sens et les limites de l’entreprise
de domination de la « nature » par l’ordre technique.
244
intelligence artificielle — L’intelligence artificielle est une branche de l’informatique qui
tente de reproduire sur des machines le raisonnement humain. Discipline née dans
les années 1950, l’intelligence artificielle a connu un développement très important
dans les années 1980. Dès le xviie siècle, Blaise Pascal et Gottfried Wilhelm Leibniz➠
envisageaient qu’une machine puisse « raisonner ». En 1943, Warren S. McCulloch
et Walter Pitts écrivaient un article sur « Le calcul logique des idées immanentes à
l’activité nerveuse », à l’origine des « réseaux de neurones », cependant qu’Arturo
Rosenblueth, Norbert Wiener et Julian Bigelow publiaient « Comportement, inten-
tion, téléologie ». Ces deux textes fondent la conception moderne d’un automate
pensant.
L’acte de naissance du terme même d’intelligence artificielle date cependant de
1956. Les précurseurs en ce domaine, John McCarthy, Alan Newell et Herbert Si-
mon, ont fondé leurs travaux sur des idées développées par Alan Turing➠, mort deux
années auparavant. Cette même année, Newell et Simon développent une machine,
le Logic Theorist, capable de démontrer des théorèmes de logique mathématique. Les
années 1980 ont été très riches en programmes de recherche-développement dans ce
domaine. Les Japonais ont lancé par exemple leur programme d’ordinateur de « cin-
quième génération ». En Europe, de nombreux projets ont vu le jour, notamment dans
le cadre des programmes de recherche scientifique de la Commission européenne (Es-
prit et Eurêka). Cet enthousiasme est un peu retombé aujourd’hui, même si certaines
appellations opérationnelles ont pu bénéficier de ces recherches dans différents sec-
teurs économiques : conduite de processus industriels, mais aussi banque, médecine,
etc.
Plusieurs branches de l’intelligence artificielle se sont déjà constituées en disci-
plines relativement autonomes : la reconnaissance de formes, ou vision artificielle, la
reconnaissance de la parole, la traduction automatique, les systèmes experts, etc. Il
s’agit alors de comprendre le langage naturel, de résoudre des problèmes de toute
sorte, de jouer aux échecs, de reconnaı̂tre une personne ou un objet sur une image, de
traduire un texte d’une langue dans une autre, d’effectuer le diagnostic de maladies
ou de pannes, etc.
La distinction principale entre informatique classique et intelligence artificielle est
que la première manipule des données – elle est numérique et algorithmique, alors
que la seconde traite des connaissances de manière symbolique et heuristique – elle
fait intervenir la notion de relation plutôt que d’opération. P et Q représentant des
faits (« Paul est le fils de Jean » ou « Philippe aime Marie », etc.), les programmes
d’intelligence artificielle comprennent des propositions du type « si P alors Q » ; cela
s’appelle une inférence➲. Ce type de raisonnement se retrouve en particulier dans les
systèmes experts➥. L’intelligence artificielle doit aussi faire face à la représentation
de connaissances imprécises ou incertaines, pourtant couramment utilisées dans les
activités humaines ; pour traiter celles-ci, les programmes peuvent faire appel à la
« logique floue », théorie inventée par le mathématicien Lotfi Zadeh➠ aux États-
Unis en 1986, théorie associant en quelques sortes le calcul des probabilités et la
logique. Les travaux en intelligence artificielle concernent également la vision, ap-
pliquée notamment à la robotique (guidage des robots) et à la bureautique (lecture
automatique, traduction automatique de textes, recherche documentaire, etc.).
245
12 – dictionnaire encyclopédique
246
même de conduire à des interprétations physiques. Cette méthodologie a soulevé de
nombreuses critiques, notamment sur le choix des axiomes. Comment déterminer les
axiomes intéressants, si on refuse d’accorder un sens intuitif aux termes primitifs ?
Comment choisir si un axiome est meilleur si on ne sait pas ce qu’il signifie ? Au vu des
résultats, répondent certains, mais on ne connaı̂t pas les résultats qu’auraient donné
d’autres axiomes ! La pensée intuitionniste propose de donner une interprétation phy-
sique dès le niveau des axiomes, et de tenter de formuler des énoncés que l’on pense
physiquement vrais, évitant ainsi ce que Kleene➠ appelle le nihilisme mathématique :
une construction stérile ne parlant pas de notre expérience physique quotidienne. Le
débat entre intuitionniste et axiomatique standard est loin d’être clos. Les intuition-
nistes refusent la construction d’objets mathématiques à partir de simples axiomes,
de mots, et proposent de se contenter de procédés mécaniques. L’existence même
des entiers naturels est au cœur du débat. Les intuitionnistes, notamment Brouwer➠,
furent les premiers à critiquer la loi du tiers exclu : valable dans un ensemble fini,
elle est caduque dans le cas infini, puisqu’il est humainement impossible de vérifier
pour chaque élément de l’ensemble infini s’il vérifie une propriété donnée ou non. La
question la plus saine qu’un tel débat suggère, « Quelles sont les mathématiques les
plus utiles, formalistes ou intuitionnistes ? » n’a jamais vraiment été résolue ou même
traitée correctement. Il est fort probable que les mathématiques que nous utilisons
soient en fait un compromis entre ces deux approches : intuitionniste puisqu’elles ont
toujours su rendre compte efficacement de la réalité physique, classique puisqu’elles
ont su s’affranchir du sens des axiomes dans la recherche de théorèmes et qu’elles
ont pris le parti d’englober l’infini.
La logique intuitionniste, c’est la logique qu’on obtient en retirant la loi de Pierce
(((a → b) → a) → a) des axiomes du calcul propositionnel. L’idée c’est qu’en logique
intuitionnisme, ¬a dit vraiment que a est complètement absurde, et que quelque
chose qui n’est pas complètement absurde n’est pas pour autant vrai. Ceci permet
d’éliminer des raisonnements non constructifs, dans lesquels on montre l’existence
d’un objet sans le fournir explicitement, tout simplement parce que son inexistence
est absurde. L’intuitionnisme introduit une complication dans les valeurs de vérité :
on n’a plus une algèbre de Boole mais une algèbre de Heyting (on peut l’assimiler
à la structure que forment les ouverts d’un espace topologique). Alors que {0, 1}
est d’une certaine manière « à la base » de toute algèbre de Boole, les algèbres de
Heyting ont une structure plus compliquée. Non seulement on ne peut pas forcément
montrer a ou ¬a, mais on ne peut même plus montrer a∨¬a (principe du tiers exclu)
(alors qu’en logique classique, même si a est indécidable, il s’agit d’une tautologie).
Jeu de Nim — Ce jeu très simple se joue à deux. On dispose des paquets d’allumettes sur
une table. Chaque joueur, à tour de rôle, prend le nombre d’allumettes qu’il veut (au
moins une) dans un des paquets. Le gagnant est celui qui prend la dernière allumette.
Ce jeu est aussi connu sous le nom « Fan Tan » ou « jeu des allumettes ». Le film
« L’année dernière, à Marienbad » le rendit très à la mode dans les années soixante.
Dans le « jeu de Marienbad », il y a 4 tas contenant 1, 3, 5 et 7 allumettes mais c’est
celui qui prend la dernière allumette qui perd.
247
12 – dictionnaire encyclopédique
λ-calcul — Branche de la logique développée par Alonzo Church➠ à la fin des années 1930.
Le problème est d’étudier les fonctions lorsqu’elles sont appliquées à leurs propres
arguments. Les langages fonctionnels sont des extensions du λ-calcul (on y ajoute les
constantes et les types).
nombre — n. m. Un nombre est un élément abstrait qui permet de décrire une quantité ou
une position de façon précise.
Les nombres sont historiquement apparus dans cet ordre :
– les entiers naturels,
– les nombres rationnels positifs,
– les entiers relatifs,
– les nombres rationnels,
– les nombres irrationnels et les nombres réels,
– les nombres complexes,
– les nombres hypercomplexes,
– les nombres cyclotomiques,
– les nombres p-adiques,
– les nombres réels transcendants1 et les nombres réels algébriques2 ,
– les nombres transfinis3 ,
– les nombres hyperréels,
– les nombres pseudo-réels.
Ce n’est pas fortuit : on passe de la façon la plus simple de mesurer à des tech-
niques beaucoup plus élaborées. La compréhension des limites des nombres ration-
nels, et de la nécessité des nombres réels fut particulièrement douloureuse pour les
pythagoriciens (voir Pythagore➠) ; on dit même que cela scella la fin de cette École.
Les nombres complexes se sont imposés dans un premier temps comme un argument
spécieux mais efficace pour résoudre les équations polynômiales (d’où le vocable
d’« imaginaire » pour désigner certains d’entre eux), avant de finalement être recon-
nus comme des nombres tout à fait convenables. Les nombres hypercomplexes furent
inventés par Hamilton (quaternions) puis par Cayley (octanion ou octave). À chaque
composante d’un nombre hypercomplexe, on peut associer une base à plusieurs di-
mensions (4 pour les quaternions, 8 pour les octonions et 16 pour les sédonions). On
a été amené à considérer la racine carrée de −1. Et pourquoi pas la racine n-ième de
−1. C’est le monde des nombres cyclotomiques.
L’apparition des nombres p-adiques➥ est liée à la notion de valeur absolue, et sont
très utilisés en théorie des nombres ; ces nombres sont cependant assez méconnus au
sein même de la communauté mathématique. Les nombres hyperréels furent conçus
pour résoudre certains problèmes de l’analyse et leur création par Abraham Robinson
permit le développement de l’Analyse non-standard. Un nombre x est dit hyperréel
si et seulement si il est infinitésimal (c.-à-d. si |x| est strictement inférieur à tout
standard positif) ou s’il est infiniment grand (c.-à-d. si 1/x est infinitésimal). Un
1 Un tel nombre n’est la racine d’aucun polynôme à coefficients entiers.
2 Un tel nombre est racine d’un polynôme à coefficients entiers.
3 Il s’agit des nombres introduisant une hiérarchie dans l’infini.
248
nombre hyperréel est donc en quelque sorte un « nombre au-delà du réel » en étendant
le champs réel à des quantités infinies ou dépendantes de l’infini.
Les nombres pseudo-réels (ou surréels) sont très semblables aux hyper-réels (en-
semble plus vaste) mais la construction est différente.
nombre p-adique — Un nombre p-adique est un élément d’un des corps Qp . p est un nombre
premier fixé une fois pour toutes. Le corps Qp est défini par complétion du corps Q
des nombres rationnels, lorsque ce dernier est muni de la valeur absolue | · |p , appelée
valeur absolue p-adique, définie comme suit : la valeur absolue |r|p d’un rationnel r
vaut 1/pk lorsque r se décompose en r = (a/b) × pk avec a, b et k entiers relatifs,
b > 0, a et b premiers entre eux et ni a ni b n’est divisible par p4 Si r est entier, k
est simplement le plus grand exposant d’une puissance de p qui divise r. En quelque
sorte, plus r est divisible par p plus sa valeur absolue p-adique est petite.
En considérant Qp comme un Qp -espace vectoriel on peut munir Qp d’une norme
puis d’une distance.
Le théorème d’Ostrowski donne une classification des normes sur les rationnels :
– la valeur absolue habituelle, qui donne par complétion les réels ;
– les valeurs absolues p-adiques, qui donnent par complétion les Qp , puis éven-
tuellement par extension algébrique, d’autres corps, dont les éléments sont aussi
appelés nombres p-adiques.
Ces valeurs absolues donnent naissance aux Qp , qui sont des analogues des réels,
mais qui présentent des propriétés spécifiques, car munis d’une valeur absolue et
d’une norme non-archimédienne. On obtient alors une analyse différente de l’analyse
usuelle, que l’on appelle analyse p-adique.
paradoxe de Russell — Considérons l’ensemble qui serait constitué de tous les ensembles
imaginables. Posons-nous la question : l’ensemble de tous les ensembles est-il un
ensemble ?. Si x désigne un tel ensemble, on devrait avoir x ∈ x. Ce qui est assez
gênant. Cantor➠ s’en aperçut en 1899. Soit alors W « l’ensemble » de tous les en-
sembles qui n’appartiennent pas à eux-mêmes. On constate facilement que W ∈ W
et W 6∈ W sont toutes deux contradictoires. Plus concrètement : Si dans un village,
un barbier déclare raser la barbe de tous ceux qui ne se rasent pas eux-mêmes, le
barbier se rase-t-il lui même ? Dans le même esprit : peut-on rédiger le catalogue de
tous les catalogues ? le catalogue obtenu est-il un catalogue ? Si non : rédigeons donc
le catalogue de tous les catalogues qui ne se mentionnent pas eux-mêmes. Mais alors,
. . . Pour Russell➠ et Whitehead, la solution à ces phénomènes contradictoires est
l’axiomatisation des mathématiques : on met tout à plat et on repart à zéro . . .. La
logique est reconstruite sur des postulats et doit pouvoir permettre la reconstruction
de toutes les mathématiques : c’est ce que l’on appela le logicisme. Russell développe
la théorie des types permettant d’instaurer une hiérarchie dans le langage ensem-
bliste et de définir le concept de classe afin d’éliminer les paradoxes de la théorie
des ensembles. Ces premiers travaux d’axiomatisation seront complétés par ceux de
4 Une telle décomposition est unique.
249
12 – dictionnaire encyclopédique
Zermelo➠, Fraenkel➠, Bernays. Un point final, calmant enfin les esprits, sera placé
par Gödel➠ et Cohen avec la « découverte » des propositions indécidables, après 64
ans d’incertitude sur le devenir des mathématiques : 1899-1963.
250
complexe de la nature, de la connaissance et du langage, avec un style de vie fondé
sur l détachement, la quête de l’autonomie intérieure et lap ix de l’âme. Le stoı̈cien
le plus fécond fur sûrement Chrysippe➠. La logique des stoı̈ciens est une logique des
propositions, c’est-à-dire une logique qui analyse les raisonnements sans entrer dans
la structure interne de leurs propositions. Elle est donc plus élémentaire que la lo-
gique d’Aristote➠. La logique stoı̈cienne était, par ailleurs, axiomatisée et, parmi ses
axiomes, certains ont fait l’objet d’un ré-examen par les logiciens contemporains.
L’un de ces axiomes stoı̈ciens est le modus ponens.
251
bibliographie
[Aho et al., 1991] Alfred Aho, Ravi Sethi, et Jeffrey Ullman. Compilateurs, principes, tech-
niques et outils. InterÉditions, Paris, 1991.
[Allen, 1984] J. F. Allen. Towards a general theory of action and time. Artificial Intelligence,
23 :123–154, 1984.
[Arsac, 1987] Jacques Arsac. Les machines à penser : des machines et des hommes. Seuil,
Paris, 1987.
[Audureau et others, Paris] Éric Audureau et al. Logique temporelle. Masson, 1990, Paris.
[Bouchon-Meunier, 1993] Bernadette Bouchon-Meunier. La logique floue. Que sais-je ? P.
U. F., Paris, 1993.
[Bouchon-Meunier, 1995] Bernadette Bouchon-Meunier. La logique floue et ses applications.
Addisson-Wesley, Paris, 1995.
[Carroll, 1966] Lewis Carroll. Logique sans peine. Hermann, Paris, 1966.
[Chang et Lee, 1973] Chin-Liang Chang et Richard Lee. Symbolic logic and mechanical
theorem proving. Academic Press, Londres, 1973.
[Delahaye, 1986] Jean-Paul Delahaye. Outils logique pour l’intelligence artificielle. Eyrolles,
Paris, 1986.
[Dreyfus, 1984] Hubert Dreyfus. L’intelligence artificielle : mythes et limites. Flammarion,
Paris, 1984.
[Friant et L’Hospitalier, 1986] Jean Friant et Yvon L’Hospitalier. Jeux-problèmes : de la
logique à l’intelligence artificiel le. Les éditions d’organisation, Paris, 1986.
[Gardner, 1979] Martin Gardner. Ha Ha. Pour la Science, Paris, 1979.
[Gardner, 1980] Martin Gardner. La magie des paradoxes. Pour la Science, Paris, 1980.
[Garey et Johnson, 1979] Michael R. Garey et David S. Johnson. Computers and Intracta-
bility – a guide to the theory of NP-completeness. W.H. Freeman and company, 1979.
[Genesereth et Nilsson, 1986] M. Genesereth et Nils Nilsson. Logical Foundations of Arti-
ficial Intelligence. Morgan Kaufmann Publishers, Inc., Los Altos, CA, 1986.
[Gochet et Gribomont, 1990] Paul Gochet et Pascal Gribomont. Logique, méthodes pour
l’informatique fondamentale. Hermès, Paris, 1990.
253
bibliographie
254
annexes
255
annexe A
257
a – corrections des exercices
prop.
(prop.) p
prop =⇒ implic.
=⇒ terme
=⇒ facteur
=⇒ facteur ∧ prop. sec.
=⇒ prop. sec. ∧ prop. sec.
=⇒ prop. prim. ∧ prop. sec.
=⇒ p ∧ prop. sec.
=⇒ p ∧ prop. prim.
=⇒ p ∧ (prop.)
..
=⇒ .
=⇒ p ∧ (q → r)
258
calcul propositionnel
∧ r
p q
259
a – corrections des exercices
p q ϕ0 ϕ1 ϕ2 ϕ3 ϕ4 ϕ5 ϕ6 ϕ7
p ∧ ¬p p∧q p ∧ ¬q p q ∧ ¬p q p xor q p∨q
p q ϕ8 ϕ9 ϕ10 ϕ11 ϕ12 ϕ13 ϕ14 ϕ15
p↓q p↔q ¬q q→p ¬p p→q p↑q p ∨ ¬p
260
calcul propositionnel
261
a – corrections des exercices
⊢ ¬F ↔ H1 ∨ . . . ∨ Hn
⊢ ¬¬F ↔ ¬(H1 ∨ . . . ∨ Hn )
⊢F ↔ ¬H1 ∧ . . . ∧ ¬Hn
Comme les Hi sont des disjonctions de littéraux, ¬Hi est une conjonction de littéraux.
On a donc le résultat.
262
calcul propositionnel
(p ∨ r) ∧ (q ∨ r) ∧ (¬p ∨ ¬q ∨ r)
F = (a ∧ b) ∨ (a ∧ c ∧ d) ∨ (b ∧ d ∧ e)
(a ∨ b) ∧ (a ∨ d) ∧ (a ∨ e) ∧ (b ∨ d) ∧ (b ∨ c)
263
a – corrections des exercices
Ceci montre donc qu’il faut au minimum 5 serrures dont les différentes clés sont
distribuées telles que dans la formule ci-dessus.
On peut retrouver ce résultat en travaillant directement sur la forme normale
disjonctive. En effet,
F ↔ (a ∧ b) ∨ (a ∧ c ∧ d) ∨ (b ∧ d ∧ e)
↔ ((a ∨ a) ∧ (b ∨ a) ∧ (a ∨ c) ∧ (b ∨ c) ∧ (a ∨ d) ∧ (b ∨ d)) ∨ (b ∧ d ∧ e) −distribution
↔ (a ∧ (b ∨ c) ∧ (b ∨ d)) ∨ (b ∧ d ∧ e) −absorption a, a ∨ b, a ∨ c, a ∨ d
↔ (a ∨ b) ∧ (a ∨ d) ∧ (a ∨ e) ∧ (b ∨ c ∨ b) ∧ (b ∨ c ∨ d) ∧ (b ∨ c ∨ e) ∧ (b ∨ d ∨ b)
∧(b ∨ d ∨ d) ∧ (b ∨ d ∨ e) −distribution
↔ (a ∨ b) ∧ (a ∨ d) ∧ (a ∨ e) ∧ (b ∨ c) ∧ (b ∨ d) −absorption
abc
de
– théorème 5. On a : a = a ⊕ (a ⊗ a) = (a ⊕ a) ⊗ (a ⊕ a) = a ⊕ a. De même,
a = a ⊗ (a ⊕ a) = (a ⊗ a) ⊕ (a ⊗ a) = a ⊗ a.
– théorème 6. On a : a ⊕ ⊤ = a ⊕ (a ⊕ a) = (a ⊕ a) ⊕ a = (a ⊕ a) ⊕ a ⊕ a = ⊤.
De même, a ⊗ ⊥ = a ⊗ (a ⊗ a) = (a ⊗ a) ⊗ a = (a ⊗ a) ⊗ a ⊗ a = ⊥.
– théorème 7. On a (a⊕b)⊗(a⊗b) = (a⊗a⊗b)⊕(b⊗a⊗b) = (⊥⊗b)⊕(a⊗⊥) =
⊥ ⊕ ⊥ = ⊥. On montre de manière similaire que (a ⊕ b) ⊕ (a ⊗ b) = ⊤. Ce qui
montre que a ⊕ b = a ⊗ b. On démontre de la même façon que a ⊗ b = a ⊕ b.
– théorème 8. On a :
a ⊕ (a ⊗ b) = (a ⊗ ⊤) ⊕ (a ⊗ b)
= (a ⊗ (b ⊕ b)) ⊕ (a ⊗ b)
= (a ⊗ b) ⊕ (a ⊗ b) ⊕ (a ⊗ b)
= (a ⊗ b) ⊕ (a ⊗ b)
= (a ⊗ (b ⊕ b))
= (a ⊗ ⊤)
= a
264
calcul propositionnel
On a alors :
1: prop. ➍ a=a⊕⊥
2: b compl. a = a ⊕ (x ⊗ b)
3: prop. ➌ a = (a ⊕ x) ⊗ (a ⊕ b)
4: prop. ➊ a = (x ⊕ a) ⊗ (a ⊕ b)
5: a compl. a = ⊤ ⊗ (a + b)
6: prop. ➍ a = (a ⊕ b)
On montre de la même manière (en échangeant les rôles de a et b) que b = (a⊕b).
Comme l’opération ⊕ est commutative (propriété ➊), on obtient a = b.
(x 6 x) ⊗ (x 6 x) = x 6 x −idempotence de ⊗
(x ⊗ x) 6 (x ⊗ x) 6 (x ⊗ x) 6 (x ⊗ x) = x 6 x −distribution
x6x6x6x = x 6 x −idempotence
x6x = ⊥ −simplification
265
a – corrections des exercices
f (F̂ ) = ˆ )
f (¬F
= {δ ∈ {, }P | δ(¬F ) = }
= {δ ∈ {, }P | δ(F ) = }
= {δ ∈ {, }P | δ(F ) = }
= f (F̂ )
Montrons ensuite que f est injective. Il suffit pour cela de montrer que son noyau
ˆ Soit F̂ ∈ F/≡ tel que f (F̂ ) = ∅ l’élément neutre de P({, }P ).
est réduit à .
Alors, {δ ∈ {, }P | δ(F ) = } = ∅. Donc, ∀δ, δ(F ) = . D’où, F̂ = . ˆ f est
donc bien un isomorphisme. Il permet de démontrer le théorème précédent.
266
calcul propositionnel
267
a – corrections des exercices
1: hyp A→B
2: hyp B→C
3: hyp C
4: mp 1 · 3 B
5: mp 2 · 4 C
On utilise la même démarche pour montrer les autres résultats de la proposi-
tion 4.
268
calcul propositionnel
➊ il est faux de dire que tout nombre est pair : SS0ḃ = c signifie que c = 2b,
∃b, (SS0 · b) signifie donc que c est pair, ∀c, ∃b(SS0 · b = c) signifie donc que
tout nombre est pair.
➋ tout nombre est impair
➌ ∀c∃b, 2b 6= c (vrai – il suffit de prendre b = c + 1)
➍ il n’existe pas de nombre qui soit la moitié de tous les autres (après le ¬, on a
∃b∀c, 2b = c)
➎ ∃b∃c, 2b 6= c
➏ ∃b∀c, 2b 6= c (non vérifié – par exemple, si on prend c = 2b)
➊ ∃b SSSSSS0 = (SS0 · b)
269
a – corrections des exercices
➋ ¬∃b SS0 = (b · b)
➌ ∃b∃c S . . . S 0 = (((b · b) · b) + ((c · c) · c))
| {z }
1729
➍ ∀a¬∃b∃c ((a · a) · a) = (((Sb · Sb) · Sb) + ((Sc · Sc) · Sc)) (on élimine le cas 0)
➎ ¬∃b∃c (SSb · SSc) = SSSSS0
➏ ∀b∃c¬∃d∃e (SSd·SSe) = (b+Sc) (b+Sc est premier et b+Sc est nécessairement
plus grand que b).
270
calcul des prédicats
➀ ∀x l(x) → f (x)
➁ ∃x l(x) ∧ ¬c(x)
➂ ∀x s(x) → ¬st(x)
➃ ∀x s(x) → m(x)
terme terme
z }| { z }| {
➊ ∃y(R(|{z}
x , f (y) , z) → (v(|{z}
b ) ∨ s(|{z}
a , g(b) ))). Les variables de la formule
| {z } |{z}
var atome cte cte atome
sont : x, y et z. x a une occurrence (libre), y a une occurrence (liée) et z, une
occurence (libre).
➋ (∀xp(x)) ∨ (∃yf (x) = y) Les variables sont x et y. f est une fonction, p est un
symbole de prédicat. x a deux occurrences (une liée, la première et une libre).
y a une occurrence (liée).
➌ ∀x∀y(x = y → f (x) = f (y)). Les variables sont x et y (f est une fonction).
Elles ont chacune deux occurrences, toutes les deux liées.
c b
271
a – corrections des exercices
272
calcul des prédicats
273
a – corrections des exercices
274
calcul des prédicats
➊ définition de la réflexivité
➋ définition de l’antisymétrie
➌ définition de la transitivité
275
a – corrections des exercices
H0 = {a, b}
H1 = {a, b} ∪ {f (a), f (b), g(a), g(b)}
H2 = H1 ∪ {f 2 (a), f 2 (b), g 2 (a), g 2 (b), f (g(a)), f (g(b)), g(f (a)), g(f (b))}
..
.
Hi = {f n (g p (b)), f k (g ℓ (a)) | ∀x ∈ {n, p, k, ℓ}, x ≤ i}
276
calcul des prédicats
277
a – corrections des exercices
➍ Montrons que « les dragons sont enfant sont heureux ». Une modélisation de
cette expression est :
∀x(∀y¬P (y, x) → H(x))
La négation de cette expression est équivalente à :
C5 = {V e(a), ¬H(a)}
278
logiques non classiques
1: hyp A→B
2: néc (A → B)
➀
3: K (A → B) → A → B
4: mp 2 · 3 A → B
1: hyp A→B
2: contr ¬B → ¬A
➁ 3: ➀ ¬B → ¬A
4: contr ¬¬A → ¬¬B
5: déf ♦A → ♦B
1: M ¬A → ¬A
2: contr A → ¬¬A
3: déf A → ♦A
4: ➎ ♦A → ♦A
➂ 5: syll 3 · 4 A → ♦A
6: règl S5 ♦A → A
7: ➀ sur 6 ♦A → A
8: 5{¬A/A} A → ♦A
9: syll 7 · 8 A → A
279
a – corrections des exercices
touche
porte fermée porte ouverte
chev
auche
soleil brille
Pour ➌ et ➍, on peut avoir après, finit, pendant. Pour ➍ et ➋, on peut avoir
avant, touche, chevauche, finit, contient.
A ¬A ∧ ❍ ∨ ❍
❍
❍ ❍ ❍ ❍ ❍ ❍
❍
→ ❍ ↔ ❍
❍
❍ ❍ ❍ ❍ ❍
❍ ❍
280
logiques non classiques
En effet, si δ(p) = 1, le deuxième min vaut 1 quelle que soit la valeur de δ(q). Si
δ(p) = 0, la plus petite valeur possible du deuxième min est 0 mais alors le min
général vaut encore 1. Comme min est monotone, quelle que soit la valeur de δ(p)
entre 0 et 1, on aura la validité de la formule.
On peut démontrer de la même façon la validité du deuxième axiome.
Correction
R
de l’exercice 100 page 86 :
R
fA (x) = 13 = (38 − 30) + (30 − 24)/2 + (42 − 38)/2
281
a – corrections des exercices
282
langages formels et grammaires
283
a – corrections des exercices
A.5 Automates
Correction de l’exercice 111 page 119 :
On obtient e0 1101, 1e2 101, 11e0 01, 110e1 1 puis finalement 1101e3 . Le mot n’est donc
pas reconnu par l’automate.
a, b
e0 b a e3
e4
a a a
b b
e1 b
e2
284
automates
➊
1 0
1
0 0
0 1 2
➋
1 0 0, 1
0 1 1
0 1 2 3
➌
0, 1
0 1
0 1 2
1 0
1 0
0
0 1
3 4 5
285
a – corrections des exercices
➊ considérons a = 0.
➀ Si w a un nombre pair de 1 alors z aussi. Or, par hypothèse, τ̂ (e0 , z) = e0 .
Ainsi, τ̂ (e0 , w) = τ (τ̂ (e0 , z), 0) = e0 (d’après l’automate).
➁ Si w a un nombre impair de 1, z aussi. Or, comme la propriété est vérifiée
τ̂ (e0 , z) = e1 et toujours d’après l’automate, τ̂ (e0 , w) = τ (τ̂ (e0 , z), 0) = e1 .
La propriété est donc vérifiée dans ce cas.
➋ considérons a = 1.
➀ Si w a un nombre pair de 1 alors z en a un nombre impair. Or, par
hypothèse, τ̂ (e0 , z) = e1 . Ainsi, τ̂ (e0 , w) = τ (τ̂ (e0 , z), 1) = e0 (d’après
l’automate).
➁ Si w a un nombre impair de 1, z en a un nombre pair. Or, comme
la propriété est vérifiée τ̂ (e0 , z) = e0 et toujours d’après l’automate,
τ̂ (e0 , w) = τ (τ̂ (e0 , z), 1) = e1 . La propriété est donc vérifiée dans ce cas.
1
1 e1 e2 0, 1
e0 0, 1
0 e3 e4 0, 1
0
286
automates
➊ Sur la figure suivante, toutes les boucles concernent tous les éléments de l’al-
phabet
0 1
1 0
1 2
2 2
3 3
3
4 4
4
5 5 ef
es 5
6 6 6
7
7
8 7 8
9
8 9
es 0 0 ef
0
0, 1 0, 1
3 1
0, 1 0, 1
2
287
a – corrections des exercices
0, 1 0, 1
0 0, 1 0
p q r s
1
1
0 1 0
A B C E
1 0
0 0
0
D F 0 H 1 1
1
1
0
G
0
1
0, 1 0, 1 0
p q r s
288
automates
1
0, 1
1 0 0
A C I J
0
1 0
0
0
0 0
E B G H
0
1 1 1
1
F
K D 1
0, 1 0
0
p 0 q 0
r
1
0 1
s t
289
a – corrections des exercices
1 0
0 0
A B D
0 1
1 1
C
b c
1 2 3
a
a b d
0 4 5 6
a, b, c, d
a
a c d
7 8 9 10
290
langages et automates
b, c, d
b, c, d b, c, d a a
b a
c
a b
A B D
c, d
a d
a a
d
d b, c, d G b E H
C
b, c
c
a
0 0
S A B
1 1
0
C 0, 1
291
a – corrections des exercices
1
0 1
0
1
0
2 0 1
1
0
1
0
4 3
Cet automate est minimal car il correspond exactement aux classes de RL relation
la moins fine possible.
292
langages et automates
0 0 00
1 2 3 1 3
1 1 11
293
a – corrections des exercices
(0 + 1((1 + 001⋆ 0)(101⋆ 0)⋆ 0)⋆ (01 + (1 + 001⋆ 0)(101⋆ 0)⋆ 11))⋆
01 01
1 1 1
0 1 0 1 0 1
0 00
1
0 1 0 1 + 001⋆ 0
2 0 1
0 0 0
0
0 11 11
1 4 3 3
0
4 3
10
1 101⋆ 0
1
01 + (1 + 001⋆ 0)(101⋆ 0)⋆ 11
1
0 1 (1 + 001⋆ 0)(101⋆ 0)⋆ 0 0
0
0 + 1((1 + 001⋆ 0)(101⋆ 0)⋆ 0)⋆ (01 + (1 + 001⋆ 0)(101⋆ 0)⋆ 11)
294
langages et automates
0 1
➋
0
0 1
0 0
➊ on obtient L+
➋ on obtient l’ensemble des suffixes des mots de L
➌ on obtient l’ensemble des préfixes des mots de L
➍ on obtient l’ensemble des sous-chaı̂nes des mots de L
295
a – corrections des exercices
pn pn−1 p
an n
+ an−1 n−1 + · · · + a1 + a0 = 0 (A.1)
q q q
qY = −an pn (A.4)
Ce qui signifie que d’une part, p divise a0 et que, d’autre part, q divise an . On
obtient alors l’algorithme suivant :
➊ calculer les diviseurs de a0
➋ calculer les diviseurs de an
➌ tester chacun des quotients entre éléments des deux listes précédentes et vérifier
qu’ils sont ou non solution de l’équation
296
calculabilité, décidabilité
➀ |xz| < 2n car xz est nécessairement plus court que w et w est le plus court
des mots de L de longueur 2n ou plus
➁ |xz| ≥ n car [xy| < n et donc xz ne peut être plus court que w de plus de
n symboles
xz, élément de L, est donc d’une longueur comprise entre n et 2n − 1, ce qui
est contradictoire avec notre hypothèse. w n’existe donc pas.
297
a – corrections des exercices
➊ dans le cas général, le mot sur le ruban est de type : 0i 10n 10kn
➋ le mouvement de base consiste à changer un 0 du premier groupe en un
$ puis d’ajouter n 0 au dernier groupe, fournissant ainsi un mot de type :
0i−1 10n 10(k+1)n
➌ pour cela, il faut copier le groupe de n 0 à la fin du mot sur le ruban et ceci m
fois (une fois à chaque changement d’un 0 du premier groupe en $). Dès que
le premier groupe de 0 est complètement transformé en $, le dernier groupe
contient mn 0.
➍ l’étape finale consiste à changer les 10n 1 de tête en $ pour ne laisser que la
réponse attendue
298
complexité
11101001000101001100010101001001100010010010100110001000100010010111
A.8 Complexité
Correction de l’exercice 147 page 187 :
Pour une entrée de taille k = m + n + 3, l’additionneuse fait k + 2 opérations.
299
a – corrections des exercices
g(n) = 3+6 P
+ · · · + 3n
= 3× n i=1 i
= 3 × n(n+1)
2
= 3
2
× (n2 + n)
< 3 × n2
Il existe donc une constante c bornant supérieurement g(n) à l’aide du polynôme
n2 . On a donc bien : g(n) ∈ O(n2 ).
300
complexité
301
a – corrections des exercices
302
complexité
a12 a22
Fig. A.5 — Instance de vc obtenue à partir d’une instance de 3sat pour laquelle U = {u1 , u2 , u3 , u4 } et
C = {{u1 , ¬u3 , ¬u4 }, {¬u1 , u2 , ¬u4 }}. Ici, K = n + 2m = 8.
et
n
[ m
[ m
[
E=( Ei ) ∪ ( Ej′ ) ∪ ( Ej′′ )
i=1 j=1 j=1
Cette construction est clairement polynômiale (la figure A.5 donne un exemple
d’une telle transformation). Il ne reste plus qu’à montrer l’équivalence entre les deux
problèmes.
➊ Supposons V ′ ⊆ V est un transversal de G de cardinal inférieur ou égal à K.
V ′ contient au moins un sommet de chaque Ti et au moins deux sommets de
chaque Sj . En fait, comme K = n + 2m, V ′ contient exactement un sommet de
chaque Ti et exactement 2 sommets de chaque Sj . Ainsi, on peut affecter une
valeur de vérité à chaque variable propositionnelle en consultant V ′ . On a :
δ(ui ) = si ui ∈ V ′ et δ(ui ) = si (¬ui ) ∈ V ′ . Considérons maintenant les
trois arêtes de Ej′′ . Seuls deux de ces arêtes sont couvertes par des sommets de
Vj′ ∩ V ′ , la dernière l’est donc forcément par un sommet de Vi qui appartient
à V ′ mais ceci implique que le littéral correspondant est nécessairement
satisfaisant du même coup la clause considérée. C’est le cas de chacune des
clauses de C, C est donc satisfiable.
➋ Supposons donnée une interprétation δ des variables de U telle que C soit
satisfaite. On construit un transversal de la manière suivante : le sommet de
Ti dans V ′ est ui si δ(ui ) = et ¬ui sinon. Ceci assure qu’au moins une
des trois arêtes de chaque Ej′′ est couverte (puisque δ permet de satisfaire C
et donc chaque clause). Il suffit donc d’ajouter à V ′ les sommets de Sj pour
chacun des deux autres arêtes de Ej′′ fournissant ainsi un transversal du bon
cardinal.
303
a – corrections des exercices
304