L (complejidad)

Clase de complejidad (espacio logarítmico)

En la teoría de la complejidad computacional , L (también conocida como LSPACE , LOGSPACE o DLOGSPACE ) es la clase de complejidad que contiene problemas de decisión que pueden ser resueltos por una máquina de Turing determinista utilizando una cantidad logarítmica de espacio de memoria escribible . [1] [2] Formalmente, la máquina de Turing tiene dos cintas, una de las cuales codifica la entrada y solo puede leerse, [3] mientras que la otra cinta tiene un tamaño logarítmico pero puede leerse y escribirse. El espacio logarítmico es suficiente para contener un número constante de punteros a la entrada [1] y un número logarítmico de indicadores booleanos, y muchos algoritmos básicos de espacio logarítmico utilizan la memoria de esta manera.

Problemas completos y caracterización lógica

Todo problema no trivial en L es completo bajo reducciones del espacio logarítmico , [4] por lo que se requieren reducciones más débiles para identificar nociones significativas de L -completitud, siendo las más comunes las reducciones de primer orden .

Un resultado de 2004 de Omer Reingold muestra que USTCON , el problema de si existe un camino entre dos vértices en un gráfico no dirigido dado , está en L , lo que demuestra que L = SL , ya que USTCON es SL -completo. [5]

Una consecuencia de esto es una caracterización lógica simple de L : contiene precisamente aquellos lenguajes expresables en lógica de primer orden con un operador de cierre transitivo conmutativo agregado (en términos de teoría de grafos , esto convierte cada componente conectado en una clique ). Este resultado tiene aplicación a los lenguajes de consulta de bases de datos : la complejidad de datos de una consulta se define como la complejidad de responder a una consulta fija considerando el tamaño de los datos como la entrada variable. Para esta medida, las consultas contra bases de datos relacionales con información completa (sin noción de nulos ) como se expresa por ejemplo en el álgebra relacional están en L .

L es una subclase de NL , que es la clase de lenguajes decidibles en el espacio logarítmico en una máquina de Turing no determinista . Un problema en NL puede transformarse en un problema de alcanzabilidad en un grafo dirigido que representa estados y transiciones de estado de la máquina no determinista, y el límite del espacio logarítmico implica que este grafo tiene un número polinomial de vértices y aristas, de lo que se deduce que NL está contenido en la clase de complejidad P de problemas resolubles en tiempo polinomial determinista. [6] Por lo tanto , L  ⊆  NL  ⊆  P. La inclusión de L en P también se puede demostrar de forma más directa: un decisor que utiliza el espacio O (log  n ) no puede utilizar más de 2 O (log  n )  =  n O (1) tiempo, porque este es el número total de configuraciones posibles.

L se relaciona además con la clase NC de la siguiente manera: NC 1  ⊆  L  ⊆  NL  ⊆  NC 2 . En palabras, dada una computadora paralela C con un número polinomial O ( n k ) de procesadores para alguna constante k , cualquier problema que pueda resolverse en C en tiempo O (log  n ) está en L , y cualquier problema en L puede resolverse en tiempo O (log 2  n ) en C .

Problema sin resolver en informática :
⁠ ⁠ yo = ? PAG {\displaystyle {\mathsf {L}}{\overset {?}{=}}{\mathsf {P}}}

Entre los problemas abiertos importantes se incluyen si L  =  P , [2] y si L  =  NL . [7] Ni siquiera se sabe si L  =  NP . [8]

La clase relacionada de problemas de función es FL . FL se utiliza a menudo para definir reducciones del espacio logarítmico .

Propiedades adicionales

L es bajo por sí mismo, porque puede simular consultas de oráculo en espacio de registro (en términos generales, "llamadas de función que utilizan espacio de registro") en espacio de registro, reutilizando el mismo espacio para cada consulta.

Otros usos

La idea principal del espacio logarítmico es que uno puede almacenar un número de magnitud polinomial en el espacio logarítmico y usarlo para recordar punteros a una posición de la entrada.

Por lo tanto, la clase logspace es útil para modelar cálculos en los que la entrada es demasiado grande para caber en la RAM de una computadora. Las secuencias de ADN y bases de datos largas son buenos ejemplos de problemas en los que solo una parte constante de la entrada estará en la RAM en un momento dado y donde tenemos punteros para calcular la siguiente parte de la entrada a inspeccionar, utilizando así solo memoria logarítmica.

Véase también

Notas

  1. ^ ab Sipser (1997), pág. 295, Definición 8.12
  2. ^ ab Garey y Johnson (1979), pág. 177
  3. ^ En una cinta de entrada de lectura/escritura, se podría obtener una cantidad lineal de memoria mediante el empaquetamiento de símbolos (como en la prueba del teorema de aceleración lineal ), evadiendo así la restricción del espacio logarítmico.
  4. ^ Véase Garey & Johnson (1979), pág. 179, Teorema 7.13 (reivindicación 2)
  5. ^ Reingold, Omer (2005). Conectividad ST no dirigida en el espacio logarítmico. STOC'05: Actas del 37.º Simposio Anual de la ACM sobre Teoría de la Computación . ACM, Nueva York. págs. 376–385. doi :10.1145/1060590.1060647. MR  2181639. ECCC  TR04-094.
  6. ^ Sipser (1997), Corolario 8.21, pág. 299.
  7. ^ Sipser (1997), pág. 297; Garey y Johnson (1979), pág. 180
  8. ^ "Teoría de la complejidad: ¿es posible que L = NP?"

Referencias

Obtenido de "https://es.wikipedia.org/w/index.php?title=L_(complejidad)&oldid=1257247493"