Minha pergunta é basicamente dada a três idiomas A, B e L, onde L é A e B concatenados juntos e B é comprovadamente não regular, é possível encontrar um A que faça L regular?
Minha pergunta é basicamente dada a três idiomas A, B e L, onde L é A e B concatenados juntos e B é comprovadamente não regular, é possível encontrar um A que faça L regular?
Respostas:
Se permitirmos que seja o idioma vazio, que é regular, teremos que .
Para o problema um pouco mais interessante, em que A deve ser uma linguagem regular não vazio, então podemos construir um tal que há não vazios resulta em um regular
Seja . Seja qualquer idioma comum e considere . Observe que, ao contrário do pressuposto em J.-E. A resposta de Pin, é irregular, mas não contém a palavra vazia.
Suponha que seja regular. Existe alguma DFA, , que aceita . Independentemente de como é construído, sabemos que cada palavra em deve ter uma última ocorrência de . Seja o conjunto de estados percorridos imediatamente após o último em todas as travessias possíveis de aceitação. Observe que não pode estar vazio, pois a string mais curta em é . Seja o conjunto de estados visitados em todas as travessias de aceitação possíveis em algum momento após o último . Construir , onde funciona igualmente a , com excepção para o facto de .
Eu afirmo que este NFA aceita o idioma . Para qualquer , devemos ter a passagem de algum elemento de para algum elemento de , já que deve aceitar alguma string com isso como sufixo. Para qualquer , podemos escolher um e formar a palavra . Se aceita , então deve ser o caso em que aceita , pois deve ter havido alguma passagem de algum estado em a que também é válido para. No entanto, devido à nossa escolha de , não pode ser o caso que , então deve rejeitar .
Então aceita , mas essa linguagem não é regular, levando a uma contradição.
Portanto, se não estiver vazio, não poderá ser regular.
Sim, isso é possível. Considere o exemplo abaixo:
Seja onde é primo. Isso não é regular. Seja onde . Isso é regular.
simplesmente nos dará com e isso é regular, pois qualquer número maior que pode ser representado como que
Seja um alfabeto não vazio. Deixe ser qualquer linguagem não regular em contendo a palavra vazia e deixá- . Então é regular.
Dado um idioma , o idioma é regular. Além dessa solução trivial, nem sempre é possível encontrar uma linguagem não vazia modo que seja regular. É possível que muitos não regular (por exemplo , se contém a palavra vazia , ou se está em um alfabeto unário ), mas não para todos .
Tome onde é o conjunto de números primos. Seja o que for, se não estiver vazio, não será regular, porque para testar a associação a , é necessário (devido ao símbolo de "rolha" ) usar memória potencialmente ilimitada para testar a primalidade do número de ' s no final.
Para provar isso, (pois assumimos que não está vazio). Se for regular, e o quociente esquerdo de pelo singleton que é . Esse idioma é apenas (se , existe e tal forma que , e como contém b ^ kno , isso implica que ; por outro lado, se então então ). é uma linguagem não regular bem conhecida, temos uma contradição.
Enquanto sua pergunta está pedindo uma prova existencial, ela me lembra o ramo da comp. sci. chamado Aproximações regulares.
A ideia é usar uma linguagem não regular e depois encontre um idioma comum de tal modo que sob alguma condição / subconjunto de (Onde é a diferença simétrica ), ou seja, encontre uma linguagem regular "arbitrariamente próxima" depara algum subconjunto com o qual você se preocupa. Frequentemente, você realiza isso tomando um subconjunto finito de com grande medida sobre o seu subconjunto de interesse e, em seguida, concatenando-o com um idioma regular cuidadosamente escolhido.
Você pode encontrar muitas leituras interessantes no Google Scholar se pesquisar algo como "aproximação de linguagem normal sem contexto".