public void EliminarE(Dictionary <string, Simbolo> Alfabeto) { //Testa-se o estado atual com cada simbolo do alfabeto foreach (Simbolo s in Alfabeto.Values) { //Encontra todos alcançáveis com movimentos vazios foreach (Estado e in getEstadosVazios()) { if (!s.isVazio) { //Encontra todos estados alcançáveis com esse símbolo foreach (Estado ee in e.getEstadosDestinosRebuilded(s)) { //Para cado estado alcaçado verifica-se os vazios e // adiciona na lista como destino do estado this. foreach (Estado eee in ee.getEstadosVazios()) { //Adiciona novas transições ou novos estados destino if (!this.Transicoes.ContainsKey(s.simbolo)) { Transicao t = new Transicao(this); t.Simbolo = s; t.AddEstadoDest(eee); this.Transicoes.Add(s.simbolo, t); } else { this.Transicoes[s.simbolo].AddEstadoDest(eee); } } } } //Se era possível chegar a algun estado final passando por E, // então esse estado deve ser final também. if (e.isFinal) { this.isFinal = true; } } } }