Vous êtes sur la page 1sur 2

Langages formels, calculabilité et complexité

TD9

10 décembre 2015

Exercice 1 Quines
Pour chaque mot w ∈ Σ , soit M w une machine de Turing sur Σ qui écrit le mot w sur le ruban. Pour deux

machines de Turing A et B sur Σ, soit A · B une machine de Turing sur Σ qui exécute machine B après avoir
exécuté machine A .
1. Expliquer pourquoi la fonction q : N → N,
(
〈 Mw 〉 si n = 〈w〉 avec w ∈ Σ∗
q ( n) =
⊥ sinon

est récursive.
2. Expliquer pourquoi la fonction s 2 : N2 → N,
(
〈 A · B〉 si m = 〈 A 〉 et n = 〈B〉
s 2 ( m, n) =
⊥ sinon

est récursive.
3. Montrer qu’il existe une machine de Turing M qui écrit 〈 M 〉 sur le ruban.
Exercice 2 Fonctions récursives primitives
Montrer que les fonctions suivantes sont récursives primitives.
1. carré( n)
¥p ¦
2. x 7→ x
3. pndiv( p, n), le nombre de diviseurs de n inférieurs ou égaux à p
4. ndiv( n), le nombre de diviseurs de n
5. Premier( n), retourne 1 si n est premier, 0 sinon
6. la suite de Fibonacci
7. Les fonctions polynomiales
8. La sommation de fonctions récursives primitives.
Exercice 3 Fonction d’Ackermann
Le but de cet exercice est de montrer que la fonction d’Ackermann est récursive mais non récursive primi-
tive. La fonction d’Akermann est la fonction A de N2 → N définie par :

N + 1
 pour M = 0,
A ( M, N ) = A ( M − 1, 1) pour M ≥ 1 et N = 0,

A ( M − 1, A ( M, N − 1)) pour M, N ≥ 1.

1. Montrer que la fonction d’Akermann est récursive.

1
2. Montrer que pour tout M, N, K :
1. M + N < A ( M, N )
2. A ( M, N ) < A ( M, N + 1)
3. A ( M, N + K ) ≤ A ( M + K, N )
3. Montrer que pour tout entier N , la fonction (λ M )( A ( M, N )) est strictement croissante.
4. Montrer que :
1. Pour tous entiers M1 , M2 , il existe un entier M vérifiant pour tout N , A ( M1 , A ( M2 , N )) ≤ A ( M, N ).
Pp
2. Pour tous entiers M1 , · · · , M p , il existe un entier M vérifiant pour tout N , i=1 A ( M i , N ) ≤ A ( M, N ).
5. Montrer que la fonction d’Akermann n’est pas primitive récursive.

Vous aimerez peut-être aussi