def simulate_dfa(transitions: dict, start: str, accept: set,
input_string: str) -> bool:
"""Simulate a DFA on an input string."""
current_state = start
for symbol in input_string:
if (current_state, symbol) in transitions:
current_state = transitions[(current_state, symbol)]
else:
return False
return current_state in accept
# DFA for strings ending in 'AB'
transitions = {
('q0', 'A'): 'q1', ('q0', 'B'): 'q0',
('q1', 'A'): 'q1', ('q1', 'B'): 'q2',
('q2', 'A'): 'q1', ('q2', 'B'): 'q0'
}
accept = {'q2'}
print(f"'AAAB' accepted: {simulate_dfa(transitions, 'q0', accept, 'AAAB')}")
print(f"'ABAB' accepted: {simulate_dfa(transitions, 'q0', accept, 'ABAB')}")
print(f"'ABBA' accepted: {simulate_dfa(transitions, 'q0', accept, 'ABBA')}")'AAAB' accepted: True
'ABAB' accepted: True
'ABBA' accepted: False














