Aho-Corasick 알고리즘과 Rabin-Karp 알고리즘의 비교


11

여러 패턴 검색을 지원하는 문자열 검색 알고리즘을 연구 중입니다. 실행 시간 측면에서 가장 강력한 후보 인 Aho-CorasickRabin-Karp 두 알고리즘을 발견했습니다 . 그러나 두 알고리즘 사이의 포괄적 인 비교를 찾을 수 없었습니다. 어떤 알고리즘이 더 효율적입니까? 또한 병렬 컴퓨팅 및 다중 패턴 검색에 더 적합한 것은 무엇입니까? 마지막으로 어떤 하드웨어 리소스가 더 필요한가요?

AC 알고리즘의 경우 검색 단계는 시간 이 걸리며 RK의 경우 입니다. 그러나 RK의 실행 시간은 이므로 AC와 유사합니다. 나의 임시적인 결론은 RK가 AC만큼 많은 메모리를 필요로하지 않기 때문에 실질적으로 더 좋아 보인다는 것이다. 그 맞습니까?O ( N m ) O ( N + m )O(n+m)O(nm)O(n+m)


모든 길이가 같은 길이입니까?
Hendrik 1

@HendrikJan 아니오, 다른 길이 패턴
Hawk

패턴의 길이가 다른 경우 RK를 사용하여 패턴을 병렬로 처리하기가 어렵습니까? 위키 백과 페이지는 이러한 패턴의 길이가 동일하지만 다른 길이로 해시를 업데이트 할 수 있다고 제안하는 것 같습니다.
Hendrik 1

어떤 종류의 이론적 연구 나 실제 경험에 관심이 있습니까?
Raphael

@Raphael Academically, 우리는 경험적으로 증명하기 전에 먼저 이론적 연구를 적용했습니다. 프로그래밍 답변을 기대하지 않기 때문에 여기에 질문을 게시했습니다. 논리적 인 알고리즘 답변이 필요합니다
Hawk

답변:


4

점근 적 실행 시간 분석은이 두 알고리즘 중에서 선택하기에 가장 좋은 도구는 아닙니다. 점근 분석은 상수 요인을 무시하므로 상수 요인이 중요합니다. 두 알고리즘은 기본적으로 동일한 점근 적 실행 시간을 가지므로 점근 적 분석은 그 중에서 선택하는 데별로 도움이되지 않습니다.

대신 두 알고리즘 중에서 올바른 방법을 선택하는 것은 실험 분석을 통하는 것입니다. 대표적인 워크로드를 식별 한 후 실제로 사용하려는 머신 종류에서 워크로드에 대한 두 알고리즘의 성능을 벤치마킹하십시오.


또한 Rabin-Karp의 점근 적 실행 시간에 대해 약간 혼란 스러울 수 있습니다. 한편으로 Rabin-Karp의 작동 시간 은 이고 다음 문장에서 Rabin-Karp의 작동 시간 은 입니다. 아마도 예상 (평균 경우)와 최악의 경우 실행 시간의 차이로 인해 혼란 스러울 수 있습니다.O ( N + m )O(nm)O(n+m)

Rabin-Karp는 무작위로 분류되므로 예상 (평균 사례) 실행 시간은 실제로 실제 성능을 예측하는 데 사용할 수있는 적절한 지표입니다. 특히, 여기서 평균은 임의의 해시 함수 선택에 대한 것입니다. 특히 문자열 선택에 대한 평균이 아닙니다 . 최악의 문자열과 패턴이라도 평균 실행 시간은 여전히 입니다. 적절한 해시 함수의 실행 시간보다 긴 것이 확률 에서 지수 작은 . 다른 방식으로 (그리고 약간 비공식적으로) 말하면, Rabin-Karp가 보다 오래 걸릴 확률은 기하 급수적으로 적습니다.C ( N + M ) (C) O ( N + m )O(n+m)c(n+m)cO(n+m)시각. 우리는 이미 기하 급수적으로 나쁜 일이 일어날 확률을 받아 들여야합니다. 따라서이 기하 급수적으로 작은 기회에 대해 걱정하는 것은 의미가 없습니다.

엔지니어링 관점에서 Rabin-Karp의 실행 시간 (또는 가능할 수도 있음). 재료 는 무시하십시오 . 그것은 실제로 연습과 관련이 없습니다.O ( n 개의 m )O(n+m)O(nm)


1

그러나 두 알고리즘 사이의 포괄적 인 비교를 찾을 수 없었습니다.

두 알고리즘의 상대 성능에 대한 이와 같은 질문은 일반적으로 실제 데이터에 의존하는 평균 대 대 최악의 경우에 달려 있습니다. 이론적 대답은 Aho-Corasick 알고리즘이 큰 데이터 제한 사례 / 무증상에서 Rabin-Karp를 능가 한다는 것입니다. / 운영 시간.O ( n 개의 m )O(n+m)O(nm)

그러나 "포괄적 인 비교"에 대한 암시 적 쿼리를 위해 일부 논문은 실제 데이터에 대한이 두 가지 알고리즘과 다른 알고리즘을 실험적으로 / 실험적으로 비교하고 다른 알고리즘의 장단점에 대한 분석 / 비교를 포함합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.