Problema de Correspondência de Post (PCP) Teoria da Computação
O problema PCP … Input g f g g f g b c d b b c d b e f c d e e f c d e abc b c d … eg ef 1 2 3 4 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 ? b c d e f g Sequência : 3 n 1 b c d e f g
Exemplos b c a b c a a a b a a b a a b c a a c a a a b c c a b c c 1 2 3 4 a b c a a a b c a b c a a a b c Sequência de peças= 2 1 3 2 4
Exemplo Input a b c a b c a a a c c b a Resposta ?? Não 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 t1 b1 t2 b2 t3 b3 tn bn C = { } , , , … , 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) 2 1 2 B B B B 0 0 0 2 q 1 0 2 q q0 0 0 0 2 1 0 2 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
Um passo de cálculo Configuração 1 Configuração 2 0 0 0 2 q 1 0 2 2 4 1 2 B B B B q 0 0 0 2 q 1 0 2 0 0 0 q 2 4 0 2
Um passo de cálculo Configuração 1 Configuração 2 0 0 0 2 q 1 0 2 2 4 1 2 B B B B q 0 0 0 2 q 1 0 2 0 0 0 2 4 q 0 2
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 PCP <M,w> 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 Cin # C2 # Cn # Ca # C2 # 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,B) = (qa,B,R) w = 0 1 0 0 Máquina de Turing M 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
Idéia # Cin # C2 # C3 # # Cin # C2 # C3 # C4 # # #q0 0 1 0 0 # # Primeira peça # q0 0 1 0 0 # 2 q1 1 0 0 # 2 0 q2 0 0 # #q0 0 1 0 0 # 2 q3 0 2 0 # PEÇAS 2 q1 1 0 0 # 2 0 q2 0 0 # # #q0 0 1 0 0 # g f g b c d b q0 0 q1 1 0 q2 0 1 2 # 2 q1 0 q2 q3 0 2 1 2 #
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