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)
예제 #2
0
 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')
예제 #3
0
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