Fonction calculable
Les fonctions calculables (ou les fonctions Turing-calculables ) sont les objets de base de l'étude dans la théorie de computability de . Elles font précis la notion intuitive de l'algorithme . Des fonctions calculables peuvent être employées pour discuter le computability sans se rapporter à n'importe quel modèle concret de du calcul tel que les machines de Turing de ou les machines de registre de leur définition, cependant, doivent faire la référence à un certain modèle spécifique de calcul.
Avant la définition précise des mathématiciens de fonction calculable employés souvent le sans cérémonie effectivement calculable de limite. Cette limite a depuis lors venu pour être identifiée avec les fonctions calculables. Noter que le computability efficace de ces fonctions n'implique pas qu'elles peuvent être le efficacement calculées (c. calculé dans un nombre de heures raisonnable). En fait, parce que quelques fonctions effectivement calculables il peut montrer que n'importe quel algorithme qui les calcule sera très inefficace dans le sens que le temps de fonctionnement de l'algorithme augmente le exponentiellement (ou même le Superexponentially ) avec la longueur de l'entrée. Les champs du computability faisable et de la complexité informatique étudient les fonctions qui peuvent être calculées efficacement.
Selon la thèse d'Église-Turing de , les fonctions calculables sont exactement les fonctions qui peuvent être calculées using un dispositif de calcul mécanique donné les nombres de heures et l'espace mémoire illimités. D'une manière equivalente, cette thèse déclare que n'importe quelle fonction qui a un algorithme est calculable.
Les axiomes de Blum de peuvent être employés pour définir une théorie de complexité informatique abstraite sur l'ensemble de fonctions calculables. Dans la théorie de complexité informatique, le problème de déterminer la complexité d'une fonction calculable est connu comme problème de fonction de .
Définition
Il y a beaucoup de manières équivalentes de définir la classe des fonctions calculables. Pour le concreteness, le reste de cet article supposera que les fonctions calculables ont été définies en tant que ces fonctions partielles de Finitary sur les nombres normaux qui peuvent être calculés par une machine de Turing de . Il y a beaucoup de modèles équivalents de calcul qui définissent la même classe des fonctions calculables. Ces modèles de du calcul incluent le
le Turing de usine le de
fonctions MU-récursives de de
calcul du lambda de
Le poteau de usine (le Poteau-Turing de de usine le de et le des machines d'étiquette de de ).
le registre de de usine et d'autres.
Chaque fonction calculable prend un nombre fixe de nombres normaux comme arguments. Puisque les fonctions sont partielles, elles ne peuvent être définies pour chaque choix possible d'entrée. Si une fonction calculable est définie alors elle renvoie un nombre normal simple comme rendement (ce rendement peut être interprété comme liste de nombres using une fonction d'appareillement ). Ces fonctions s'appellent également le les fonctions récurrentes partielles . Dans la théorie de computability, le domaine de de d'une fonction est pris pour être l'ensemble de toutes les entrées pour lesquelles la fonction est définie.
Une fonction qui est définie pour tous les arguments s'appelle le total de de . Si une fonction calculable est totale, ce s'appelle une fonction calculable de total de ou la fonction récurrente totale .
Notation indique que le de fonction est défini sur les arguments , et notation indique que est défini sur les arguments et la valeur retournée est .
Caractéristiques des fonctions calculables
voient également :
l'algorithme
La caractéristique de base d'une fonction calculable est qu'il doit y a un procédé fini (un algorithme ) indiquant comment calculer la fonction. Les modèles du calcul ont énuméré donnent ci-dessus différentes interprétations de quel procédé est et comment il est employé, mais ces interprétations partagent beaucoup de propriétés. Le fait que ces modèles donnent les classes équivalentes des fonctions calculables provient du fait que chaque modèle est capable de la lecture et d'imiter un procédé pour l'un des d'autres modèles, beaucoup car un compilateur peut lire des instructions dans un langage de programmation et émettre des instructions dans une autre langue.
Enderton donne les caractéristiques suivantes d'une procédure pour calculer une fonction calculable ; des caractérisations semblables ont été données par Turing, Rogers, et d'autres.
« Il doit y avoir des instructions exactes (c. un programme), finies dans la longueur, pour le procédé. » Ainsi chaque fonction calculable doit avoir un programme fini qui décrit complètement comment la fonction doit être calculée. Il est possible de calculer la fonction par juste suivant les instructions ; aucune estimation ou perspicacité spéciale n'est exigée.
« Si le procédé est donné un k - le de tuple X dans le domaine du f , puis après un nombre fini d'étapes discrètes le procédé doit terminer et produire le f ( X ) . » Intuitivement, le procédé se poursuit point par point, par une règle spécifique pour couvrir quoi faire à chaque étape du calcul. Seulement de façon finie beaucoup d'étapes peuvent être effectuées avant que la valeur de la fonction soit retournée.
« Si le procédé est donné un k - le X de tuple qui n'est pas dans le domaine du f , puis du procédé pourrait continuer pour toujours, ne s'arrêtant jamais. Ou il pourrait devenir stuck à un certain point, mais il ne doit pas feindre pour produire une valeur pour le f au X . » Ainsi si une valeur pour le f ( X ) est jamais trouvée, ce doit être la valeur correcte. Il n'est pas que l'agent de calcul distingue des résultats corrects de les incorrects parce que le procédé est toujours correct quand il produit des résultats.
Enderton continue pour énumérer plusieurs clarifications de ces exigences du procédé pour une fonction calculable :
Le procédé doit théoriquement fonctionner pour des arguments arbitrairement grands. On ne le suppose pas que les arguments sont plus petits que le nombre d'atomes dans la terre, par exemple.
Le procédé est exigé pour s'arrêter après que de façon finie beaucoup d'étapes afin de produire un résultat, mais lui puissent prendre arbitrairement beaucoup de mesures avant l'arrêt. Aucune péremption n'est assumée.
Bien que le procédé puisse employer seulement une quantité finie d'espace mémoire pendant un calcul réussi, il n'y a aucune limite sur la place qui est employé. On le suppose que l'espace mémoire additionnel peut être donné au procédé toutes les fois que le procédé demande lui.
Le champ des fonctions d'études de la complexité informatique avec les limites prescribed sur le temps et/ou l'espace a permis dans un calcul réussi.
Ensembles et relations calculables
Un A d'ensemble des nombres normaux s'appelle le calculable (synonymes : récursif, que l'on peut décider) s'il y a un f de fonction calculable tels que pour chaque n , si le n est dans le A et le si le n n'est pas dans le A .
Un ensemble de nombres normaux s'appelle le computably enumerable (synonymes : périodiquement enumerable, semidecidable) s'il y a un f de fonction calculable tels que pour chaque n , le f de nombre (n) est défini si et seulement si le n de est dans l'ensemble. Ainsi un ensemble est computably enumerable si et seulement si c'est le domaine d'une certaine fonction calculable. Le enumerable de mot est employé parce que ce qui suit est équivalent pour un non vide B de sous-ensemble des nombres normaux :
Le B est le domaine d'une fonction calculable.
Le B est la gamme d'une fonction calculable totale. Si le B est infini puis on peut assumer que la fonction est le injectif. Si un B d'ensemble est la gamme d'un f de fonction puis la fonction peut être regardée en tant que énumération du B , parce que le f (0) , f de liste (1) ,… inclura chaque élément du B .
Puisque chaque relation de Finitary de sur les nombres normaux peut être identifiée avec un ensemble correspondant d'ordres finis des nombres normaux, les notions de la relation calculable et de la relation computably enumerable peuvent être définies de leurs analogues pour des ensembles.
Langages formels
voient également :
Dans la théorie de computability de dans de l'informatique, il est commun pour considérer le les langages formels qu'un alphabet est un ensemble arbitraire. Un mot sur un alphabet est un ordre fini des symboles de l'alphabet ; le même symbole peut être employé plus d'une fois. Par exemple, les cordes binaires sont exactement les mots sur le