Add Rabin.

This commit is contained in:
Oleksii Trekhleb 2018-04-24 21:36:47 +03:00
parent d126b23c3c
commit f9a8c881cc
2 changed files with 26 additions and 2 deletions

View File

@ -41,8 +41,8 @@
* **String**
* [Levenshtein Distance](https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/string/levenshtein-distance) - minimum edit distance between two sequences (DP approach)
* [Hamming Distance](https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/string/hamming-distance) - number of positions at which the symbols are different
* [KnuthMorrisPratt algorithm](https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/string/knuth-morris-pratt) - substring search
* Rabin Karp
* [KnuthMorrisPratt Algorithm](https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/string/knuth-morris-pratt) - substring search
* [Rabin Karp Algorithm](https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/string/rabin-karp) - substring search
* Longest common subsequence
* longest common substring
* **Search**

View File

@ -0,0 +1,24 @@
# Rabin Karp Algorithm
In computer science, the RabinKarp algorithm or KarpRabin algorithm
is a string searching algorithm created by Richard M. Karp and
Michael O. Rabin (1987) that uses hashing to find any one of a set
of pattern strings in a text.
## Complexity
For text of length `n` and `p` patterns
of combined length `m`, its average and best case running time is
`O(n + m)` in space `O(p)`, but its worst-case time is `O(n * m)`.
## Application
A practical application of the algorithm is detecting plagiarism.
Given source material, the algorithm can rapidly search through a paper
for instances of sentences from the source material, ignoring details
such as case and punctuation. Because of the abundance of the sought
strings, single-string searching algorithms are impractical.
## References
[Wikipedia](https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_algorithm)