def complemento(automata, tipo): #intercambiar estados finales por estados if tipo == False: fin = [] final = automata.final_states estados = automata.states for i in estados: for l in final: if i != l: fin.append(i) finales = set(fin) automata = DFA(states=automata.states, input_symbols=automata.input_symbols, transitions=automata.transitions, initial_state=automata.initial_state, final_states=finales) return automata, tipo else: ADF = NFA.from_dfa(automata) complemento(ADF, False)
def test_init_dfa(self): """Should convert DFA to NFA if passed into NFA constructor.""" nfa = NFA.from_dfa(self.dfa) nose.assert_equal(nfa.states, {'q0', 'q1', 'q2'}) nose.assert_equal(nfa.input_symbols, {'0', '1'}) nose.assert_equal(nfa.transitions, { 'q0': {'0': {'q0'}, '1': {'q1'}}, 'q1': {'0': {'q0'}, '1': {'q2'}}, 'q2': {'0': {'q2'}, '1': {'q1'}} }) nose.assert_equal(nfa.initial_state, 'q0')
def AFDtoAFND(automata): nfa = NFA.from_dfa(automata) return nfa
def AFDtoAFND(automata, tipo): if tipo == False: nfa = NFA.from_dfa(automata) return nfa, True else: return automata, tipo