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 f 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 f (x_1, \ ldots, x_k) \ downarrow indique que le partiel f de fonction est défini sur les arguments x_1, \ ldots, x_k, et notation f (x_1, \ ldots,) de x_k \ downarrow = y indique que f est défini sur les arguments x_1, \ ldots, x_k et la valeur retournée est y.

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 , f de nombre (n) \ downarrow = 1 si le n est dans le A et le f (n) \ downarrow = 0 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 :

du langage formel

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 d'alphabet \ {0. Une langue est un sous-ensemble de la collection de tous les mots sur un alphabet fixe. Par exemple, la collection de toutes les cordes de binaire qui contiennent exactement 3 ceux est une langue au-dessus de l'alphabet binaire.

Une propriété principale d'un langage formel est le niveau de la difficulté exigé de décider si un mot donné est dans la langue. Un certain système de codage doit être développé pour permettre à une fonction calculable de prendre un mot arbitraire dans la langue comme entrée ; ceci est habituellement considéré courant. Une langue s'appelle le calculable (synonymes : récursif, que l'on peut décider) s'il y a une fonction calculable f tels que pour chaque du mot W au-dessus de l'alphabet, f (w) \ downarrow = 1 si le mot est dans la langue et le f (w) \ downarrow = 0 si le mot n'est pas dans la langue. Ainsi une langue est calculable juste dans le cas il y a un procédé qui peut dire correctement si les mots arbitraires sont dans la langue.

Une langue est le computably enumerable (synonymes : périodiquement enumerable, semidecidable) s'il y a un de la fonction calculable f tels que f (w) est défini si et seulement si le du mot W est dans la langue. Le enumerable de la limite a la même étymologie que dans les ensembles computably enumerable de nombres normaux.

Exemples

Les fonctions suivantes sont calculables :

chaque f de la fonction constante : N , f ( n 1 du k → de du N ,… k de du n ) : = n
f de l'addition : N , f ( 2
de de n 1 de → de ² du N , de n ) : = n 1 + n 2

la fonction qui donne la liste de facteurs principaux d'un nombre.

le plus grand diviseur commun de deux nombres est une fonction calculable.
l'identité , une équation diophantine de Bézout de linéaire

Si le f et le g sont calculable, alors être ainsi : f + g , f * g , f \ circ g si le f est unaire, maximum ( f , g ), minute ( f , g ), et beaucoup plus de combinaisons.

L'exemple suivant illustre qu'une fonction peut être calculable cependant il n'est pas connue quel algorithme le calcule.

le f de fonction tels que f (n) = 1 s'il y a un ordre des fives consécutifs du n dans l'expansion décimale du π, et le f (n) = 0 autrement, est calculable. Le f de fonction est l'un ou l'autre la fonction de la constante 1, qui est calculable, ou bien il y a un k tels que le f (n) = 1 si N < k et f (n) = 0 si ≤ n de k. Chaque une telle fonction est calculable. On ne le connaît pas s'il y a arbitrairement de longues séries de fives dans l'expansion décimale du π, ainsi nous ne connaissons pas le que de ces fonctions est le f . Néanmoins, nous savons que le f de fonction doit être calculable.

Thèse d'Église-Turing

voient également :

la thèse d'Église-Turing de

La thèse d'Église-Turing de déclare que n'importe quelle fonction calculable d'un procédé possédant les trois propriétés énumérées ci-dessus est une fonction calculable. Puisque ces trois propriétés ne sont pas formellement énoncées, la thèse d'Église-Turing ne peut pas être prouvée. Les faits suivants sont souvent pris comme évidence pour la thèse :
Beaucoup de modèles équivalents de calcul sont connus, et ils tous donnent la même définition de la fonction calculable (ou d'une version plus faible, parfois).
On n'a proposé aucun modèle plus fort du calcul qui est généralement considéré effectivement calculable.

La thèse d'Église-Turing est parfois employée dans les preuves pour justifier qu'une fonction particulière est calculable en donnant une description concrète d'un procédé pour le calcul. Ceci est autorisé parce qu'on le croit que toutes telles utilisations de la thèse peuvent être enlevées par le processus pénible d'écrire un procédé formel pour la fonction dans un certain modèle de calcul.

Fonctions d'Uncomputable et problèmes insolubles

voient également : Liste undecidable des problèmes

Puisque chaque fonction calculable a un procédé fini indiquer comment le calculer, il y a seulement comptable beaucoup de fonctions calculables. Il y a uncountably beaucoup de fonctions finitary sur les nombres normaux, tellement la plupart des telles fonctions ne sont pas calculable. La fonction occupée du castor est un exemple concret d'une telle fonction.

De même, la plupart des sous-ensembles des nombres normaux ne sont pas calculables. Le problème d'arrêt était le premier un tel ensemble à construire. Le Entscheidungsproblem , proposé par le David Hilbert , a demandé s'il y a un procédé efficace pour déterminer quels rapports mathématiques (codés en tant que nombres normaux) être vrai. Turing et église ont indépendamment prouvé que cet ensemble de nombres normaux n'est pas calculable dans les années 30. Selon la thèse d'Église-Turing, il n'y a aucun procédé efficace (avec un algorithme) qui peut exécuter ces calculs.

Prolongements de computability

La notion du computability d'une fonction peut être relativized par à un arbitraire réglé du A des nombres normaux , ou d'une manière equivalente à un arbitraire de fonction f des produits naturels aux produits naturels, en employant les machines de Turing de (ou tout autre modèle de calcul) prolongé par un oracle pour le A ou le f . De telles fonctions peuvent s'appeler le Un-calculable de ou le f-calculable de respectivement.

Bien que la thèse d'Église-Turing déclare que les fonctions calculables incluent toutes les fonctions avec des algorithmes, il est possible de considérer de plus grandes catégories de fonctions qui détendent les conditions que les algorithmes doivent posséder. Le champ du Hypercomputation étudie une notion de computability dans laquelle il est possible d'exécuter infiniment beaucoup d'étapes avant de produire une réponse réussie. La théorie de Hyperarithmetical de étudie une prolongation différente de computability standard. Des théories bien plus générales de récursion ont été étudiées, comme la théorie d'E-récursion de dans laquelle réglé peut être employé comme argument à une fonction E-récursive.

Voir également


nombre calculable
Théorie de du calcul
Théorie de récursion de
Degré de Turing de
Hiérarchie arithmétique

.

Random links:Spectroscopie mécanique dynamique | Bombe de cobalt | Axel Setterberg de Karl | Parti Democratic de l'Arménie | Romek Strzałkowski | Función_computable