예제 #1
0
class FiniteState(object):
    """Using the Automata library for Finate State"""
    state = attr.ib(default={"S0", "S1", "S2"})
    input_symbols = attr.ib(default={"0", "1"})
    transitions = attr.ib(
        default={
            "S0": {
                "0": "S0",
                "1": "S1"
            },
            "S1": {
                "0": "S2",
                "1": "S0"
            },
            "S2": {
                "0": "S1",
                "1": "S2"
            },
        })
    initial_state = attr.ib(default="S0")
    final_states = attr.ib(default={"S0", "S1", "S2"})
    dfa = attr.ib(default=None)

    def __attrs_post_init__(self):
        """Initialization by creating the default object"""
        if self.dfa is None:
            self.dfa = DFA(
                states=self.state,
                input_symbols=self.input_symbols,
                transitions=self.transitions,
                initial_state=self.initial_state,
                final_states=self.final_states,
            )

    def get_final_value(self, input_string):
        """Returns the final value, rasies RejectionException if a problem is found"""
        value = self.dfa.read_input(input_string)[1:]
        return value

    def get_final_state(self, input_string):
        """Returns the final state, rasies RejectionException if a problem is found"""
        value = self.dfa.read_input(input_string)[:1]
        return value
예제 #2
0
        print(
            "Please enter STATE_STATE and ACCEPT_STATES that are in Q : {}.\nAccept states should be a valid subset of Q\n"
            .format(Q))

CURRENT_STATE = None
dfa = DFA(states=Q,
          input_symbols=SIGMA,
          transitions=transition_dict,
          initial_state=initial,
          final_states=set(final))
if dfa.validate():
    print("\nThe DFA is accepted.")
    s = input("Enter the Input String: ")
    if dfa.accepts_input(s):
        print('Accepted!')
        print("The final state that the DFA stopped on:", dfa.read_input(s))
    else:
        print('Rejected!')
else:
    print("\nThe DFA is rejected.")
""" Non-Deterministic Finite Automata (NFA) """

nfa = NFA(
    states={'q0', 'q1', 'q2'},
    input_symbols={'a', 'b'},
    transitions={
        'q0': {
            'a': {'q1'}
        },
        'q1': {
            'a': {'q1'},
#Q. Write a deterministic automata code for the language with ∑={0,1} accepts the set of all strings with three consecutive 1's.
#!pip install automata-lib


from automata.fa.dfa import DFA 

dfa = DFA( states={'q0', 'q1', 'q2','q3'}, input_symbols={'0', '1'}, transitions={ 'q0': {'1': 'q1','0':'q0'},
'q1': {'0': 'q2', '1': 'q1'}, 'q2': {'0': 'q2', '1': 'q3'},
'q3': {'0': 'q3', '1': 'q3'},
},initial_state='q0', final_states={'q3 '} )

dfa.read_input('111')

if dfa.accepts_input('111'): 
    print('accepted' ) 

else: 
    print('rejected')


#Q. Write a deterministic automata code for the language with ∑={0,1} accepts even Number of 0's and even number of 1's.
#pip install automata-lib

from automata.fa.dfa import DFA 

dfa = DFA(
states={'q0', 'q1', 'q2','q3'},
input_symbols={'0', '1'}, transitions={ 'q0': {'1': 'q1','0':'q0'}, 'q1': {'0': 'q2', '1': 'q1'},
'q2': {'0': 'q2', '1': 'q3'},
'q3': {'0': 'q3', '1': 'q3'},
 },