Dado um idioma , defina o conjunto de comprimentos de como o conjunto de comprimentos de palavras em :
Quais conjuntos de números inteiros podem ser o comprimento de um idioma comum?
Dado um idioma , defina o conjunto de comprimentos de como o conjunto de comprimentos de palavras em :
Quais conjuntos de números inteiros podem ser o comprimento de um idioma comum?
Respostas:
Primeiro, uma observação que não é crucial, mas conveniente: o conjunto de conjuntos de números inteiros para alguma linguagem regular em um alfabeto não vazio não depende da escolha do alfabeto. Para ver isso, considere um autômato finito que reconheça ; os comprimentos das palavras que estão em são os comprimentos dos caminhos no autômato vistos como um gráfico sem rótulo do estado inicial para qualquer estado de aceitação. Em particular, você pode rotular novamente cada seta para e obter um idioma regular com o mesmo comprimento definido sobre o alfabeto . Por outro lado, se é uma linguagem comum sobre um alfabeto de um elemento, pode ser injetada trivialmente em um alfabeto maior e o resultado ainda é uma linguagem comum.
Portanto, estamos procurando os possíveis conjuntos de comprimento para palavras sobre um alfabeto singleton. Em um alfabeto singleton, o idioma é o comprimento definido em unário: . Tais idiomas são chamados idiomas unários.
Deixe ser uma linguagem regular, e considerar um autômato finito determinístico (DFA) que reconhece . O conjunto de comprimentos de palavras de é o conjunto de comprimentos de caminhos no DFA, vistos como um gráfico direcionado que começa no estado inicial e termina em um dos estados de aceitação. Um DFA em um alfabeto de um elemento é bastante manso (os NFAs seriam mais selvagens): é uma lista finita ou circular. Se a lista for finita, numere os estados de a após a ordem da lista; se for circular, numere os estados de a após o início da lista a ao longo do loop.
Seja o conjunto de índices de estados de aceitação até , e seja o conjunto de índices de estados de aceitação de a . Então
Por outro lado, deixe e ser dois inteiros e e ser dois conjuntos finitos de números inteiros tais que e . Então o conjunto é um idioma comum: é o idioma reconhecido pelo DFA descrito acima. Uma expressão regular que descreve esse idioma é .
Para resumir em inglês, os conjuntos de idiomas regulares são os conjuntos de números inteiros periódicos¹ acima de um determinado valor .
¹ Para manter uma noção bem estabelecida , periódica significa a função característica do conjunto (que é uma função que elevamos para uma função ) é periódico. Periódico acima de um determinado valor significa que a função restrita a pode ser prolongado para uma função periódica.
Qualquer subconjunto finito pode ser o comprimento-set de uma linguagem regular L , desde que você pode tomar um alfabeto unário { 0 } e definir L como { 0 ℓ 1 , ... , 0 ℓ n } (isso inclui o idioma vazio e { ε } ).
Agora, para os conjuntos infinitos. Vou fazer uma breve análise, embora a resposta final possa não ser suficientemente explícita. Não vou elaborar a menos que você me peça, porque acho que é intuitivo e porque não tenho muito tempo agora.
Seja expressões regulares que geram as linguagens L 1 e L 2 , respectivamente. É (mais ou menos) fácil ver que
Assim, os possíveis conjuntos de números inteiros que podem ser o comprimento de uma linguagem regular são aqueles que são subconjuntos finitos de ou que podem ser construídos usando subconjuntos finitos S 1 , S 2 de N e usando as fórmulas anteriores um finito número de vezes.
Aqui, estamos usando que as linguagens regulares são construídas, por definição, aplicando as regras para construir uma expressão regular um número finito de vezes. Observe que podemos começar com qualquer subconjunto finito de , mesmo que nas expressões regulares comecemos com palavras de comprimento 0 e 1 apenas como o caso base. Isso é facilmente justificado pelo fato de que todas as palavras (finitas) são concatenações (finitas) dos símbolos do alfabeto.
De acordo com o lema de bombeamento para idiomas regulares, existe um tal que uma cadeia x de comprimento pelo menos igual a n pode ser escrita da seguinte forma: x = u v w Onde as três condições a seguir são válidas: | você v | < n | v | > 0 u v k w ∈ L
EDIT: Um pouco mais de discussão. Certamente todos os conjuntos finitos de números inteiros são conjuntos de comprimento. Além disso, a união de dois conjuntos de comprimento também deve ser um conjunto de comprimento, assim como o complemento de qualquer conjunto de comprimento (daí a interseção e, portanto, a diferença). A razão para isso é que os idiomas regulares são fechados nessas operações. Portanto, a resposta que dou acima é (possivelmente) incompleta; na realidade, qualquer união de tais conjuntos também é o conjunto de comprimento de uma linguagem comum (observe que eu abandonei a necessidade de interseção, complemento, diferença etc.), pois eles são cobertos pelo fato de as linguagens regulares serem fechadas sob essas propriedades, como discutido no EDIT3; acho que apenas a união é realmente necessária, mesmo que os outros estejam certos, o que pode não ser o caso).
EDIT3: À luz do comentário de Janoma, vamos esquecer as propriedades de fechamento dos conjuntos de tamanhos de idiomas que discuto na primeira edição. Como os idiomas regulares têm essas propriedades de fechamento, e como todo idioma regular possui um DFA, segue-se que o lema de bombeamento para idiomas regulares se aplica a todas as uniões, interseções, complementos e diferenças de idiomas regulares, e deixaremos assim ; nem é preciso considerar nada disso, exceto a união, que ainda acho necessário para corrigir meu original (modificado, graças à contribuição de Gilles). Portanto, minha resposta final é a seguinte: o que digo na versão original, mais o fechamento dos conjuntos de tamanhos de idiomas em relação à união de conjuntos.