Complejidad de la Lógica de Primer Orden Complejidad de la LPO Queremos estudiar la complejidad de evaluar una consulta en LPO. Vamos a estudiar dos nociones: Complejidad de los datos y Complejidad de las expresiones. Pero antes vamos a repasar algunas nociones de complejidad. - Necesitamos más clases que PTIME y NP. - Necesitamos modelos de computación paralela: Complejidad de circuitos. 1 Máquinas de Turing: Componentes Dado: Alfabeto Σ que no contiene sı́mbolo especial B. Componentes: - Memoria: Arreglo infinito (en ambas direcciones) que en cada posición almacena un sı́mbolo en Σ ∪ {B}. - Control: Conjunto finitos de estados, una cabeza lectora, un estado inicial y un conjunto de estados finales. - Programa: Conjunto de instrucciones. 2 Máquinas de Turing: Funcionamiento Inicialmente: - La máquina recibe como entrada una palabra w. - Coloca esta palabra en alguna parte del arreglo. En las posiciones restantes el arreglo contiene sı́mbolo blanco B. - La cabeza lectora se coloca en la primera posición de w y la máquina queda en el estado inicial q0 . 3 Máquinas de Turing: Funcionamiento En cada paso: - La máquina lee el sı́mbolo a en la celda apuntada por la cabeza lectora y determina en que estado q se encuentra. - Busca en el programa una instrucción para (q, a). Si esta instrucción no existe, entonces la máquina se detiene. - Si la instrucción existe, entonces la ejecuta: Escribe un sı́mbolo en la posición apuntada por la cabeza lectora, pasa a un nuevo estado, y deja la cabeza lectora en la posición en que estaba o la mueve una posición hacia la derecha o la izquierda. Si la máquina se detiene en un estado final, entonces la máquina acepta w. 4 Máquinas de Turing: Formalización Máquina de Turing: (Q, Σ, q0 , δ, F ) - Q es un conjunto finito de estados. - Σ es un alfabeto. - q0 es el estado inicial (q0 ∈ Q). - F es un conjunto de estados finales (F 6= ∅). - δ es una función parcial: δ : Q × Σ → Q × Σ × {I, D, N }. δ es llamada función de transición. Suponemos que su dominio no es vacı́o. 5 Máquinas de Turing: Ejemplo Sea M = (Q, Σ, q0 , δ, F ) una MT definida como: - Σ = {0}. - Q = {q0 , q1 , qS , qN }. - F = {qS }. - δ es definida como: δ(q0 , 0) = (q1 , 0, D) δ(q0 , B) = (qS , B, D) δ(q1 , 0) = (q0 , 0, D) δ(q1 , B) = (qN , B, D) ¿Qué hace esta máquina? 6 Máquinas de Turing: Ejecución Supongamos que w = 0000: Paso 0: . . . B B 0 0 0 0 B B . . . 0 0 0 B B . . . 0 0 B B . . . q0 Paso 1: . . . B B 0 q1 Paso 2: . . . B B 0 0 q0 7 Máquinas de Turing: Ejecución Paso 3: . . . B B 0 0 0 0 B B . . . B B . . . B . . . q1 Paso 4: . . . B B 0 0 0 0 q0 Paso 5: . . . B B 0 0 0 0 B qS 8 Máquinas de Turing: Palabra vacı́a Supongamos que w = ε: Paso 0: . . . B B B B . . . B . . . q0 Paso 1: . . . B B B qS Inicialmente: La cabeza lectora se encuentra en una posición cualquiera. 9 El lenguaje aceptado por una máquina de Turing Dada una máquina de Turing M = (Q, Σ, q0 , δ, F ): L(M ) = {w ∈ Σ∗ | M acepta w}. L(M ) es el lenguaje aceptado por M . En el ejemplo anterior: L(M ) = {w ∈ {0}∗ | largo de w es par}. 10 Máquinas de Turing no deterministas Notación: A las máquinas de Turing que hemos visto hasta ahora las llamamos deterministas. Máquina de Turing no determinista: (Q, Σ, q0 , δ, F ) - Q es un conjunto finito de estados. - Σ es un alfabeto. - q0 es el estado inicial (q0 ∈ Q). - F es un conjunto de estados finales (F 6= ∅). - δ ⊆ Q × Σ × Q × Σ × {I, D, N }: Relación de transición. Suponemos que δ 6= ∅. 11 Máquinas de Turing no deterministas: Funcionamiento Estado inicial: Tal como en una MT determinista. En cada paso: - La máquina lee el sı́mbolo a en la celda apuntada por la cabeza lectora y determina en que estado q se encuentra. - Determina el conjunto de todas las instrucciones para (q, a). Si este conjunto es vacı́o, entonces la máquina se detiene. - Si el conjunto no es vacı́o, entonces escoge una instrucción de este conjunto y la ejecuta. Si la máquina se detiene en un estado final, entonces la máquina acepta w. 12 Máquinas de Turing no deterministas: Lenguaje aceptado Dada una máquina de Turing M no determinista con alfabeto Σ: L(M ) = {w ∈ Σ∗ | existe alguna ejecución de M con entrada w que termina en un estado final}. 13 Máquinas de Turing no deterministas: Poder de computación ¿Son las máquinas de Turing no deterministas más poderosas que las deterministas? Teorema: Para cada MT no determinista M , existe una MT determinista M 0 tal que M y M 0 se detienen en las mismas palabras y L(M ) = L(M 0 ). 14 Complejidad de un algoritmo Dado: MT determinista M con alfabeto Σ que para en todas las entradas. - Paso de M : Ejecutar una instrucción de la función de transición. - tiempo M (w): Número de pasos ejecutados por M con entrada w. Dado un número natural n: tM (n) = máx{ tiempo M (w) | w ∈ Σ∗ y |w| = n}. tM : Tiempo de ejecución de M en el peor caso. 15 Complejidad de un problema Un lenguaje L puede ser aceptado en tiempo t si es que existe una MT determinista M tal que: - M para en todas las entradas. - L = L(M ). - tM es O(t), vale decir, existe c ∈ R+ y n0 ∈ N tal que tM (n) ≤ c · t(n) para todo n ≥ n0 . El tiempo para computar una función f se define de la misma forma. 16 Clases de complejidad Dado: Alfabeto Σ. DTIME(t): conjunto de todos los lenguajes L ⊆ Σ∗ que pueden ser aceptados en tiempo t. Dos clases fundamentales: PTIME = [ DTIME(nk ) k∈N EXPTIME = [ k DTIME(2n ) k∈N PTIME: Conjunto de todos los problemas que pueden ser solucionados eficientemente. 17 Clases de complejidad no deterministas Dado: MT no determinista M con alfabeto Σ. - Paso de M : Ejecutar una instrucción de la relación de transición. - tiempo M (w): Número de pasos de M con entrada w en la ejecución más corta que acepta a w. Sólo esta definido para palabras aceptadas por M . Dado un número natural n: tM (n) = máx{n} ∪ { tiempo M (w) | w ∈ Σ∗ , |w| = n y M acepta w}. ¿Por que incluimos {n} en la definición? 18 Clases de complejidad no deterministas Un lenguaje L es aceptado en tiempo t por una MT M no determinista si: - L = L(M ). - tM es O(t). 19 Clases de Complejidad no deterministas Dado: Alfabeto Σ. NTIME(t): Conjunto de todos los lenguajes que pueden ser aceptados en tiempo t por alguna MT no determinista. Dos clases fundamentales: NP = [ NTIME(nk ) k∈N NEXPTIME = [ NTIME(2 nk ) k∈N 20 Relación entre clases de complejidad ¿Cuál es la relación entre las clases de complejidad que acabamos de definir? Fácil de demostrar : PTIME ⊆ NP ⊆ EXPTIME ⊆ NEXPTIME. No tan fácil de demostrar : PTIME ( EXPTIME. Aún sin resolver : ¿PTIME ( NP? ¿Nos basta con estas clases? - No, también necesitamos clases definidas en término de espacio utilizado. 21 Espacio utilizado en una Máquina de Turing Para introducir la noción de espacio utilizado en una MT tenemos que distinguir entre: - el espacio ocupado por la entrada, y - el espacio necesario para procesar la entrada. Para hacer esta distinción utilizamos MT con dos cintas: - Cinta para la entrada: Sólo de lectura. - Cinta de trabajo: Como en una MT usual. El espacio utilizado se mide en términos de las celdas visitadas en la cinta de trabajo. 22 Máquinas de Turing con cinta de trabajo Máquina de Turing con cinta de trabajo: (Q, Σ, q0 , δ, F ) - Q es un conjunto finito de estados. - Σ es un alfabeto. - q0 es el estado inicial (q0 ∈ Q). - F es un conjunto de estados finales (F 6= ∅). - δ es una función parcial: δ : Q × Σ × Σ → Q × {I, D, N } × Σ × {I, D, N }. Suponemos que el dominio de δ no es vacı́o. 23 Espacio utilizado en una MT Dado: MT determinista M con alfabeto Σ que para en todas las entradas. - espacio M (w): número de celdas visitadas en la cinta de trabajo de M al procesar w. Dado un número natural n: sM (n) = máx{ espacio M (w) | w ∈ Σ∗ y |w| = n}. sM : Espacio utilizado en la ejecución de M en el peor caso. 24 Espacio utilizado para resolver un problema Un lenguaje L puede ser aceptado en espacio s si es que existe una MT determinista M tal que: - M para en todas las entradas. - L = L(M ). - sM es O(s). El espacio requerido para computar una función f se define de la misma forma. 25 Clases de complejidad: Espacio Dado: Alfabeto Σ. DSPACE(s): Conjunto de todos los lenguajes L ⊆ Σ∗ que pueden ser aceptados en espacio s. Tres clases fundamentales: LOGSPACE = PSPACE = DSPACE(log n) [ DSPACE(nk ) k∈N EXPSPACE = [ k DSPACE(2n ) k∈N 26 Relación entre clases de complejidad ¿Cuál es la relación entre las clases de complejidad que acabamos de definir? La relación es más compleja: LOGSPACE ⊆ PTIME ⊆ NP ⊆ PSPACE ⊆ EXPTIME ⊆ NEXPTIME ⊆ EXPSPACE. También se sabe que: LOGSPACE ( PSPACE ( EXPSPACE. Y todavı́a nos faltan las clases no deterministas ... 27 Clases de complejidad no deterministas: Espacio Dado: MT no determinista M con alfabeto Σ. - espacio M (w): Número mı́nimo de celdas visitadas en la cinta de trabajo de M , entre todas las ejecuciones de M que aceptan w. Sólo esta definido para palabras aceptadas por M . Dado un número natural n: sM (n) = máx{1} ∪ { espacio M (w) | w ∈ Σ∗ , |w| = n y M acepta w}. ¿Por que incluimos {1} en la definición? 28 Clases de complejidad no deterministas: Espacio Un lenguaje L es aceptado en espacio s por una MT M no determinista si: - L = L(M ). - sM es O(s). 29 Clases de Complejidad no deterministas: Espacio Dado: Alfabeto Σ. NSPACE(s): Conjunto de todos los lenguajes que pueden ser aceptados en espacio s por alguna MT no determinista. Tres clases fundamentales: NLOGSPACE = NPSPACE = NSPACE(log n) [ NSPACE(nk ) k∈N NEXPSPACE = [ NSPACE(2 nk ) k∈N 30 Relación entre clases de complejidad ¿Cuál es la relación entre las clases de complejidad que definimos? Se sabe que: PSPACE = NPSPACE y EXPSPACE = NEXPSPACE. La relación final: LOGSPACE ⊆ NLOGSPACE ⊆ PTIME ⊆ NP ⊆ PSPACE ⊆ EXPTIME ⊆ NEXPTIME ⊆ EXPSPACE 31 Un poco de intuición ... Antes de seguir necesitamos un poco de intuición sobre las clases de complejidad que acabamos de definir. Determine en qué clases de complejidad viven los siguientes problemas. 1. Dado un grafo dirigido G y nodos a, b, determinar si existe un camino de a a b. 2. El mismo problema que en 1. pero ahora suponiendo que G es una relación de sucesor. 3. Una cláusula C es de Horn si C contiene a lo más un literal positivo. Por ejemplo: p ∨ ¬q ∨ ¬r, p, ¬q ∨ ¬r y ¬q. Determinar si un conjunto de cláusulas de Horn es satisfacible. 32