De onde vêm as restrições de comprimento do lema de bombeamento?


8

Para uma linguagem com comprimento de bombeamento e uma string , os lemas de bombeamento são os seguintes:LpsL

Versão regular : If , então pode ser escrito como , atendendo às seguintes condições:|s|psxyz

  1. |y|1
  2. |xy|p
  3. i0:xyizL

Versão sem contexto : If , então pode ser escrito como , satisfazendo as seguintes condições:|s|psuvxyz

  1. |vy|1
  2. |vxy|p
  3. i0:uvixyizL

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?


Estou comentando, pois talvez não receba sua pergunta, mas me parece óbvio que, se você tiver uma palavra de comprimento pelo menos , poderá particionar a palavra em três partes, forma que e . Simplesmente deixe estar vazio, seja o primeiro caractere e o resto. Eu entendi completamente sua pergunta? p1xyz|y|1|xy|pxyz
GD

@ PålGD, não acho óbvio no contexto das outras condições do lema (comprimento diferente de zero do substrato bombeável e bombeamento arbitrário). Concordo, é óbvio que uma sequência de comprimento pelo menos pode ser particionada em substrings de modo que o primeiro tenha comprimento , mas a obviedade (para mim) não é transferida quando você mantém as outras condições. Talvez eu deva esclarecer a postagem original? xx
precisa saber é o seguinte

Não, visto à luz da terceira condição, deve-se ter um pouco mais de cuidado. Como você notou, as duas primeiras condições não dizem nada de útil. Como você também aviso, forçando o ser não vazio (como é realmente o que a primeira condição diz), nos faz realmente em uma posição para "bomba". y
precisa saber é o seguinte

O PL sem contexto é necessário para sua pergunta? Não faz muito sentido considerar algumas dessas condições isoladamente.
Raphael

@BlueBomber, em ambos os casos, sem condição (1), o bombeamento não faz sentido (pode sempre selecionar a substring vazia). Para idiomas regulares, (2) é apenas que em símbolos o DFA para o idioma está em estados e, pelo princípio do pigeonhole, se o DFA tiver estados, é preciso repetir (e você pode percorrer o ciclo vezes, bombeando a corda). nn+1nk
vonbrand

Respostas:


8

A primeira condição, ie , é claramente necessário se você quiser dizer algo interessante: para , trivialmente e sempre é válido.|y|1y=εxyizL

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


11
a condição 2 é "arbitrária" de outras maneiras. Por exemplo, um lema equivalente é dado se substituirmos (2) por|yz|<p. Existe ainda uma versão mais forte do lema de bombeamento em que oyparte pode estar em qualquer lugar (não necessariamente no começo ou no fim). A variante comum (|xy|<p, isso é, yé ao lado do começo) é a conveniência.
Ran G.

@Tocou. Como é uma versão em que a posição deyarbitrário é mais forte? Eu acho que expliquei como isso seria mais fraco. Ou essa versão indica outras coisas?
Raphael

É mais forte, pois oferece mais flexibilidade: talvez a parte que você deseja bombear não esteja no começo da palavra. De fato, ainda tem um equivalente a|xy|<ppor não ser "mais fraco" como você diz, mas sem a necessidade de localizá-lo exatamente no começo. Pense no lema de Ogden como a forma mais generalizada.
Ran G.

11
@ Rafael, por exemplo, a versão dada acima não é suficiente para provar que {abncn:n0}aa+bc não é regular (pode bombear o a), mas com ydeitado em qualquer lugar é fácil.
vonbrand

@ vonbrand: Agora vejo o que Ran significa, obrigado.
Raphael

3

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; ycomo tudo gerado enquanto estiver naquele determinado loop para o primeiro loop; ez como tudo gerado após o loop pela primeira vez.

  1. Desde a |s|pe 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 p1transiçõ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.

  2. Desde a y é 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.


2

À 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.


2

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" ques∣≥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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.