/** * Retira os estados mortos do autômato * * @param automato * @param naoMortos */ private static void retirarEstadosMortos( Automato automato, ArrayListPersonalizado<Estado> naoMortos) { ArrayListPersonalizado<Estado> auxiliar = new ArrayListPersonalizado<>(); auxiliar.addAll(naoMortos); for (Mapeamento mapeamento : automato.funcaoMapeamento) { if (naoMortos.contains(mapeamento.estadoDestino)) { auxiliar.add(mapeamento.estadoOrigem); } } if (!auxiliar.equals(naoMortos)) { retirarEstadosMortos(automato, auxiliar); return; } ArrayListPersonalizado<Estado> mortos = (ArrayListPersonalizado<Estado>) automato.estados.clone(); naoMortos.add(automato.erro); mortos.removeAll(naoMortos); retirarEstadosEProducoes(automato, mortos); }