Corrigé du devoir surveillé du 7 juin 2016
Exercice 1 a) On peut répondre que les machines de Turing et les machines à registres sont des machines
totalement différentes, des modèles du calcul différents ; et par conséquent calculer sur machine de Turing
est assez différent de calculer sur machine à registres.
En revanche, les deux notions évoquées concernent les mêmes fonctions, i.e. pour une fonction donnée, il
est équivalent d’être calculable par MdT ou calculable par MàR.
b) Il existe une multitude de sous-ensembles de IN qui ne sont pas décidables par MdT, pour des raisons
de cardinalité (voir le cours, chapitre 6).
c) De même, il existe des multitudes de fonctions non calculables par machines à registres (question de
cardinalité, cours, chapitre 6).
d) Voir le cours, chapitre 8.
e) La fonction d’Ackermann a les propriétés requises (cours, chapitre 8).
f) Non, toutes les fonctions calculables par machine de Turing sont récursives (chapitre 8).
g) Voir chapitre 10.
Exercice 2 a) Il faut regarder l’énoncé, la fonction fne s’annule pas lorsque b= 0 et b= 1.
La fonction fs’annule pour le couple (a, b)lorsque b>2et aest multiple de b.
De plus, il faut observer que fest définie partout.
Donc, pour un a∈IN,f(a, b)ne s’annule pas lorsque b= 0 et b= 1 mais elle est définie. On peut donc
continuer à chercher le plus petit b > 1qui fait s’annuler f(a, b).
Il s’agit donc de considérer des valeurs plus grandes que 2 pour b. Et donc le critère d’annulation de fest
le fait que best un diviseur de aou pas. On cherche donc le plus petit diviseur non trivial de a.
Pour a= 0, on a f(a, 2) = 0 et donc g(0) = 2.
Pour a= 1, on a f(a, b) = 1 pour tout b∈IN, et donc
gn’est pas définie pour a= 1 (1 n’a pas de diviseur non
trivial).
Pour a>2,g(a)est simplement le plus petit diviseur
non trivial de a. Donc g(2) = g(4) = g(6) = g(8) = 2,
g(3) = g(9) = 3,g(5) = 5 et g(7) = 7.
Valeurs prises par fet valeur de gen conséquence
a\b0 1 2 3 4 5 6 7 g(a)
0 1 1 0 2
1 1 1 1 1 1 1 1 1 pas défini
2 1 1 0 2
3 1 1 2 0 3
4 1 1 0 2
5 1 1 2 3 4 0 5
6 1 1 0 2
7 1 1 2 3 4 5 6 0 7
8 1 1 0 2
9 1 1 2 0 3
b) La fonction fest récursive (car, par exemple, elle est calculable). Comme la fonction gest obtenue par
minimisation à partir d’une fonction récursive, elle est récursive.
Mais comme elle n’est pas définie partout, elle ne peut être récursive primitive. (Cela signifie qu’on ne peut
pas obtenir gà partir des fonctions initiales sans utiliser la minimisation.).
Exercice 3 On peut résoudre cet exercice en regardant revenant aux définitions ou en se référant aux
thééorèmes du cours.
•Première version. D’après l’énoncé, on a deux algorithmes Aet Bqui calculent les fonctions fet g.
Puisque fest définie sur Xet gest définie sur X, on a, pour tout entier a:
– soit a∈Xet alors As’arrête pour l’entrée a,Bne s’arrête pas pour l’entrée a,
– soit a /∈Xet alors Bs’arrête pour l’entrée a,Ane s’arrête pas pour l’entrée a.
On construit alors l’algorithme Cqui consiste, pour une entrée a∈IN, à exécuter alternativement un pas
du calcul de Apour l’entrée aet un pas du calcul de Bpour l’entrée a. Que asoit dans Xou dans X, un
et un seul de ces deux calculs se termine. Si c’est le calcul de Al’entrée aqui se termine, alors l’algorithme
Cdonne la réponse 1, si c’est le calcul de Bpour l’entrée aqui se termine alors l’agorithme Cdonne la
réponse 0. De telle sorte que Cs’arrête toujours pour l’entrée aet donne la réponse 1 si a∈Xet la réponse
0 si a /∈X. Donc l’algorithme Cdécide X.