KMP 알고리즘

2024. 9. 13. 03:46·C++
반응형

문자열 매칭 알고리즘은 크게 3가지가 있다.

KMP : 문자열 S가 있을 때, 패턴 P를 찾는 알고리즘

Trie : 문자열 N개가 있을 때, 문자열 S를 찾는 알고리즘

Aho-corasick : 문자열 N개가 있을 때, 패턴 P를 찾는 알고리즘

그 중 KMP에 대해 알아보자

 

KMP 알고리즘은 KMP 알고리즘을 만든 Knuth, Morris, Prett의 앞글자를 따서 이름을 붙였다.

KMP 알고리즘에서 알아야 하는 것은

1. 접두사와 접미사

apple을 예시로

<접두사>

a

ap

app

appl

apple

 

<접미사>

e

le

ple

pple

apple

이다.

 

2. pi 배열

pi[i]는 주어진 문자열의 0~i까지의 부분문자열 중 접두사==접미사가 될 수 있는 부분 문자열 중 가장 긴 것의 길이다

이때, 접두사가 0~i까지의 부분 문자열과 같으면 안된다.

 

문자열 ABBAAB를 기준으로 pi배열을 구해보자면 

i 부분 문자열 pi[i]
0 A 0
1 AB 0
2 ABB 0
3 ABBA 1
4 ABBAA 1
5 ABBAAB 2

 

가 됩니다.

 

KMP 알고리즘을 이해하기 위한 기초 지식을 익혔습니다.

 


참고 내용 

KMP : 문자열 검색 알고리즘 - 멍멍멍 (tistory.com)

 

KMP : 문자열 검색 알고리즘

문자열 검색이 뭐지? 워드프로세서를 사용할 때 찾기 기능을 사용한적 있을 겁니다. 브라우저에서도 Ctrl+F 단축키를 눌러 검색할 수 있습니다. 아래 이미지는 브라우저에서 "테이프"를 검색했을

bowbowbow.tistory.com

추가 참고

문자열 매칭 알고리즘[3](트라이 & 아호 코라식)[String Searching Algorithm, Trie & Aho-Corasick] (tistory.com)

반응형
저작자표시 (새창열림)

'C++' 카테고리의 다른 글

간단한 Queue 학습 및 제작  (0) 2024.09.21
유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘  (0) 2024.09.16
백준 11720번 숫자의  (0) 2024.08.27
백준 1003번 피보나치 함수  (1) 2024.08.27
하나의 정수 나눠 입력받기  (0) 2024.08.23
'C++' 카테고리의 다른 글
  • 간단한 Queue 학습 및 제작
  • 유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘
  • 백준 11720번 숫자의
  • 백준 1003번 피보나치 함수
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (302)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (49)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
KMP 알고리즘
상단으로

티스토리툴바