0% found this document useful (0 votes)
11 views7 pages

Rabin Karp

The Rabin-Karp algorithm is a string searching method that uses hash values to efficiently compare a pattern with subsequences of text, performing brute force comparisons only when hash values match. The algorithm calculates hash values in constant time by adjusting the existing value as it moves through the text. While it typically operates in O(N) time complexity, it can degrade to O(MN) in worst-case scenarios if a small prime number is used for hashing.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views7 pages

Rabin Karp

The Rabin-Karp algorithm is a string searching method that uses hash values to efficiently compare a pattern with subsequences of text, performing brute force comparisons only when hash values match. The algorithm calculates hash values in constant time by adjusting the existing value as it moves through the text. While it typically operates in O(N) time complexity, it can degrade to O(MN) in worst-case scenarios if a small prime number is used for hashing.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Rabin-Karp

• The Rabin-Karp string searching algorithm calculates a hash value


for the pattern, and for each M-character subsequence of text to be
compared.
• If the hash values are unequal, the algorithm will calculate the hash
value for next M-character sequence.
• If the hash values are equal, the algorithm will do a Brute Force
comparison between the pattern and the M-character sequence.
• In this way, there is only one comparison per text subsequence, and
Brute Force is only needed when hash values match.

1
Rabin-Karp Example
• Hash value of “AAAAA” is 37
• Hash value of “AAAAH” is 100

2
Rabin-Karp Algorithm
pattern is M characters long
hash_p=hash value of pattern
hash_t=hash value of first M letters in body of text
do
if (hash_p == hash_t)
brute force comparison of pattern and selected section of text
hash_t= hash value of next section of text, one character over
while (end of text)

3
Hash Function
• Let b be the number of letters in the alphabet. The text subsequence
t[i .. i+M-1] is mapped to the number

• Furthermore, given x(i) we can compute x(i+1) for the next


subsequence t[i+1 .. i+M] in constant time, as follows:

• In this way, we never explicitly compute a new value. We


simply adjust the existing value as we move over one 5
character.
Rabin-Karp Math Example

• Let’s say that our alphabet consists of 10 letters.


• our alphabet = a, b, c, d, e, f, g, h, i, j
• Let’s say that “a” corresponds to 1, “b” corresponds to 2 and so
on.
The hash value for string “cah” would be ...

3*100 + 1*10 + 8*1 = 318

6
Rabin-Karp Mods
• If M is large, then the resulting value (~bM) will be enormous. For this
reason, we hash the value by taking it mod a prime number q.
• The mod function is particularly useful in this case due to several of its
inherent properties:
[(x mod q) + (y mod q)] mod q = (x+y) mod q
(x mod q) mod q = x mod q
• For these reasons:
h(i)=((t[i] bM-1 mod q) +(t[i+1] bM-2 mod q) + … +(t[i+M-1] mod q))mod q
h(i+1) =( h(i) b mod q
Shift left one digit
-t[i] bM mod q
Subtract leftmost digit
+t[i+M] mod q )
Add new rightmost digit
mod q
7
Rabin-Karp Complexity
• If a sufficiently large prime number is used for the hash function,
the hashed values of two different patterns will usually be distinct.
• If this is the case, searching takes O(N) time, where N is the
number of characters in the larger body of text.
• It is always possible to construct a scenario with a worst case
complexity of O(MN). This, however, is likely to happen only if
the prime number used for hashing is small.

You might also like