navis
알고리즘 12강 (스트링 알고리즘) 본문
728x90
학습개요
- 이번 강의를 포함해서 앞으로 세 번의 강의를 통해서, 문자열을 의미하는 스트링에 대한 다양한 문제를 해결하는 스트링 알고리즘에 대해서 살펴본다. 우선 이번 시간에는 스트링 매칭 문제의 개념과 함께 다양한 스트링 매칭 알고리즘 중 라빈-카프 알고리즘과 KMP 알고리즘에 대해서 학습한다.
학습목표
- 스트링 및 스트링 매칭과 관련된 개념을 이해하고 설명할 수 있다.
- 브루트-포스 스트링 매칭 알고리즘의 개념, 동작, 그리고 성능을 이해하고 설명할 수 있다.
- 라빈-카프 알고리즘의 개념, 동작, 그리고 성능과 특징을 이해하고 설명할 수 있다.
- KMP 알고리즘의 개념, 동작, 그리고 성능과 특징을 이해하고 설명할 수 있다.
주요용어
- 알파벳 (alphabet)
스트링에 사용되는 문자들의 집합으로, 일반적으로 ∑로 나타냄 - 스트링 매칭 (string matching)
텍스트에서 패턴이 나타나는 위치를 찾는 문제 - 브루트-포스 (brute-force) 스트링 매칭 알고리즘
텍스트의 각 위치에서부터 패턴의 길이만큼 문자를 비교하며 매치를 찾는 방법 - 라빈-카프 (Rabin-Karp) 알고리즘
패턴의 해시값으로 매치의 후보를 찾고, 후보에 대해서만 문자별로 비교해서 매치를 찾는 방법 - KMP (Knuth-Morris-Pratt) 알고리즘
패턴 내의 문자들의 관계를 이용하여 매칭 시 중복된 비교를 줄이며 패턴을 찾는 방법으로, 패턴의 앞부분부터 문자를 비교
정리하기
- 기본 개념
⦁ 스트링 → 문자가 연속적으로 나열된 문자열
⦁ 알파벳 → 스트링에 사용되는 문자들의 집합
⦁ 스트링 매칭 → 텍스트에서 패턴이 나타나는 위치를 찾는 문제
- 텍스트 → 긴 스트링, 길이 n
- 패턴 → 짧은 스트링, 길이 m
⦁ 브루트-포스 스트링 매칭 알고리즘
- 텍스트의 각 위치에서부터 패턴의 길이만큼 문자를 비교하며 매치를 찾는 방법
- 성능 → O(nm) - 라빈-카프 알고리즘
⦁ 패턴의 해시값으로 매치의 후보를 찾고, 후보에 대해서만 문자별로 비교해서 매치를 찾는 방법
⦁ 텍스트의 각 위치마다 해시값 계산이 필요하지만, 직전 위치의 해시값을 이용하여 상수 시간에 계산 가능
⦁ 성능 → O(n+km) (k: 매치의 개수)
⦁ 매치의 개수가 상수라면 O(n)이지만, 텍스트의 모든 위치에서 매치가 발생하면 O(nm) - KMP 알고리즘
⦁ 패턴 내의 문자들의 관계를 이용하여 매칭 시 중복된 비교를 줄이며 패턴을 찾는 방법
⦁ 텍스트의 첫 위치에서 패턴의 앞부분부터 문자 비교
⦁ 불일치가 발생하면 일치한 서브스트링에 대해, 매치를 찾으면 패턴 전체에 대해 접두부와 접미부의 최대 일치 정보를 이용하여 해당 크기만큼 패턴을 텍스트의 다음 위치로 옮김
⦁ 전처리 → 패턴의 각 위치별로 접두부와 접미부의 최대 일치 정보를 구함
⦁ 성능 → O(n)
⦁ 전처리에 O(m), 매칭에 O(n)
'방송통신대 컴퓨터과학과' 카테고리의 다른 글
인공지능 13강 (신경회로망) (0) | 2024.05.14 |
---|---|
운영체제 13강 (분산 운영체제) (0) | 2024.05.13 |
인공지능 12강 (신경회로망) (0) | 2024.05.09 |
운영체제 12강 (저장장치 및 파일 관리) (0) | 2024.05.08 |
알고리즘 11강 (동적 프로그래밍) (0) | 2024.05.02 |