Comment montrer qu'une fonction n'est pas calculable?


Réponses:


57

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 f à un langage Lf={(x,y)y=f(x)} , puis discuter de la décidabilité de Lf plutôt que de la calculabilité de f ]


Langues indécidables do exist

Il existe certaines langues qu'aucune machine de Turing ne peut décider. L'argument est simple: il n'y a "que" beaucoup (0) différents TM, mais un nombre indénombrable () langues différentes. Ainsi, il existe au plus 0 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 .>0

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.

ε0100M110101M201000M300010

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.DDii

Suivant le tableau ci-dessus, puisque M 1 accepte ε . De même, 0 D , mais 1 D puisque M 3 n'accepte pas 1 .εDM1ε0D1DM31

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.MkDk1kMkD0DMkMkD

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.

1. Preuve directe

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.

LD¯={MML(M)}

Preuve.
On suppose est décidable, et que M D soit son decider. Il y a deux cas:LD¯MD

  1. accepteM DMDMD : mais,siM ¯ L D . Donccela ne peut pas se produire si M D décide ¯ L D .MDL(MD)MLD¯MDLD¯
  2. n'accepte pasM DMDMD : si et doncM ¯ L D . Mais si c'est dans L D , M D aurait dû l'accepter et nous sommes à nouveau parvenus à la contradiction.MDL(MD)MLD¯LDMD

2. Propriétés de fermeture

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.LLRL¯ML¯LMM

Conclusion: La langue diagonale est indécidable, L DR .LD={MML(M)}LDR

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é.LL¯

3. Réduire d'un problème indécidable

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.

HP={M,xM halts on x}

Preuve.
Nous savons que est indécidable. Nous réduisons L D à H P (on note L DH 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.LDLDHPLDHPHPLD

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 DwLDLDwHPwLDwHPwwLDLD

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.w=Mw=M,MMMMM

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 w,w
wLDM MMMM,MHP
wLDM . Dansdeux cas , M ' ira dans une boucle infinie surM . 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 .MMMM,MHPwLDwHPHPR

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 .


  1. 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.

  2. 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.HPM,xMxxM


4. Théorème du riz

"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?"LLDHP

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 }SRELS

LS={ML(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 SSREL(M)LS

Par exemple, peut être la propriété que le langage accepté contient exactement deux mots:L ( M )SL(M)

L S 2 L S 2 = { M | L ( M ) S } = { M | | L ( M ) | = 2 } .

S2={L|L|=2,LRE}.
Dans ce cas, est l’ensemble des MT dont la langue est composée de deux mots: LS2
LS2={ML(M)S}={M|L(M)|=2}.

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 eS=S=RELSSScomplete={Σ}SMΣLScompete


Le théorème est très puissant pour prouver l’indécidabilité de nombreuses langues.

Exemple.

La langue , est indécidableL={MM never reaches the accepting state}

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 L{ML(M)=0}L=LSS={LRE,|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 SHPLSS

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). DepuisS 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 SSSREHPLSHPLSLSHPLSSSSS¯=RESSest 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).L0M0L0S

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 PwHPwLS

wHP if and only if wLS

Soit , on le convertit en où la description de la machine (sur une entrée ) est la suivante:w ' = M 'M ' x 'w=(M,x)w=MMx

  1. Exécuter sur .xMx
  2. Si l'étape 1 ci-dessus s'arrête, exécutez sur et acceptez / rejetez en conséquence.x 'M0x

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 )Mw=(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 0S w ' = M 'L S w H P M x M ' x ' M ' L ( M ' ) = S w ' = M 'L SwHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 Le théorème du riz étendu

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 LLLRLREL

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 SR ESRE

LS={ML(M)S}
LSRE
  1. Pour tout deux , si et aussi puis aussi .L 1S L 1L 2 L 2SL1,L2REL1SL1L2L2S
  2. Si alors il existe un sous - ensemble fini de sorte que .L 2L 1 L 2SL1SL2L1L2S
  3. 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 SSLS

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 SR ELSRELSRE

Si (1,2) tient, mais pas (3), alorsLSRE . 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 SRESLSL M L L L S M L L SRE L S LS M L L S L SRE M L
LSRESLSLMLLLSMLLSRELS!) Si alors et puisque , sa machine dira oui à l'entrée et nous aurons terminé.LSMLLSLSREML

Si (2,3) tient, mais pas (1), alorsLSRE .
Nous supposons que et montrons que nous avons un moyen de décider , ce qui conduit à une contradiction.LSREHP

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 accepteL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; 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 ):Mx

  1. Effectuez les opérations suivantes en parallèle:
    1.1 lancez sur . 1.2 lancer la machine de surMx
    L1x
  2. Si 1.2 s'arrête et accepte, acceptez.
  3. Si 1.1 s'arrête: exécutez la machine de sur .L2x

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.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Si (1,3) tient, mais pas (2), alorsLSRE .
De nouveau, nous supposerons et montrerons que devient décidable, ce qui est une contradiction.LSREHP

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.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

La construction de cette machine est assez similaire à la précédente nous avons construite. La machine (sur l'entrée ) fait:MMx

  1. Fonctionne sur pourpas.Mx|x|
  2. Si s’arrête pendant l’étape 1 - rejeterM
  3. Sinon, lancez la machine de sur .L1x

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 .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

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, .(M,x)HPL(M)=L1L(M)S


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, .LSLSREMSML(M)SMS(M)accept

Voici comment se comporte la machine (sur input ):MSM

  1. Soit la machine qui énumère toutes les langues finies en , garantie par condition (3).Menum SS
  2. Exécutez les opérations suivantes en parallèle (en parallèle, voir par exemple ceci et cela ) pour 2.1 Exécutez jusqu'à la sortie du langage 2.2. Vérifiez si accepte tous les mots de (exécutez sur ces mots, toujours en parallèle). 2.3. Si pour certains , accepte tous les mots de - accepte.i=1,2,...
    Menum SLi
    MLiM
    iMLi

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.L(M)SLjSMenum SM

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.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


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, .SRES

LS={ML(M)S}
LSRE

Merci d'avoir ajouté la version étendue du théorème de Rice! Je connais une version différente. Je vais devoir creuser celui-là. Quoi qu'il en soit, je ne pense pas que ce soit très important ou même utile d'avoir les preuves ici. Peut-être pouvez-vous les référencer ou les télécharger ailleurs si aucune bonne référence n'existe?
Raphaël

13

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 dePPφPP

IP={iNφiP}

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.IP={MM TM,fMP}.

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 ).SS

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.

Exemple

Soit une numérotation de Gödel. Considérez l'ensemble des produits naturelsφ

A={iNφi(j)=1 for all j2N} .

Maintenant, puisque pourP={fPf(j)=1 for all j2N}

  • A=IP ,
  • (n1)P et
  • (n2)P ,

Le théorème de Rice peut être appliqué et n'est pas décidable.A

É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 .A={MfM(x)=1 for all x2N}

Un exemple

Considérez l'ensemble des produits naturels

A={iNφi(j)=i for all j2N}

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 jAPf=φiiAφjiφj=fjAf(2)=ij

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.smn

Voir ici et ici pour les articles sur le théorème de Rice.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.