PSPACE-completude

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Ambox rewrite.svg
Esta página precisa ser reciclada de acordo com o livro de estilo (desde julho de 2011).
Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior.

Em teoria da complexidade computacional, um problema de decisão é PSPACE-completo se pertence à classe de complexidade PSPACE e todos os problemas em PSPACE podem ser reduzidos a ele em tempo polinomial. Os problemas PSPACE-completos podem ser vistos como os problemas mais difíceis em PSPACE, porque uma solução para qualquer problema PSPACE-completo pode ser facilmente utilizada para resolver qualquer outro problema em PSPACE. Em geral, acredita-se que tais problemas não pertencem às famosas classes de complexidade P e NP, mas isso ainda é desconhecido. Sabe-se que eles estão fora da pequena classe de problemas NC, já que NC está contido em PolyL = DSPACE((log n)O(1))), que está estritamente contido em PSPACE pelo teorema da hierarquia de espaço.

Discussão[editar | editar código-fonte]

O primeiro problema conhecido PSPACE-completo foi o problema das palavras para gramáticas determinística sensíveis ao contexto. No problema das palavras para gramáticas sensíveis ao contexto, é dado um conjunto de transformações gramaticais que podem aumentar, mas não diminuir, o comprimento de uma sentença, e visa determinar se uma dada sentença pode ser produzida por essas transformações. A condição técnica de "determinismo" (implicando, basicamente, que toda transformação deixa claro que ela foi utilizada) garante que esse processo é solúvel em espaço polinomial e o trabalho de S.-Y. Kuroda em 1964 "Classes de linguagens e autômatos linearmente limitados"[1] mostrou que qualquer programa computável (possivelmente não-determinístico) em espaço linear pode ser convertido em análise sintática de gramáticas sensíveis ao contexto, de maneira a preservar o determinismo.

Em 1970, o teorema de Savitch mostrou que PSPACE é fechado sob não-determinismo, implicando que até gramáticas não-determinísticas sensíveis ao contexto estão em PSPACE.

Mas o problema arquetípico PSPACE-completo é geralmente considerado como sendo o problema da fórmula booleana completamente quantificada (usualmente abreviado para QBF ou TQBF), uma generalização do primeiro problema NP-completo conhecido, o problema da satisfatibilidade de fórmulas booleanas (SAT). O problema da satisfatibilidade é o problema de determinar se há valorações-verdade para variáveis que tornam uma expressão booleana verdadeira. Por exemplo, uma instância de SAT seria a questão de se determinar se a sentença seguinte é verdadeira:

\exists x_1 \, \exists x_2 \, \exists x_3 \, \exists x_4: (x_1 \or \neg x_3 \or x_4) \and (\neg x_2 \or x_3 \or \neg x_4)

O problema de fórmulas booleanas quantificadas difere no sentido de que permite tanto o quantificador universal quanto o existencial sobre os valores das variáveis, como por exemplo:

\exists x_1 \, \forall x_2 \, \exists x_3 \, \forall x_4: (x_1 \or \neg x_3 \or x_4) \and (\neg x_2 \or x_3 \or \neg x_4).

A prova de que QBF é um problema PSPACE-completo é essencialmente uma reestruturação da prova do teorema de Savitch na linguagem da lógica, e é um pouco mais técnica.

Note que um problema NP-completo lembra um quebra-cabeças: há uma maneira de encaixar os valores para solucionar o problema? Os problemas PSPACE-completos lembram um jogo: há algum movimento que eu possa fazer de tal forma que, para todos os movimentos que meu oponente possa fazer, haverá algum outro movimento que eu possa fazer para vencer? Essa questão utiliza tanto quantificadores existenciais quanto universais. Não é surpresa que muitos quebra-cabeças se revelam NP-completos e muitos jogos se mostram PSPACE-completos.

Exemplos de jogos PSPACE-completos (quando generalizados de tal maneira que possam ser jogados num tabuleiro n × n) são os jogos Hex, Reversi, Mahjong, Atomix e Sokoban. Alguns outros jogos como xadrez, damas e Go são EXPTIME-completos porque um jogo entre dois jogadores perfeitos pode ser muito longo, então é improvável que estejam em PSPACE. Entretanto, eles se tornam PSPACE-completos se há um limite polinomial no número de movimentos.

Note que a definição de PSPACE-completude é baseada em uma complexidade assintótica: o tempo necessário para resolver um problema de tamanho n, com o limite sendo n, cresce sem limitações. Isso significa que jogos como damas (que é jogado num tabuleiro 8 × 8) nunca poderia ser PSPACE-completo (de fato, eles podem ser resolvidos em tempo e espaço constantes utilizando uma tabela de símbolos extremamente grande). Esse é o motivo pelo qual todos os jogos foram modificados para serem jogados em tabuleiros n × n.

Outro problema PSPACE-completo é o problema de se decidir se uma dada cadeia é membro de uma linguagem definida por uma gramática sensível ao contexto.

Exemplos de problemas PSPACE-completos[editar | editar código-fonte]

Os seguintes problemas PSPACE-completos serão mostrados junto com seus algoritmos demonstrando que estão em PSPACE.

TQBF[editar | editar código-fonte]

  • Seja TQBF = { <F> : F é uma fórmula booleana verdadeira totalmente quantificada}. Sobre a entrada F:
    • Se F não tem quantificador, avalie e aceite se e somente se F é verdade.
    • Se F=\forallpF', avalie recursivamente F'[p=1] e F'[p=0], aceitando se somente se ambos aceitam.
    • Se F=\existqF', avalie recursivamente F'[q=1], F'[q=0] e aceite se pelo menos um aceita.
  • Utilização de espaço: o número de níveis de recursão é igual ao número de variáveis de F. A quantidade de informação armazenada em cada nível da recursão é constante (valores das fórmulas para p=0 e p=1). Consequentemente, o espaço total utilizado é linear.[2]

Geografia generalizada[editar | editar código-fonte]

  • Sobre a entrada <G,b>:
    • Se b não tem vértices de saída, rejeite.
    • Se tem, remova b e todas as suas arestas e chame esse novo grafo de G1.
    • Rode recursivamente nas entradas <G1,bi>, em que cada bi são vértices ligados por arestas a partir de b.
    • Rejeite se tudo for aceito. Se não, aceite.
  • Utilização de espaço: o número de níveis de recursão é igual ao número de nós de G. A quantidade de informação armazenada em cada nível de recursão é igual ao número de nós de G. Consequentemente, o espaço total utilizado é linear.[2]

Determinando se uma linguagem regular gera todas as cadeias[editar | editar código-fonte]

Dada uma expressão regular R, determinar se ela gera todas as cadeias (i.e., L(R) = Σ*) é um problema PSPACE-completo.

Referências[editar | editar código-fonte]

  1. "Classes of languages and linear-bounded automata", Information and Control, 7(2): 207–223, June 1964
  2. a b François Pitt. Lecture Summary for Week 11 work. Visitado em 2008-02-12.

Ligações externas[editar | editar código-fonte]