개념적으로 간단한 선형 시간 접미사 트리 구성


13

1973 년 Weiner는 최초의 선형 시간 접미사 트리를 만들었습니다. 이 알고리즘은 1976 년 McCreight에 의해, 1995 년에는 Ukkonen에 의해 단순화되었습니다. 그럼에도 불구하고, Ukkonen의 알고리즘은 상대적으로 개념적으로 관련되어 있습니다.

1995 년부터 Ukkonen 알고리즘이 단순화 되었습니까?


4
: Farach 등 엘 1998 년 나는이 읽기 시작하기에 좋은 장소라고 생각 scholar.google.co.uk/...
라두 고르

답변:


9

접미사 트리 구성을 직접 단순화하는 새로운 결과가 있는지 확실하지 않습니다. 그러나 선형 시간으로 접미사 배열을 구성하는 매우 간단한 알고리즘을 제공하는 결과하나 이상 있습니다 .

접미사 배열 ( 가장 긴 공통 접두어를 쿼리하는 데 시간 사용)을 사용하여 동등한 접미사 트리를 작성할 수 있으므로이 두 데이터 구조간에 개념 상 동등성이 있습니다 . 이것은 비교적 간단한 연습이어야하지만 필요한 경우 자세한 내용을 알려줄 수 있습니다.O(1)

O(nlgn)


1
O (N lg N) 시간에 접미사 배열을보다 쉽게 ​​구축 할 수있는 방법을 알려줄 수 있습니까?
Randomblue

1
레이블이 접미사 간의 순서 관계에 해당하도록 길이 2 ^ k의 모든 접미사에 정수를 레이블로 지정하십시오. 첫 번째 단계 (k = 0)는 분명합니다. k 단계에서 레이블을 계산하려면 k-1 단계의 레이블을 사용하고 기수 정렬을 수행하십시오. 이 논문은 이해하기 쉬워야한다 webglimpse.net/pubs/suffix.pdf
zotachidil

7

언급 된 것 외에도 ( Kärkkäinen & Sanders, 2003 ), Kärkkäinen, Sanders and Burkhard, 2006 의 "최신"버전에 감사 할 것 입니다. 이 알고리즘은 기본적으로 Farach 알고리즘의 구조를 따릅니다. 논란의 여지없이 개념적으로 더 간단하지만 실제로 보너스는 독자에게 알고리즘의 구현을 제공한다는 것입니다. 약 50 줄의 C ++이므로 실제로 숨겨진 세부 정보가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.