Para uma dada linguagem livre de contexto G, chamamos um não-terminal anulável se , ou seja, podemos derivar a string vazia de depois de aplicar um número finito de produções.
Existe um algoritmo simples para determinar quais não-terminais de uma gramática são anuláveis, como pode ser encontrado aqui :
Começamos considerando todos os não-terminais como não anuláveis. todos os como anuláveis se houver uma produção . Em seguida, passamos por todas as outras produções excluindo produções com um terminal nelas e marcamos como nulo se todos os forem nulos. Continuamos fazendo esse loop até terminar um loop sem marcar nenhum termo-terminal como nulo.
Meu problema com esse algoritmo é que ele tem um tempo de execução : o pior caso é, por exemplo, , , , ..., , .A n → ϵ
Existe um algoritmo para esse problema com um tempo de execução melhor que ?