2012-07-18 2 views
2

나는 Aho-Corasick 알고리즘의 코드를 가지고있다. 그러나 문자열 주어진 목록에서 텍스트를 검색 할 때 찾기 절차 중에 상태 정보를 사용하는 방법을 여전히 이해할 수 없습니다.Aho-Corasick을 사용하여 주어진 문자열 세트에서 텍스트를 찾는 방법?

예를 들어 문자열 목록이 [MOSCOW][COLA]이고, 이제 CA이 목록에 있는지 확인해야합니다. 그렇다면 그 위치는 무엇입니까?

여기는 link to the code입니다.

답변

2

공부하는 알고리즘은 꽤 정반대입니다. 사전이 [MOSCOW][COLA]이고 입력 문자열이 CA 인 경우 알고리즘은 MOSCOW의 모든 위치를 CA, 그리고 COLA의 모든 위치를 CA에 알려줍니다. (링크 된 코드를 호출이나, Node)

이제

특정 상태는 같은 의미 뭔가있다 : 우리는 단지 COLA의 유일한 C 후 수 있습니다 "을하지만, 우리는 확실히 중간에 아무데도 없습니다 MOSCOW ". (이것은 CA의 첫 번째 문자 다음에 방문한 노드 일 수 있습니다.)

MOSCOLONI과 같이 다른 입력을 검색 할 때 알고리즘의 힘이 더 잘 보입니다. L을보기 직전의 현재 상태는 ""입니다. 잠재 문자로는 MOSCOW 또는 5 자로 표시 될 수 있습니다. COLA "큰 일은 모든 사전 단어를 한 번에 살펴 보는 것입니다. 사실, 심지어 반복 문자를 고려할 때 모든 단어의 모든 위치에도 적용됩니다.

관련 문제