Ejemplo n.º 1
0
 def test_minimization(self):
     """ Tests the minimization algorithm """
     enfa = get_enfa_example0_bis()
     symb_a = Symbol("a")
     symb_b = Symbol("b")
     enfa = enfa.minimize()
     self.assertTrue(enfa.is_deterministic())
     self.assertEqual(len(enfa.states), 2)
     self.assertTrue(enfa.accepts([symb_a, symb_b]))
     self.assertTrue(enfa.accepts([symb_a, symb_a, symb_b]))
     self.assertTrue(enfa.accepts([symb_b]))
     self.assertFalse(enfa.accepts([symb_a]))
     enfa = get_example_non_minimal()
     enfa = enfa.minimize()
     self.assertTrue(enfa.is_deterministic())
     self.assertEqual(len(enfa.states), 3)
     self.assertTrue(enfa.accepts([symb_a, symb_b]))
     self.assertTrue(enfa.accepts([symb_a, symb_a, symb_b]))
     self.assertFalse(enfa.accepts([symb_b]))
     self.assertFalse(enfa.accepts([symb_a]))
     enfa = EpsilonNFA()
     enfa = enfa.minimize()
     self.assertTrue(enfa.is_deterministic())
     self.assertEqual(len(enfa.states), 0)
     self.assertFalse(enfa.accepts([]))
Ejemplo n.º 2
0
 def test_eclose(self):
     """ Test of the epsilon closure """
     states = [State(x) for x in range(8)]
     epsilon = Epsilon()
     symb_a = Symbol("a")
     symb_b = Symbol("b")
     enfa = EpsilonNFA()
     enfa.add_transition(states[1], epsilon, states[2])
     enfa.add_transition(states[1], epsilon, states[4])
     enfa.add_transition(states[2], epsilon, states[3])
     enfa.add_transition(states[3], epsilon, states[6])
     enfa.add_transition(states[5], epsilon, states[7])
     enfa.add_transition(states[4], symb_a, states[5])
     enfa.add_transition(states[5], symb_b, states[6])
     self.assertEqual(len(enfa.eclose(states[1])), 5)
     self.assertEqual(len(enfa.eclose(states[2])), 3)
     self.assertEqual(len(enfa.eclose(states[5])), 2)
     self.assertEqual(len(enfa.eclose(states[6])), 1)
     self.assertEqual(len(list(enfa._transition_function.get_edges())), 7)
     self.assertEqual(enfa.remove_transition(states[1], epsilon, states[4]),
                      1)
     self.assertFalse(enfa.is_deterministic())