Uma linguagem unária é regular se seu expoente for uma função linear?


13

Enquanto fazia a tarefa atual para meus idiomas formais e curso de autômatos, eu meio que fiquei preso em exercícios envolvendo idiomas unários (espero que seja o termo certo), ou seja, idiomas que se baseiam em uma única letra. Porém, não quero perguntar sobre os exercícios específicos, mas sobre uma conjectura muito mais geral que apresentei:

Deixe e L = { um f ( n )Σ * : n N 0 } . Meu conjectura é: L  é regular x , y N 0 : f ( n ) = x n + yΣ={a}L={af(n)Σ:nN0}

L is regularx,yN0:f(n)=xn+y

Essa pergunta já teve algum tratamento científico antes? É "obviamente" verdadeiro / falso?

Para mim, obviamente, o "direção " " é verdadeira porque é possível apenas construir um DFA comestados x + y que percorre osestados x depois de ler osestados y e aceita se está no número de estado y .x+yxyy


Bom trabalho, fazer essa observação não é nada que eu esperaria dos alunos comuns!
Raphael

Acordado. Esta é uma observação muito agradável.
Rick Decker

Não é óbvio no título, mas já tivemos essa pergunta antes, com um pequeno lema de equivalência: quais são os conjuntos possíveis de tamanhos de palavras em um idioma comum?
Gilles 'SO- stop be evil'

Respostas:


9

Linear é aproximado, mas o termo técnico que você procura é semilinear: isto é, uma união finita de conjuntos lineares.

Metade da prova disso é um corolário do Teorema de Parikh , que diz que qualquer linguagem sem contexto possui um mapa Parikh semi-linear (ou seja, o conjunto de vetores que contém as ocorrências de cada letra do alfabeto).

Para um idioma unário, o mapa parikh do idioma é o próprio idioma (ou seja, cada palavra é identificada exclusivamente por quantas letras possui), portanto, cada idioma regular unário é semi-linear.

A outra metade da prova está mostrando que você pode construir uma linguagem regular contendo todos os conjuntos semi-lineares unários. Isso requer um pouco de trabalho, mas não é muito difícil se você usar expressões regulares:

  • ak{k}
  • reconhece { x k x N(ak){xkxN0}
  • R1R2S1+S2R1S1R2S2+
  • R1|R2S1S2R1S1R2S2|

6

L={akk=3n+1 or k=7n+4}
L={akk=4n+2 or k=13}
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.