Para uma linguagem com comprimento de bombeamento e uma string , os lemas de bombeamento são os seguintes:
Versão regular : If , então pode ser escrito como , atendendo às seguintes condições:
Versão sem contexto : If , então pode ser escrito como , satisfazendo as seguintes condições:
Minha pergunta é a seguinte: alguém pode dar uma explicação concisa e clara de como a regularidade (ausência de contexto) implica a primeira e a segunda condições acima? O comprimento do bombeamento é determinado pelas propriedades (finitas) (número finito de estados ou propriedades finitas das regras de produção, respectivamente); as terceiras propriedades garantem que um estado (regra de produção) possa ser ignorado ou repetido arbitrariamente várias vezes, mas onde é o primeiro e segunda condições se originam? Como eles são justificados?
Respostas:
A primeira condição, ie , é claramente necessário se você quiser dizer algo interessante: para , trivialmente e sempre é válido.|y|≥1 y=ε xyiz∈L
A segunda condição, ou seja, , é "arbitrário": o lema ainda diz algo interessante se você o soltar, e ainda é verdade porque a declaração se torna mais fraca.|xy|≤p
Mas lembre-se para o que queremos usar os lemas de bombeamento: queremos encontrar uma palavra (suficientemente longa) para que todas as decomposições válidas em falhem ao bombear. Portanto, é útil permitir o menor número possível de decomposições. Por sorte que somos, a prova do lema de bombeamento prontamente gera uma forte restrição, a saber, que deve haver uma decomposição bombeável com com constante .x,y,z |xy|≤p p
Agora temos que refutar apenas finitos muitos prefixos (com possivelmente infinitas continuações diferentes, é claro). Se você observar exemplos de aplicativos , verá que eles fazem muito uso dessa restrição.xy
fonte
Vou oferecer apenas algumas dicas sobre o lema de bombeamento para idiomas regulares; o raciocínio é semelhante o suficiente para o outro. Imaginex como parte de s gerado por tudo antes de iniciar o primeiro loop pela primeira vez; y como tudo gerado enquanto estiver naquele determinado loop para o primeiro loop; ez como tudo gerado após o loop pela primeira vez.
Desde a|s|≥p e p é o número de estados no autômato finito mínimo (por exemplo) que aceita o idioma, o autômato deve ter feito um loop (já que no máximo p−1 transições teriam sido possíveis, caso contrário). Portanto,y é não vazio; estamos declarando o fato de que, como temos uma sequência de um determinado comprimento, o autômato que a aceita deve ter feito um loop em algum momento, então|y|>1 é justificado.
Desde ay é a primeira vez que você passa pelo primeiro loop e x é tudo antes disso, você não visitou nenhum estado no autômato mais de uma vez. Uma vez que existem|p| estados no autômato, e você não visitou todos eles, você |xy|<p .
Essas não são tantas hipóteses que requerem suporte; são declarações de fato baseadas em como o lema de bombeamento foi inventado em termos de autômatos finitos.
fonte
À medida que você se move pelos estados de um autômato, você acaba atingindo um ciclo. O ciclo éy . Não faz sentido bombear uma palavra vazia, daí a condição 1.xy é o número de símbolos que você teve que ler para encontrar o primeiro ciclo. Isso não pode ser maior que o número de estados, daí a condição 2. Quase por definição, um ciclo pode ser repetido inúmeras vezes, portanto, a condição 3.
A variante livre de contexto é muito semelhante. A primeira condição é que estamos apenas procurando por ciclos úteis. A segunda condição diz que um ciclo pode ser encontrado porque você ficará sem terminais. A terceira condição diz que, uma vez que você tenha um ciclo, pode bombeá-lo. Observe que, para ver um ciclo no caso sem contexto, você deve desenhar uma árvore de análise.
fonte
Existem variantes do lema de bombeamento. Eu vou usar o seu.
Observe que você tem realmente três condições de comprimento. O que falta é sobre o comprimento total mínimo da palavra. Eu trato com a segunda condição.
Em poucas palavras (grande):
Eu chamo de subárvore qualquer subparte da árvore de análise que tenha no máximo um não terminal à margem. O lema de bombeamento usa subárvores recursivas em que o não terminal na margem é o mesmo que a raiz da subárvore. A árvore de análise inteira é uma subárvore.
As subárvores, conforme definidas aqui (e as sub-árvores recursivas), são o cerne da questão. Sua existência está diretamente relacionada à ausência de contexto .
1ª condição : declara simplesmente que, se houver uma subárvore recursiva improdutiva (franja sem símbolo de terminação) na árvore de análise, ela poderá sofrer um curto-circuito, para que sempre tenhamos certeza de que a franja contém um símbolo terminal.
Um problema de finitude : será usado duas vezes. Se você tiver uma subárvore que não contenha nenhuma subárvore recursiva, nenhum caminho na subárvore terá o dobro do mesmo rótulo (exceto a raiz da subárvore). A subárvore está se ramificando finitamente com uma profundidade limitada (não mais que o número de não terminais). Portanto, você tem um conjunto finito dessas subárvores, gerando apenas um conjunto finito de cordas à sua margem. Sendo um número finito, existe um limite superior para o comprimento das franjas. Por outro lado, se uma franja excede o limite, é uma indicação certa de que contém uma subárvore recursiva.
"condição ausente" : a "condição ausente" que∣s∣≥p verifique se a sequência é longa o suficiente para que exista pelo menos uma subárvore recursiva na árvore de análise para bombeamento.
2ª condição : você sempre pode bombear uma subárvore recursiva que não domina nem contém outra subárvore recursiva na árvore de análise. Se isso acontecer, basta pegar a outra subárvore recursiva. Como a árvore de análise é finita, isso termina. Você acaba com subárvores (porvy e para x ) que não contêm subárvores recursivas, e a análise de finitude acima garante a existência de um limite superior.
No caso da gramática regular, você apenas possui subárvores que não se ramificam muito. É realmente idêntico ao caso do CF, com algumas cadeias substituídas porϵ .
No caso do CF, é frequentemente conveniente que a prova do lema, ou suas variações, assuma que a gramática é CNF (dependendo também da variante do lema)
Grande parte da prova formal é apresentação matemática, não entendimento.
Este foi um exercício interessante.
fonte