접미사 배열

접미사 배열은 문자열의 모든 접미사를 사전순으로 정렬한 시작 위치 배열로 표현한다 문자열 색인 자료구조 분야의 대표적인 알고리즘 또는 핵심 계산 문제로, 자료 표현과 입력 조건에 맞는 계산 절차를 사용한다. 명시적인 수학적 불변식·상태 정의를 바탕으로 구현하므로 단순한 명령어 조합과는...

분류알고리즘 · 문자열 색인 자료구조
핵심 문제문자열의 모든 접미사를 사전순으로 정렬한 시작 위치 배열로 표현한다
방법두 접미사를 비교해 사전순으로 나열하고, 완성된 배열에서 패턴의 구간을 이진 탐색할 수 있다
계산 비용전형적 구축 O(n log n) 또는 O(n log² n), 선형 구축 알고리즘도 존재
적용 조건문자열의 사전식 순서와 종단 표시·인덱스 규칙을 정의해야 한다
관련 활용검색·중복 부분 문자열·최장 공통 부분 문자열 등에 활용한다
관련 이론자료구조, 계산 복잡도
참고 자료CP-Algorithms

접미사 배열은 문자열의 모든 접미사를 사전순으로 정렬한 시작 위치 배열로 표현한다 문자열 색인 자료구조 분야의 대표적인 알고리즘 또는 핵심 계산 문제로, 자료 표현과 입력 조건에 맞는 계산 절차를 사용한다. 명시적인 수학적 불변식·상태 정의를 바탕으로 구현하므로 단순한 명령어 조합과는 구별된다.[1]

계산 절차는 두 접미사를 비교해 사전순으로 나열하고, 완성된 배열에서 패턴의 구간을 이진 탐색할 수 있다. rank와 LCP 배열을 결합해 접미사 간 공통 접두사 길이도 계산한다. 각 단계의 상태가 무엇을 의미하는지 정의하고 초기값과 경계 입력을 검사하면 결과의 정확성을 증명하거나 테스트할 수 있다.

복잡도는 전형적 구축 O(n log n) 또는 O(n log² n), 선형 구축 알고리즘도 존재 적용 전제는 문자열의 사전식 순서와 종단 표시·인덱스 규칙을 정의해야 한다 실제 연산량·메모리 사용은 구현의 자료구조와 정수·실수 표현, 전처리 및 입력 크기에 따라 달라진다.

응용과 관련 기법을 보면 검색·중복 부분 문자열·최장 공통 부분 문자열 등에 활용한다. 접미사 트리보다 메모리 배치가 간단한 배열 기반 색인이다. 같은 문제라도 최악 시간 보장, 메모리 요구 사항과 정밀도·확률적인 실패 가능성에 따라 적합한 알고리즘이 달라진다.[2]

역사

정의와 해결 문제

입력과 출력

전제 조건

수학적 배경

알고리즘 원리

기본 아이디어

주요 처리 단계

불변식

정확성과 종료

복잡도 분석

시간 복잡도

공간 복잡도

구현과 수치적 주의점

의사 코드

경계 조건

최적화

변형 및 관련 알고리즘

활용 분야

관련 문서

  1. CP-Algorithms ↩
  2. MIT Algorithms lecture notes ↩