728x90 반응형 KMP4 [백준] 9250번 : 문자열 집합 판별 https://www.acmicpc.net/problem/9250 해당 문제는 N개의 문자들이 Q번 입력받은 문자열들의 부분집합으로 포함되어 있는지 확인하는 문제입니다.Trie와 KMP를 활용한 aho-corasick이라는 알고리즘 통해 해결항 수 있습니다. 트리에 insertvoid insert(String word) { Trie curNode = this; for(int i = 0; i kmp의 fail함수를 트리형태로public void computeFailFunc() { Queue queue = new LinkedList(); this.fail = this; queue.add(this); while(!queue.isEmpty()) { Trie cur = queue.poll();.. 2024. 10. 13. Boyer-Moore vs KMP https://lms0806.tistory.com/210 A Fast StringSearching Algorithm 리뷰해당 논문은 boyer–moore 알고리즘 이라고 불리는 kmp와 비슷한 알고리즘에 대하여 설명하고 있습니다. 보이어무어 알고리즘은 불필요한 것은 건너뛰고, 검색을 빠르게 하자는 것에서 KMP와 유사lms0806.tistory.com이전 포스팅에서 보이어-무어에 대해 설명중인 논문에 대해 설명을 했었습니다.https://lms0806.tistory.com/211 JAVA에서의 Boyer-Moore해당 글은 보이어 무어 알고리즘을 사용하고 있는 JAVA의 내부 코드에 대해 이야기하고자 합니다.Boyer-Moore에 대해서는 해당 글 참조 부탁드립니다.https://lms0806.tisto.. 2024. 6. 25. A Fast StringSearching Algorithm 리뷰 해당 논문은 boyer–moore 알고리즘 이라고 불리는 kmp와 비슷한 알고리즘에 대하여 설명하고 있습니다. 보이어무어 알고리즘은 불필요한 것은 건너뛰고, 검색을 빠르게 하자는 것에서 KMP와 유사합니다. 단, 뒷부분에서 불일치가 일어날 확률이 높다는 성질을 활용하여 오른쪽 끝부터 비교하여 문자열 매칭을 진행합니다. 다음과 같이 "EAT A APPLE"의 문장에 "APPLE"이라는 단어가 있는지 체크하는 과정을 거친다고 가정해보겠습니다.APPLE의 맨 뒤 단어인 E와 같은 위치에 있는 단어는 A로 서로 다르다는 것을 인식하였습니다.이후, A라는 단어가 찾고자 하는 APPLE 이라는 단어에 포함되어 있는지 확인하고, 포함되어 있다면 해당 위치로 이동을 시킵니다.위치로 이동결과, APPLE이라는 단어를 찾.. 2024. 6. 16. Efficient String Matching : An Aid to Bibliographic Search 리뷰 이번엔 Efficient String Matching : An Aid to Bibliographic Search이라는 논문에 대해 리뷰해볼까 합니다. 해당 논문은 유명한 문자열 매칭 알고리즘인 "아호코라식"에 대한 논문입니다. 아호 코라식 알고리즘에 대해 이해하기에 앞서 kmp와 trie 알고리즘에 대해 어느 정도 알고계시면 이해하기 쉽습니다. KMP "ABAABC"라는 문자열에 "ABC"라는 단어가 부분 문자열로 존재하는지 체크하는 과정을 단순 반복문을 통하여 진행하게 되면, 맨 앞에 단어부터 해당 형식으로 진행하게 됩니다. kmp 알고리즘을 활용하게 된다면, 해당 형식처럼 진행을 하게 됩니다. kmp는 기존 문자열 매칭방식과 다르게 fail function이라는 실패 함수를 활용하게 됩니다. "ABC.. 2024. 4. 23. 이전 1 다음 728x90 반응형