示例#1
0
def intersect(automaton1: Automaton, automaton2: Automaton) -> Automaton:
    automaton1 = automaton1.as_DFA()
    automaton2 = automaton2.as_DFA()
    states = get_states_cross_product(automaton1, automaton2)
    initial = automaton1.initial + automaton2.initial
    accept = set()
    for a1 in automaton1.accept:
        for a2 in automaton2.accept:
            accept.add(a1+a2)
    alphabet = automaton1.alphabet | automaton2.alphabet
    return Automaton(states, initial, accept, alphabet)