나는 이것에 관한 대부분의 문헌을 읽으려고 시도했지만, KMP 알고리즘에서 사용 된 실패 함수가 어떻게 구성되는지 아직 이해하지 못했습니다. 대부분 사람들이 우수하다고 생각하는 http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=stringSearching 튜토리얼을 주로 언급했습니다. 그러나,
Aho-Corasick과 단일 차원 KMP의 조합을 사용하여 2 차원 검색의 문제를 해결하려고했지만 더 빨리해야합니다. 정교하게 말하면, 크기가 n1 * n2 인 행렬 A를 가지며, 크기가 m1 * m2 인 더 작은 행렬 B를 모두 찾고 싶습니다. 그리고 그 행렬을 O (n1 * n2 + m1) * m2) 가능하다면. 예를 들어 : A = a b c b c
하는 문자열을 크 누스 - 모리스 - 프랫 알고리즘을 공부하는 동안 : ABC ABCDAB ABCDAB
을 패턴에 대한 : ABCDABD
내가 한 단계에 붙어있다. 나는 현재 붙어있는 단계를 강조 할 것이다. ABC ABCDAB ABCDAB
ABCDABD
ABC ABCDAB ABCDAB
ABCDABD
ABC ABCDAB ABCDAB