본문 바로가기
반응형

Thinking/data structure7

KD-트리 (K-Dimensional Tree) [k-차원 트리] KD-트리 (K-Dimensional Tree) [k-차원 트리] KD-트리는 이진 탐색 트리를 확장한 것으로 k개(k>=2)의 필드로 이루어지는 키를 사용한다. 동일한 레벨에 있는 노드는 모두 동일한 하나의 필드만 이용해서 분기한다 KD-트리에서 검색을 이용해 내려간다는 것은 다차원 공간에서 이렇게 나누어진 결과에 따라 공간의 범위를 점점 좁혀나가는 것이다. 3차원일 경우 입체적인 형상이 된다. KD-트리 삽입 A(50, 50) → B(10, 70) → C(80, 85) → D(25, 20) → E(40, 85) → F(70, 85) → G(10, 60) 1. A(50, 50)이 루트 자리를 차지 2. B(10, 70)는 x값 10이 루트의 x값 50보다 작으므로 왼쪽 자식이 된다 3. C(80, 85.. 2023. 10. 3.
B-트리 (B-Tree) B-트리 (B-Tree) B-트리(B-tree)는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. B-트리는 디스크 환경에서 사용하기에 적합한 외부 다진 검색 트리이다. B-트리는 자료를 정렬된 상태로 보관하고, 삽입 및 삭제를 대수 시간으로 할 수 있다. 최대 M개의 자식을 가질 수 있는 B-트리를 M차 B-트리라고 한다. 노드는 최대 M개의 자식 노드를 가질 수 있다. ex) 3차 B-트리라면 최대 3개의 자식 노드를 가질 수 있다. 노드에는 최대 M-1개의 KEY를 가질 수 있다. ex) 3차 B-트리라면 최대 2개의 KEY를 가질 수 있다. 각 노드는 최소 ⌈M/2⌉개의 자식.. 2023. 10. 3.
레드 블랙 트리 (Red-Black Tree) 레드 블랙 트리 (Red-Black Tree) 이진 탐색 트리에서 트리의 모양이 균형을 이루지 못 할 경우가 있다. 균형이 깨질 경우 O(n)에 근접한 시간이 소요되는데, 균형을 잘 맞추기 위해 고안된 것이 레드-블랙 트리이다. 레드-블랙 트리는 자가 균형 이진 탐색 트리이다. 리프 노드가 개입될 때 특수 처리를 하지 않아도 된다는 편리함이 있다. 레드-블랙 트리는 다음과 같은 조건들을 만족한다. 1. 루트 노드는 검은색이다. 2. 모든 노드는 레드 혹은 블랙이다. 3. 모든 리프 노드(NIL)들은 검은색이다. (NIL : null, 자료를 갖지 않고 트리의 끝을 나타내는 노드) 4. 레드 노드의 자식은 블랙이다. (레드 노드가 연속으로 나올 수 없다) 5. 리프노드에서 루트 노드까지 가는 경로에서 만나.. 2023. 10. 2.
이진 탐색 트리 (BST : Binary Search Tree) 이진 탐색 트리 (BST : Binary Search Tree) 이진 탐색 트리(BST: Binary Search Tree)는 다음과 같은 속성이 있는 이진 트리 자료 구조이다. 1. 각 노드에 중복되지 않는 키(key)가 있다. 2. 최상위 레벨에 루트 노드가 있고, 각 노드는 최대 두개의 자식 노드를 갖는다. 3. 왼쪽 서브 트리는 부모 노드의 키보다 작은 키를 갖는다. 4. 오른쪽 서브 트리는 부모 노드의 키보다 큰 키를 갖는다. 이진 탐색 트리에서의 검색 1. 루트노드로 부터 시작한다. 2. 검색하려는 값이 현재 노드보다 작으면 왼쪽, 크면 오른쪽으로 가서 찾는다. 3. 노드를 비교하면서 내려가다가 일치하는 값이 나오면 해당 노드를 반환한다. 4. 더이상 비교할 노드가 없으면 검색이 실패했음을 알.. 2023. 10. 2.
자료구조 트리(Tree) 구조 [자료구조] 트리(Tree) 구조 개념자료구조 Tree는 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮아서 트리 구조라고 부른다.자료구조 Tree는 그래프의 여러 구조 중 무방향 그래프의 한 구조이다.트리 구조는 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조이다.트리 구조는 데이터를 순차적으로 나열시킨 선형 구조가 아니라,하나의 데이터 뒤에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다.트리 구조는 계층적으로 표현이 되고, 아래로만 뻗어나가기 때문에 사이클이 없다.트리 구조는 루트라는 하나의 꼭짓점 데이터를 시작으로, 여러 개의 데이터를 간선으로 연결한다.트리 구조는 각 데이터를 노드라고 하며, 두 개의 노드가 상하계층으로 연결되면 부모/자식 관계를 가.. 2023. 9. 22.
메모리 구조 (코드영역, 데이터영역, 힙영역, 스택영역) 메모리 구조 (코드영역, 데이터영역, 힙영역, 스택영역) 흔히 메모리라고 하면 RAM을 지칭한다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역이다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 스택(stack) 영역 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과.. 2022. 12. 20.
1Byte는 왜 8bit일까? 1Byte는 왜 8bit일까? 계산하기 편한 10진수를 놔두고 8bit를 1byte로 약속한 것일까? 수학을 배우면서 10진수에 익숙해진 우리들은 한 번쯤 궁금했던 질문일 것이다. 어느정도의 배경 지식이 받쳐준다면 이 질문에 대한 답을 이해하기 쉬울 것이다. 예전 컴퓨터를 찾아보면 byte를 4~10bit로 사용되던 것을 볼 수 있는데, 현대에 와서는 '1옥텟(8bit)'를 기준으로 삼는다. 단순한 계산부터 I/O기능을 처리하기 위해서는 작은 공간만 있어도 충분했지만, 문자를 처리하게 되면서 효율적인 공간 활용을 위해 적절한 크기를 찾아야만 했다. 지금은 가정용 컴퓨터만 봐도 256GB~1TB크기의 저장공간을 사용하고 있지만 당시에는 MB단위도 귀중하게 쓰였기 때문에 1bit의 공간도 소중하게 쓰여야 했.. 2022. 9. 28.
반응형