Example #1
0
 def testNaUniaoSeAmbosAFTemEstadoInicialFinalOEstadoInicialNovoTbEhFinal(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeAsEhPar()
   self.assertTrue(afd1.obterEstadoInicial().ehFinal())
   self.assertTrue(afd2.obterEstadoInicial().ehFinal())
   afd1Uafd2 = util.unir_af(afd1, afd2)
   self.assertTrue(afd1Uafd2.obterEstadoInicial().ehFinal())
Example #2
0
 def testDadaUmaGramaticaRegularSabeQualEhOSeuAFDMinimoCorrespondente(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = util.obter_afd(construirGRComABOndeAsEhPar())
   
   self.assertTrue(util.sao_equivalentes_af(afd1, afd2))
   self.assertTrue(afd2.ehDeterministico())
   self.assertTrue(afd2.ehMinimo())
Example #3
0
 def testDadoUmAFDSabeQualSeuComplemento(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirComplementoDoAFDComABOndeAsEhPar()
   complemento = util.obter_complemento_af(afd1)
   self.assertEqual(afd2.obterEstados(), complemento.obterEstados())
   self.assertEqual(afd2.obterEstadosFinais(), complemento.obterEstadosFinais())
   self.assertEqual(afd2.obterEstadoInicial(), complemento.obterEstadoInicial())
Example #4
0
 def testDadoAConcatenacaoDeDoisAFSeOInicialDoSegundoNaoEhFinalOsFinaisDoPrimeiroDeixamDeSerFinais(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeBsEhImpar()
   self.assertFalse(afd2.obterEstadoInicial().ehFinal())
   afd1afd2 = util.concatenar_af(afd1, afd2)
   finais_antigos_len = len(afd1.obterEstadosFinais()) + len(afd2.obterEstadosFinais())
   self.assertTrue(finais_antigos_len > len(afd1afd2.obterEstadosFinais()))
 def testSabeSeNaoReconheceUmaPalavra(self):
   afd = construirAFDComABOndeAsEhPar()
   self.assertFalse(afd.reconhecePalavra('babb'))
   self.assertFalse(afd.reconhecePalavra('abbabba'))
   self.assertFalse(afd.reconhecePalavra('abaaaa'))
   self.assertFalse(afd.reconhecePalavra('bbba'))
   self.assertFalse(afd.reconhecePalavra('abbb'))
    def testRobustezDaTransformacaoDaEREmAFD(self):
        automato = construirAFDComABOndeAsEhPar()
        exp_reg = ExpressaoRegular("(b*ab*a)*b*")
        afd_exp = exp_reg.obterAFD()
        self.assertTrue(util.sao_equivalentes_af(automato, afd_exp))

        automato = construirAFDComABOndeBsEhImpar()
        exp_reg = ExpressaoRegular("a*ba* (a*ba*ba*)*")
        afd_exp = exp_reg.obterAFD()
        self.assertTrue(util.sao_equivalentes_af(automato, afd_exp))
Example #7
0
 def testDadoUmAFAposAplicarFechamentoPositivoNoMesmoOEstadoInicialSohEhFinalSeJaEraFinalAntes(self):
   afd1 = construirAFDComABOndeBsEhImpar()
   afd2 = construirAFDComABOndeAsEhPar()
   self.assertFalse(afd1.obterEstadoInicial().ehFinal())
   self.assertTrue(afd2.obterEstadoInicial().ehFinal())
   
   afd_pos1 = util.obter_fechamento_positivo_af(afd1)
   afd_pos2 = util.obter_fechamento_positivo_af(afd2)
   self.assertFalse(afd_pos1.obterEstadoInicial().ehFinal())
   self.assertTrue(afd_pos2.obterEstadoInicial().ehFinal())
Example #8
0
 def testDadoUmAFDSabeQualEhASuaGramaticaRegularCorrespondenteQuandoAFDProduzEpsilon(self):
   gr1 = util.obter_gramatica_regular(construirAFDComABOndeAsEhPar())
   afd1  = util.obter_afd(gr1)
   afd2 = construirAFDComABOndeAsEhPar()
   
   self.assertTrue(util.sao_equivalentes_af(afd1, afd2))
Example #9
0
 def testDadosDoisAFSabeSeElesNaoSaoEquivalentes(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeBsEhImpar()
   self.assertFalse(util.sao_equivalentes_af(afd1, afd2)) 
Example #10
0
 def testDadosDoisAFSabeSeElesSaoEquivalentes(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirEquivalenteDoAFDComABOndeAsEhPar()
   self.assertTrue(util.sao_equivalentes_af(afd1, afd2))
Example #11
0
 def testDadosDoisAFSabeSeAF1NaoEstaContidoEmAF2(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeBsEhImpar()
   self.assertFalse(util.esta_contido_af(afd1, afd2)) 
Example #12
0
 def testDadosDoisAFSabeSeAF1EstaContidoEmAF2(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirEquivalenteDoAFDComABOndeAsEhPar()
   self.assertTrue(util.esta_contido_af(afd1, afd2))
Example #13
0
 def testDadoUmAFPodeAplicarFechamentoReflexivoNoMesmo(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd_reflex = util.obter_fechamento_reflexivo_af(afd1)
   self.assertEqual(len(afd_reflex.obterEstados()), len(afd1.obterEstados()) + 1)
Example #14
0
 def testDadoDoisAFPodeConcatenalos(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeBsEhImpar()
   afd1afd2 = util.concatenar_af(afd1, afd2)
   estados_antigos = len(afd1.obterEstados()) + len(afd2.obterEstados())
   self.assertEqual(len(afd1afd2.obterEstados()), estados_antigos)
Example #15
0
 def testDadoDoisAFPodeUnilos(self):
   afd1 = construirAFDComABOndeAsEhPar()
   afd2 = construirAFDComABOndeBsEhImpar()
   afd1Uafd2 = util.unir_af(afd1, afd2)
   estados_antigos = len(afd1.obterEstados()) + len(afd2.obterEstados())
   self.assertEqual(len(afd1Uafd2.obterEstados()) - 1, estados_antigos)
 def testSabeSeReconheceEpsilon(self):
   afd = construirAFDComABOndeAsEhPar()
   self.assertTrue(afd.reconhecePalavra(EPSILON))