• No se han encontrado resultados

P vs NP. Frank Vega Delgado 1

N/A
N/A
Protected

Academic year: 2021

Share "P vs NP. Frank Vega Delgado 1"

Copied!
10
0
0

Texto completo

(1)

1

P vs NP

Frank Vega Delgado1

Abstract: The relationship between the complexity classes and

is a question that has not been answered by the theory of computation. The existence of a language in

that is not in , is sufficient evidence to prove that

. If a language is not recursive it can not belong to the complexity class , hence it is proved that if a language is in

and is not recursive then this also implies that

. A problem with this feature it’s shown in this paper if we assume the hypothesis

=

. That’s why it can confirm by reduction ad absurdum the opposite:

. The new problem, discovered when we formulated this hypothesis, is to find a possible input given an algorithm (which resolve a member of

) and an output. This can be solved by a Turing’s machine, its complement doesn’t.

1 Introducción

La pregunta ¿

=

? ha motivado el desarrollo en el campo de la lógica matemática y de la tecnología electrónica durante la mitad del siglo XX y comienzo del XXI. Es considerado en este momento como unos de los problemas más importantes en la matemática y la ciencia de la computación.

En la primera mitad del siglo XX se trabajó en formalizar el conocimiento sobre los algoritmos, usando el modelo teórico descrito por las máquinas de Turing y se encontraron ciertos problemas que no eran algorítmicamente solucionables. Por esa fecha surgieron las primeras computadoras y los matemáticos intentaron modelar las capacidades y limitaciones de tales dispositivos, germinando precisamente lo que hoy se conoce como la ciencia de la Complejidad Computacional.

Desde temprano las computadoras agilizaron muchas tareas que el hombre no podía hacer, pero en ocasiones se encontraban problemas difíciles y lentos de resolver por las más veloces computadoras de la época. La única manera de evitar tales demoras era encontrar un método de evadir la búsqueda exhaustiva que venía acompañada de la “fuerza bruta”.

1 Licenciado en Ciencia de la Computación, Ciudad de la Habana, Cuba.

(2)

2

La pregunta ¿

=

? consiste en saber si existe algún método de impedir esta demora existente. Si los problemas que se puedan verificar rápidamente tuvieran una solución rápida, entonces se podría prescindir en múltiples casos de la ineficiente fuerza bruta. Esta pregunta ha atraído la atención considerable de los especialistas y del mundo en general. Sin duda alguna

ha abrazado los fundamentos de la matemática y de la ciencia de la computación teniendo un gran impacto sobre estas ramas.

Se pretende en este artículo, como principal propuesta, dar respuesta a esa interrogante y, además, esclarecer las siguientes:

- ¿Se podría encontrar, dada una salida de un algoritmo de un problema que pertenece a

, alguna entrada por la cual se ejecute este algoritmo y se produzca esa salida?

- ¿Se podría demostrar que una cadena de caracteres no pertenece a la salida de un algoritmo de un problema que está en

?

Church y Turing en su trabajo de Entschiedungsproblem mostraron la existencia de problemas sin solución algorítmica e importantes herramientas que lo prueban. En este artículo se intenta dar respuesta a esas interrogantes usando esas mismas herramientas que hoy en día se siguen empleando dentro de la Teoría de la Computabilidad y en la Complejidad Computacional.

2 Definiciones básicas

La tesis formulada por Alan Turing y Alonzo Church, de forma independiente a mediados del siglo XX, prueba matemáticamente que para cualquier programa de computadora es posible crear una máquina de Turing equivalente. Eso implica que las máquinas de Turing realmente capturan la noción de lo que es un algoritmo o un procedimiento efectivo llevado a cabo por un humano o por una máquina.

Una máquina de Turing posee un conjunto finito de estados donde es el estado inicial y un conjunto finito de símbolos que se le llama el alfabeto de . El alfabeto contiene símbolos especiales como el símbolo inicial

. El funcionamiento de una máquina de Turing se basa en una función de transición

, que recibe un estado inicial y una cadena de caracteres pertenecientes al alfabeto. Luego se va leyendo las celdas en una o varias cintas donde se encuentra ubicada la cadena de caracteres que se pasa como entrada y se borran y escriben en cada paso los símbolos pertenecientes al alfabeto para finalmente avanzar a la izquierda

, a la derecha

o permanecer

(3)

3

en el mismo lugar

(por cada celda a la vez), repitiendo esto según se indique en la función de transición, por último, se detiene en un estado final que puede ser de aceptación

"sí"

o de rechazo

" "

, representando así la salida.

A la función de transición

se le conoce también como el “programa” de la máquina de Turing y se representa como un trío

( , ) = ( , , )

por cada estado actual

y símbolo actual del alfabeto, con

como próximo estado,

el símbolo que sobrescribe a

y

∈ {⟶, ⟵, −}

sería la dirección en la que se mueve el cursor.

Cuando existe más de una cinta,

sigue decidiendo el próximo estado pero puede sobrescribir símbolos diferentes y moverse en diferentes direcciones sobre cada cinta.

Se definen las operaciones realizadas por una máquina de Turing usando una configuración que contiene una completa descripción del estado actual en que se encuentra la máquina. Una configuración es un trío

( , , )

donde

es el estado actual y

,

son cadenas sobre el alfabeto que muestran a la cadena a la izquierda del cursor (incluyendo al símbolo escaneado) y a la cadena a la derecha del cursor respectivamente, durante cualquier instante en el que se transite por ; en ocasiones cuando se encuentra vacía alguna de estas cadenas se pone el símbolo . La definición de configuración se puede extender a múltiples cintas utilizando sus respectivos cursores.

Las cadenas de entrada de un algoritmo definen a un lenguaje. Existen distintos tipos de lenguaje clasificados según su comportamiento en las máquinas de Turing. Ejemplo de ello es el lenguaje recursivo, un tipo de lenguaje formal que también es llamado decidible o Turing-decidible, que se caracteriza porque existe una máquina de Turing que acepta cualquier palabra del lenguaje o de lo contrario rechaza. En caso de que nunca termine en vez de rechazar la palabra se dice que el lenguaje es recursivamente enumerable.

Existe una máquina de Turing capaz de simular el comportamiento de otras máquinas de Turing para una determinada entrada y se le nombra como máquina universal de Turing. Realizando una codificación de las máquinas de Turing se puede construir el alfabeto que utiliza esta máquina universal. Alan Turing descubrió por primera vez un problema que era recursivamente enumerable pero no era recursivo, le llamó HALTING y es el lenguaje que contiene a todas las máquinas de Turing

con entrada

codificadas según la máquina universal tal que

llega a parar con

.

(4)

4

Las máquinas de Turing se dividen en dos importantes categorías según la cantidad de posibles ejecuciones en cada paso de su programa. Si en los pasos de una máquina de Turing existe a lo sumo una posibilidad de ejecución, se dice que es una máquina de Turing determinista, mientras que en el caso de que exista más de una posible combinación de actuaciones se dice que se trata de una máquina de Turing no determinista.

Las máquinas de Turing deterministas y no deterministas caracterizan a dos principales clases de complejidades: las clases

y

. Una clase de complejidad es un conjunto de lenguajes agrupados por diferentes medidas de complejidad como el tiempo de corrida, la memoria utilizada, etc.

Se puede decir que la clase es el conjunto de lenguajes que representan a los problemas rápidos de resolver por una computadora. De ahí que tenga tanta importancia dentro de la ciencia de la computación. Esta clase está relacionada intrínsecamente con las máquinas de Turing deterministas y también con el tiempo de corrida polinómico en que se ejecutan estas máquinas de Turing.

La clase

al contrario de la clase resulta difícil encontrarle una solución veloz para muchos de los lenguajes que contiene y se define por aquellos que son decididos por alguna máquina de Turing no determinista en tiempo polinómico. También se puede definir a la clase de complejidad

como los lenguajes que pueden ser verificados rápidamente por una máquina de Turing determinista. A la cadena que permite la verificación de forma rápida se le conoce con el nombre de “certificado”.

Ha existido una interrogante que no ha encontrado respuesta dentro de la comunidad científica hasta ahora, y es el hecho de saber si se pueden resolver rápidamente los problemas que son fácilmente verificables o sea si ¿

=

?.

Se intenta resolver más adelante esa interrogante usando los conocimientos descritos en este capítulo, definiendo por hipótesis que

=

para luego deducir todo lo contrario a través de la regla por reducción al absurdo. También se define un conjunto de máquinas de Turing capaces de ejecutar rápidamente a los problemas de la clase de complejidad

,

si esa hipótesis realmente fuera posible

.

Luego se expone un problema que engloba y explica las preguntas propuestas en este documento deduciendo que la hipótesis inicial era incorrecta y que precisamente

.

(5)

5

3 Hipótesis y máquinas de Turing Certificadas

Se define la siguiente hipótesis:

=

. En base a esta hipótesis se llegará a una contradicción, demostrándose por reducción al absurdo lo contrario que es precisamente el resultado que persigue este documento:

.

Se empieza definiendo un conjunto de maquinas de Turing deterministas que deciden polinómicamente a los lenguajes de la clase

.

Definición 3.1: Una máquina de Turing Certificada es una máquina de Turing de - cintas que cumple:

a)

es determinista y decide en tiempo polinómico a un lenguaje

.

b) El estado inicial de se usa solamente para leer el símbolo de comienzo

de cada cinta y avanzar de este modo hacia otros estados en la función de transición de .

c)

,

de las -cintas, posee una cinta para la entrada y otra para la salida que serán la primera y última respectivamente.

d) Cuando

acepte la cadena de entrada , se dice que

( ) = " í"

y su configuración final será

( í, ⊳, , ⊳, , ⊳, , … , ⊳, )

, es decir, que en todas las cintas se encuentra el cursor posicionado en el símbolo de comienzo y a excepción de la cinta de salida, todas las demás quedan vacías (esta aseveración no toma en cuenta al símbolo de comienzo). Nótese que en la cinta de salida se finalizó poniéndose la cadena

que es el certificado para la cadena

.

El conjunto de las máquinas de Turing Certificadas se representa abreviadamente

. De este conjunto se plantea lo siguiente:

Proposición 3.1: Para cualquier máquina de Turing de -cintas

que decide en tiempo polinómico a un lenguaje

, existe otra máquina de Turing de (

+ 2)

-cintas con cintas de entrada y salida que simula a

con el mismo orden y

.

La máquinas y coinciden en el inciso a) de la definición de debido a la propia descripción que se hizo de en la proposición y que se tomará como premisa.

Se asume que el inciso b) se puede resolver adicionando de antemano un estado adicional en . Para los incisos restantes de la definición de se va a utilizar la siguiente demostración constructiva:

(6)

6

La máquina de Turing comienza copiando la entrada contenida en la primera cinta sobre la segunda y luego simula las

cintas de

en las enumeradas desde la 2 hasta la

( + 1).

Cuando

termina, vacía todas las cintas que simulaban a

después de copiar la cadena de salida de

en la cinta

( + 2)

y luego regresa todos los cursores hacia el símbolo de comienzo de cada cinta, borrando desde luego la cinta de entrada y parando después en un estado correspondiente con el que terminó

(de aceptación o de rechazo). Es necesario resaltar que si

se detiene aceptando, entonces su cadena de salida será el certificado de la cadena de entrada, la cual va a coincidir con la salida en .

Las máquinas de Turing que decidan en tiempo polinómico a un lenguaje

garantizan la ejecución rápida del problema que ese lenguaje representa, por consiguiente, las máquinas de Turing Certificadas cumplen esa misma función a pesar de contener estas particularidades en su definición.

4 El lenguaje CERTIFICANDO

Se define un problema llamado CERTIFICANDO de la siguiente manera: ¿Dada una máquina de Turing Certificada

y

∈ {0,1}

, existe

∈ {0,1}

tal que

( ) = " í"

con la cadena de salida ?

Definición 4.1: CERTIFICANDO (abreviadamente ) es un lenguaje sobre el alfabeto de la máquina universal de Turing definido como:

= { ; : ∈

, ∃ ( ) = "sí" }

El lenguaje

demuestra que precisamente la cadena

∈ {0,1}

es certificado de alguna cadena

cuando

∈ .

De esta definición se deduce una importante proposición:

Proposición 4.1: El lenguaje pertenece a la clase

.

Dada cualquier instancia de este lenguaje

( ; ) ∈

, esta puede ser verificada polinómicamente una vez hallada

∈ {0,1}

, simplemente evaluando y comprobando la validez del certificado para la cadena encontrada.

Para demostrar que el problema CERTIFICANDO tiene solución en una computadora es necesario que al menos sea aceptado por alguna máquina de Turing.

(7)

7

Proposición 4.2:

es recursivamente enumerable.

Se necesita diseñar una máquina de Turing que acepte a . Para ello se construye para cualquier máquina de Turing de -cintas donde

, otra máquina de Turing de -cintas que cumpla que:

1) El alfabeto de es el mismo que el de .

2) Se construye los estados y la transición de a partir de la función de transición

y los estados de :

a) Si se tiene que

( , , , … , ) = , ,

, ,

, … , ,

entonces para todos los estados de

en que

( ,

,

, … ,

) = ( ,

, ,

, , … ,

, )

, se adicionan en

la siguiente relación utilizando y :

( , , , … , ) = ( , , , , , … , , )

donde se cumpla que

( = ⟵) ⟹ ( =⟶) ∧ ( = ⟶) ⟹ ( =⟵) ∧ (( = −) ⟹ ( = −))

deba ser verdadero para

1 ≤ ≤

. En el caso particular en que

=

se debe aplicar la modificación en

solo si

( , , … , ) ≠ (

,

, … ,

)

.

b) El estado inicial

en

se remplaza por el estado final

í

de , mientras que el estado de rechazo de

se mantiene igual en .

c) El estado de aceptación

í

de

se convierte en el estado inicial en y para cualquier estado

que aparezca relacionado con el estado de aceptación de usado en

de esta manera

( , , , … , ) = ( í, , , , , … , , ),

se construye en

lo siguiente:

( , ⊳, ⊳ , … , ⊳ ) = ( , ⊳, , ⊳, , … , ⊳, )

donde

= ⟶

.

3) ubica su entrada en la -ésima cinta y su salida en la primera cinta.

Se deducen varios corolarios a partir de la definición anterior que describen algunas particularidades de esta máquina de Turing.

Corolario 4.1: Si no acepta la entrada entonces nunca termina.

A través de la construcción de

se aprecia que es imposible alcanzar el estado de rechazo desde el estado inicial de .

Corolario 4.2: será mayormente no determinista.

(8)

8

Es suficiente con que en la función de transición

de

se llegue a un estado a través de al menos otros dos para que deje de ser una función.

La cualidad más relevante de esta máquina de Turing es la que se presenta a continuación:

Proposición 4.3: Si

es una máquina de Turing de -cintas donde

y se cumple que

( ) = " í"

con el certificado , entonces

( ) = " í"

y su cadena de salida podrá ser .

En la construcción de sobre se logra que en todos los estados, excepto los estados de parada y el de inicio, se cambien aquellos símbolos que se leen en las cintas por los símbolos que sobrescriben a estos durante los pasos en la función de transición de y viceversa. Se puede además comprobar que es prácticamente un “espejo” de y transita de modo inverso por los estados de hacia los antecesores que aparecen en la función de transición , cambiando así, la dirección en el movimiento de las -cintas de

simulándola “hacia atrás”.

Como empieza con la salida de en su cinta de entrada se pudiera alcanzar, dirigiéndose en reverso por los estados de , la configuración

( í, ⊳, , ⊳, , ⊳ , , … , ⊳, )

, que prácticamente coincide con la configuración inicial de 2. Para lograr lo anterior se debe simular la ejecución de con utilizando una máquina universal de Turing que se va a denotar . La máquina posee la particularidad de que en ella se despliegan al mismo tiempo todas las variantes posibles del programa 3 (almacenándose todas las cadenas resultantes), permitiendo que se puedan tomar múltiples decisiones por cada paso, sin dejar de descartar ni un solo camino posible de aceptación, pero a la vez, sin llegar a priorizar a ninguno por el cual jamás pare.

Si se llega al estado de aceptación de , procesando al unísono todas las posibles combinaciones de , entonces verifica si realmente la salida generada cumple con el certificado . En caso de que la verificación resulte fallida se continúa ejecutando el resto de los pasos de , si no finaliza aceptando. Esta máquina universal de Turing termina sin aceptar su entrada solo si se alcanza el estado de rechazo en para un determinado

(acción que es imposible que ocurra).

2 El estado inicial de se remplazó por el estado í en .

3 En la mayoría de los casos es no determinista.

(9)

9

Por lo tanto se puede concluir que el lenguaje es recursivamente enumerable, pues para cualquier

y

∈ {0,1}

, existe una máquina de Turing que se construye a partir de

y si acepta a

mediante , entonces se demuestra que

( , ) ∈

.

5 CERTIFICANDO y la clase P

Este capítulo comienza con la siguiente pregunta: ¿Pertenece el lenguaje a la clase

?

La no recursividad del problema CERTIFICANDO podría ser tomado como punto de partida para responder a esta pregunta.

Teorema 5.1: El lenguaje

no es recursivo.

Si se supone que exista una máquina de Turing que decida al lenguaje

y se toma a la máquina universal de Turing que acepta al lenguaje HALTING 4 (abreviadamente ), entonces esquemáticamente se puede definir a la máquina de Turing como:

( , ) ∶ ( , ( , )) = "sí"

( , ) ( , ( , ))

Con esta solución se concluye que la recursividad de mediante implicaría de cierta manera que decida también al lenguaje , lo cual resulta imposible dada la naturaleza de este lenguaje5.

El resultado anterior determina al siguiente teorema a modo de conclusión:

Teorema 5.2:

≠ .

∈ ,

sin embargo no es recursivo, propiedad que cumplen todos los lenguajes que pertenecen a

por ser decididos por máquinas de Turing deterministas. Por lo tanto se ha llegado a una contradicción con respecto a la hipótesis inicialmente planteada, por ende, es razonable concluir con la siguiente respuesta:

.

4 El problema de parada descrito por Alan Turing.

5 El lenguaje no es recursivo.

(10)

10

6 Conclusiones

En esta sección se dará respuesta a las interrogantes propuestas en la Introducción:

1. El lenguaje CERTIFICANDO, al ser recursivamente enumerable, demuestra que es posible encontrar, dada una salida de un algoritmo de un problema que pertenece a

, alguna entrada por la cual se ejecute dicho algoritmo y se produzca esa salida. Esto es posible porque CERTIFICANDO recorre la máquina de Turing, que representa al algoritmo en cuestión, de modo inverso, logrando que se pueda encontrar al menos una entrada para una salida.

2. La no recursividad de CERTIFICANDO prueba que una computadora no puede demostrar si una cadena de caracteres no pertenece a la salida de un algoritmo de un problema que está en

. Resulta ser que si se pudiera encontrar una respuesta afirmativa para este problema, entonces el complemento de CERTIFICANDO también tendría solución, hecho que se demostró que era imposible.

Bibliografía

- Christos H. P. (1994). Computational Complexity. Sand Diego: Addison-Wesley.

- Thomas H. C., Charles E. L., Ronald L. R. y Clifford S. (2001). Introduction to Algorithms (2da ed.). Massachusetts: MIT Press.

- Michael R. G. y David S. J. (1979). Computers and Intractability. A Guide to the Theory of NP-Completeness. Bell Telephone Laboratories.

- Harry R. L. y Christos H. P. (1998). Elements of the Theory of Computation (2da ed.). New Jersey: Prentice-Hall.

-

Michael S. The History and Status of the P versus NP Question. Massachusetts.

Referencias

Documento similar

Avance 2021: Durante el año 2021 estuve trabajando en la incorporación de las correciones y observaciones de los capítulos 1 y 2 de mis tesis (“Los sectores medios en el siglo

Petición de decisión prejudicial — Cour constitutionnelle (Bélgica) — Validez del artículo 5, apartado 2, de la Directiva 2004/113/CE del Consejo, de 13 de diciembre de 2004, por

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

[r]

- Después de un declive del cultivo del viñedo a mediados del siglo XX; en 1.998 se produce un punto de inflexión (28 de febrero de 1.998) con la concesión por parte de la

Además esta cartera de complementos de formación propios del Programa de Doc- torado se abrirá y ofertará, siempre que la condiciones del proceso docente lo permitan y asegurando que

If certification of devices under the MDR has not been finalised before expiry of the Directive’s certificate, and where the device does not present an unacceptable risk to health

Y fue en algún momento de esta última lectura cuando surgió el estallido y el entendimiento de que el abordaje que se debería realizar sobre el contenido de la tesis