Problema da correspondência de Post

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O problema da correspondência de Post é um problema de decisão indecidível que foi introduzido por Emil Post em 1946..1 PCP é mais simples que o problema da parada e o Entscheidungsproblem por isso ele é frequentemente usado em provas de indecidibilidade.

Definição do Problema[editar | editar código-fonte]

A entrada do problema consiste em duas listas finitas \alpha_{1}, \ldots, \alpha_{N} e \beta_{1}, \ldots, \beta_{N} de palavras sobre algum alfabeto A tendo pelo menos 2 símbolos. Uma solução para esse problema é uma sequência de índices (i_k)_{1 \le k \le K} com K \ge 1 e  1 \le i_k \le N para todo k tal que

\alpha_{i_1} \ldots \alpha_{i_K} = \beta_{i_1} \ldots \beta_{i_K}.

O problema de decisão é, então, decidir se tal solução existe ou não.

Exemplo de instâncias do Problema[editar | editar código-fonte]

Exemplo 1[editar | editar código-fonte]

Considere as duas listas seguintes:

α1 α2 α3
a ab bba
β1 β2 β3
baa aa bb

Uma solução para esse problema seria a sequência (3, 2, 3, 1) porque

\alpha_3 \alpha_2 \alpha_3 \alpha_1 = bba + ab + bba + a = bbaabbbaa = bb + aa + bb + baa = \beta_{3} \beta_{2} \beta_{3} \beta_{1}.

além disso, desde que (3, 2, 3, 1) seja uma solução, então também é solução todas as suas "repetições", tais como (3, 2, 3, 1, 3, 2, 3, 1), etc.; Isso é, quando uma solução existe, existe mais infinitas soluções para esse tipo repetitivo.

Contudo, se duas listas consistissem de apenas \alpha_2, \alpha_3 e \beta_{2}, \beta_{3}, então não existiria solução ( porque então nenhum par correspondente teria a mesma ultima letra, como deve acontecer ao final de uma solução) Uma maneira conveniente de ver uma instância do problema de correspondência de Post é que dada uma coleção de blocos na forma:

αi
βi

de tal forma que haja um suprimento ilimitado de cada tipo de bloco. Assim, o exemplo acima é visto como abaixo:

a
baa
ab
aa
bba
bb
i = 1 i = 2 i = 3

Onde o "solucionador" tem um provimento infinito de cada um desses três tipos de blocos. Uma solução corresponde, de certa maneira, a colocar os blocos próximos uns dos outros de tal forma que a cadeia correspondente à célula de cima corresponda à cadeia na célula de baixo. Então a solução para o exemplo acima seria:

bba
bb
ab
aa
bba
bb
a
baa
i1 = 3 i2 = 2 i3 = 3 i4 = 1

Exemplo 2[editar | editar código-fonte]

Novamente, usando blocos para representar uma instância do problema, o problema seguinte é um exemplo de que existem infinitas soluções para o tipo obtido simplesmente "repetindo" uma solução.

bb
b
ab
ba
c
bc
1 2 3

Nessa instância, cada sequência na forma (1, 2, 2, ..., 2, 3) é uma solução (além de todas as suas repetições):

bb
b
ab
ba
ab
ba
ab
ba
c
bc
1 2 2 2 3

Esboço da prova de indecidibilidade[editar | editar código-fonte]

A maneira mais comum de se provar indecidibilidade de PCP descreve uma instância de PCP que pode simular uma computação em uma máquina de Turing com uma entrada particular. Uma correspondência somente irá ocorrer se a entrada for aceita pela máquina de Turing. Dado que saber se uma máquina de Turing irá aceitar uma entrada é um problema básico de indecidibilidade, PCP não pode ser decidível também. A discussão seguinte é baseada no livro de Michael Sipser's, " Introdução a teoria da computação"..2

Em mais detalhes, a idéia é que uma cadeia ao longo da parte superior e inferior seja um histórico de computação. Isso significa que isso irá listar uma cadeia descrevendo o estado inicial seguido de uma cadeia descrevendo o próximo estado e assim por diante até que seu fim seja uma cadeia descrevendo um estado de aceitação. As cadeias de estado são separadas por alguns símbolos (geralmente escritos como #). Segundo a definição de máquina de Turing, o estado completo de uma máquina consiste de 3 partes:

  • O conteúdo atual da fita
  • O estado atual da maquina de estado finita na qual opera o cabeçote da maquina
  • A posição atual do cabeçote sobre a fita

Embora a fita tenha infinitas células, só alguns prefixos finitos destes serão do tipo não-brancos. Escrevemos esses abaixo como parte do nosso estado. Para descrever o estado de controle finito, nos criamos símbolos rotulados q1 até qk, para cada um dos "k" estados finitos da maquina. Nos inserimos o simbolo correto na cadeia descrevendo o conteúdo da fita na posição em que se encontra o cabeçote, indicando, assim, tanto a posição da cabeça da fita e do estado atual do controle finito. Para o alfabeto {1,0}, um estado típico poderia ser algo como:

101101110q700110.

Uma história da computação simples seria então algo do tipo:

q0101#1q401#11q21#1q810.

Começamos com este bloco, onde "x" é a sequência de entrada e q0 é o estado inicial:

 
q0x#

O topo começa "defasado" em relação a cadeia de baixo por um Estado, e mantém esta defasagem até a fase final. Em seguida, para cada símbolo do alfabeto da fita, bem como #, temos uma "cópia" do bloco, que copia o símbolo sem modificações de um estado para o outro:

a
a

Nos também temos um bloco para cada posição de transição que uma máquina pode fazer, mostrando como o cabeçote se move, como os estados finitos mudam e o que acontece com os estados circundantes. Por exemplo, aqui o cabeçote esta sobre um 0 no estado 4, e então escreve um 1 e move-se para a direita, mudando para o estado 7:

q40
1q7

Finalmente, quando o topo alcança o estado de aceitação, a parta inferior precisa de uma mudança para finalmente alcançar a correspondência completa. Para isso acontecer, nos precisamos estender a computação para que uma vez o estado de aceitação ser alcançado, cada passo subsequente da máquina irá causar a um simbolo próximo ao cabeçote que desapareça, um por vez até existir mais nenhum. Se qf é um estado de aceitação, nos podemos representar isso com os seguintes blocos de transição, onde "a" é um símbolo do alfabeto da fita:

qfa
qf
aqf
qf

Há um bom número de detalhes a serem trabalhados, tais como lidar com limites entre estados, mas isso apenas mostra a idéia geral de como uma "charada" desse tipo pode simular uma computação da máquina de Turing.

Variantes[editar | editar código-fonte]

Muitas variantes do PCP têm sido consideradas. Uma razão é de que quando se tenta provar indecidibilidade de algum novo problema através da redução da PCP, muitas vezes acontece de uma primeira redução encontrada não ser PCP em si, mas de uma versão aparentemente mais fraca do PCP.

  • A condição de que o alfabeto A tem que ter pelo menos dois símbolos é exigido desde que o problema é decidível se A tiver apenas um simbolo.
  • Uma variante simples é fixar n, o número de "telhas". Este problema é decidível se n ≤ 2, mas permanece indecidível para n ≥ 7. É desconhecido se o problema é decidível para 3 ≤ n ≤ 6.
  • O problema de correspondência circular de Post pergunta se índices i_1, i_2, ... podem ser encontrados tal que \alpha_{i_1} \cdots \alpha_{i_k} e\beta_{i_1} \cdots \beta_{i_k} são palavras conjugadas, ou seja, eles são iguais a rotação modulo. Esta variante é indecidível.3
  • Uma das variantes mais importantes do PCP é o problema de correspondência limitada de Post', que pergunta se podemos encontrar um jogo usando não mais do que k "telhas" , incluindo "azulejos" repetidos. A busca de força bruta resolve o problema em tempo O(2k), mas isso pode ser difícil de melhorar, já que o problema é NP-completo.4 Ao contrário de alguns problemas NP-completos como o problema da satisfatibilidade booleana, uma pequena variação do problema delimitado também foi mostrado para ser completa para "RNP", o que significa que continua a ser difícil até mesmo se as entradas são escolhidas aleatoriamente (é difícil, em média, entradas distribuídas uniformemente).5
  • Outra variante do PCP é chamado o problema de correspondência marcada de Post, em que cada ui deve-se começar com um símbolo diferente, e cada vi também devem começar com um símbolo diferente.Halava, Hirvensalo, e De Wolf mostraram que esta variação é decidível em tempo exponencial. Além disso, eles mostraram que, se essa exigência é ligeiramente "frouxa" então que apenas os prefixos de dois caracteres precisem diferenciar-se (a chamada problema de correspondência Post 2-marcado), o problema torna-se indecidível novamente.6
  • O problema embutido de Post é outra variante em que se olha para os índices i_1, i_2, ... tal que \alpha_{i_1} \cdots \alpha_{i_k} é uma sub-palavra(espalhada) de \beta_{i_1} \cdots \beta_{i_k}. Esta variante é facilmente decidível uma vez que, quando algumas soluções existem, em particular uma solução de tamanho um existe. Mais interessante é o problema embutido regular de Post, uma variante ainda mais além quando se olha para as soluções que pertencem a uma determinada linguagem regular (apresentado, por exemplo, sob a forma de uma expressão regular sobre o conjunto \{1,...,N\}). O problema embutido regular de Post ainda é decidível, mas, por causa da restrição adicional regular, ele tem uma complexidade muito alta que domina cada função de multiplicativa recursiva.7

Referências

  1. E. L. Post. (1946). "A variant of a recursively unsolvable problem". Bull. Amer. Math. Soc 52.
  2. Michael Sipser. Introduction to the Theory of Computation. 2nd ed. [S.l.]: Thomson Course Technology, 2005. 199–205 p. ISBN 0-534-95097-3
  3. K. Ruohonen. (1983). "On some variants of Post's correspondence problem". Acta Informatica 19 (4): 357–367. Springer. DOI:10.1007/BF00290732.
  4. Michael R. Garey; David S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. [S.l.]: W.H. Freeman, 1979. p. 228. ISBN 0-7167-1045-5
  5. Y. Gurevich. (1991). "Average case completeness". J. Comp. Sys. Sci. 42 (3): 346–398. Elsevier Science. DOI:10.1016/0022-0000(91)90007-R.
  6. V. Halava; M. Hirvensalo and R. de Wolf. (2001). "Marked PCP is decidable". Theor. Comp. Sci. 255: 193–204. Elsevier Science. DOI:10.1016/S0304-3975(99)00163-2.
  7. P. Chambart; Ph. Schnoebelen. (2007). "Post embedding problem is not primitive recursive, with applications to channel systems". Lecture Notes in Computer Science 4855: 265–276. Springer. DOI:10.1007/978-3-540-77050-3_22.

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