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)∈Σ∗:n∈N0}

L is regular⇔∃x,y∈N0:f(n)=x⋅n+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)∗{xk∣x∈N0}
  • R1R2S1+S2R1S1R2S2+
  • R1|R2S1∪S2R1S1R2S2|

6

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