Calculabilité, décidabilité, thèse de Church

publicité
CALCULABILITE
DECIDABILITE
THESE DE CHURCH
PRINCIPAUX RESULTATS
Plan
•  La calculabilité effective
•  Les fonctions processus
Patrick Bellot
Télécom ParisTech
1
La calculabilité effective
•  La notion de calculabilité effective est
fondamentale en informatique et en
mathématiques modernes.
•  On dit que « quelque chose » est effectivement
calculable s’il existe un procédé quelconque
mais automatisable permettant de l’obtenir.
•  C’est une notion intuitive.
Exemples
•  Etant donné un entier n strictement positif,
le n-ième nombre premier est effectivement
calculable (crible d’Erastosthène).
•  Soit deux entiers x et y, décider si x est divisible
par y est effectivement calculable.
•  Soit n strictement positif, décider s’il existe une
suite de n chiffres 7 consécutifs dans le
développement décimal de π n’est pas
effectivement calculable.
2
Codage de Gödel
•  Le codage de Gödel est une technique qui
consiste à coder tous les éléments d’un domaine
D (dénombrable) par des entiers naturels:
σ : D ⎯→ Ν
σ-1 : Ν ⎯→ D
•  La fonction de codage σ et la fonction de
décodage σ-1 doivent être effectivement
calculables.
Exemples de codage
•  Codage de N2:
σ : N x N ⎯→ Ν
σ(x,y) = 2x 3y
•  Codage de Z:
σ : Z ⎯→ Ν
σ(x) = ⎧2x
⎩-2x-1
si x > 0
si x < 0
3
Exemples de codage
•  Codage des chaînes de caractères:
σ("ABC …") = A3A2A1B3B2B1C3C2C1…
Chaque lettre X est codée par X3X2X1 où
X3X2X1 est le code ASCII de la lettre en base
10 sur 3 chiffres (0 ≤ codage < 256).
Le codage de la chaîne est obtenu en
concaténant les codages des lettres.
Se ramener aux entiers naturels
•  En supposant que l’on peut définir un codage
de Gödel σ pour un domaine D étudié, on peut
se restreindre à étudier les fonctions
effectivement calculables sur les entiers
naturels.
•  Une fonction f : Dk ⎯→ D est dite
effectivement calculable si la fonction
ϕ : Nk ⎯→ N définie par
ϕ(x1,…,xk) = σ(f(σ -1(x1),…, σ -1(xk))
est effectivement calculable.
4
Se ramener aux entiers naturels
•  Une fonction f : Dk ⎯→ D est dite
effectivement calculable si la fonction
ϕ : Nk ⎯→ N définie par
ϕ(x1,…,xk) = σ (f(σ-1(x1),…, σ-1(xk))
est effectivement calculable.
•  Si ϕ est effectivement calculable, il existe un
processus de calcul pour calculer f :
f(d1,…,dk) = σ(ϕ(σ-1(d1),…, σ-1(dk))
Les entiers naturels
•  Une fonction f : Nk ⎯→ N est dite
effectivement calculable s’il existe un procédé
automatisable permettant de calculer le résultat
f(x1,…,xk) pour tous les entiers x1,…,xk.
•  On choisit de s’intéresser aux fonctions
partielles sur les entiers naturels, c’est-à-dire
que l’on autorise que la fonction ne soit pas
définie pour certains arguments.
5
Les fonctions partielles
•  Une fonction est dite partielle si elle est
indéfinie pour certains de ses arguments.
•  Exemple. f : N x N ⎯→ Ν définie par
f(x,y)= x - y est indéfinie si x < y.
•  Une fonction partielle f : Nk ⎯→ N est dite
effectivement calculable s’il existe un procédé
automatisable permettant de calculer le résultat
f(x1,…,xk) pour tous les entiers x1,…,xk tels que
f(x1,…,xk) est définie.
Remarque
•  La calculabilité effective ne prend pas en
compte la complexité des calculs : un calcul qui
a une complexité « délirante » est quand même
considéré comme un calcul.
•  La calculabilité effective ne prend pas en
compte la réalité : on peut supposer un
ordinateur à mémoire infinie ou des calculs plus
longs que la durée de vie de l’Univers.
6
La décidabilité
•  Un prédicat exprime une relation entre des objets. On
considère les prédicats sur les entiers naturels.
Exemple : R(x,y) signifiant que x est divisible par y.
•  La fonction caractéristique d’une relation à n
paramètres R(x1,…,xn) est la fonction CR définie par:
CR(x1,…,xn) = 1 si R(x1,…,xn)
0 sinon
La décidabilité
•  Un prédicat est dit (effectivement) décidable si sa
fonction caractéristique est effectivement calculable.
•  Si un prédicat est décidable, on peut toujours décider si
ses arguments le satisfont en calculant sa fonction
caractéristique pour ses arguments : la fonction étant
partout définie, le processus se termine toujours. Il
suffit d’être patient car on a toujours une réponse.
•  Le processus de décision peut néanmoins ne pas être
réaliste : cf. la décomposition en facteurs premiers
d’un très grand entier.
7
La semi-décidabilité
•  Un prédicat R(x1,…,xn) est dit semi-décidable si la
fonction SR définie par :
SR(x1,…,xn) = 1 si R(x1,…,xn)
indéfini sinon
est effectivement calculable.
•  Par extension de langage, la fonction SR sera appelée
fonction semi-caractéristique du prédicat R.
La semi-décidabilité
•  Si le prédicat R est satisfait pour des paramètres
x1,…,xn, le programme de la fonction SR se
terminera et on en saura le résultat.
•  Si le prédicat R n’est pas satisfait pour des
paramètres x1,…,xn, le programme de la
fonction SR ne se terminera probablement pas et
on ne saura jamais rien.
8
La semi-décidabilité
•  La semi-décidabilité d’une relation signifie
donc qu’on est capable à l’aide d’un processus
de calcul de savoir qu’elle est satisfaite
lorsqu’elle l’est.
•  En revanche, lorsque la relation n’est pas
satisfaite, il n’existe aucun processus de calcul
permettant de conclure à coup sûr.
La semi-décidabilté (exemple)
•  La relation R(n) signifiant « Il existe une suite
de n chiffres 7 consécutifs dans le
développement décimal de π» est semidécidable. Il suffit de calculer le développement
décimal de π jusqu’à l’apparition des n chiffres
7 consécutifs. Si une telle série de chiffres
existe, le programme se terminera. Dans le cas
contraire, il continuera sans s’arrêter…
9
Divers modèles de calculabilité
• 
• 
• 
• 
• 
• 
• 
• 
• 
La machine de Turing, 1936
Les fonctions générales récursives de Gödel, Herbrand & Kleene, 1936
Les fonctions λ-définissables de Church, 1931
Les combinateurs de Curry, 1930
Les automates finis
Les URS, Uniformly reflexive structures, de Wagner & Strong, 1970
L’URM, Unlimited Register Machine, Stepherdson & Sturgis, 1963
Les règles de productions de Post & Markov, 1943
Etc.
Une première définition de la
calculabilité effective
Nous allons commencer par examiner les URM
qui fournissent une définition plutôt
opérationnelle de la calculabilité effective assez
proche de ce que l’on connaît avec nos
ordinateurs…
10
U.R.M.
L’URM (Unlimited Register Machine) est un
ordinateur abstrait :
•  possédant un nombre infini de registres à
valeurs entières et positives (illimitées) nommés
R1, R2, …
•  un jeu d’instructions très simples
URM :Programmes
•  Un programme est une liste finie et numérotées
d’instructions.
•  Ces instructions sont exécutées en commençant
par la première.
•  Après l’exécution d’une instruction, on exécute
l’instruction suivante sauf en cas d’instruction
de saut.
•  L’exécution est arrêtée lorsqu’il n’y a plus
d’instructions suivante.
11
URM : Instructions
•  Z(n)
(instruction zéro)
Rn := 0 ;
•  S(n)
(instruction successeur)
Rn := Rn + 1
•  T(m,n)
(instruction de transfert)
Rn := Rm
•  J(m,n,q)
(instruction de saut conditionnel)
Si Rn=Rm aller à l’instruction numéro q
URM : Exemple
•  Le programme suivant:
1 – J (1,2,6)
2 – S(2)
3 – S(3)
4 – J(1,2,6)
5 – J(1,1,2)
6 – T (3,1)
•  La configuration initiale suivante:
R1 = 9
R2 = 7
R3 = 0
Etc…
12
URM : Exécution
1. 
2. 
3. 
4. 
5. 
6. 
J(1,2,6)
S(2)
S(3)
J(1,2,6)
J(1,1,2)
T(3,1)
URM : Exemple
R1 = 9
R2 = 7
R3 = 0
Etc…
1. J(1,2,6)
R1 = 9
R2 = 7
R3 = 0
Etc…
2. S(2)
R1 = 9
R2 = 8
R3 = 0
Etc…
3. S(3)
R1 = 9
R2 = 8
R3 = 1
Etc…
4. J(1,2,6)
R1 = 9
R2 = 8
R3 = 1
Etc…
5. J(1,1,2)
R1 = 9
R2 = 8
R3 = 1
Etc…
2. S(2)
R1 = 9
R2 = 9
R3 = 1
Etc…
3. S(3)
R1 = 9
R2 = 9
R3 = 2
Etc…
4. J(1,2,6)
R1 = 9
R2 = 9
R3 = 2
Etc…
6. T(3,1)
R1 = 2
R2 = 9
R3 = 2
Etc…
7. Arrêt
R1 = 2
R2 = 9
R3 = 2
Etc…
•  Que calcule ce programme ?
1.  Si R1 ≥ R2 alors R1 := R1 – R2
2.  Si R1 < R2 alors le programme ne se termine pas
• 
Autre programme qui ne se termine jamais:
1. J(1,1,1)
13
URM : Terminologie
•  Une configuration (initiale) notée (a1,…,an)
désigne un état initial des registres tel que :
–  Ri = ai
–  Ri = 0
si
si
1≤i≤n
i>n
•  Soit P un programme URM, si P ne se termine pas
pour une configuration initiale (a1,…,an), on le
note P (a1,…,an) ↑
•  Soit P un programme URM, si P se termine et si b
est le contenu du registre R1 lorsque P s’arrête, on
le note P (a1,…,an) ↓ b
Fonctions URM-Calculables
•  Une fonction partielle f : Nk ⎯→ N est dite
URM-calculable s’il existe un programme
URM nommé F telle que pour toute
configuration (a1,…,ak) on a :
–  F(a1,…,ak) ↓ b
–  F(a1,…,ak) ↑
si
si
f (a1,…,ak) = b
f (a1,…,ak) est inféfini
•  Exemple : la fonction f : N2 ⎯→ N telle que :
f(x,y) = x-y si x ≥ y, indéfini sinon
est URM-calculable.
14
Un autre exemple
• 
La fonction f : N ⎯→ N définie par
f(n)=n/2 si n est pair, indéfini sinon
est URM-calculable :
1. 
2. 
3. 
4. 
5. 
6. 
J(1,2,6)
S(2)
S(2)
S(3)
J(1,1,1)
T(3,1)
Ce programme commence avec la configuration (n,0,0)
puis boucle en incrémentant R2 de 2 et R3 de 1 jusqu’à
ce que R2 soit égal à R1. Si n est pair, la boucle se
termine donc dans une configuration (n,2k,k) avec
n=2k puis R3=k est recopié dans R1. Si n est impair, le
programme ne se termine pas.
Calculabilité Effective
(Définition temporaire)
•  Il est clair que les fonctions URM-calculables
sont effectivement calculables, on adopte donc
la définition temporaire suivante:
Une fonction est effectivemenet calculable
si et seulement si
elle est URM-calculable
15
Standardisation de programmes URM
•  Un programme URM de n instructions est en
forme standard si pour toute instruction de saut
J(i,j,k), on a k ≤ n+1.
•  Pour tout programme P, il existe un programme
P’ en forme standard tel que :
P(x1,…,xn)↓b si et seulement si P’(x1,…,xn)↓b
Il suffit de remplacer tous les sauts après n+2
par des sauts en n+1.
•  ON NE CONSIDERERA PLUS QUE DES
PROGRAMMES EN FORME STANDARD.
Séquencer des programmes URM
•  Soit P et Q des programmes URM avec respectivement
p et q instructions, on note (PQ) le séquencement des
programmes P et Q obtenu comme suit:
–  On renumérote les instructions de Q en ajoutant p à chaque
numéro d’instruction.
–  On remplace dans Q chaque instruction J(i,j,k) par J(i,j,k+p)
–  Les instructions de (PQ) sont celles de P suivies de celles de
Q modifiées.
16
Séquencer des programmes URM
Programme P
1 : I1
…
p : Ip
Programme Q
1 : J1
…
x : J(m,n,k)
…
k:…
…
q : Jq
Programme (PQ)
1 : I1
…
p : Ip
p+1 : J1
…
p+x : J(m,n,p+k)
…
p+k : …
…
p+q : Jq
Appeler un sous-programme URM
•  Soit P un programme URM, on note ρ(P) le plus grand
numéro de registre utilisé dans P. Si n > ρ(P), alors P ne
modifie pas Rn.
•  Soit P un programme calculant une fonction f à n
arguments et soit u,v1,…,vn > ρ(P), on note
P[v1,…,vn→u] le programme obtenu par le
séquencement des quatre programmes suivants :
1. T(Rv1,1)
2. T(Rv2,2)
…
n. T(Rvn,n)
P
1. T(1,u)
1. Z(1)
2. Z(2)
…
ρ(P). Z(ρ(P) )
17
Les fonctions partielles récursives
Les fonctions partielles récursives fournissent
une définition mathématique de la calculabilité
effective par opposition aux URM qui en
fournissent une définition opérationnelle.
Les fonctions partielles récursives sont un
ensemble de fonctions sur les entiers naturels.
Les fonctions de base
Les fonctions de base sont des fonctions
partielles récursives « données ».
Les autres fonctions partielles récursives sont
construites à partir de ces fonctions de base par
des opérations que nous verrons plus tard.
18
Les fonctions de base
•  La fonction « zéro » notée 0 : N → N telle que
0(x)=0 pour tout x est une fonction de base.
•  Notons que la fonction « zéro » est URMcalculable :
1. Z(1)
Les fonctions de base
•  La fonction « successeur » notée s : N → N telle
que s(x) = x+1 pour tout x est une fonction de
base.
•  Notons que la fonction « successeur » est URMcalculable :
1. S(1)
19
Les fonctions de base
•  Les projections notées Ui,n : Nn → N, pour
1≤i≤n, telles que Ui,n(x1,…,xn)=xi sont des
fonctions de base.
•  Notons que les projections sont URMcalculables :
1. T(i,1)
La substitution
•  La « substitution », normalement appelée composition
de fonctions, est un procédé basique permettant de
construire une nouvelle fonction à partir de fonctions
existantes.
•  Soient f(y1,…,yk), g1(x1,…,xn),…,gk(x1,…,xn) des
fonctions effectivement calculables, la fonction h(x1,
…,xn) définie par :
h(x1,…,xn) = f(g1(x1,…,xn),…, gk(x1,…,xn))
est aussi effectivement calculable, c’est intuitif !
•  h est la composition de f avec g1,…,gn.
20
URM et substitution
La substitution (exemples)
•  La fonction K1 telle que K1(x)=1 est
effectivement calculable car c’est la
composition de s avec 0.
•  La fonction f telle que f(x)=x+1 est
effectivement calculable puisque c’est S.
•  La fonction g telle que g(x) = x+2 est
effectivement calculable car c’est la
composition de f avec f.
h(x1,…,xn) = f(g1(x1,…,xn),…, gk(x1,…,xn))
Supposons que f, g1,…, gk soient URM-calculables.Soient F,G1,
…,Gk des programmes URM calculant f, g1,…, gk.
On pose m = max(n,ρ(f), ρ(g1),…, ρ(gk)) .
G1[m+1,…,m+n → m+n+1]
T(1,m+1)
Le séquencement de
T(2,m+2)
…
T(n,m+n)
G2[m+1,…,m+n → m+n+2]
et de
…
Gk[m+1,…,m+n → m+n+k]
F[m+n+1,…,m+n+k → 1]
permet de calculer h qui est aussi URM-calculable.
21
La récursion
•  La « récursion », normalement appelée récursivité, est un
procédé de contruire de nouvelles fonctions à partir de
fonctions existantes.
•  Soient f(x1,..,xn) et g(x1,..,xn,y,z) des fonctions
effectivement calculables, la fonction h(x1,..,xn,y) définie
par :
h(x1,..,xn,0) = f(x1,..,xn)
h(x1,..,xn,y+1) = g(x1,..,xn,y,h(x1,..,xn,y))
est intuitivement calculable.
•  La récursion est la forme naturelle de la récursivité sur
les entiers naturels.
La récursion (exemples)
•  f(x) = x est effectivement calculable
•  g(x,y,z) = z+1 est effectivement calculable
•  h(x,y) définie par:
-  h(x,0) = f(x)
-  h(x,y+1) = g(x,y,h(x,y))
- h(x,0) = x
- h(x,y+1) = h(x,y)+1
est effectivement calculable.
h est l’addition
22
La récursion (exemples)
•  Si n=0 dans les équations de la récursion, elles
deviennent :
–  h(0) = a
–  h(y+1) = g(y,h(y))
f(x) = x, g(x,y,z) = z+1
+(x,0) = x
+(x,y+1) = s(+(x,y))
f(x) = 0, g(x,y,z) = x+z
*(x,0) = 0
*(x,y+1) = x + *(x,y)
•  Avec a=1 et g(y,z) = (y + 1) z, on obtient la
fonction factorielle qui est calculable.
f(x) = 1, g(x,y,z) = x z
^(x,0) = 1
^(x,y+1) = x ^(x,y)
n=0, f() = 0, g(y,z) = y
p(0) = 0
p(y+1) = y
f(x) = x, g(x,y,z) = p(z)
- (x,0) = x
- (x,y+1) = - (x,y) - 1
n=0, f() = 0, g(y,z) = 1
z(0) = 0
z(y+1) = 1
min(x,y) = x – (x – y)
max(x,y) = x + (y – x)
23
URM et récursion
•  Soient f(x1,..,xn) et g(x1,..,xn,y,z) des fonctions URM
calculables dont les programmes sont F et G.
On note m = max(n+2, ρ(f), ρ(g)).
•  On utilise les registres ainsi :
–  1 à m : registres de travail des programmes
–  m+1 à m+n : stockage des arguments x1,..,xn
–  m+n+1 : stockage de y
–  m+n+2 : stockage d’une valeur k variant de 0 à y
–  m+n+3 : h(x1,..,xn,k) avec k dans m+n+2
•  On va effectuer les calculs h(x1,..,xn,0) puis h(x1,..,xn,1)
puis h(x1,..,xn,2) puis … jusqu’à h(x1,..,xn,y).
T(1,m+1)
// x1
T(2,m+2)
// x2
…
T(n,m+n)
// xn
Z(n+1,m+n+1)
// y
Z(m+n+2)
// k=0 (inutile)
F[1,..,n → m+n+3]
// h(x1,..,xn,0)
// Rm+n+1 = y, Rm+n+2 = k, Rm+n+3 = h(x1,..,xn,k)
p: J(m+n+1,m+n+2,g)
// si y=k, aller en q
G[m+1,..,m+n,m+n+2,m+n+3 → m+n+3]
// Rm+n+1 = y, Rm+n+2 = k, Rm+n+3 = g(x1,..,xn,k,h(x1,..,xn,k)) = h(x1,..,xn,k+1)
S(m+n+2)
// k++
// Rm+n+1 = y, Rm+n+2 = k, Rm+n+3 = h(x1,..,xn,k)
J(1,1,p)
// aller en p
// Rm+n+1 = y = Rm+n+2 = k, Rm+n+3 = h(x1,..,xn,y)
T(m+n+3,1)
// R1= h(x1,..,xn,y)
Donc h est URM calculable si g et f le sont.
24
La définition par cas
On remarque qu’à l’aide des constructions précédentes, il est possible de mettre
en œuvre la définition par cas:
F(x) = f1(x) si M1(x), f2(x) si M2(x),…,fk(x) si Mk(x), g(x) sinon
En effet, si f1,…,fk,g sont calculables et si M1,…,Mk sont décidables, on peut
calculer F avec uniquement des opérations calculables:
hk+1(x) =
hk(x) =
…
hi(x) =
…
h1(x) =
F(x) =
g(x)
CMk(x) fk(x) + (1- CMk(x)) hk+1(x)
CMi(x) fi(x) + (1- CMi(x)) hi+1(x)
CM1(x) f1(x) + (1- CM1(x)) h2(x)
h1(x)
Les opérations logiques
•  Si P(x1,..,xn) et Q(x1,..,xn) sont des relations
décidables alors les relations suivantes le sont
aussi :
–  U(x1,..,xn)
–  V(x1,..,xn)
–  W(x1,..,xn)
≅
≅
≅
P(x1,..,xn) ∧ Q(x1,..,xn)
P(x1,..,xn) ∨ Q(x1,..,xn)
⎤ P(x1,..,xn)
•  En effet, les fonctions caractéristiques sont :
–  CU(x1,..,xn) =
–  CV(x1,..,xn) =
–  CW(x1,..,xn) =
CP(x1,..,xn) CQ(x1,..,xn)
max(CP(x1,..,xn),CQ(x1,..,xn))
1 - CP(x1,..,xn)
et sont calculables.
Cela se généralise à des fonctions à un nombre quelconque d’arguments.
25
Somme et produit bornés
•  Soit f(x1,..,xn,y) une fonction totale et calculable, la fonction Sf définie par
Sf(x1,..,xn ,y) = f(x1,..,xn,0) + f(x1,..,xn,1) + … + f(x1,..,xn,y)
est aussi calculable grâce à l’opération de « récursion » :
Sf(x1,..,xn ,0) = f(x1,..,xn,0)
Sf(x1,..,xn ,y+1) = Sf(x1,..,xn ,y) + f(x1,..,xn,y+1)
qui correspond à :
Sf(x1,..,xn ,0) = F(x1,..,xn)
Sf(x1,..,xn ,y+1) = G(x1,..,xn,y, Sf(x1,..,xn ,y))
avec F(x1,..,xn) = f(x1,..,xn,0) et G(x1,..,xn,y,z) = f(x1,..,xn,,y+1) + z qui sont
calculables. Sf est appelé la fonction somme bornée de f.
•  De même, le produit borné de f défini par :
Pf(x1,..,xn ,y) = f(x1,..,xn,0) . f(x1,..,xn,1) . … . f(x1,..,xn,y)
Somme et produit bornés
Soient f(x1,..,xn,y) et g(x1,..,xn, z1,..,zk) des fonctions
totales et calculables, les deux fonctions suivantes sont
aussi totales et calculables :
– Sf,g(x1,..,xn, z1,..,zk) = Sf(x1,..,xn, g(x1,..,xn, z1,..,zk))
– Pf,g(x1,..,xn, z1,..,zk) = Pf(x1,..,xn, g(x1,..,xn, z1,..,zk))
26
La minimalisation bornée
La minimalisation bornée
•  La minimalisation est une nouvelle opération
qui permet de construire de nouvelles fonctions
et qui vient s’ajouter aux opérations de
substitution et de récursion.
•  L’opérateur µz<y.P(z) désigne le plus petit z
strictement inférieur à y tel que P(z) soit
satisfait, ou bien y si un tel z n’existe pas.
µ est appelé opérateur de minimalisation
bornée.
•  Soit f(x1,..,xn,y) une fonction totale et calculable, la fonction g(x1,..,xn ,y)
définie par :
g(x1,..,xn ,y) = µz<y.(f(x1,..,xn,z) = 0)
est aussi une fonction totale et calculable.
•  On a vu z telle que z(0)=0 et z(y+1)=1, posons :
h(x1,..,xn,v) = z(f(x1,..,xn,0)) z(f(x1,..,xn,1)) … z(f(x1,..,xn,v))
Soient x1,..,xn,y et 1 ≤ r ≤ y tels que r = µz<y.(f(x1,..,xn,z) = 0), on a
h(x1,..,xn,0) = h(x1,..,xn,1) = … = h(x1,..,xn,r-1) = 1
h(x1,..,xn,r) = h(x1,..,xn,r+1) = … = h(x1,..,xn,y) = 0
et donc:
µz<y.(f(x1,..,xn,z) = 0) = h(x1,..,xn,0) + h(x1,..,xn,1) +…+ h(x1,..,xn,y)
27
La minimalisation bornée
La minimalisation bornée
Soient f(x1,..,xn,y) et g(x1,..,xn, z1,..,zk) des
fonctions totales et calculables, la fonctions
suivante est aussi totale et calculable :
Si R(x1,..,xn,y) est un prédicat décidable :
h(x1,..,xn, z1,..,zk) = µz< g(x1,..,xn, z1,..,zk)).f(x1,..,xn,y)
•  Q(x1,..,xn,y) ≅ ∀ z < y . R(x1,..,xn,z) est décidable
•  f(x1,..,xn,y) = µz<y. R(x1,..,xn,z) est calculable
•  E(x1,..,xn,y) ≅ ∃ z < y . R(x1,..,xn,z) est décidable
28
La minimalisation NON bornée
•  Soit f(x1,..,xn,y) une fonction totale et
calculable, la fonction g(x1,..,xn) définie par :
g(x1,..,xn) = µz.(f(x1,..,xn,z) = 0) si z existe
indéfini sinon
est aussi une fonction partielle et calculable.
La minimalisation NON bornée
•  On pose m = max(n,ρ(f)), le programme suivant
calcule la fonction g :
p:
q:
T(1,m+1)
…
T(n,m+n)
Z(m+n+1)
Z(1)
F[m+1,…,m+n,m+n+1 → 1]
J(1,m+n+2,q)
S(m+n+1)
J(1,1,p)
T(m+n+1,1)
29
Les relations
•  Si R(x1,..,xn,y) est une relation décidable, la
fonction g(x1,..,xn) = µz.R(x1,..,xn,z) est
effectivement calculable et partielle.
Remarque
•  La minimalisation permet de construire des
fonctions partielles à partir de fonctions totales:
Soit f(x,y) = abs(x –y.y) une fonction totale,
En effet:
g(x1,..,xn) = µz.(z(CR(x1,..,xn,z))=0)
on pose: g(x) = µz.(f(x,z)=0)
g est partielle.
30
Solution
Exercice
•  Soit Ack(x,y) la fonction définie par:
•  Ack(0,y) = y+1
•  Ack(x+1,0) = Ack(x,1)
•  Ack(x+1,y+1) = Ack(x,Ack(x+1,y))
•  Ack est la fonction d’Ackermann.
Montrer que Ack est calculable.
On remarque que le calcul de Ack(x,y) utilise le calcul d’autres valeurs
Ack(u,v) avec u<x ou bien u = x et v < y.
Un ensemble fini de triplets S est dit adéquat si et seulement si :
–  si (0,z,z) ∈ S alors z ≠0
–  si (x+1,0,z) ∈ S alors (x,1,z) ∈ S
–  si (x+1,y+1,z) ∈ S alors il existe u tel que (x+1,y,u) ∈ S et (x,u,z) ∈ S
Pour tous les entiers m et n, il existe un ensemble de triplets adéquat S tel
que (m,n,Ack(m,n)) ∈ S. Il suffit de prendre les triplets (x,y,Ack(x,y))
utilisés dans le calcul de Ack(m,n).
Codage de Gödel. Un triplet (x,y,z) peut être codé par 2x3y5z. Un
ensemble de nombres {u1,u2,…, un} peut être codé par le nombre
pu1.pu2…pun ou pi est le i-ième nombre premier. Un ensemble S de triplet
peut être codé comme l’ensemble des codes des triplets.
31
Si on note Sv un ensemble des triplets dont le code est v, on a:
(x,y,z) ∈ Sv ⇔ pu divise v avec u = 2x3y5z
On définit la relation R(x,y,v) par « ∃z / (x,y,z) ∈ Sv ».
R(x,y,v) est décidable et g(x,y) = µv.R(x,y,v) est calculable.
Donc:
Ack(x,y) = µz.(x,y,z) ∈ Sg(x,y)
est aussi calculable au sens des fonctions partielles récursives.
LA THESE DE CHURCH
•  Nous venons de voir deux définitions possibles
de la calculabilité :
–  Les machines URM
–  Les fonctions partielles récursives
•  Tout au long de la définition des FPR, nous
avons vérifiées qu’elles étaient URMcalculables.
32
LA THESE DE CHURCH
•  On note C la classe des fonctions partielles URM-calculables.
•  On note R les fonctions partielles récursives: le plus petit
ensemble de fonctions contenant les fonctions de base et fermé
pour les opérations de substitution, de récursion et de
minimalisation.
•  THEOREME : R=C. On a déjà vérifié R ⊆ C.
•  On note R0 l’ensemble défini comme la classe R sauf que l’on
restreint l’opérateur de minimalisation à l’obtention de fonctions
totales. C’est l’ensemble des fonctions µ–récursives ou encore
l’ensemble des fonctions générales récursives.
C⊆R
•  Soit P=I1,…,Is un programme URM calculant une
fonction f(x1,…,xn). On adopte:
–  on notera X pour x1,…,xn ;
–  on appelle pas de calcul, l’exécution d’une instruction de la
machine URM ;
–  c(X,t) désigne le contenu du registre R1 après t pas de calcul
de P(X) si P(X) n’est pas encore arrêté, le contenu final de R1
sinon ;
–  j(X,t) désigne le numéro de l’instruction à exécuter après t pas
de calcul de P(X) si P(X) n’est pas arrêté, 0 sinon.
33
C⊆R
•  c(X,t) et j(X,t) sont des fonctions totales.
•  Si f(X) est défini alors P(X) converge en t0 pas de calcul (t0
dépend de X) et l’on à:
–  t0 = µt.(j(X,t)=0)
–  f(X) = c(X,t0) = c(X, µt.(j(X,t)=0)
•  Si f(X) est indéfini, le calcul de µt.(j(X,t)=0) ne se termine
pas et l’on a f(X) = c(X, µt.(j(X,t)=0)
•  Donc: f(X) = c(X, µt.(j(X,t)=0)
Pour démontrer que f est une FPR, il suffit de démontrer que
c et j en sont. En fait, ont peut les définir sans utiliser la
minimalisation. Cela est compliqué et fait plus loin.
Les Machines de Turing
•  Une machine de Turing est compsoée d’une bande
infinie de cases, chacune pouvant contenir un symbole,
d’une fenêtre montrant l’une de ces cases et d’une
variable d’état.
s0
s1
s2
s3
s4
s5
etc.
Etatest
: qcapable de deux actions simples:
•  La machine
–  Remplacer le symbole visible dans la fenêtre
–  Déplacer la fenêtre d’un cran vers la gauche ou la droite.
–  Changer d’état.
34
Les machines de Turing
•  Un programme est défini par:
–  Un ensemble fini de symboles pouvant figurer dans les cases.
–  Un ensemble fini d’états possibles.
–  Une spécification composée de quadruplets des types suivants:
•  qi sj sk ql signifiant: si l’état est qi et le symbole visible est
sj, le remplacer par sk et se mettre dans l’état ql.
•  qi sj R ql signifiant: si l’état est qi et le symbole visible est
sj, déplacer la fenêtre vers la droite, se mettre dans l’état ql.
•  qi sj L ql signifiant: si l’état est qi et le symbole visible est
sj, déplacer la fenêtre vers la gauche, se mettre dans l’état ql.
– Pour une paire qi sj, il ne doit exister qu’un seul
quadruplet commençant par cette paire.
Les machines de Turing
•  Exécuter un programme sur une machine de
Turing, c’est:
–  Donner une bande initiale.
–  Donner la position initiale de la fenêtre.
–  Effectuer les transitions spécifiées par les
quadruplets jusqu’à ce qu’aucun quadruplet ne soit
applicable.
–  Le résultat est l’état final de la bande.
35
Exemple : l’addition de 2 entiers
La calculabilité de Turing
•  Un entier n est codé par une suite de n+1 symboles I.
Plusieurs entiers sont codés sur la bande séparés par des
symboles #. Exemple: (2,3) est codé par :
I
I
#
I
I
I
#
…
•  Une fonction sur les entiers est effectivement calculable
au sens de Turing s’il existe un programme de machine
de Turing qui permet de la calculer.
• 
• 
• 
• 
• 
• 
Symboles: 1 , #
Etats: q1, q2 , q3 , q4
Etat initial: q1
Bande initiale: codage de (x,y)
Bande finale: codage de x+y
Programme: q1 I R q1
q1 # I q2
q2 I R q2
q2 # L q3
q3 I # q4
36
Machines de Turing
•  One note TC l’ensemble des fonctions
calculables au sens de Turing.
•  THEOREME: TC = R = C.
Systèmes de Post & Markov
•  Plutôt que de calculer, Post & Markov ont
imaginé des systèmes générateurs de chaînes de
caractères éventuellement vides :
les systèmes de production.
37
Systèmes de Post & Markov
•  Un alphabet fini
•  Des mots sur cet alphabet
•  Des règles de production du type:
P(x+y)(x-y)Q → P(x2 – y2)Q
où P et Q désignent des chaînes arbitraires.
•  Un ensemble de mots appelés axiomes.
•  Les chaînes que l’on peut produire à partir des
axiomes sont appelées des théorèmes.
Systèmes de Post & Markov
•  Une fonction f est calculable au sens de Post et
Markov si pour tout X = (x1,…,xn) argument :
–  Si f(X) =y est défini, la chaîne de caractères
« f(X)=y » est un théorème.
–  Si f(X) est inféfini, aucune chaîne de caractères de
la forme « f(X)=y » avec y entier n’est un théorème.
38
Systèmes de Post & Markov
•  On note PM les fonctions effectivement
calculables au sens de Post et Markov.
•  THEOREME: PM = TC = R = C.
La thèse de CHURCH
•  Quelle que soit la notion de calculabilité que
l’on a mise en avant, on a toujours pu démontrer
qu’elle était équivalente ou incluse dans celle
définie par les fonctions partielles récursives de
Kleene.
•  Autrement dit, quel que soit le sens que l’on
donne à « effectivement calculable », une
fonction effectivement calculable est toujours
une fonction partielle récursive.
39
La thèse de CHURCH
•  D’où:
LES PRINCIPAUX RESULTATS
LA NOTION INTUITIVE ET INFORMELLE
DE CALCULABILITE EFFECTIVE
RECOUVRE EXACTEMENT CELLE DE
FONCTION PARTIELLE RECURSIVE.
(Thèse de CHURCH)
Notons une fois encore qu’on ne
s’intéresse qu’à la calculabilité
indépendamment des problèmes de
complexité…
40
Dénombrable & énumerable
Dénombrabilité effective
•  Un ensemble X est dénombrable s’il existe une
bijection de X vers N.
•  Un ensemble X est effectivement dénombrable
s’il existe une bijection effectivement calculable
de X dans N telle que sont inverse soit
également effectivement calculable.
•  Un ensemble X est énumérable s’il existe une
surjection g de N dans X. Si g est aussi
injective, c’est une énumération:
X = { g(0), g(1), ….}
41
Exemple
•  N×N est effectivement dénombrable :
π: N×N →N
π(m,n) = 2m (2n + 1) – 1
On note π1 et π2 les inverses.
Exemple
•  N×N×N est effectivement dénombrable :
ζ : N ×N ×N →N
ζ(m,n,p) = π(m,π(n,p))
On note ζ1, ζ2 et ζ3 les inverses.
42
Exemple
• U
k≥1N
k
est effectivement dénombrable.
τ(a1,…,ak) = 2a1 + 2a1+a2+1 + … + 2a1+…+ak+k-1 – 1
Théorème
•  L’ensemble des instructions d’une machine URM est
effevtivement dénombrable:
– 
– 
– 
– 
β(Z(n)) = 4 (n – 1)
β(S(n)) = 4 (n – 1) + 1
β(T(m,n)) = 4 π(m-1,n-1) + 2
β(J(m,n,p)) = 4 ζ(m-1,n-1,p-1) + 3
•  Pour calculer l’inverse β–1(n) :
–  si n = 4u + 0, l’instruction est Z(u+1)
–  si n = 4u + 1, l’instruction est S(u+1)
–  si n = 4u + 2, l’instruction est T(π1(u)+1, π2(u)+1)
–  si n = 4u + 3, l’instruction est J(ζ1(u)+1, ζ2(u)+1, ζ3(u)+1)
43
Théorème
•  L’ensemble des programmes URM est effectivement
dénombrable.
•  Soit P = (I1,…,Is) un programme URM, on pose:
γ(P) = τ(β(I1),…, β(Is))
•  γ est un codage de GODEL.
•  γ(P) est le code de GODEL de P.
•  Soit n un entier naturel, on note Pn le programme dont le
code de GODEL est n.
•  Si n≠m, Pn et Pm sont différents mais peuvent calculer la
même fonction.
Exemple
• 
On considère le programme suivante:
1.  T(1,3)
2.  S(4)
3.  Z(6)
• 
On a:
–  β(T(1,3)) = 4 π(0,2)+2 = 4 (20(2.2+1)-1)+2 = 18
–  β(S(4)) = 4.3 + 1 = 13
–  β(Z(6)) = 4.5 = 20
• 
Puis:
γ(P) = τ(β(T(1,3)), β(S(4)),β(Z(6))) = τ(18,13,20)
= 218 + 218+13+1 + 2 18+13+20+2 – 1 = 218 + 232 + 253 – 1
= 9 007 203 549 970 431
44
Exemple
• 
4127 = τ(5,6)
= 25 + 212 – 1
= 2a + 2a+b+1 – 1 avec a=5 et b=6
1.  a = 5 = 4.1 + 1 = β(S(2))
2.  b = 6 = 4.1 + 2 = 4 π(1,0) + 2 = β(T(2,1))
3.  Donc 4127 est le code de GODEL du programme:
–  S(2)
–  T(2,1)
Numérotation effective des
fonctions effectivement calculables
•  Thèse de CHURCH : toute fonction effectivement
calculable est calculée par un programme URM et que
tout programme URM calcule une fonction effectivement
calculable.
•  On peut donc se servir des codes de GODEL des
programmes URM pour numéroter les fonctions
effectivement calculables.
45
Numérotation effective des
fonctions effectivement calculables
•  Φa(n)
La fonction calculable n-aire calculée par Pa.
•  Φa
Exemple
• 
P4127 est le programme:
1.  S(2)
2.  T(2,1)
• 
• 
Si la configuration initiale est (x), le résultat est 1
Si la configuration initiale est (x,y,..), le résultat est y+1
La fonction Φa(1).
C’est une énumération avec REPETITION.
•  Φ4127(1)(x) = 1
•  Φ4127(n)(x1,x2,…,xn) = x2+1 si n≥2
46
Numérotation
•  Soit f une fonction unaire effectivement
calculable, il existe un programme URM P
permettant de la calculer. Si a = γ(P) alors
f = Φa.
•  On dit que a est un INDEX pour f.
•  Chaque fonction effectivement calculable a une
infinité d’index. En effet, il suffit de rajouter
T(1,1) à la fin de P pour obtenir un index
différent.
Théorème
•  Pour n ≥ 0, on note Cn l’ensemble des fonctions
effectivement calculables d’arité n.
•  Pour n ≥ 0, Cn est effectivement dénombrable. La
démonstration est difficile car il faut éviter les
répétitions (on peut choisir pour index unique le plus
petit des index de la fonction ?).
•  C l’ensemble de toutes les fonctions effectivement
calculables (union des Cn pour n ≥ 0) est
effectivement dénombrable (utilisation de τ).
47
Argument diagonal de Cantor
Théorème
•  Il existe des fonctions qui ne sont pas calculables.
•  On pose :
F(x) = Φx(x) +1 si Φx(x) est défini
0 sinon
La fonction F est différente Φn pour tout n donc elle ne
peut être calculable.
•  Ce type d’argument est appelé
ARGUMENT DIAGONAL de CANTOR.
•  L’ensemble des fonctions représenté par une matrice:
Φ0
Φ1
Φ2
0
Φ0(0)
Φ1(0)
Φ2(0)
1
Φ0(1)
Φ1(1)
Φ2(1)
2
Φ0(2)
Φ1(2)
Φ2(2)
3
Φ0(3)
Φ1(3)
Φ2(3)
…
…
…
…
…
…
…
…
…
…
•  Le principe est de s’arranger pour que F diffère de Φi
en i, c’est-à-dire sur la diagonale de la matrice.
48
Théorème s-m-n (forme simple)
• 
•  Soit f(x,y) une fonction effectivement calculable alors
il existe une fonction effectivement calculable k(x)
telle que :
f(x,y) = Φk(x)(y)
•  Autrement dit, si on fixe x on obtient une fonction
effectivement calculable et l’on sait calculer un index
pour cette fonction.
Soit F le programme URM qui calcule f, on construit le
programme suivant :
– 
– 
– 
– 
• 
T(1,2)
Z(1)
S(1),…,S(1) x fois
F
R2 := y
R1 := 0
R1 := x
R1 := f(x,y)
k(x) est le code de ce programme. Comme F est fixé, le
code de ce programme est effectivement calculable en
fonction de x.
•  Se rappeler de ce théorème au moment du cours sur la
curryfication des fonctions.
49
Le théorème s-m-n
•  Pour tout m ≥ 1 et tout n ≥ 1, il existe une fonction
totale effectivement calculable s-m-n d’arité m+1
telle que :
Φe(m+n)(x1,..,xn,y1,..,ym) = Φs-m-n(e,x1,..,xn)(n)(y1,..ym)
La fonction universelle
•  La fonction ΨU(x,y) définie par :
ΨU(x,y) = Φx(y)
est appelée la fonction UNIVERSELLE.
•  Connaissez-vous une fonction universelle ?
50
La fonction universelle
Théorème
•  Plus généralement, on considère la fonction
Pour n≥1, la fonction universelle
ΨU(n)(e,x1,..,xn) = Φe(n)(x1,..,xn)
ΨU(n)(e,x1,..,xn)
C’est la fonction universelle pour les fonctions
calculables d’arité n.
est effectivement calculable.
51
Démonstration informelle
•  Pour calculer ΨU(n)(e,x1,..,xn), agir comme suit:
–  décoder Pe ;
–  simuler l’exécution de Pe sur les données x1,..,xn ;
–  si le calcul s’arrête, le résultat est dans R1 ; sinon
c’est indéfini.
Démonstration formelle
• 
Une configuration (r1,…,rn) est codée par l’entier c = 2r13r25r3…
• 
Il existe une fonction effectivement calculable ρi telle que
ρi(c) = ri si i ≤ n, 0 sinon
• 
On représente l’ETAT d’un calcul par σ = π(j,c) où c est la configuration
courante et j le numéro de la prochaîne instruction à exécuter.
• 
On conviendra que l’ETAT final, s’il existe, est de la forme π(0,c) où c est
la configuration finale. Le résultat est ρ1(c).
•  Puis thèse de Church…
52
•  On convient de noter (x1,…,xn) par X et on définit les fonctions :
cn(e,X,t)
est la configuration après t pas d’exécution de Pe(X) ; la configuration finale si
l’exécution a duré moins de t pas ;
•  Pour calculer σn(e,X,t), nous allons utiliser la récursion.
Pour cela, il faut la valeur de σn(e,X,0)
et être capable d’exprimer σn(e,X,t+1) en fonction de σn(e,X,t).
jn(e,X,t)
est le numéro de l’instruction à exécuter après t pas d’exécution de Pe(X), 0 si
l’exécution a duré moins de t pas ;
•  On a σn(e,X,0) = π (1, 2x13x25x3…)
σn(e,X,t)
est l’état du calcul après t pas d’exécution de Pe(X), c’est-à-dire
π(cn(e,X,t) , jn(e,X,t))
•  On démontre que σn et donc cn et jn sont effectivement calculables.
Alors si Pe(X) s’arrête, il le fait en µt(jn(e,X,t) = 0) pas et la configuration
finale est cn(e,X, µt(jn(e,X,t) = 0)) et l’on a :
ΨU(n)(e,x1,..,xn) = ρ1(cn(e,X, µt(jn(e,X,t) = 0)))
•  Si j=0 alors σn(e,X,t+1) = σn(e,X,t) car l’exécution du programme est
terminée.
•  Sinon, on extrait l’instruction numéro j du programme Pe et on l’applique à
la configuration courante pour obtenir la nouvelle configuration et la
nouvelle opération à effectuer. Ce sont des opérations effectivement
calculables.
qui est aussi effectivement calculable.
53
Théorème de la forme normale de Kleene
Il existe une fonction totale calculable U(x) et
pour tout n un prédicat décidable Tn(e,X,z) tel que :
Φe(n)(X) est défini si et seulement si ∃z / Tn(e,X,z)
et
Φe(n)(X) = U(µz.Tn(e,X,z))
•  Tn(e,X,z) ≡ jn(e,X,π1(z))=0 ∧ ρ1(cn(e,X,π1(z)))= π2(z)
Autres résultats
Le problème
« Φx est-elle totale ? »
est indécidable.
•  Supposons que la fonction
g(x)=1 si Φx est totale, 0 sinon
soit calculable, alors la fonction suivante le serait :
f(x) = Φx(x)+1si g(x)=1, 0 sinon
car Φx(x) = ΨU(x,x) l’est.
Or, f est différente de toutes les fonctions calculables.
54
Autres résultats
Le problème
« Le calcul de Φx(y) se termine-t-il ? »
est indécidable.
•  Supposons que la fonction
g(x,y)=1 si Φx(y) est défini, 0 sinon
soit calculable, alors la fonction suivante le serait :
f(x) = Φx(x)+1si g(x,x)=1, 0 sinon
car Φx(x) = ΨU(x,x) l’est.
Or, f est différente de toutes les fonctions calculables.
CONCLUSIONS
•  Tous les résultats de la théorie de la
Calculabilité reposent sur la THESE DE
CHURCH que personne n’est arrivé à
démontrer ou à remettre en cause.
•  Par des méthodes triviales, elles arrive à
démontrer des résultats fondamentaux.
55
Téléchargement