Por que o lema Pumping para linguagens sem contexto usa o uvwxy, mas o uvw para os regulares?

Respostas:

13

Ambos os lemas de bombeamento têm uma explicação intuitiva em termos de um autômato que pode reconhecer um idioma.

Uma linguagem regular pode ser reconhecida por um autômato finito. Todas as palavras são reconhecidas através de:

  • um caminho finito através do autômato: palavras mais curtas que o comprimento do bombeamento;
  • ou um caminho que passa por um nó no qual existe um loop; nesse caso, é possível percorrer o loop inúmeras vezes: esse é o yn parte, onde y é o caminho através de uma rodada do loop e n é o número de lops.

Uma linguagem livre de contexto pode ser reconhecida por um autômato de empilhamento. Todas as palavras são reconhecidas através de:

  • um caminho finito através do autômato: palavras mais curtas que o comprimento do bombeamento;
  • ou um caminho que inclua um loop com push para a pilha e outro loop com pops correspondentes. Empates e pops precisam se equilibrar para obter uma pilha vazia no final. Então a palavra contém um loop com pushv, algum caminho adicional we um loop com pops x. O número de execuções nos dois loops deve ser o mesmo, mas pode ser qualquer número, portanto, o bit do meiovnwxn.

Você também pode obter uma intuição semelhante das maneiras como as linguagens regulares e sem contexto podem ser especificadas por uma expressão regular e uma gramática sem contexto, respectivamente.

Se uma palavra é reconhecida por uma expressão regular, então:

  • ou a palavra usa uma parte da expressão sob o Operador (estrela Kleene), e essa parte y pode ser repetido inúmeras vezes;
  • ou a palavra não usa nenhuma parte da expressão sob uma estrela e não pode ser maior que a própria expressão.

Se uma palavra é reconhecida por uma gramática livre de contexto, então:

  • Pode ser que a palavra seja reconhecida por uma árvore de análise onde existe uma subárvore T1 que é reconhecido pelo termo não-terminal Ae uma subárvore T0 dessa subárvore é reconhecido pelo mesmo termo não-terminal A. Nesse caso, deixew seja a parte da palavra reconhecida por T0 e vwx ser a parte que é reconhecida por T1. Você também obtém uma árvore de análise válida se substituirT1 de T0ou vice-versa. Além disso, desdeT1 1 contém T0 0, depois de substituir T0 0 de T1 1, você pode substituir a cópia de T0 0 dentro T1 1 de T1 1, e assim por diante. Isso significa que você pode substituirvWx de W, v2Wx2, v3Wx3, etc. e ainda recebe uma palavra com uma árvore de análise válida.
  • Caso contrário, não há nenhuma subárvore da árvore de análise que reutilize o mesmo não-terminal e, nesse caso, o comprimento da palavra é limitado porque a profundidade da árvore de análise é limitada pelo número de não-terminais na gramática.
Gilles 'SO- parar de ser mau'
fonte
Também é curioso ... existem gramáticas progressivamente mais complicadas (por exemplo , gramáticas adjacentes a árvores ) que reconhecem linguagens progressivamente mais complexas (neste caso, aparentemente{umanbncndn|n>0 0})
user541686
6

Isso é devido à "estrutura" das línguas que é observada pelos respectivos lemas de bombeamento. Veja as provas dos respectivos resultados de bombeamento.

Para linguagens regulares, a estrutura é linear e, para cada palavra longa, existe um estado que é repetido duas vezes no cálculo de aceitação de um autômato de estado finito. A string lida entre esses estados pode ser repetida.

A estrutura das linguagens sem contexto é aninhada, semelhante a uma árvore. Novamente, uma palavra longa terá uma árvore de derivação que repete um não-terminal em um dos caminhos da árvore. Essa estrutura também pode ser repetida, mas irá gerar duas cadeias, tanto para a esquerda quanto para a direita.

Hendrik Jan
fonte
4

O lema de bombeamento para linguagens sem contexto é, no fundo, uma aplicação do princípio do buraco de pombo. Se pegarmos uma palavra longa o suficiente no idioma e considerarmos uma de suas árvores de análise, haverá um caminho no qual um dos não-terminais se repete. Isso nos permitirá "bombear" parte da palavra, por um processo de recortar e colar.

Como exemplo, considere a seguinte árvore de análise:

Árvore de análise

O não-terminal repetitivo é UMA. Podemos eliminar a repetição para obter a árvore de análise:

Árvore de análise

Também podemos "bombear" a repetição para obter a árvore de análise:

Árvore de análise

Em termos das próprias palavras, começamos com a palavra sumabumacumabumas, e obteve primeiro a palavra sumacumas e então a palavra sumabumabumacumabumabumas.

O bombeamento corresponde à variação do número de aplicações da derivação UMAumabUMAbuma. Você pode ver que duas partes diferentes estão sendo bombeadas ao mesmo tempo. Isso é necessário para idiomas como{umanbn:n0 0}: a uma e b as peças precisam ser bombeadas separadamente.

Considere agora o que acontece quando aplicamos os mesmos argumentos a uma gramática regular esquerda :

Árvore de análise

Como a gramática é deixada regular, a derivação bombeada UMAumabUMAcontém apenas uma parte bombeada. Esse sempre será o caso das gramáticas regulares à esquerda, devido à forma das árvores de análise.

Em termos de decomposição vocêvWxy, isso implica que x=ϵ, e entao vocêvEuWxEuy=vocêvEuWy, que é exatamente a forma do lema de bombeamento para idiomas regulares (considerando Wycomo uma única palavra). A forma particular das árvores de análise nas gramáticas regulares esquerdas nos permite obter um lema de bombeamento mais forte.

Crédito: todas as árvores de análise desenhadas usando o Syntax Tree Generator .

Yuval Filmus
fonte