Adloun

Ackermann : ce qui décroît quand rien ne décroît

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 9 — Ordres bien fondés et induction structurelle

Énoncé

Corrigé

1. Le troisième cas est celui qui résiste.


else ackermann (m - 1) (ackermann m (n - 1))

L'appel interne est ackermann m (n - 1) : n'a pas bougé. L'appel externe est ackermann (m - 1) v où est la valeur rendue par l'appel interne — et cette valeur est en général beaucoup plus grande que . Ni ni ne décroît donc à chaque appel, et aucun variant entier construit sur l'un ou l'autre ne peut fonctionner.

2. Le couple décroît pour l'ordre lexicographique sur , qui est bien fondé. Les trois appels :

AppelArgumentPourquoi il est plus petit
`ackermann (m-1) 1` : première composante
`ackermann m (n-1)` et : seconde
`ackermann (m-1) v`, quel que soit

La dernière ligne est le cœur de l'affaire : l'ordre lexicographique permet à la seconde composante d'exploser pourvu que la première baisse. C'est ce qu'aucun ordre produit ne permettrait — et sont incomparables pour le produit dès que .

3. Les formes closes, obtenues et vérifiées par le calcul :

Valeurs mesurées : ; ; et .

Le prix de la terminaison. Le nombre d'appels a été compté :

valeur
appels

et demande appels. La fonction termine pour tout couple — c'est démontré — et pourtant compte chiffres. Terminaison et faisabilité sont deux questions différentes, et l'ordre bien fondé ne répond qu'à la première.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.