Myhill – Nerode realmente fornece uma caracterização das linguagens regulares, mas isso não é suficiente para mostrar que o problema é decidível. "Decidível" significa que existe um algoritmo (mais formalmente, uma máquina de Turing) que termina para cada entrada e, é claro, sempre dá a resposta correta. Portanto, nesse caso, você precisaria fornecer um algoritmo que, dado um idioma como entrada, determine se a relação Myhill – Nerode possui um número finito de classes de equivalência. Acontece que isso não pode ser feito para linguagens sem contexto; detalhes em seu livro didático de idiomas formais favorito.
Se você quiser decidir se uma linguagem geral é regular, uma outra sutileza é que você deve ter cuidado com o que é a entrada do seu algoritmo. A entrada deve ser uma sequência finita - caso contrário, apenas a leitura da entrada seria um algoritmo sem terminação. No caso de linguagens sem contexto, você pode usar uma gramática como uma representação finita de uma linguagem infinita. Para idiomas mais gerais, você precisaria ... bem, algo mais geral. Em última análise, porém, se você deseja lidar com todos os idiomas, está condenado. Sobre qualquer alfabeto finito, existem inúmeras línguas, mas apenas muitas seqüências finitas. Isso significa que você não pode descrever todos os idiomas usando cadeias finitas. 1 1Portanto, tentar escrever um algoritmo para determinar se as linguagens arbitrárias fornecidas como entrada são regulares realmente falha antes de começar. Não é apenas que você não pode escrever o algoritmo: você não pode nem escrever a entrada!
Observe que isso não significa que você, um ser humano, não possa usar Myhill – Nerode para determinar se os idiomas são regulares. Significa apenas que você não pode escrever um conjunto de instruções precisas para me dizer como fazer isso. Em algum momento, qualquer conjunto de instruções teria que dizer algo como "E então brinque com ele para ver o que funciona" ou "A partir daí, você precisa descobrir por conta própria".
- Em particular, isso significa que algumas linguagens devem ser indecidíveis, pois existem mais linguagens do que algoritmos.