/** * Obtiene los estados alcanzables desde un estado en particular con transiciones ε. * * @param state Estado inicial * @param states Lista de estados alcanzables */ private List<Estado> getEstadosAlcanzables(Estado state, List<Estado> states) { for (Transicion transicion : state.getTransitions()) { if (transicion.getSymbol().equals(ε)) { states.add(transicion.getDestination()); getEstadosAlcanzables(transicion.getDestination(), states); } } return states; }
/** * Obtiene los estados alcanzables desde un estado con transiciones ε y un símbolo en particular. * * @param state Estado inicial * @param symbol Transicion * @param states Lista de estados alcanzables */ public List<Estado> buildSubconjuntoBySymbol(Estado state, String symbol, List<Estado> states) { for (Transicion transition : state.getTransitions()) { if (transition.getSymbol().equals(ε)) { buildSubconjuntoBySymbol(transition.getDestination(), symbol, states); } else { if (transition.getSymbol().equals(symbol)) { states.add(transition.getDestination()); } } } return states; }