Home 다중 패턴 매칭
Post
Cancel

다중 패턴 매칭

문자열

  • K개의 단어로 이루어진 사전에서 각 단어의 길이가 최대 m이라고 할 때, 주어진 문자열 T에서 이 사전에 나오는 단어가 나온 경우를 모두 찾으려면 어떻게 해야할까?

Aho-Corasick 알고리즘

  • 기본 아이디어: 주어진 단어들을 트라이 형태로 표현하고, Failure link를 정의하여 매치 실패시 다음으로 이동할 상태를 정의한다.
  • 사전의 예: {‘hers’, ‘his’, ‘she’}

  • 시간 복잡도: O(mK + T)
  • Failure link를 어떻게 정의?
  • BFS 이용
  • 시작 노드의 failure link는 자기 자신
  • 수학적 귀납법을 이용하여 정의한다.
    • 위의 그림에서 처음 h나 s는 시작 노드를 가리킬 수 밖에 없다.
    • 위의 그림에서 s -> h 까지 이동하면, h의 failure link는 hers나 his의 h를 가리킨다. (마찬가지로 s->h->e에서 e의 failure link는 hers의 e)