Fonction récursive
En informatique et en mathématiques, le terme fonction récursive désigne une classe de fonctions calculables, autrement dit de fonctions dont les valeurs peuvent être calculées à partir de leurs paramètres par un processus mécanique fini. En fait, cela fait référence à deux concepts liés, mais distincts. En théorie de la calculabilité, la classe des fonctions récursives est une classe plus générale que celle des fonctions récursives primitives. En informatique, les fonctions récursives sont des fonctions dont le calcul nécessite d'invoquer la fonction elle-même, c'est-à-dire que dans ce deuxième cas, on insiste plutôt sur la façon dont le calcul est mis en œuvre que sur la classe de fonctions.
Logique mathématique (calculabilité)
Fonction récursive
En théorie de la calculabilité, une fonction récursive est une fonction à un ou plusieurs arguments entiers, qui peut se calculer en tout point par une procédure mécanique[1]. Il est plus cohérent de définir les fonctions partielles récursives, qui sont aussi des fonctions partiellement récursives, avant les fonctions récursives. Formellement, une fonction récursive est alors une fonction partielle récursive définie en tout point. On trouve de plus en plus souvent le terme de fonction calculable pour désigner une fonction récursive, qui est le terme historique. Mais ce dernier est encore très utilisé. Il y a plusieurs définitions équivalentes de fonctions calculables, l'une d'elles étant que ce sont les fonctions calculées par une machine de Turing (ces fonctions sont a priori partielles) dont le calcul termine pour toute entrée.
Historiquement, on a d'abord introduit dans les années 1920 la classe des fonctions récursives primitives, dont on s'est rapidement rendu compte qu'elle ne capturait pas toutes les fonctions calculables (en un sens encore intuitif). Le schéma de définition par récurrence utilisé pour définir ces fonctions est bien récursif au premier sens du terme : une fonction est définie en fonction d'elle-même.
Jacques Herbrand décrivit, dans une lettre adressée à Kurt Gödel en 1931, un modèle de calcul des systèmes d'équations avec un mécanisme d'évaluation symbolique « par valeur », comme on dirait maintenant. Ce modèle fut précisé par Gödel lors d'exposés à Princeton en 1934. Les fonctions ainsi calculées furent appelées fonctions récursives générales. Les systèmes d'équations de Herbrand-Gödel utilisent de façon libre des appels récursifs de fonction au premier sens de ce terme. L'équivalence démontrée, par Stephen Cole Kleene, de cette définition avec celle des fonctions λ-calculables et des fonctions calculables par machine de Turing fournit des arguments pour la thèse de Church-Turing, qui énonce que ces modèles capturent effectivement la notion intuitive de fonction calculable.
On utilise parfois plus spécifiquement le terme de fonctions récursives pour les fonctions récursives au sens de Kleene, ou fonction μ-récursives, l'une des définitions possibles de fonctions calculables, introduite par Kleene en 1936 qui laisse le calcul implicite. Cette définition généralise celle des fonctions récursives primitives.
Enfin, le théorème du point fixe de Kleene est lié à son théorème de récursion, qui permet entre autres de justifier l'utilisation des définitions récursives de fonctions (au sens premier de ce terme).
Ensemble récursif
De façon cohérente avec la définition précédente, un ensemble récursif est un ensemble d'entiers naturels ou de n-uplets d'entiers naturels dont la fonction caractéristique est récursive. Cela signifie que l'on peut décider mécaniquement de l'appartenance ou non à cet ensemble. On dira également ensemble décidable, le problème de décision de l'appartenance ou non d'un entier, ou n-uplet d'entiers, à cet ensemble étant décidable. Un ensemble récursivement énumérable est un ensemble qui est l'ensemble de définition, ou de façon équivalente (à l'ensemble vide près), l'ensemble image, d'une fonction récursive partielle. L'équivalence se démontre en faisant intervenir le calcul de la fonction.
Via des codages à la Gödel, on peut généraliser ces notions aux langages formels. On parle par exemple de langage récursif ou décidable. En logique mathématique, une théorie récursive, ou théorie décidable est une théorie dont l'ensemble des théorèmes est récursif. Une théorie récursivement axiomatisable est une théorie pour laquelle on peut trouver un ensemble d'axiomes récursif, ou de façon équivalente, dont l'ensemble des théorèmes est récursivement énumérable.
Logique informatique (programmation)
Du point de vue de la programmation, une fonction récursive est une fonction, au sens informatique de ce terme, qui s'appelle elle-même dans sa définition ; on parle également de définition récursive ou d'appel récursif de fonction.
Notes et références
- Depuis l'avènement de l'informatique, on dirait un programme.
Bibliographie
- Introduction à la calculabilité, Pierre Wolper Chapitres 5 et 6, 3ème édition.
- (en) Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem : Proceedings of the London Mathematical Society, London Mathematical Society, (DOI 10.1112/PLMS/S2-42.1.230, lire en ligne) et « [idem] : A Correction », Proc. London Math. Soc., 2e série, vol. 43, , p. 544-546 (DOI 10.1112/plms/s2-43.6.544, lire en ligne)
Voir aussi
Articles connexes
- Effet de bord
- Fonction déterministe
- Fonction récursive primitive
- Fonction d'Ackermann
- Fonction de Sudan
- Fonction pure
- Idempotence
- Transparence référentielle
- Réentrance
- Thread safety
- Algorithme récursif
- Portail de la logique
- Portail de l'informatique théorique