É {a ^ n (a + b) ^ n | n> 0} uma CFL determinística?

8

eu={uman(uma+b)n|n>0 0}

Um livro que estou lendo diz que é, mas, considerando que não podemos saber onde a segunda parte começará, e ela também pode começar com uma, então como podemos aceitar isso usando um DPDA? Como depois de ler a primeira parte (uman) como podemos ter certeza de que é o fim da primeira parte ou não considerar a segunda parte também pode começar com uma?

Isso é determinístico?

John P
fonte

Respostas:

11

Você não precisa determinar o final da "primeira parte".

Nota eu é exatamente o conjunto de cadeias que satisfaz as três restrições a seguir:

  1. Seu comprimento é par.

  2. Contém apenas uma e b.

  3. O primeiro b aparece na segunda metade.

As restrições 1 e 2 são fáceis de verificar. Para verificar a restrição 3, o DPDA pode enviar um símbolo para sua pilha cada vez que lê um caractere até o primeirobaparece (excluindo) e, em seguida, pop um símbolo cada vez que lê um caractere. A restrição 3 é satisfeita se, e somente se, o símbolo inicial da pilha nunca for lido durante o processo de popping.

xskxzr
fonte
Obrigado pela resposta. Portanto, no DPDA, devemos empurrar uma bola toda vez que lermos um personagem até chegarmos ao primeiro b, mas dessa maneira a corda aaab não será aceita? porque quando chegamos ao primeiro b, temos 3 bolas e apenas jogamos 1 bola e a pilha não está vazia, supondo que aceitemos sem a pilha vazia, então quando iremos para o estado final? se a pilha não estiver vazia e não houver mais entrada disponível?
John P
@ JohnP Desculpe por não ter lido a descrição formal de um PDA, portanto a resposta antes da edição pode ser confusa. Agora modifiquei a resposta para torná-la compatível com a definição formal da Wikipedia. Para sua pergunta, quando o autômato lê o símbolo inicial da pilha, ele se transforma em um estado especial que representa "rejeitar" (depois faz um loop para as entradas restantes) e todos os outros estados estão aceitando estados (exceto o estado inicial, poisn>0 0)
Xskxzr 11/07/19
Não tenho certeza de como todas as restrições podem ser verificadas sem perder o determinismo. Você pode sugerir ou dizer funções de transição?
Sr. Sigma.
@Rohith. Primeiro, está no estado A e quando a entrada éuma, empurre um símbolo. Quando a entrada éb, passe para o estado B e coloque um símbolo. No estado B, toda vez que vêuma ou b, pop um símbolo.
Xkxzr
Quando começar a aparecer se W=uma2n?
Sr. Sigma.
4

Caso seja mais claro, aqui está um CFG correspondente ao DPDA do xskxzr:

SϵSBSumaumaSBumabBumaBumaBumaBb

O CFG ligeiramente mais simples abaixo é ambíguo para entradas que consistem apenas em um número par de umas, mas ainda funciona com o algoritmo LALR (1) usando o algoritmo "padrão" de resolução de conflitos: "em caso de ambiguidade, shift":

SBSumaumaSBϵBumaBumaBumaBb
rici
fonte