Problema de Correspondência
de Post (PCP)
Teoria da Computação
O problema PCP
Input
g
abc
bcd
bcd
fg
eg
b
ef
1
2
3
4
…
ef
cde
n
Pergunta : É possivel encontrar uma sequência de
peças tal que o string formado na parte de cima e
idêntico ao string formado na parte de baixo ?
bcdefg
bcdefg
Sequência : 3 n 1
Exemplos
b
a
ca
abc
ca
ab
a
c
1
2
3
4
abcaaabc
abcaaabc
Sequência de peças= 2 1 3 2 4
Exemplo
Input
abc
ca
acc
ab
a
ba
1
2
3
Resposta ??
Não
Justificativa : a parte de cima das peças é sempre
maior que a parte de baixo !
Formalização do Problema
Input genérico do Problema PCP
C={
t1
b1
,
t2
b2
,
t3
b3
, …
,
tn
bn
}
t1, t2, …, tn são strings sobre um alfabeto S
b1, b2, …, bn são strings sobre um alfabeto S
Um pareamento (match) = uma sequência <i1, i2, …, ik> de
números em {1,…,n}
tal que
ti1 ti2 … tik = bi1 bi2 … bik
= string do pareamento
Formalização do Problema
• Pergunta do problema PCP :
Existe um pareamento para o input C ?
Configurações de uma MT
M = Máquina de Turing
w = string (por exemplo w = (0002102)
0
0
0
2
1
q
q0 0 0 0 2 1 0 2
0
2
B
B
B
0002q102
Configuração Inicial = Cin
0 0 0 2 qa 1 0 2
Configuração de Aceitação = Ca
0 0 0 2 qr 1 0 2
Configuração de Rejeição = Cr
B
Um passo de cálculo
Configuração 1  Configuração 2
0
0
0
2
1
4
0
2
B
B
q
0002q102
000q2402
B
B
Um passo de cálculo
Configuração 1  Configuração 2
0
0
0
2
1
4
0
2
B
q
0002q102
0 0 0 2 4 q0 2
B
B
B
Histórico de configurações
• M : máquina de Turing
• w = string sobre o alfabeto de M
• Histórico de configurações de M em w
Cin # C1 # C2 # …. # Ca
Cin # C1 # C2 # …. # Cr
Cin # C1 # C2 # …. # Cn …..
Problema PCP é indecidível
Técnica = redução de ATM para PCP
ATM
<M,w>
PCP
Um conjunto de peças, onde os
strings correspondem aos possiveis
passos de M ao ser executada em w
String pareado = corresponderá ao histórico de aceitação de w por M
Pareamento = corresponderá aos passos executados pela máquina,
partindo da configuração inicial até chegar numa configuração de
aceitação.
Assim : M aceita w se e somente se existir este pareamento
Idéia de Emil Post
#
Cin # C2 #
Cn #
#Cin
C2 #
Ca #
C3 #
Ca #
Primeira peça
String pareado = # Cin # C2 # C3 … # Ca #
Pareamento = sequência de peças correspondendo aos passos
realizados pela máquina até chegar no estado de aceitação qa
Peças = correspondem aos passos (transições) da
máquina de Turing
Exemplo
•
•
•
•
•
•
•
•
d(qo,0) = (q1,2,R)
d(q1,1) = (q2,0,R)
d(q2,0) = (q3,2,L)
d(q2,1) = (qr,1,R)
d(q3,0) = (q3,0,R)
d(q3,2) = (q3,2,R)
d(q3,2) = (q3,2,R)
d(q3,B) = (qa,B,R)
Máquina de Turing M
• w=0100
q0 0 1 0 0
2 0 q3 2 0
2 q1 1 0 0
2 0 2 q3 0
2 0 q2
2 0 2 0 q3
00
2 q3 0 2 0
2 0 2 0 B qa
Idéia
#
Cin # C2 #
C3 #
# Cin #
C2 #
C4 #
C3 #
Primeira peça
#
#q
0
0100
#
#
#q
0
0100
#
q0 0 1 0 0 #
2 q1 1 0 0 #
2 0 q2 0 0 #
2 q1 1 0 0 #
2 0 q2 0 0 #
2 q3 0 2 0 #
PEÇAS
g0 0
q
q1 1
0b qc2d0
1
2
0
#
2f gq1
0 q2
bq3 0 2
1
2
0
#
Problema
Definir um conjunto fixo de peças tal que seja possivel encadear
algumas dessas peças (no caso de M aceitar w) de modo a construir o string
de pareamento (em baixo e em cima da sequência das peças) :
# q0 0 1 0 0 # 2 q1 1 0 0 # 2 0 q2 0 0 # 2 q3 0 2 0 # 2 0 q3 2 0 #
2 0 2 q3 0 # 2 0 2 0 q3 # 2 0 2 0 B qa #
A DESCRIÇÃO DAS PEÇAS FAZ USO DO CÓDIGO DA MÁQUINA E O STRING w
Download

Problema de Correspondência de Post (PCP)