Há muito tempo que estou tentando encontrar uma construção para poder demonstrar formalmente que um PDA determinístico está fechado sob complementação. No entanto, acontece que toda idéia que recebi tem algo que no final não se encaixa. Você poderia me ajudar?
O principal problema acontece com os movimentos ε . Um PDA pode terminar de ler sua entrada em um estado não final (rejeitar), mas ainda pode passar para um estado final (aceitar) por meio de um movimento ε e acabar aceitando a sequência. Isso significa que apenas adicionar um estado morto e complementar os estados não funciona. Eu já resolvi o problema de possíveis sequências infinitas de movimentos ε , de modo que essa não é uma parte principal da minha pergunta.
EDIT: Até onde eu entendo, se o DPDA atingir o final da entrada e estiver em um estado de aceitação e passar para um estado de rejeição por meio de um movimento ε, ele ainda o aceitaria (pois alcançou um estado final sem nenhum símbolo de entrada para ler).
Por favor, deixe-me saber se posso ser mais claro.
Respostas:
Não tive tempo de escrever isso antes, mas encontrei uma resposta. Aqui está o que eu fiz:
DeixeiO seja o original PDA . Vamos construir uma novaPDA , chame-o M (M significa modificado).
Para encontrar o complemento deO , podemos transformar estados finais em estados não finais e vice-versa. É o mesmo procedimento que para autômatos finitos. No entanto, há uma sutileza. O principal problema é que no PDA originalO a entrada w pode levar a um estado S que não é um estado final, mas poderia executar um ϵ−move e chegar a um estado de aceitação S′ . Inverter estados como mencionado acima, tornariaM terminar em S com a entrada w que seria um estado final (causando M aceitar aceitar a entrada), embora mais tarde faça uma ϵ−move para S′ , um estado de não aceitação. Portanto, ambosO e M aceitará w . Algo semelhante acontece seS foi um estado final e S′ um estado não final alcançável a partir de S através de um ϵ−move .
Para superar esse problema, precisamos garantir que todosϵ - acontece antes de lermos o próximo símbolo. Ou seja, entraremos em um estado de leitura somente quando um caminho deϵ -moves é seguido e chegamos a um estado que não tem ϵ -move disponível. Chamamos esses estados de leitura de estados , pois precisam de um símbolo real para realizar uma nova transição.
DefinirM estados de ser tuplas do formulário <q,n> Onde q∈Q (Q é o conjunto de estados do original PDA ) e n∈{1,2,3,4} .
E seδ(q,ϵ,X)=<q′,α> no O , deixei δ(<q,3>,ϵ,X)=<<q′,2>,α> no M E se q∈FO .
E seδ(q,ϵ,X)=<q′,α> no O , deixei δ(<q,3>,ϵ,X)=<<q′,3>,α> no M E se q∉FO .
E seδ(q,ϵ,X)=<q′,α> no O , deixei δ(<q,2>,ϵ,X)=<<q′,2>,α> no M .
E seδ(q,ϵ,X) é undefined no O , δ(<q,2>,ϵ,X)=<<q,1>,X> no M
E seδ(q,ϵ,X) é undefined no O , δ(<q,3>,ϵ,X)=<<q,4>,X> no M
Nessas definições, deixamos estados da forma<q,2> e <q,3> consumir ϵ -move imitando ϵ -move de O até que não haja mais. Em seguida, execute umϵ -move para um estado de leitura. Agora, para os estados de leitura,
Ao fazer essa definição, consumimos um símbolo da entrada e passamos para um estado do formulário<q,3> para começar uma nova série de ϵ -move.
Por fim, faça estados da forma<q,4> estar aceitando estados de M E se q∉FO . Além disso, faça<q0,3> o estado inicial de M E se q0 é o estado inicial de O .
O que fizemos é o seguinte:
Crie 4 "pisos" de estados (o segundo elemento da tupla nos estados deM determina em que andar estamos). Piso 3 imitaϵ -move de O possivelmente atingindo um estado de aceitação q do O . Se for esse o caso, passamos para o segundo andar; caso contrário, permaneceremos no piso 3. Quando não houver maisϵ -move a seguir de O , definimos ϵ -move de M para alcançar um estado de leitura. Os pisos 1 e 4 correspondem aos estados de leitura. Se estivéssemos no andar 3, vamos para o andar 4. Se estivéssemos no andar 2, chegamos ao andar 1. Somente os estados<q,4> (estados que estão no andar 4) estão aceitando estados de M , providenciou que q não é um estado de aceitação de O .
Informe-me se cometi um erro de digitação ao escrever isso. Eu poderia facilmente ter me enganado. Além disso, meu inglês não é muito bom, então fique à vontade para editar e reformular melhor as coisas.
fonte
Há uma prova por construção na Introdução de Sipser à Teoria da Computação (3).rd edição possui uma seção sobre DCFLs) que identifica os estados de leitura do autômato dividindo qualquer estado que lê e aparece ao mesmo tempo. Somente esses estados de leitura podem ser estados finais e, para obter o DPDA complementar, você reverte apenas o comportamento de aceitação dentro do conjunto de estados de leitura.
fonte
Você pode assumir que o autômato está livre deε -transições sem perda de generalidade.
Isso pode ser demonstrado usando a construção padrão de CFG para PDA aplicada a uma forma normal de Greibach . Em Transições silenciosas em autômatos com armazenamento , G. Zetzsche apresentou recentemente uma construção diretamente em autômatos.
Advertência potencial: Eu meio que suponho que a referida construção padrão produz um DPDA se o aplicarmos a uma gramática adequada, isto é, "determinística" e que essa adequação sobrevive à transformação na forma normal de Greibach.
fonte