접미사 트리에서 접미사 배열을 구축합니다.노드가 두 명 이상의 자녀가있을 때의 정렬기 방문

cs.stackexchange https://cs.stackexchange.com/questions/128007

문제

노트에서 :

접미사 배열 $ \ texttt {sa} $ 을 관찰하는 것은 어렵지 않습니다. $ \ texttt {t} $ \ texttt {T} $ \ texttt {t} $ 은 접미사 트리에서 얻을 수 있습니다 $ \ texttt {st} $ \ span> 잎을 마시면 매번 발생한이 잎에 저장된 접미사 색인은 접미어 배열 $ \ texttt {sa} $ ; 내부 노드 u가 매번 발생한 관련 값이 배열에 기록됩니다. $ \ texttt {lcp} $ .

노드가 두 개 이상의 자녀가있을 때 어떻게 지내기를합니까?

가장 왼쪽 자식을 방문한 다음 노드, 다른 가장 왼쪽 아이를 방문하십시오. 그런 다음 노드를 다시 방문합니까?

sa 라는 조명 조명으로 명령 된 접미사의 배열에서.

LCP 은 2 개의 연속 접미사 $ \ text {suff} _ {sa [i]} \ text {and} \ text 사이의 가장 긴 공통 접두사가 포함되어 있습니다. {부탁} _ _} $

\ $는 다른 모든 char보다 작은 char를 나타냅니다.

각 노드와 관련된 값은 지금까지 철자가 철자 된 접두사의 길이입니다.

잎은 접미사의 지표를 나타냅니다. t= 바나나 \ $ 인 경우 잎 3은 나나 \ $ (t [3,7])

을 나타냅니다.

이미지의 접미사 트리가되어야합니다. 그러나 가장자리에 따라 가장자리가 "\ $"라고 표시된 가장자리가 가장 왼쪽 잎이어야하며 잎 7이 왼쪽 잎이어야합니다. 가장자리.

여기에 이미지 설명을 입력하십시오 >>

알고리즘을 시뮬레이션 할 때 먼저 노드 7 (트리의 고정 버전 사용)을 방문한 다음 루트를 방문합니다. 그래서

가 있습니다.
SA = [7, ...]
lcp = [0, ...]
.

그런 다음 u가 계속해서 계속 진행하고 있습니다. 루트로 돌아가면 LCP 에 값을 다시 삽입합니까? 또는 루트를 처음 방문한 시간 만 수행합니까?

도움이 되었습니까?

해결책

노드에 $ l $ 어린이, $ l \ geq 2 $ 첫 번째 $ l-1 $ 어린이를 왼쪽 노드로 취급해야하며, 상위 복수 () 시간, 접두사의 길이가 LCP 배열 내부에 철자가있는 접두사의 길이를 씁니다.

이미지의 트리에 적용된이 문제는 올바른 것을 생성합니다 :

SA = [7, 6, 4, 2, 1, 5, 3]
lcp = [0, 1, 3, 0, 0, 2]
.

잎 7과 "$"라는 가장자리가 가장 왼쪽이어야한다는 것을 명심하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top