Como mostrar que uma função não é computável?


Respostas:


57

Antes de responder à sua pergunta geral, deixe-me dar um passo atrás, apresentar alguns antecedentes históricos e responder a uma pergunta preliminar: Existem funções não computáveis?

[nota notacional: podemos relacionar qualquer função com uma linguagem e depois discutir a decidibilidade de em vez da computabilidade de ]fLf={(x,y)y=f(x)}Lff


Linguagens indecidíveis fazer exist

Existem alguns idiomas que nenhuma máquina de Turing pode decidir. O argumento é simples: existem "apenas" inúmeras TMs diferentes, mas inúmeras línguas diferentes. Portanto, existem no máximo idiomas decidíveis, e o restante (infinitamente muitos) é indecidível. Leitura adicional:(0)()0

Para colocar uma mão em uma linguagem indecidível específica, a idéia é usar uma técnica chamada diagonalização (Georg Cantor, 1873) que foi originalmente usada para mostrar que há mais números reais do que números inteiros, ou seja, .>0

A idéia de construir a primeira linguagem indecidível é simples: listamos todas as máquinas de Turing (o que é possível, pois são recusativamente enumeráveis!) E criamos uma linguagem que discorda de cada TM em pelo menos uma entrada.

ε0100M110101M201000M300010

Acima, cada linha é uma TM e cada coluna é uma entrada. O valor da célula é 0 se a TM rejeitar ou nunca parar, e 1 se a TM aceitar essa entrada. Definimos o idioma para que contenha a ésima entrada se e somente se a ésima TM não aceitar essa entrada.D i iDDii

Seguindo a tabela acima, pois aceita . Da mesma forma, , mas pois não aceita .M 1 ε 0 D 1 D M 3 1εDM1ε0D1DM31

Agora, suponha que decida e procure a linha na tabela: se houver na ésima coluna, então aceita essa entrada, mas não está em , e se houver um , a entrada está em mas não o aceita. Portanto, não decide e chegamos à contradição. D k 1 k M k D 0 D M k M k DMkDk1kMkD0DMkMkD

Agora, para sua pergunta. Existem várias maneiras de provar que um idioma é indecidível. Vou tentar tocar os mais comuns.

1. Prova direta

O primeiro método é mostrar diretamente que um idioma é indecidível, mostrando que nenhuma TM pode decidi-lo. Isso geralmente segue o método de diagonalização mostrado acima.

Exemplo.

Mostre que o (complemento do) idioma diagonal é indecidível.

LD¯={MML(M)}

Prova.
Suponha que seja decidível e deixe . Existem dois casos: HDLD¯MD

  1. M DMD aceitaMD : mas, em seguida, para que . Portanto, isso não pode acontecer se decidir .M ¯ G D H D ¯ G DMDL(MD)MLD¯MDLD¯
  2. M DMD não aceitaMD : então e, portanto, . Mas se estiver em , deveria ter aceitado e chegamos à contradição novamente.M ¯ G D G D H DMDL(MD)MLD¯LDMD

2. Propriedades de fechamento

Às vezes, podemos usar as propriedades de fechamento para mostrar que algum idioma não é decidível, com base em outros idiomas que já sabemos que não são decidíveis.

Especificamente, se não for decidível (escrevemos ), também o seu complemento é indecidível: se houver para , poderíamos usá-lo para decidir aceitando sempre rejeita e vice-versa. Como sempre pára com uma resposta (é uma decisão), sempre podemos inverter sua resposta.L R ¯ L M ¯ L L M MLLRL¯ML¯LMM

Conclusão: A língua diagonal é indecidible, . G DRLD={MML(M)}LDR

Um argumento semelhante pode ser aplicado observando que, se e seu complemento forem recursivamente enumeráveis, ambos serão decididos. Isso é particularmente útil se quisermos provar que uma linguagem não é recursivamente enumerável, uma propriedade forte que a indecidibilidade.¯ LLL¯

3. Reduzir de um problema indecidível

Geralmente, é bastante difícil provar diretamente que um idioma é indecidível (a menos que já esteja construído de maneira "diagonal"). O último e mais comum método para provar indecidibilidade é usar outro idioma que já sabemos ser indecidível. A idéia é reduzir um idioma para outro: mostrar que, se um é decidível, o outro também deve ser decidido, mas um deles já é indecidível, o que leva à conclusão de que o primeiro também é indecidível. Leia mais sobre reduções em "Quais são as técnicas comuns para reduzir problemas entre si?" .

Exemplo.

Mostre que o idioma diagonal é indecidível.

HP={M,xM halts on x}

Prova.
Sabemos que é indecidível. Nós reduzir a (isto é denotada ), ou seja, mostramos que se foi decidable poderíamos usar sua decisivo para decidir , o que é uma contradição.L D H P L DH P H P L DLDLDHPLDHPHPLD

A redução funciona convertendo um candidato para (ou seja, uma entrada para qualquer potencial candidato / aceitador para ) em um candidato para modo que se e somente se . Garantimos que essa conversão seja computável. Assim, decidir nos diz se , se pudermos decidir HP, também poderemos decidir .¹G D G D W ' H P w G D W 'H P W ' w G D G DwLDLDwHPwLDwHPwwLDLD

A conversão é a seguinte. Pegue e produza , ² onde é uma TM que se comporta exatamente como , mas se rejeitar, será em um loop infinito.w ' = M ' , M M ' M M M 'w=Mw=M,MMMMM

Vamos ver que satisfazem os requisitos. Se , significa que interrompe e aceita a entrada . Portanto, também interrompe e aceita a entrada . Assim, . Por outro lado, se estiver em então rejeita ou nunca pára em . Nos dois casos, entrará em um loop infinito em . Assim, w G D H M M 'M M ' , M H P w G D H M M 'M M ' , M H P w G D W 'H Pw,w
wLDM MMMM,MHP
wLDMMMMM,MHPE nós somos feitos mostrando que se e somente se , e, assim, demonstrado que a .wLDwHPHPR

Leitura adicional: muitos exemplos de reduções e comprovação de indecisão de idiomas podem ser encontrados na etiqueta de .


  1. Há mais restrições quanto à redução para ser válida. A conversão em si deve ser computável e bem definida para qualquer entrada.

  2. Uma entrada da parece com , onde é uma TM e é alguma string. Então, aqui escolhemos a string para ser uma codificação da máquina , que é apenas uma string.H , x M x x MHPM,xMxxM


4. Teorema de Rice

"Então, toda vez que desejamos provar que é indecidível, precisamos reduzir (ou ) a ele? Não existe nenhum atalho?"L D H PLLDHP

Bem, de fato, existe. Este é o teorema de Rice .

O teorema diz que muitas línguas que possuem uma certa estrutura são indecidíveis. Como todos esses idiomas têm essa estrutura certa, podemos fazer a redução uma vez e aplicá-la a qualquer idioma que admita uma estrutura semelhante.

O teorema é formalmente declarado da seguinte maneira:

SRELS

LS={ML(M)S}

O conjunto é um subconjunto de idiomas no ; chamamos de propriedade porque descreve uma propriedade do idioma aceito . Todas as TMs cujo idioma satisfaz essa propriedade pertencem a .R E L ( M ) L SSREL(M)LS

Por exemplo, pode ser a propriedade em que o idioma aceito contém exatamente duas palavras:L ( M )SL(M)

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

S2={L|L|=2,LRE}.
Nesse caso, é o conjunto de todas as TMs cujo idioma consiste exatamente em duas palavras: LS2
LS2={ML(M)S}={M|L(M)|=2}.

A propriedade pode ser muito simples, mas não pode ser todos os idiomas RE, ou nenhum dos idiomas RE. Se ou , a propriedade é considerada trivial e o induzido é computável. Um exemplo para um simples é aquele que contém apenas um idioma, digamos . Observe que, embora contenha apenas um único idioma, existem infinitas máquinas cujo idioma é , portanto é infinito e indecidível.S = R E L S S S c o m p L e T E = { Σ * } S M Σ * G S c o m p e t eS=S=RELSSScomplete={Σ}SMΣLScompete


O teorema é muito poderoso para provar indecidibilidade de muitas línguas.

Exemplo.

O idioma , é indecidívelL={MM never reaches the accepting state}

Prova.
Podemos escrever como , ou seja, para a propriedade . Essa é uma propriedade não trivial (inclui o idioma , mas não inclui, por exemplo, o idioma . Portanto, pelo Teorema de Rice, é indecidível.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Agora provamos o teorema. Como mencionado acima, mostraremos uma redução da para (para qualquer arbitrário e não trivial ).HPLSS

Prova.
Seja uma propriedade não trivial, . Mostramos , ou seja, reduzimos para para que, se pudermos decidir , poderemos decidir (que sabemos que é impossível, portanto, não pode ser ). Na prova abaixo assumimos que a linguagem vazia não faz parte do , que é . (se o idioma vazio estiver em , uma prova equivalente funcionará na propriedade do complemento , omitirei os detalhes). DesdeSSREHPLSHPLSLSHPLSS S ¯ S = R E S S G 0 M 0 L 0 SSSSS¯=RESSnão é trivial, inclui pelo menos um idioma; vamos chamar esse idioma de e supor que é uma máquina que aceita (essa máquina existe, pois inclui apenas idiomas no RE).L0M0L0S

Lembre-se de que em tal redução (consulte a seção 3 acima), precisamos mostrar como converter uma entrada para em uma entrada para para que H P w L S w H PwHPwLS

wHP if and only if wLS

Seja , nós a convertemos em onde a descrição da máquina (em uma entrada ) é a seguinte:w ' = M 'H ' x 'w=(M,x)w=MMx

  1. Execute em .xMx
  2. Se a etapa 1 acima , execute em e aceite / rejeite de acordo.M0x

Vemos que essa conversão é válida. Primeiro note que é simples construir a descrição de dada .Mw=(M,x)

Se , então pára em . Nesse caso, segue para a etapa 2 e se comporta exatamente como . Portanto, sua língua aceite é . Portanto, . Se , loop em . Neste caso, voltas sobre qualquer entrada - ele fica preso na etapa 1. A linguagem aceita por'neste caso, está vazia, . Portanto, .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 O Teorema do Arroz Estendido

Teorema de Rice nos dá uma maneira fácil de mostrar que uma certa linguagem que satisfaz certas propriedades é indecidível, isto é, . A versão estendida do teorema de Rice permite determinar se a linguagem é recursivamente enumerável ou não, ou seja, determina se , verificando se satisfaz algumas propriedades adicionais.LLRLREL

Teorema (Arroz, estendido). Dada uma propriedade , o idioma é recursivamente enumerável ( ) se e somente se todas as três instruções a seguir em conjunto aguardeSRE

LS={ML(M)S}
LSRE
  1. Para quaisquer dois , se e também em seguida, também .L1,L2REL1SL1L2L2S
  2. Se seguida, existe um subconjunto finito modo que .L1SL2L1L2S
  3. O conjunto de todos os idiomas finitos em é enumerável (em outras palavras: existe uma TM que enumera todos os idiomas finitos ).SLS

Prova.
Este é um teorema "se e somente se", e devemos provar ambas as direções. Primeiro, mostramos que, se uma das condições (1,2,3) não se mantiver, . Depois disso, mostraremos que, se todas as três condições se mantiverem simultaneamente, .LSRELSRE

Se (1,2) mantém, mas (3) não,LSRE .
Vamos assumir que , e veremos que temos uma maneira de aceitar qualquer linguagem finita em (e, portanto, o conjunto de todas essas linguagens é RE), assim a condição (3) se mantém e chegamos a uma contradição . Como decidir se um finito pertence a ou não? Facilmente - usamos a descrição de para construir uma máquina que aceita apenas as palavras em , e agora executamos a máquina de em (lembre-se - assumimos , portanto há uma máquina que aceitaLSRESLSLMLLLSMLLSRELS!). Se então e desde , sua máquina dirá sim na entrada , e pronto.LSMLLSLSREML

Se (2,3) aguentar, mas (1) não ,LSRE . Assumimos que e mostraremos que temos uma maneira de decidir a , levando a uma contradição.L SREHP
LSREHP

Porque a condição (1) não se sustenta, há uma linguagem e um super-lo, para que . Agora, repetiremos o argumento usado na Seção 4 para decidir a : dada uma entrada para a , construímos uma máquina cuja linguagem é se ou não, seu idioma é . Em seguida, podemos decidir pela : pára em ou a máquina RE para aceitaL 2L 1 L 2S H PL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; podemos executar os dois em paralelo e temos a garantia de que pelo menos um deles será interrompido.

Vamos dar os detalhes da construção de (na entrada ):Mx

  1. Faça o seguinte em paralelo:
    1.1 execute em . 1.2 execute a máquina de emMx
    L1x
  2. Se 1,2 parar e aceitar - aceite.
  3. Se 1.1 parar: execute a máquina de em .L2x

Por que isso funciona? Se então 1.1 nunca pára, e aceita exatamente todas as entradas que estão sendo aceitas na etapa 1.2, então . Por outro lado, se , em algum momento a etapa 1.1 pára e aceita exatamente . Pode acontecer que o aceite de antemão, mas desde , isso não altera o idioma de nesse caso.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Se (1,3) aguentar, mas (2) não,LSRE .
Novamente, assumiremos e mostraremos que a se torna decidível, o que é uma contradição.LSREHP

Se a condição (2) não se mantiver, então para qualquer , todos os seus subconjuntos finitos satisfazem (observe que deve ser infinito, já que ). Como acima, para decidir a para uma determinada entrada , construímos uma máquina cuja linguagem é se e em alguns finitos caso contrário. A contradição segue de maneira semelhante à anterior.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

A construção desta máquina é bastante semelhante ao anterior que construímos. A máquina (na entrada ) faz:MMx

  1. Executa em parapassos.Mx|x|
  2. Se parar durante o passo 1 - rejeiteM
  3. Caso contrário, execute a máquina de em .L1x

Ele afirma que, se , em algum momento, digamos, após 1000 etapas, pára em . Portanto, a etapa 1 interromperá (e rejeitará) qualquer entrada de comprimento . Portanto, neste caso, é finito . Além disso, note que , e em particular, por nossas suposições sobre a invalidade de condição (2), temos que .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

Por outro lado, se , a etapa 1 nunca para e nunca rejeitamos na etapa 2. Nesse caso, é fácil ver que e em em particular, .(M,x)HPL(M)=L1L(M)S


Nos resta mostrar a outra direção do teorema estendido. Ou seja, precisamos mostrar que, se todas as condições (1,2,3) se mantiverem, temos uma TM que aceita , ou seja, . Em outras palavras, precisamos mostrar uma máquina para que, para qualquer entrada para a qual , a máquina aceite essa entrada, .LSLSREMSML(M)SMS(M)accept

Aqui está como a máquina se comporta (na entrada ):MSM

  1. Seja a máquina que enumera todos os idiomas finitos em , garantida pela condição (3).Menum SS
  2. Execute o seguinte em paralelo (combinando, veja, por exemplo, isto e isto ) para 2.1 Execute até que ele o idioma 2.2. Verifique se aceita todas as palavras de (execute nessas palavras, novamente em paralelo). 2.3 Se para alguns , aceita todas as palavras de - aceite.i=1,2,...
    Menum SLi
    MLiM
    iMLi

Por que isso funciona? Se , ele possui um subconjunto finito , e uma vez que gera esse subconjunto, a etapa 2.2 / 2.3 descobrirá que aceita todas as palavras nesse idioma e aceitar.L(M)SLjSMenum SM

Por outro lado, se não pode ser aceitar todas as palavras para qualquer . De fato, pela condição (1), qualquer também está em , portanto, se aceita todas as palavras em para alguns , então e, portanto, , em contradição.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


Por fim, observe que o seguinte é um corolário simples (e muito útil) do acima exposto:

Corolário (arroz estendido). Dada uma propriedade não trivial , de modo que , o idioma não é recursivamente enumerável, ou seja, .S G S = { M | G ( M ) S } L SR ESRES

LS={ML(M)S}
LSRE

Obrigado por adicionar a versão estendida do teorema de Rice! Eu conheço uma versão diferente; Vou ter que desenterrar isso. De qualquer forma, não acho muito importante ou útil ter as provas aqui. Talvez você possa referenciá-los ou carregá-los em outro lugar, se não existir uma boa referência?
Raphael

13

Uma ferramenta útil é o teorema de Rice . Aqui está o que diz:

Deixe um conjunto não trivial de funções unárias parcialmente computáveis ​​e uma numeração Gödel de . Em seguida, o conjunto de índices dePPφPP

IP={iNφiP}

não é recursivo.

Você também acha isso expresso em termos de codificações de máquinas de Turing (ou qualquer outra linguagem de programação completa de Turing), ou seja, ; aqui define uma numeração de Gödel.IP={MM TM,fMP}.

Ou seja, você pode usar o teorema de Rice para provar que esses conjuntos não são recursivos, que são conjuntos de índices de conjuntos de funções não triviais (ou são redutíveis a ).SS

Observe que há uma extensão que pode ser usada para mostrar que determinados conjuntos de índices não são recursivamente enumeráveis.

Exemplo

Vamos uma numeração Gödel. Considere o conjunto de naturaisφ

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

Agora, já que paraP={fPf(j)=1 for all j2N}

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

O teorema de Rice pode ser aplicado e não é decidível.A

Como muitos não estão familiarizados com as numerações de Gödel, observe que o exemplo também funciona em termos de máquinas de Turing (ou seja, programas) usando .A={MfM(x)=1 for all x2N}

Unexample

Considere o conjunto de naturais

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

o que certamente não é computável. No entanto, não é um índice definido para nenhum ! Vamos por algum . Como é uma numeração de Gödel , existem (infinitamente) com mas para todos os porque .APf=φiiAφjiφj=fjAf(2)=ij

Desconfie disso! Como regra geral, se o índice da função for usado no "lado direito" ou como parâmetro da função na definição do conjunto, é provável que não seja um conjunto de índices. Você pode precisar da propriedade das numerações de Gödel e do teorema do ponto de correção para mostrar que um conjunto não é um conjunto de índices.smn

Veja aqui e aqui os posts relacionados ao teorema de Rice.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.