Complejidad de la Lógica de Primer Orden: Parte I

Anuncio
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
Descargar