-
[자료구조] 트라이Stage/Computer Science 2021. 6. 2. 18:59
학습 목표
트라이의 원리와 구조를 설명할 수 있다.
왜?
문자열의 길이가 일정한 경우 이 문자열들을 저장하고 관리하는 데 최적의 자료 구조는 무엇일까?
연결 리스트, 트리, 해시 테이블이 최선의 방안이 될 수 있을까?
이번엔 트라이라는 자료 구조에 대해 알아보자.1. 트라이?
트라이는 retrieval의 약자로, 기본적으로 트리형태의 자료 구조이고, 문자열을 빠르게 탐색하게 해주는 자료구조이다.
즉 문자열 탐색에 특화된 자료구조이다. 특이한 점은 각 노드가 배열로 이루어져있다는 것이다.예를 들어 알파벳으로 이루어진 문자열 값을 저장한다고 한다면, 이 노드는 a부터 z까지의 값을 가지는 배열이 된다. 그리고 이 알파벳은 다음 층의 노드(a~z까지의 배열)를 가리킨다.
Hermione, Harry, Hagrid 세 문자열을 트라이에 저장해보자.
- 루트 노드(H)를 시작으로 각 노드가 가리키는 화살표를 따라가면서 노드를 이어주면 된다.
- 트라이에서 값을 검색하는 데 걸리는 시간은 문자열의 길이에 의해 한정된다.
문자열의 각 문자를 보면서 트리를 탐색해가면 되기 때문이다. - 일반적인 영어 이름의 길이를 n이라고 했을 때, 검색 시간은 O(n)이 되는데, 대부분의 이름은 그렇게 크지 않은 상수값이기 때문에 O(1)이나 마찬가지라고 볼 수 있다.
'Stage > Computer Science' 카테고리의 다른 글
[자료구조] 스택, 큐, 딕셔너리 (0) 2021.06.02 [자료구조] 해시 테이블 (0) 2021.06.02 [자료구조] 연결리스트 : 트리 (0) 2021.06.02 [자료구조] 연결 리스트 : 코딩 그리고 시연 (0) 2021.06.01 [자료구조] 연결리스트 : 도입 (0) 2021.06.01