print "lexical productions", lprod
		x.append(lprod)
		xe.append(lprod)
		factory.number_lexical_productions  = lprod
		fkpn = 0.0
		f1p = 0.0
		for grammar  in xrange(number_grammars):
			
			
			grammar = factory.make_grammar()
			print grammar.language_infinite(), len(grammar.nonterminals)
			#print grammar
			#grammar.dump()
		# 	us = uniformsampler.UniformSampler(grammar,max_length)
		 	## now test if it has the fcp and fkp.
			eanswer = cfgfcp.test_one_fkp_exact(grammar, 10)
			if eanswer:
				f1p += 1
			answer = cfgfcp.test_strong_fkp_full(grammar, k)
			print "FKPK", answer
			if answer:
				fkpn += 1
			if eanswer and not answer:
				grammar.dump()
				#raise ValueError()
		print "count k = ", fkpn
		print "count exact = ", f1p
		ratio = fkpn / number_grammars

		y.append(ratio)
		ye.append( f1p/ number_grammars)
Esempio n. 2
0
            # Display information about the experiment.
            trial_heading = "Grammar " + str(i + 1) + ": "
            if grammar.language_infinite():
                trial_heading += "Infinite"
            else:
                trial_heading += "Finite"
            trial_heading += " with " + str(len(
                grammar.nonterminals)) + " nonterminals"
            print trial_heading

            # Test if the grammar has the 1-FKP.
            # Make two copies of the grammar: one with and one without lexical rules.
            grammar_no_lex = deepcopy(grammar)
            try:
                grammar.trim()
                answer = cfgfcp.test_one_fkp_exact(grammar, 10)

                grammar_no_lex.remove_lexical_rules()
                grammar_no_lex.trim()
                answer_no_lex = cfgfcp.test_one_fkp_exact(grammar_no_lex, 10)
            except:
                print "An error occurred. Trying again."
                no_error = False
                continue

            # Report and record the results.
            print "1-kernels: " + str(answer)
            print "1-kernels (no lex): " + str(answer_no_lex)
            if answer:
                fkpn += 1
            if answer_no_lex:
Esempio n. 3
0
		#for lprod in [25, 50, 100,150,200,250,300]:
		print "lexical productions", lprod
		x.append(lprod)
		
		factory.number_lexical_productions  = lprod
		fkpn = 0.0
		for grammar  in xrange(number_grammars):
			
			
			grammar = factory.make_grammar()
			print grammar.language_infinite(), len(grammar.nonterminals)
			#print grammar
			#grammar.dump()
		# 	us = uniformsampler.UniformSampler(grammar,max_length)
		 	## now test if it has the fcp and fkp.
			print "Exact", cfgfcp.test_one_fkp_exact(grammar, 10)
			answer = cfgfcp.test_strong_fkp_full(grammar, k)
			print "FKPK", answer
			if answer:
				fkpn += 1
		print "ratio = ", fkpn
		ratio = fkpn / number_grammars
		y.append(ratio)

	print x
	print y

	

	plt.plot(x,y)
Esempio n. 4
0
        #for lprod in [25, 50, 100,150,200,250,300]:
        print "lexical productions", lprod
        x.append(lprod)
        xe.append(lprod)
        factory.number_lexical_productions = lprod
        fkpn = 0.0
        f1p = 0.0
        for grammar in xrange(number_grammars):

            grammar = factory.make_grammar()
            print grammar.language_infinite(), len(grammar.nonterminals)
            #print grammar
            #grammar.dump()
            # 	us = uniformsampler.UniformSampler(grammar,max_length)
            ## now test if it has the fcp and fkp.
            eanswer = cfgfcp.test_one_fkp_exact(grammar, 10)
            if eanswer:
                f1p += 1
            answer = cfgfcp.test_strong_fkp_full(grammar, k)
            print "FKPK", answer
            if answer:
                fkpn += 1
            if eanswer and not answer:
                grammar.dump()
                #raise ValueError()
        print "count k = ", fkpn
        print "count exact = ", f1p
        ratio = fkpn / number_grammars

        y.append(ratio)
        ye.append(f1p / number_grammars)
Esempio n. 5
0
 def test_full_1fkp_exact3(self):
     grammar = cfg.load_from_file("../data/cfgs/atwice.cfg")
     self.assertTrue(cfgfcp.test_one_fkp_exact(grammar, 10))
Esempio n. 6
0
 def test_full_1fkp_exact2(self):
     grammar = cfg.load_from_file("../data/cfgs/abab2.cfg")
     self.assertFalse(cfgfcp.test_one_fkp_exact(grammar, 10))