¿Cómo mostrar que una función no es computable?


Respuestas:


57

Antes de responder a su pregunta general, déjeme dar un paso atrás, dar algunos antecedentes históricos y responder una pregunta preliminar: ¿Existen incluso funciones no computables?

[nota de notación: podemos relacionar cualquier función f con un lenguaje Lf={(x,y)y=f(x)} y luego discutir la capacidad de decisión de Lf lugar de la computabilidad de f ]


Idiomas undecidable hacen existir

Hay algunos idiomas que ninguna máquina de Turing puede decidir. El argumento es simple: hay "solo" innumerables (0) TM diferentes, pero incontablemente muchos () idiomas diferentes. Así, hay en la mayoría de 0 idiomas decidibles, y el resto (infinitamente muchos) son indecidible. Otras lecturas:

Para poner nuestra mano en un lenguaje indecidible específico, la idea es usar una técnica llamada diagonalización (Georg Cantor, 1873) que originalmente se usó para mostrar que hay más números reales que enteros, o en otras palabras, que .>0

La idea para construir el primer lenguaje indecidible es simple: enumeramos todas las máquinas de Turing (¡lo cual es posible ya que son enumerables de forma recusiva!), Y creamos un lenguaje que no está de acuerdo con cada TM en al menos una entrada.

ε0100M110101M201000M300010

En lo anterior, cada fila es una TM y cada columna es una entrada. El valor de la celda es 0 si la TM rechaza o nunca se detiene, y 1 si la TM acepta esa entrada. Definimos que el lenguaje es tal que D contiene la i -ésima entrada si y solo si la i -ésima TM no acepta esa entrada.DDii

Siguiendo la tabla anterior, ya que M 1 acepta ε . Del mismo modo, 0 D , pero 1 D ya que M 3 no acepta 1 .εDM1ε0D1DM31

Ahora, suponga que decide D y busque la línea k en la tabla: si hay 1 en la columna k , entonces M k acepta esa entrada pero no está en D , y si hay un 0 allí, la entrada está en D pero M k no lo acepta. Por lo tanto, M k no decide D , y llegamos a una contradicción.MkDk1kMkD0DMkMkD

Ahora para tu pregunta. Hay varias formas de demostrar que un idioma es indecidible. Intentaré tocar los más comunes.

1. Prueba directa

El primer método es mostrar directamente que un lenguaje es indecidible, mostrando que ninguna TM puede decidirlo. Esto usualmente sigue el método de diagonalización que se muestra arriba.

Ejemplo.

Muestran que la (complemento de la) lengua diagonal es indecidible.

LD¯={MML(M)}

Prueba.
Suponga que es decidible y deje que M D sea ​​su decisor. Hay dos casos:LD¯MD

  1. aceptaM DMDMD : pero entonces,por loM ¯ L D . Así que esto no puede suceder si M D decide ¯ L D .MDL(MD)MLD¯MDLD¯
  2. no aceptaM DMDMD : así y por lo tantoM ¯ L D . Pero si está en L D , M D debería haberlo aceptado, y llegamos a una contradicción nuevamente.MDL(MD)MLD¯LDMD

2. Propiedades de cierre

A veces podemos usar las propiedades de cierre para mostrar que un idioma no es decidible, en función de otros idiomas que ya sabemos que no son decidibles.

Específicamente, si no es decidible (escribimos L R ), entonces también su complemento ¯ L es indecidible: si hay un decisor M para ¯ L , podríamos usarlo para decidir L al aceptar cada vez que M rechaza y viceversa. Como M siempre se detiene con una respuesta (es un factor decisivo), siempre podemos invertir su respuesta.LLRL¯ML¯LMM

Conclusión: La diagonal lenguaje es indecidible, L DR .LD={MML(M)}LDR

Se puede aplicar un argumento similar al observar que si tanto como su complemento ¯ L son recursivamente enumerables, ambos son decidibles. Esto es particularmente útil si queremos demostrar que un lenguaje no es recursivamente enumerable, una propiedad fuerte que la indecidibilidad.LL¯

3. Reducción de un problema indecidible

Por lo general, es bastante difícil demostrar directamente que un lenguaje es indecidible (a menos que ya esté construido de manera "diagonal"). El último y más común método para probar la indecidibilidad es usar otro lenguaje que ya sabemos que es indecidible. La idea es reducir un idioma a otro: mostrar que si uno es decidible, el otro también debe ser decidible, pero uno de ellos ya es indecidible, lo que lleva a la conclusión de que el primero también es indecidible. Lea más sobre las reducciones en "¿Cuáles son las técnicas comunes para reducir problemas entre sí?" .

Ejemplo.

Demostrar que el lenguaje diagonal es indecidible.

HP={M,xM halts on x}

Prueba.
Sabemos que es indecidible. Reducimos L D a H P (esto se denota L DH P ), es decir, mostramos que si H P fuera decidible podríamos usar su decisor para decidir L D , lo cual es una contradicción.LDLDHPLDHPHPLD

La reducción funciona mediante la conversión de un candidato para L D (es decir, una entrada para cualquier potencial decisivo / aceptor para L D ) a un candidato w ' para H P tal que w L D si y sólo si w 'H P . Nos aseguramos de que esta conversión sea computable. Por lo tanto, decidir w nos dice si w L D o no , por lo que si podemos decidir HP también podremos decidir L D ”.wLDLDwHPwLDwHPwwLDLD

w=Mw=M,MMMMM

w,w
wLDM MMMM,MHP
wLDMMMMM,MHPwLDwHPHPR

Lectura adicional: se pueden encontrar muchos ejemplos de reducciones y probar la indecidibilidad de los idiomas a través de la etiqueta de .


  1. Hay algunas restricciones más para que la reducción sea válida. La conversión en sí misma debe ser computable y estar bien definida para cualquier entrada.

  2. HPM,xMxxM


4. El teorema del arroz

LLDHP

Bueno, de hecho, la hay. Este es el teorema de Rice .

El teorema dice que muchos idiomas que tienen una determinada estructura son indecidibles. Debido a que todos estos idiomas tienen esta estructura determinada, podemos hacer la reducción una vez y aplicarla a cualquier idioma que admita una estructura similar.

El teorema se establece formalmente de la siguiente manera:

SRELS

LS={ML(M)S}

El conjunto es un subconjunto de idiomas en ; lo llamamos una propiedad porque describe una propiedad del lenguaje aceptado . Todas las TMs cuyo lenguaje satisface esta propiedad pertenecen a .SREL(M)LS

Por ejemplo, puede ser la propiedad de que el lenguaje aceptado contiene exactamente dos palabras:SL(M)

S2={L|L|=2,LRE}.
En este caso, es el conjunto de todas las TM cuyo lenguaje consta de exactamente dos palabras: LS2
LS2={ML(M)S}={M|L(M)|=2}.

La propiedad puede ser muy simple, pero no puede ser todos los idiomas RE o ninguno de los idiomas RE. Si o , se dice que la propiedad es trivial , y la inducida es computable. Un ejemplo para una simple es una que contiene un solo idioma, digamos . Tenga en cuenta que aunque contiene un solo lenguaje, hay infinitas máquinas cuyo lenguaje es , por lo que es infinito e indecidible.S=S=RELSSScomplete={Σ}SMΣLScompete


El teorema es muy poderoso para demostrar la indecidibilidad de muchos idiomas.

Ejemplo.

El lenguaje , es indecidibleL={MM never reaches the accepting state}

Prueba.
Podemos escribir como , es decir para la propiedad . Esta es una propiedad no trivial (incluye el lenguaje , pero no incluye, por ejemplo, el lenguaje . Por lo tanto, según el Teorema de Rice, es indecidible.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Ahora demostramos el teorema. Como se mencionó anteriormente, vamos a mostrar una reducción de a (para cualquier arbitraria no trivial ).HPLSS

Prueba.
Sea una propiedad no trivial, . Mostramos , es decir, reducimos a para que si podemos decidir podamos decidir (lo que sabemos que es imposible, por lo tanto, no puede ser decidible). En la prueba a continuación se supone que el lenguaje vacío no es parte de , que es . (si el lenguaje vacío está en , una prueba equivalente funciona en la propiedad del complemento , omitiré los detalles). DesdeSSREHPLSHPLSLSHPLSSSSS¯=RESSno es trivial, incluye al menos un idioma; llamemos a ese lenguaje y supongamos que es una máquina que acepta (dicha máquina existe, ya que incluye solo idiomas en RE).L0M0L0S

Recuerde que en tal reducción (consulte la sección 3 anterior), debemos mostrar cómo convertir una entrada para en una entrada para para que wHPwLS

wHP if and only if wLS

Deje , lo convertimos en donde la descripción de la máquina (en una entrada ) es la siguiente:w=(M,x)w=MMx

  1. Ejecuta en .Mx
  2. Si el paso 1 anterior se detiene, ejecute en y acepte / rechace en consecuencia.M0x

Vemos que esta conversión es válida. Primero tenga en cuenta que es simple construir la descripción de dado .Mw=(M,x)

Si , detiene en . En este caso, continúa con el paso 2 y se comporta igual que . Por lo tanto, su lenguaje es aceptada . Por lo tanto, . Si entonces bucles en . Este caso, bucles en cualquier entrada - se queda atascado en el paso 1. La lengua aceptada por'en este caso está vacía, . Por lo tanto, .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 El teorema extendido del arroz

El teorema de arroz nos da una manera fácil de demostrar que un determinado lenguaje que satisfaga ciertas propiedades es indecidible, es decir, . La versión extendida del teorema de Rice nos permite determinar si el lenguaje es recursivamente enumerable o no, es decir, determina si , al verificar si satisface algunas propiedades adicionales.LLRLREL

Teorema (arroz, extendido). Dada una propiedad , el lenguaje es recursivamente enumerable ( ) si y solo si todas las siguientes tres declaraciones conjuntamente sostenerSRE

LS={ML(M)S}
LSRE
  1. Para cualquiera de los dos , si y también entonces también .L1,L2REL1SL1L2L2S
  2. Si entonces existe un subconjunto finito modo que .L1SL2L1L2S
  3. El conjunto de todos los idiomas finitos en es enumerable (en otras palabras: hay una TM que enumera todos los idiomas finitos ).SLS

Prueba.
Este es un teorema de "si y solo si", y debemos probar ambas direcciones. Primero, mostramos que si una de las condiciones (1,2,3) no se cumple, entonces . Después de eso, mostraremos que si las tres condiciones se mantienen simultáneamente, entonces .LSRELSRE

Si (1,2) se mantiene, pero (3) no, entoncesLSRE .
Supongamos que , y veremos que tenemos una manera de aceptar cualquier lenguaje finito en (y, por lo tanto, el conjunto de todos estos idiomas es RE), por lo tanto, la condición (3) se cumple y llegamos a una contradicción . ¿Cómo decidir si una finita pertenece a o no? Fácilmente: utilizamos la descripción de para construir una máquina que acepta solo las palabras en , y ahora ejecutamos la máquina de en (recuerde, asumimos , por lo que hay una máquina que aceptaLSRESLSLMLLLSMLLSRELS!) Si entonces y desde , su máquina dirá sí en la entrada , y ya hemos terminado.LSMLLSLSREML

Si (2,3) se mantiene, pero (1) no, entoncesLSRE .
Asumimos que y mostraremos que tenemos una manera de decidir , lo que lleva a una contradicción.LSREHP

Debido a la condición (1) no se sostiene, hay un lenguaje y un superconjunto de la misma, modo que . Ahora vamos a repetir el argumento utilizado en la Sección 4 para decidir : dada una entrada para , construimos una máquina cuyo lenguaje es if o de lo contrario, su idioma es . Entonces, podemos decidir : o detiene en , o la RE-máquina para aceptaL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; podemos ejecutar ambos en paralelo y tenemos la garantía de que al menos uno se detendrá.

Démosle los detalles de la construcción de (en la entrada ):Mx

  1. Haga lo siguiente en paralelo:
    1.1 ejecute en . 1.2 ejecute la máquina de enMx
    L1x
  2. Si 1.2 se detiene y acepta, acepte.
  3. Si 1.1 se detiene: ejecute la máquina de en .L2x

¿Por qué funciona esto? Si entonces 1.1 nunca se detiene, y acepta exactamente todas las entradas que se aceptan en el paso 1.2, entonces . Por otro lado, si , en algún momento, el paso 1.1 se detiene y acepta exactamente . Puede suceder que acepte de antemano, pero como , esto no cambia el idioma de en este caso.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Si (1,3) se mantiene, pero (2) no, entoncesLSRE .
Nuevamente, asumiremos y mostraremos que vuelve decidible, lo cual es una contradicción.LSREHP

Si la condición (2) no se cumple, entonces para cualquier , todos sus subconjuntos finitos satisfacen (tenga en cuenta que debe ser infinito, ya que ). Como en lo anterior, para decidir para una entrada dada , construimos una máquina cuyo lenguaje es if y algo finito contrario. La contradicción se sigue de manera similar a la anterior.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

La construcción de esta máquina es bastante similar a la anterior que construimos. La máquina (en la entrada ) hace:MMx

  1. Ejecuta en parapasos.Mx|x|
  2. Si detiene durante el paso 1 - rechazarM
  3. De lo contrario, ejecute la máquina de en .L1x

Sostiene que, si , en algún momento, digamos después de 1000 pasos, detiene en . Por lo tanto, el paso 1 detendrá (y rechazará) cualquier entrada de longitud . Por lo tanto, en este caso, es finito . También tenga en cuenta que y, en particular, por nuestras suposiciones sobre la invalidez de la condición (2), tenemos que .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

Por otro lado, si , entonces el paso 1 nunca se detiene, y nunca rechazamos en el paso 2. En este caso, es fácil ver que y en en particular, .(M,x)HPL(M)=L1L(M)S


Nos queda mostrar la otra dirección del teorema extendido. Es decir, debemos demostrar que si se cumplen todas las condiciones (1,2,3), entonces tenemos una TM que acepta , es decir, . En otras palabras, necesitamos mostrar una máquina para que para cualquier entrada para la cual , la máquina acepte esta entrada, .LSLSREMSML(M)SMS(M)accept

Así es como se comporta la máquina (en input ):MSM

  1. Sea la máquina que enumera todos los lenguajes finitos en , garantizada por la condición (3).Menum SS
  2. Ejecute lo siguiente en paralelo (haciendo cola de milano, vea, por ejemplo, esto y esto ) para 2.1 Ejecute hasta que salga el lenguaje 2.2. Compruebe si acepta todas las palabras de (ejecute en estas palabras, nuevamente en paralelo). 2.3. Si para algunos , acepta todas las palabras de - aceptar.i=1,2,...
    Menum SLi
    MLiM
    iMLi

Por que funciona Si tiene un subconjunto finito , y una vez que genera ese subconjunto, el paso 2.2 / 2.3 encontrará que acepta todas las palabras en ese idioma y aceptar.L(M)SLjSMenum SM

Por otro lado, si no se puede aceptar todas las palabras para cualquier . De hecho, por la condición (1), cualquier también está en , por lo que si acepta todas las palabras en para alguna , entonces y por lo tanto , en contradicción.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


Finalmente, tenga en cuenta que lo siguiente es un corolario simple (y muy útil) de lo anterior:

Corolario (Arroz, extendido). Dada una propiedad no trivial , de modo que , el lenguaje no es recursivamente enumerable, es decir, .SRES

LS={ML(M)S}
LSRE

¡Gracias por agregar la versión extendida del teorema de Rice! Conozco una versión diferente; Tendré que desenterrar eso. De todos modos, no creo que sea muy importante o incluso útil tener las pruebas aquí. ¿Quizás pueda hacer referencia a ellos o subirlos a otro lugar si no existe una buena referencia?
Raphael

13

Una herramienta útil es el teorema de Rice . Aquí está lo que dice:

Sea un conjunto no trivial de funciones unarias parcialmente computables y una numeración Gödel de . Entonces el conjunto de índices dePPφPP

IP={iNφiP}

No es recursivo.

También lo encuentra expresado en términos de codificaciones de máquinas de Turing (o cualquier otro lenguaje de programación completo de Turing), es decir, ; aquí define una numeración de Gödel.IP={MM TM,fMP}.

Es decir, puede usar el teorema de Rice para probar que tales conjuntos no son recursivos, que son conjuntos de índices de conjuntos de funciones no triviales (o tal es reducible a ).SS

Tenga en cuenta que hay una extensión que se puede usar para mostrar que ciertos conjuntos de índices no son enumerables recursivamente.

Ejemplo

Sea una numeración de Gödel. Considere el conjunto de productos naturales.φ

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

Ahora ya que paraP={fPf(j)=1 for all j2N}

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

El teorema de Rice se puede aplicar y no es decidible.A

Dado que muchos no están familiarizados con las numeraciones de Gödel, tenga en cuenta que el ejemplo también funciona en términos de máquinas de Turing (es decir, programas) mediante el uso de .A={MfM(x)=1 for all x2N}

Unexample

Considere el conjunto de productos naturales.

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

que ciertamente no es computable. Sin embargo, no es un conjunto de índices para ninguna ! Deje para algunos . Como es una numeración de Gödel , hay (infinitamente) con pero para todos cumple porque .APf=φiiAφjiφj=fjAf(2)=ij

¡Ten cuidado con esto! Como regla general, si el índice de la función se usa en "el lado derecho" o como parámetro de la función en la definición del conjunto, es probable que no sea un conjunto de índice. Es posible que necesite la propiedad de las numeraciones de Gödel y el teorema del punto de fijación para mostrar que un conjunto no es un conjunto de índices.smn

Vea aquí y aquí las publicaciones relacionadas sobre el teorema de Rice.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.