Je sais qu'il existe une machine de Turing, si une fonction est calculable. Ensuite, comment montrer que la fonction n’est pas calculable ou qu’il n’ya pas de machine de Turing pour cela. Y a-t-il quelque chose comme un lemme de pompage?
Je sais qu'il existe une machine de Turing, si une fonction est calculable. Ensuite, comment montrer que la fonction n’est pas calculable ou qu’il n’ya pas de machine de Turing pour cela. Y a-t-il quelque chose comme un lemme de pompage?
Réponses:
Avant de répondre à votre question générale, permettez-moi de revenir un peu en arrière, de décrire l'historique et de répondre à une question préliminaire: existe-t-il même des fonctions non calculables?
[note de notation: nous pouvons relier toute fonction à un langage , puis discuter de la décidabilité de plutôt que de la calculabilité de ]
Il existe certaines langues qu'aucune machine de Turing ne peut décider. L'argument est simple: il n'y a "que" beaucoup différents TM, mais un nombre indénombrable langues différentes. Ainsi, il existe au plus langues décidables, et les autres (infiniment nombreuses) sont indécidables. Lectures complémentaires:
Afin de mettre la main sur un langage indécidable spécifique, l'idée est d'utiliser une technique nommée diagonalisation (Georg Cantor, 1873) , qui était à l' origine utilisé pour montrer qu'il ya un nombre plus réel que des entiers, autrement dit, que .
L'idée de construire le premier langage indécidable est simple: nous répertorions toutes les machines de Turing (ce qui est possible car elles sont récurrentes et peuvent être énumérées!), Et créons un langage qui ne correspond pas à chaque MT sur au moins une entrée.
Dans ce qui précède, chaque ligne correspond à une MT et chaque colonne à une entrée. La valeur de la cellule est 0 si la MT rejette ou ne s’arrête jamais et 1 si la TM accepte cette entrée. Nous définissons la langue comme telle que D contient la i- ième entrée si et seulement si la i- ième TM n’accepte pas cette entrée.
Suivant le tableau ci-dessus, puisque M 1 accepte ε . De même, 0 ∉ D , mais 1 ∈ D puisque M 3 n'accepte pas 1 .
Supposons maintenant que décide de D et regarde la ligne k du tableau: s’il y a 1 dans la k- ième colonne, alors M k accepte cette entrée mais ce n’est pas dans D , et s’il existe un 0 , l’entrée est en D mais M k ne l’accepte pas. Par conséquent, M k ne décide pas D et nous sommes parvenus à la contradiction.
Maintenant pour votre question. Il y a plusieurs façons de prouver qu'une langue est indécidable. Je vais essayer de toucher les plus communs.
La première méthode consiste à montrer directement qu'une langue est indécidable, en indiquant qu'aucune MT ne peut en décider. Ceci suit habituellement la méthode de diagonalisation indiquée ci-dessus.
Exemple.
Montrer que le (complément) langue diagonale est indécidable.
Preuve.
On suppose est décidable, et que M D soit son decider. Il y a deux cas:
Parfois, nous pouvons utiliser des propriétés de fermeture pour montrer qu'une langue n'est pas décidable, basée sur d'autres langues que nous savons déjà ne pas être décidables.
Plus précisément, si n'est pas décidable (nous écrivons L ∉ R ), alors son complément ¯ L est indécidable: s'il existe un décideur M pour ¯ L, nous pourrions simplement l'utiliser pour décider de L en acceptant chaque fois que M rejette et inversement. Puisque M s'arrête toujours avec une réponse (c'est un décideur), on peut toujours inverser sa réponse.
Conclusion: La langue diagonale est indécidable, L D ∉ R .
Un argument similaire peut être appliqué en notant que si et son complément ¯ L sont tous deux énumérables de manière récursive, ils sont tous deux décidables. Ceci est particulièrement utile si nous voulons prouver qu’une langue n’est pas récursivement énumérable, une propriété plus forte que l’indécidabilité.
Habituellement, il est assez difficile de prouver directement qu’une langue est indécidable (à moins qu’elle soit déjà construite de manière "diagonale"). La dernière et la plus courante des méthodes pour prouver l’indécidabilité consiste à utiliser un autre langage que nous savons déjà indécidable. L'idée est de réduire un langage à un autre: pour montrer que si l'un est décidable, l'autre doit l'être aussi, mais que l'un d'entre eux est déjà connu pour être indécidable, ce qui permet de conclure que le premier est également indécidable. En savoir plus sur les réductions dans "Quelles sont les techniques communes pour réduire les problèmes les uns aux autres?" .
Exemple.
Montrer que la langue diagonale est indécidable.
Preuve.
Nous savons que est indécidable. Nous réduisons L D à H P (on note L D ≤ H P ), c’est-à-dire que nous montrons que si H P était décidable, nous pourrions utiliser son décideur pour décider de L D , ce qui est une contradiction.
La réduction fonctionne en convertissant un candidat pour L D (soit une entrée pour chaque décideur / accepteur potentiel pour L D ) à un candidat w ' pour H P tel que w ∈ L D si et seulement si w ' ∈ H P . Nous nous assurons que cette conversion est calculable. Ainsi, décider de w ′ nous dit si oui ou non w ∈ L D , donc si nous pouvons décider de HP, nous pourrons également décider de L D .¹
La conversion est la suivante. Prenez un peu et sortie w ' = ⟨ M ' , ⟨ M ⟩ ⟩ , ² où M ' est un TM qui se comporte tout comme M , mais si M rejette, alors M ' entre dans une boucle infinie.
Voyons que satisfasse aux exigences.
Si w ∈ L D , cela signifie que M arrêts et accepte l'entrée ⟨ M ⟩ . Par conséquent, M ' aussi accepte et arrête l'entrée ⟨ M ⟩ . Ainsi, ⟨ M ' , ⟨ M ⟩ ⟩ ∈ H P .
D'autre part, si w ∉ L D puis M rejette ou jamais sur des arrêts ⟨
. Dansdeux cas , M ' ira dans une boucle infinie sur ⟨ M ⟩ . Ainsi, ⟨ M ' , ⟨ M ⟩ ⟩ ∉ H P , et nous fait montrant que w ∈ L D si et seulement si w ' ∈ H P , et ont ainsi montré que H P ∉ R .
Lectures complémentaires: de nombreux exemples de réduction et de démonstration de l’indécidablilité des langues peuvent être trouvés via l’ étiquette de réduction .
Il y a quelques restrictions supplémentaires sur la réduction pour être valide. La conversion elle-même doit être calculable et bien définie pour toute entrée.
Une entrée de ressemble ⟨ M , x ⟩ , où M est un TM et x est une chaîne de caractères. Nous avons donc choisi la chaîne x comme étant un encodage de la machine M , qui est juste une chaîne.
"Alors chaque fois que nous voulons prouver que est indécidable, nous devons y réduire L D (ou H P )? N'y a-t-il pas de raccourci?"
En fait, il y en a. C'est le théorème de Rice .
Le théorème dit que beaucoup de langues qui ont une certaine structure sont indécidables. Parce que toutes ces langues ont cette structure particulière, nous pouvons faire la réduction une fois et l’appliquer à n’importe quelle langue qui admet une structure similaire.
Le théorème est formellement énoncé de la manière suivante,
L S L S = { ⟨ M ⟩ | L ( M ) ∈ S }
L'ensemble est un sous-ensemble de langues dans ; nous l'appelons une propriété parce qu'elle décrit une propriété du langage accepté . Tous les TM dont la langue satisfait cette propriété appartiennent à .R E L ( M ) L S
Par exemple, peut être la propriété que le langage accepté contient exactement deux mots:L ( M )
L S 2 L S 2 = { ⟨ M ⟩ | L ( M ) ∈ S } = { ⟨ M ⟩ | | L ( M ) | = 2 } .
Dans ce cas, est l’ensemble des MT dont la langue est composée de deux mots:
La propriété peut être très simple, mais il ne peut pas être toutes les langues de RE, ou aucune des langues RE. Si ou la propriété est dite triviale et le induit est calculable. Un exemple de simple est qu’il ne contient qu’une seule langue, par exemple . Notez que bien que ne contienne qu’une seule langue, il existe une infinité de machines dont la langue est , donc est infinie et indécidable.S = R E L S S S c o m p l e t e = { Σ * } S M Σ * L S c o m p e t e
Le théorème est très puissant pour prouver l’indécidabilité de nombreuses langues.
Exemple.
La langue , est indécidable
Preuve.
Nous pouvons écrire comme , c'est-à-dire pour la propriété . Il s'agit d'une propriété non triviale (elle inclut le langage , mais n'inclut pas, par exemple, le langage . Par conséquent, selon le théorème de Rice, est indécidable. { ⟨ M ⟩ | L ( M ) = 0 } L ∅ = L S S = { L ∈ R E , | L | = 0 } L = ∅ L = { 1 , 11 , 111 , ... } L ∅
Nous prouvons maintenant le théorème. Comme mentionné ci-dessus, nous allons montrer une réduction de à (pour tout arbitraire non trivial ).L S S
Preuve.
Soit une propriété non triviale, . Nous montrons , c’est-à-dire que nous réduisons à sorte que si nous pouvons décider de nous pourrons décider de (ce que nous savons être impossible, donc ne peut pas être décidable). Dans la preuve ci - dessous , nous supposons que la langue vide ne fait pas partie de , qui est . (si la langue vide est en , une preuve équivalente fonctionne sur la propriété de complément , je vais omettre les détails). Depuis∅ ⊊ S ⊊ R E H P ≤ L S H P L S L S H P L S S ∅ ∉ S S ¯ S = R E ∖ S S L 0 M 0 L 0 Sest non triviale, elle comprend au moins une langue; appelons cette langue et supposons que est une machine qui accepte (une telle machine existe, car n'inclut que des langues dans RE).
Rappelons que dans une telle réduction (voir la section 3 ci-dessus), nous devons montrer comment convertir une entrée pour en une entrée pour sorte que H P w ' L S w ∈ H P
Soit , on le convertit en où la description de la machine (sur une entrée ) est la suivante:w ' = ⟨ M ' ⟩ M ' x '
Nous voyons que cette conversion est valide. Notons tout d'abord qu'il est simple de construire la description de étant donné . w = ( ⟨ M ⟩ , x )
Si , alors s’arrête sur . Dans ce cas, passe à l'étape 2 et se comporte exactement comme . Par conséquent , sa langue acceptée est . Par conséquent, .
Si alors boucles sur . Ce cas, boucles sur une entrée - si elle se bloque à l' étape 1. La langue acceptée par dans ce cas est vide, . Par conséquent, .M x M ' M 0 L ( M ' ) = M 0 ∈ S w ' = ⟨ M ' ⟩ ∈ L S w ∉ H P M x M ' x ' M ' L ( M ' ) = ∅ ∉ S w ' = ⟨ M ' ⟩ ∉ L S
Le théorème de riz nous donne un moyen facile de montrer qu'un certain langage qui satisfait à certaines propriétés est indécidable, qui est, . La version étendue du théorème de Rice nous permet de déterminer si le langage est récursivement énumérable ou non, c'est-à-dire de déterminer si , en vérifiant si satisfait certaines propriétés supplémentaires.L ∉ R L ∉ R E L
Théorème (riz, étendu). Étant donné une propriété , la langue est récursivement énumérable ( ) si et seulement si les trois instructions suivantes conjointement tenirL S = { ⟨ M ⟩ | L ( M ) ∈ S } L S ∈ R E
- Pour tout deux , si et aussi puis aussi .L 1 ∈ S L 1 ⊆ L 2 L 2 ∈ S
- Si alors il existe un sous - ensemble fini de sorte que .L 2 ⊆ L 1 L 2 ∈ S
- L'ensemble de tous les langages finis en est énumérable (en d'autres termes: il existe un TM qui énumère tous les langages finis ).L ∈ S
Preuve.
C'est un théorème du "si et seulement si", et nous devrions prouver ses deux directions. En premier lieu, nous montrons que si l’une des conditions (1, 2, 3) ne tient pas, alors . Après cela, nous montrerons que si les trois conditions sont simultanément, alors .L S ∈ R E
Si (1,2) tient, mais pas (3), alors .
Supposons que , et nous verrons que nous avons un moyen d'accepter n'importe quelle langue finie dans (et donc, l'ensemble de toutes ces langues est RE), donc la condition (3) est vraie et nous aboutissons à une contradiction. . Comment décider si un fini appartient à ou non? Facilement - nous utilisons la description de pour construire une machine qui accepte uniquement les mots en , et maintenant nous la machine de sur (rappelez-vous - nous avons supposé , il y a donc une machine qui accepteL S ∈RESLSL M L L L S M L L S ∈RE L S L∈S⟨ M L ⟩∈ L S L S ∈RE⟨ M L ⟩
!) Si alors et puisque , sa machine dira oui à l'entrée et nous aurons terminé.
Si (2,3) tient, mais pas (1), alors .
Nous supposons que et montrons que nous avons un moyen de décider , ce qui conduit à une contradiction.
Parce que la condition (1) ne tient pas, il y a une langue et une surcouche de celui - ci, de sorte que . Maintenant, nous allons répéter l'argument utilisé dans la section 4 pour décider : étant donné une entrée pour , nous construisons une machine dont la langue est if ou autre, sa langue est . Ensuite, nous pouvons décider : soit s'arrête sur , soit la machine RE pour accepte; nous pouvons exécuter les deux en parallèle et avoir la garantie qu'au moins un s'arrêtera.
Donnons les détails de la construction de (sur l'entrée ):
Pourquoi ça marche? Si 1.1 ne s'arrête jamais et accepte exactement toutes les entrées acceptées à l'étape 1.2, donc . D'autre part, si , à un moment donné, l'étape 1.1 s'arrête et accepte exactement . Il se peut que accepte au préalable, mais puisque , cela ne change pas le langage de dans ce cas.
Si (1,3) tient, mais pas (2), alors .
De nouveau, nous supposerons et montrerons que devient décidable, ce qui est une contradiction.
Si la condition (2) ne tient pas, alors pour tout , tous ses sous-ensembles finis satisfont (notez que doit être infini, car ). Comme ci-dessus, afin de décider de pour une entrée donnée , nous construisons une machine dont la langue est si et un nombre fini. sinon. La contradiction suit de la même manière que ci-dessus.
La construction de cette machine est assez similaire à la précédente nous avons construite. La machine (sur l'entrée ) fait:
Il soutient que, si , à un moment donné, par exemple après 1000 étapes, s’arrête sur . Par conséquent, l’étape 1 s’arrête sur (et rejette) toute entrée de longueur . Donc, dans ce cas, est fini . Notez également que , et en particulier par nos hypothèses sur l'invalidité de la condition (2), nous avons que .
Par contre, si , l’étape 1 ne s’arrête jamais et nous ne refusons jamais à l’étape 2. Dans ce cas, il est facile de voir que et particulier, .
Il nous reste à montrer l’autre direction du théorème étendu. En d’autres , nous devons montrer que si toutes les conditions (1, 2, 3) sont , nous avons un MT qui accepte , c’est-à-dire . En d’autres termes, nous devons montrer une machine sorte que pour toute entrée pour laquelle , la machine accepte cette entrée, .
Voici comment se comporte la machine (sur input ):
Pourquoi ça marche? Si alors un sous-ensemble fini , et une fois que renvoie ce sous-ensemble, les étapes 2.2 / 2.3 trouveront que accepte tous les mots de cette langue et Acceptez.
D'autre part, si il ne peut pas être accepter tous les mots pour tout . En effet, par la condition (1), tout est également en , donc si accepte tous les mots de pour un , alors et donc , en contradiction.
Enfin, notez que ce qui suit est un corollaire simple (et très utile) de ce qui précède:
Corollaire (Riz étendu). Étant donné une propriété non triviale , de sorte que , le langage n'est pas énumérable récursivement, c'est-à-dire, .
Le théorème de Rice est un outil utile . Voici ce qu'il dit:
Soit un ensemble non trivial de fonctions unaires partiellement calculables et une numérotation de Gödel de . Puis l'ensemble d'index de
n'est pas récursif.
Vous le trouvez également exprimé en termes d'encodages de machines de Turing (ou de tout autre langage de programmation complet de Turing), c'est-à-dire ; ici définit une numérotation de Gödel.
C'est-à-dire que vous pouvez utiliser le théorème de Rice pour prouver que ces ensembles non récursifs sont des ensembles d'index d'ensembles de fonctions non triviales (ou peuvent être réduits en ).
Notez qu'il existe une extension qui peut être utilisée pour montrer que certains ensembles d'index ne sont pas énumérables de manière récursive.
Soit une numérotation de Gödel. Considérez l'ensemble des produits naturels
.
Maintenant, puisque pour
Le théorème de Rice peut être appliqué et n'est pas décidable.
Étant donné que beaucoup ne connaissent pas bien la numérotation Gödel, notez que l'exemple fonctionne également en termes de machines de Turing (programmes) en utilisant .
Considérez l'ensemble des produits naturels
ce qui n'est certainement pas calculable. Cependant, n'est pas un index défini pour aucun ! Laissez pour certains . Comme est une numérotation de Gödel , il y en a (infiniment beaucoup) avec mais pour tout est parce que .p f = φ i i ∈ A φ j ≠ i φ j = f j ∉ A f ( 2 ) = i ≠ j
Méfiez-vous de cela! En règle générale, si l'index de la fonction est utilisé "à droite" ou en tant que paramètre de la fonction dans la définition de l'ensemble, il ne s'agit probablement pas d'un ensemble d'index. Vous aurez peut-être besoin de la propriété de la numérotation de Gödel et du théorème du point de fixation pour indiquer qu'un ensemble n'est pas un ensemble d'index.