Ukkonen 알고리즘의 런타임은 알파벳 크기에 어떻게 의존합니까?


19

나는 Ukkonen 알고리즘의 점근 적 실행 시간에 대한 문제에 관심이 있습니다. 아마도 선형 (?) 시간에 접미사 트리 를 구성하는 가장 인기있는 알고리즘 일 것 입니다.

Dan Gusfield (섹션 6.5.1)의 "문자열, 나무 및 시퀀스에 대한 알고리즘"책에서 인용 한 내용은 다음과 같습니다.

"... Aho-Corasick, Weiner, Ukkonen 및 McCreight 알고리즘은 모두 공간이 필요하거나 O ( m ) 시간 범위가 최소 O ( m log m )O 로 대체되어야합니다. ( m log | Σ |Θ(미디엄|Σ|)영형(미디엄)영형(미디엄로그미디엄) ".영형(미디엄로그|Σ|)

[ 은 문자열 길이이며미디엄 는 알파벳 크기입니다]Σ

왜 그런지 이해가되지 않습니다.

  • 공간 : 음 , 우리가 크기 배열을 사용하여 노드에서 분기를 나타내는 경우 실제로는 Θ ( m | Σ | ) 공간 사용으로 끝납니다 . 그러나 내가 볼 수있는 한 해시 테이블 (예 : Python의 사전)을 사용하여 분기를 저장할 수도 있습니다. 그런 다음 모든 해시 테이블에 Θ ( m ) 포인터 만 저장하고 ( 트리에 Θ ( m ) 가장자리 가 있기 때문에 ) 여전히 O 의 자식 노드에 액세스 할 수 있습니다Θ(|Σ|)Θ(미디엄|Σ|)Θ(미디엄)Θ(미디엄)영형(1) 배열을 사용할 때만 큼 빠릅니다.
  • 시간 : 위에서 언급했듯이 해시 테이블을 사용하면 시간 에 모든 노드의 발신 분기에 액세스 할 수 있습니다 . Ukkonen의 알고리즘에는 O ( m ) 작업 (자식 노드 액세스 포함 )이 필요하므로 전체 실행 시간도 O ( m )이 됩니다.영형(1)영형(미디엄)영형(미디엄)

내 결론에 왜 틀린지, 알파벳에 대한 Ukkonen 알고리즘의 의존성에 대해 Gusfield가 왜 옳은지에 대한 힌트를 주셔서 감사합니다.


3
나는 알파벳 크기의 독립적 인 시간 / 공간 경계가 불가능하다는 효과에 대한 증거가 없다고 생각합니다. Gusfield는 시간을 완전히 없애는 알려진 방법이 없기 때문에 성명을 발표했다고 생각합니다. 하나를 설정하려면 해시 함수에 대해 더 자세히 설명해야합니다. 해시 조회에 대한 최악의 경우 O (1) 시간 제한에는 완벽한 해시가 필요합니다. 해시 항목이 그 시점에서 정적이지 않기 때문에 알고리즘 중에이 작업을 수행하는 방법이 명확하지 않습니다.
jogojapan

(계속) 트리가 완료되면 할 수 있지만 알고리즘 자체에 대한 시간 제한은 변경되지 않습니다. (질문은 +1입니다.)
jogojapan

1
유용한 맥락 : Ukkonen의 알고리즘 설명
FrankW

답변:


2

주석에서 @jogojapan이 언급했듯이 일반적으로 만 상각하면 알고리즘에 대한 상각 경계 만 얻을 수 있습니다. 그러나 나는 당신이 이것들을 얻지 못한다고 생각합니다 : 상각 된 O ( 1 ) 해싱 을 얻으려면 해시 테이블의 크기가 Ω ( Σ ) 이어야 하므로 여전히 Θ ( m Σ ) 공간 (그리고 동시에 초기화 요구 사항).영형(1)영형(1)Ω(Σ)Θ(미디엄Σ)

또한 실제로 이러한 모든 해시 테이블을 설정하는 시간은 배열을 설정하는 시간보다 훨씬 높습니다.

(노드, 문자) 쌍으로 색인 된 글로벌 해시 테이블을 사용하면 더 나을 수 있지만 적어도 "만 상각 된"인수는 남아 있습니다.

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