def to_dfa(self): dfa = DFA(self.start_state) frontier = [self.start_state] seen = set() while frontier: current = frontier.pop() inputs = self.get_inputs(current) for input in inputs: if input == NFA.EPSILON: continue new_state = self.next_state(current, input) if new_state not in seen: frontier.append(new_state) seen.add(new_state) if self.is_final(new_state): dfa.add_final_state(new_state) if input == NFA.ANY: dfa.set_default_transition(current, new_state) else: dfa.add_transition(current, input, new_state) return dfa
a = State("A") b = State("B") c = State("C") """ Adicionando os estatos no automato. """ automaton.add_states(a) automaton.add_states(b) automaton.add_states(c) """ Criando listas de adjacencias entre os estatos. """ a.add_neighbor("A") a.add_neighbor("B") b.add_neighbor("B") b.add_neighbor("C") c.add_neighbor("C") automaton.print_dfa() """ Adicionando o alfabeto ou conjunto de simbolos. """ automaton.add_alphabet("01") automaton.sigma.print_symbols() """ Adicionando o estado inicial. """ automaton.add_initial_state("A") """ Adicionando o(s) estado(s) final(is) ou de aceitacao. """ # automaton.add_final_state("B","C") automaton.add_final_state("C") """ Adicionando as transicoes dos estados. """ # B A B C C C [1000 - rejeita] - [101 - aceita] automaton.add_transitions() automaton.__str__() print("\n") """ funcao de transicao """ string_word = input("Digite uma sequencia de símbolos: ") automaton.execute_transition(string_word)