라빈-카프(Rabin-Karp) 문자열 검색 알고리즘은 문자열에서 패턴을 찾는 알고리즘이다. 이 알고리즘은 해싱(hashing)을 사용하여 문자열을 검색하므로, 문자열의 길이에 비례하는 시간 복잡도를 갖는다.
라빈-카프 알고리즘은 다음과 같은 과정으로 동작한다.
이러한 과정을 반복하여 검색 대상 문자열에서 패턴과 일치하는 부분을 찾을 수 있다.
패턴 문자의 해시값 계산은 다음과 같다.
문자열의 길이를 n, 각 문자의 아스키 코드값을 a라고 할 때
$2^n*a+2^{n-1}*a … + 2^0 + a$
예를 들어, 'abbcaabb'의 해시값은 다음과 같이 계산된다.
97 * 2^7 +
98 * 2^6 +
97 * 2^5 +
99 * 2^4 +
97 * 2^3 +
97 * 2^2 +
98 * 2^1 +
98 * 2^0