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
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 .
Respostas:
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:
fonte
fonte