Fonction constructibleEn théorie de la complexité, une fonction constructible en temps est une fonction f des entiers naturels vers les entiers naturels, avec la propriété que f(n) peut être calculée à partir de n par une machine de Turing qui se termine en un temps du même ordre de grandeur que f(n). Le but de cette définition est d'exclure les fonctions qui n'apportent pas de borne supérieure sur le temps d'exécution. Une définition similaire pour la complexité en espace existe et introduit la notion de fonction constructible en espace. Définitions des fonctions constructibles en tempsIl y a deux définitions de fonction constructible en temps :
Il y a également une notion de fonction totalement constructible en temps. Une fonction f est totalement constructible en temps s'il existe une machine de Turing M qui prend en entrée un mot 1n constitué de n uns et s'arrête après exactement f(n) étapes. Cette définition est moins générale que les deux premières définitions. Cependant, les trois définitions peuvent être utilisées indifféremment pour la plupart des applications. Définitions des fonctions constructibles en espaceSimilairement, il y a deux définitions de fonction constructible en espace :
De plus, une fonction f est totalement constructible en espace s'il existe une machine de Turing M qui prend en entrée un mot 1n constitué de n uns et s'arrête après avoir utilisé exactement f(n) cases du ruban. ExemplesToutes les fonctions usuelles f(n) (par exemple n, nk, 2n) sont constructibles en temps et en espace à condition que f(n) soit supérieure à cn pour une certaine constante c > 0[1]. Aucune fonction non constante et o(n) ne peut être constructible en temps puisqu'il n'y a pas assez de temps pour lire l'entrée. Cependant, log(n) est une fonction constructible en espace. Propriétés
ApplicationsLes fonctions constructibles en temps sont utilisées dans certains théorèmes de la théorie de la complexité, tels que le théorème de hiérarchie en temps déterministe[1]. Elles sont importantes puisque le théorème de la hiérarchie en temps repose sur des machines de Turing qui doivent déterminer en temps O(f(n)) si un algorithme a utilisé plus de f(n) étapes. Ceci serait impossible si l'on ne pouvait pas calculer f(n) en temps O(f(n)). Similairement, les fonctions constructibles en espaces sont utilisées dans le théorème de hiérarchie en espace (en). On les trouve aussi dans le théorème de la lacune (en) (gap theorem)[1]. Construction de fonction et logique constructiveEn logique constructive une fonction est constructible s'il est existe une démonstration constructive de la valeur cible à partir de la valeur origine. Dans ce domaine, on s'intéresse plus à la construction de la fonction dans une logique où on ne fait pas appel à l'infini ou au tiers exclus qu'à sa complexité. Il s'agit donc d'un domaine assez différent de celui présenté plus haut, puisque le problème de la possibilité de « construire » une fonction est essentiel et l'emporte sur celui de la complexité. Notes et références
Bibliographie
|