Ejemplo n.º 1
0
def test_speed():
    """long execution"""
    with open("Vojna_i_mir._Tom_1.txt", 'r') as file:
        war_and_peace = file.read()

    print(len(war_and_peace))  # 2989848

    limits = range(10, len(war_and_peace), 50000)

    pattern1 = "князь Андрей"
    pattern2 = " Болконский "
    pattern3 = "простумитесь"

    rk_times = []
    aho_times = []

    for limit in limits:
        start = time()
        rk_indices = rabin_karp([pattern1, pattern2, pattern3], war_and_peace)
        end = time()
        rk_time = end - start
        rk_times.append(rk_time)

        #, pattern2, pattern3, pattern4])
        start = time()
        A = Automaton([pattern1, pattern2, pattern3])
        aho_indices = A.search_in(war_and_peace)
        end = time()
        aho_time = end - start
        aho_times.append(aho_time)

        assert rk_indices == aho_indices

    # plt.bar(['Rabin-Karp', "Aho-Korasik"], [rk_time, aho_time])
    plt.plot(limits, rk_times, label='Rabin-Karp')
    plt.plot(limits, aho_times, label='Aho-Korasick')
    plt.legend()
    plt.title('Searching patterns in "War and peace"')
    plt.show()
Ejemplo n.º 2
0
def test_speed_barplot():
    with open("Vojna_i_mir._Tom_1.txt", 'r') as file:
        war_and_peace = file.read()

    pattern1 = "князь Андрей"
    pattern2 = " Болконский "
    pattern3 = "простумитесь"

    start = time()
    rk_indices = rabin_karp([pattern1, pattern2, pattern3], war_and_peace)
    end = time()
    rk_time = end - start

    start = time()
    A = Automaton([pattern1, pattern2, pattern3])
    aho_indices = A.search_in(war_and_peace)
    end = time()
    aho_time = end - start

    assert rk_indices == aho_indices

    plt.bar(['Rabin-Karp', "Aho-Korasik"], [rk_time, aho_time])
    plt.show()
Ejemplo n.º 3
0
 def test_multiple_hits(self):
     string = "AABAACAADAABAABA"
     pattern = "AABA"
     self.assertTrue(rabin_karp(string, pattern), [0, 9, 12])
Ejemplo n.º 4
0
 def test_no_match(self):
     string = "ab123456"
     pattern = "cd"
     self.assertEquals(rabin_karp(string, pattern), [])
Ejemplo n.º 5
0
 def test_pattern_with_numeric(self):
     string = "ab12a"
     pattern = "b1"
     self.assertEquals(rabin_karp(string, pattern), [1])
	def testWord(self):		
		for w in self.words:
			self.assertEqual(rabin_karp(w[0],w[1]), w[2])
	def testSubBigger(self):		
		self.assertEqual(rabin_karp("LeloLelo","lelo"), -1)
	def testEmpty(self):
		self.assertEqual(rabin_karp("",""), -1)
		self.assertEqual(rabin_karp(""," "), -1)		
		self.assertEqual(rabin_karp(" ",""), -1)		
	def testNull(self):
		self.assertEqual(rabin_karp(None, None), -1)
Ejemplo n.º 10
0
 def testWord(self):
     for w in self.words:
         self.assertEqual(rabin_karp(w[0], w[1]), w[2])
Ejemplo n.º 11
0
 def testSubBigger(self):
     self.assertEqual(rabin_karp("LeloLelo", "lelo"), -1)
Ejemplo n.º 12
0
 def testEmpty(self):
     self.assertEqual(rabin_karp("", ""), -1)
     self.assertEqual(rabin_karp("", " "), -1)
     self.assertEqual(rabin_karp(" ", ""), -1)
Ejemplo n.º 13
0
 def testNull(self):
     self.assertEqual(rabin_karp(None, None), -1)
Ejemplo n.º 14
0
def test_rabin_karp():
    print("Rabin-Karp search;")
    print_params(default_pattern, default_text)
    indices = rabin_karp([default_pattern], default_text)
    print("indices:", indices)
Ejemplo n.º 15
0
    end = time.time()
    time_p.append((i, end-start))
"""
"""
for x in short_text:
    for y in short_pattern:
        if x == y:
            c = 0
"""

# Vary Radix
time_r = []
for i in [8, 64, 256, 512]:  # [128, 140, 150, 175, 200, 225, 256]:
    start = time.time()
    # rk.rabin_karp(short_text, short_pattern, radix=i, prime=pr)
    rk.rabin_karp(short_text, short_pattern, radix=i, prime=pr)
    end = time.time()
    time_r.append((i, end - start))
"""
def naive_match(t, p):
    shifts = []
    for x in range(len(t) - len(p)):
        z = 0
        for y in range(len(p)):
            if not p[y] == t[x+y]:
                break
            z += 1
        if z == len(p):
            shifts.append(x)
    return shifts