Vai


7

Vai L={ab} ser classificado como um idioma regular?

Estou confuso porque sei que L={anbn}não é regular. Que diferença faz a estrela kleene?


3
Você precisa especificar que n é uma variável livre; parece uma constante em sua expressão que me confundiu.
user541686

Respostas:


19

Um idioma é regular, por definição, se for aceito por algum DFA. (Essa é pelo menos uma definição comum.) Você consegue pensar em um DFA aceitando o idioma?

Um resultado bem conhecido (que é comprovado em muitos livros didáticos) afirma que o idioma de uma expressão regular é regular. Desde aab é uma expressão regular, seu idioma deve ser regular (se você acredita nesse resultado).

Finalmente, para responder à sua pergunta (que diferença faz a estrela Kleene): no idioma {anbn:n0}, precisamos contar o número deaareia bs; no idiomaab nós não.


11
A expressão regular do mundo real está longe de ser regular. nikic.github.io/2012/06/15/…
Guilherme Bernal

7
@GuilhermeBernal Isso é verdade. Infelizmente, a expressão "expressão regular" é usada para denotar os dois tipos. Na minha resposta, uma expressão regular é o conceito definido na teoria formal da linguagem.
Yuval Filmus

@GuilhermeBernal: O POSIX ERE é regular. Não são apenas BRE, PCRE e outras coisas malucas.
R .. GitHub Pare de ajudar o gelo

14

{ab} é uma linguagem regular, pois é gerada por uma expressão regular.

A principal diferença entre L={ab} e L=={anbn} é aquele L= requer contar o a'areia bé para verificar se há o mesmo número deles, enquanto Lnão requer contagem. A contagem requer memória ilimitada à medida que o número aumenta, mas os autômatos finitos têm apenas uma quantidade finita de memória; portanto, um autômato finito não pode reconhecerL=. Por outro lado, um autômato finito pode reconhecerL uma vez que isso exige apenas a verificação de que o a(qualquer número) vem antes do b(qualquer número).

É por isso que a estrela Kleene não define idiomas que exigem memória ilimitada para reconhecer - significa "qualquer número" e, toda vez que a estrela é encontrada, o número pode ser diferente.


Muito obrigado. Isso realmente explicou a diferença para mim!
user6268553

"Requer memória ilimitada" é uma boa maneira intuitiva de pensar sobre isso, mas o lema essencial é como você realmente provaria que não é regular.
R .. GitHub Pare de ajudar o gelo

0

Qualquer idioma para o qual você pode desenvolver um DFA.

Basta verificar se você pode desenhar um DFA para esses dois idiomas.

L1=ab

x denota toda ocorrência do alfabeto x

Cordas: ϵ, a, b, aa, ab, bb, ..

insira a descrição da imagem aqui

Para gerar um conjunto de cadeias pertencentes a L1, a máquina não precisa acompanhar o número de a e b. Como o FA pode lembrar apenas o último alfabeto processado, o DFA pode ser desenvolvido.

DFA existe.

Portanto regular.

L2=anbn

Cordas: ϵ, aa, bb, aaa, bbb, ..

Para gerar um conjunto de cadeias pertencentes a L2, a máquina precisa acompanhar o número de a's impressos para imprimir o mesmo número de b's. Mas FA pode lembrar apenas o último alfabeto processado.

Para construir uma máquina que aceite L2 precisamos adicionar mais uma memória dessa máquina chamada PDA (Push Down Automate).

Não existe DFA.

Portanto, não regular.

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.