자료ꡬ쑰

[자료ꡬ쑰] Trie

quedevel 2023. 3. 26. 21:09
728x90
λ°˜μ‘ν˜•

🎯 Trie


트라이(Trie)λŠ” 검색 트리의 μΌμ’…μœΌλ‘œ, λ¬Έμžμ—΄ 탐색에 μ‚¬μš©λ˜λŠ” 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€. νŠΈλΌμ΄λŠ” λ¬Έμžμ—΄μ„ 이진 검색 트리(Binary Search Tree)처럼 μ €μž₯ν•˜μ§€ μ•Šκ³ , 각 λ…Έλ“œμ˜ λ¬Έμžμ—΄μ„ ν‘œν˜„ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ νŠΈλΌμ΄λŠ” λ¬Έμžμ—΄ 검색 및 μ‚½μž…μ—μ„œ 높은 μ„±λŠ₯을 보이며, 특히 λ¬Έμžμ—΄ 검색에 λŒ€ν•΄ O(m)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§‘λ‹ˆλ‹€. (m은 κ²€μƒ‰ν•˜λŠ” λ¬Έμžμ—΄μ˜ κΈΈμ΄μž…λ‹ˆλ‹€.)


Trie의 ꡬ쑰


⭐️ {"A", "to", "tea", "ted", "ten", "i", "in", "inn"} 을 트라이둜 κ΅¬ν˜„

νŠΈλΌμ΄λŠ” λ¬Έμžμ—΄μ„ νƒμƒ‰ν•˜κΈ° μœ„ν•œ μžλ£Œκ΅¬μ‘°μ΄λ―€λ‘œ λ¬Έμžμ—΄ 탐색을 μœ„ν•΄μ„œλŠ” λ‹€μŒ κΈ€μžμ— ν•΄λ‹Ήν•˜λŠ” λ…Έλ“œλ₯Ό 타고 따라가면 λœλ‹€.

또 트라이의 μ€‘μš”ν•œ 속성 쀑 ν•˜λ‚˜λŠ” λ£¨νŠΈμ—μ„œλΆ€ν„° λ‚΄λ €κ°€λŠ” κ²½λ‘œμ—μ„œ λ§Œλ‚˜λŠ” κΈ€μžλ“€μ„ λͺ¨μœΌλ©΄, 찾고자 ν•˜λŠ” λ¬Έμžμ—΄μ˜ 접두사λ₯Ό 얻을 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ "tea"λ₯Ό μ°ΎλŠ”λ‹€κ³  ν•΄λ³΄μž.
t -> te -> tea의 μˆœμ„œλ‘œ νƒμƒ‰λ˜λ―€λ‘œ "tea"의 λͺ¨λ“  접두사듀이 λ‹€ κ΅¬ν•΄μ§€κ²Œ λœλ‹€.


Trie μž₯단점


⭐️ Trie μž₯점

  1. 검색에 높은 μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€. λ¬Έμžμ—΄μ˜ 길이와 상관없이 μΌμ •ν•œ 검색 μ‹œκ°„μ„ 보μž₯ν•©λ‹ˆλ‹€.
  2. 검색어 μžλ™μ™„μ„±, 철자 ꡐ정, ν…μŠ€νŠΈ μ••μΆ• λ“±μ—μ„œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜λŠ”λ° μžˆμ–΄μ„œ μ •ν™•ν•œ 검색 κ²°κ³Όλ₯Ό 보μž₯ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μžλ£Œκ΅¬μ‘°μ™€ 달리 전체 λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

πŸ’€οΈ Trie 단점

  1. μ €μž₯곡간이 ν½λ‹ˆλ‹€. νŠΈλΌμ΄λŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ—, μ €μž₯곡간이 λΆˆν•„μš”ν•˜κ²Œ 낭비될 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 트라이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μ½”λ“œκ°€ λ‹€μ†Œ λ³΅μž‘ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 개발 μ‹œκ°„μ΄ λŠ˜μ–΄λ‚  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 문자 집합이 ν¬κ±°λ‚˜ λ¬Έμžμ—΄ 길이가 κΈΈ 경우, 트라이의 κΉŠμ΄κ°€ λ„ˆλ¬΄ κΉŠμ–΄μ Έ 검색 μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΈλΌμ΄λŠ” 검색 μ‹œκ°„μ„ μ€„μ΄λŠ”λ° μžˆμ–΄μ„œ 맀우 효율적인 μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ €μž₯κ³΅κ°„μ˜ λΉ„νš¨μœ¨μ„±κ³Ό κ΅¬ν˜„μ˜ λ³΅μž‘μ„± λ•Œλ¬Έμ—, 상황에 λ”°λΌμ„œ μ μ ˆν•œ 자료ꡬ쑰λ₯Ό μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.


728x90
λ°˜μ‘ν˜•

'자료ꡬ쑰' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[자료ꡬ쑰] Hash  (0) 2023.03.27
[자료ꡬ쑰] Heap  (0) 2023.03.27
[자료ꡬ쑰] LinkedList  (0) 2023.03.26
[자료ꡬ쑰] Tree  (0) 2023.03.26
[자료ꡬ쑰] Stack & Queue  (0) 2023.03.26