public void setTransicao(int estado, char simbolo, int estadoFut) throws SimbNaoAlfabetoException, NaoEstadoException { if (estado < getQtdaEstados() && estadoFut < getQtdaEstados()) { if (isLinguagemVazia(estado, simbolo)) { Collection<Integer> conjunto = new HashSet<Integer>(); conjunto.add(estadoFut); funcao[estado][alf.getChave(simbolo)] = conjunto; } else { ((Collection<Integer>) transicao(estado, simbolo)).add(estadoFut); } } else throw new NaoEstadoException(); }
public void printFuncaoTransicao() throws SimbNaoAlfabetoException { System.out.print("[EST\\ALF]"); for (int i = 0; i < getAlf().getTamAlf(); i++) { System.out.print(alf.getSimbolo(i) + "\t\t"); } System.out.println(); for (int i = 0; i < this.getQtdaEstados(); i++) { System.out.print(i + "\t"); for (int j = 0; j < getAlf().getTamAlf(); j++) { printEstado(transicao(i, alf.getSimbolo(j))); System.out.print("\t\t"); } System.out.println(); } Integer[] estadofim = new Integer[conjEstFinal.size()]; conjEstFinal.toArray(estadofim); System.out.print("Estados finais:"); System.out.print(conjEstFinal.toString() + "\n"); System.out.println(); }
/** * Apenas copiar a função passada, sobrepondo a existente (substitui os estado atual passado * correspodentes ao de b). * * @param b função a ser copiada. Deve ser menor ou igual a função corrente. * @return */ public boolean copiarFuncaoTransicao(FuncaoTrasicaoAfn b) { if (this.getQtdaEstados() >= b.getQtdaEstados()) { for (int i = 0; i < b.getQtdaEstados(); i++) { for (int j = 0; j < alf.getTamAlf(); j++) { funcao[i][j] = b.getFuncao()[i][j]; } } // this.inserirEstadosFinal(b.getConjEstFinal()); return true; } return false; }
/** * Adiciona uma transição. * * @param estado estado atual. * @param simbolo simbolo a ser passado. * @param cojunto novo conjunto de estados. * @throws SimbNaoAlfabetoException */ public void setTransicao(int estado, char simbolo, Collection<Integer> cojunto) throws SimbNaoAlfabetoException { funcao[estado][alf.getChave(simbolo)] = cojunto; }
public Collection<Integer> transicao(int estado, char simbolo) throws SimbNaoAlfabetoException { return (Collection<Integer>) funcao[estado][alf.getChave(simbolo)]; }
public FuncaoTrasicaoAfn(int qtdaEst, Alfabeto alfabeto) { alf = alfabeto; qtdaEstados = qtdaEst; funcao = new Object[qtdaEst][alf.getTamAlf()]; conjEstFinal = new HashSet<Integer>(); }