티스토리 뷰

자료구조

트라이(Trie)

nooblette 2021. 12. 24. 18:23

트라이(Trie)

  • 문자열에 대한 검색을 빠르게 도와주는 자료구조

Abstract

  • 문자열에 대해 이진탐색트리를 적용하면 ➡️ 문자열의 길이(M) + 문자열의 총 개수(O(log(N)) ➡️ O(Mlog(N)) 의 시간복잡도
  • 트라이를 적용하면 ➡️ O(M) 으로 문자열 검색이 가능

e.g.) [bear, bell, bid, bull, buy, sell, stack, stop] (N = 8)


BST for Strings

  • 문자열의 개수(N)만큼 비교하기 때문에 O(logN)
  • 가장 길이가 긴 문자열의 길이가 M이라면 두 문자열을 비교하는데 O(M)
  • 총 O(MlogN)의 시간복잡도

 

 

Trie for Strings

  • 트라이(Trie)를 활용 한 Tree의 leaf node의 갯수는 문자열의 총 개수(N)과 동일하다
  • O(M)의 시간복잡도 (가장 길이가 긴 Strings의 길이(M)만큼만 탐색하면 된다)

특징

  • 문자열을 단순하게 하나씩 비교할때보다 훨씬 효율적
  • 각 노드는 자식에 대한 포인터를 모두 저장하므로 공간을 많이 차지
  • O(포인터 크기 * 포인터 개수 * 총 노드의 개수)만큼의 공간을 차지한다.

적합할 때

  • 검색어 자동완성, 사전에서 단어 찾기, 문자열 검사
  • 각 노드에 저장할 필요 없이 문자열의 접두사를 얻을 수 있다.(지나온 경로가 곧 그 문자열의 접두사들)

참고한곳

'자료구조' 카테고리의 다른 글

B+ 트리(B+ Tree)  (0) 2021.12.24
B 트리(B-Tree)  (0) 2021.12.24
해시(Hash)  (0) 2021.12.23
이진탐색트리(Binary Search Tree, BST)  (0) 2021.12.23
트리(Tree)  (0) 2021.12.23
Comments