본문 바로가기

자료구조,알고리즘

(3)
[자료구조] B- Tree , B+ Tree B- Tree B-Tree는 탐색 성능을 높이기 위해 높이를 균형있게 유지하는 Balanced Tree의 일종입니다. B-Tree는 이진 트리와는 다르게 하나의 노드에 여러개의 데이터를 가질수 있으며, 두개 이상의 자식노드들을 가질 수 있습니다. 만약 노드의 자식 수 중 최대값이 K라면 이 B-Tree의 차수는 K차수라 하며 K차 B-Tree라고 합니다. 위의 그림은 3차 B-Tree이며 각 노드마다 최대 자식 수가 3개 인것을 확인 할 수 있습니다. B-Tree는 하나의 노드에 여러 키를 배치하면서 이진트리보다 훨씬 많은 데이터를 담을 수 있으며, 노드 내의 데이터들은 항상 정렬된 상태입니다. 이러한 B-Tree는 다음과 같은 특징을 갖습니다. 각 노드의 데이터는 정렬되어 있습니다. 모든 leaf no..
[알고리즘] DP(Dynamic Programming) 동적 계획법 DP알고리즘은 복잡한 문제를 여러 개의 작은 부분 문제(Sub-Problem)로 나누어 해결하는 방법이며 핵심은 Memoization 기법이라고 볼 수 있다. Memoization(메모이제이션) 호출시 이전 계산한 값을 다시 계산하지 않도록 저장하여 전체적인 실행 속도를 향상시키기 위한 기술이다. (배열과 같은 자료구조에 계산된 값을 저장 -> 인덱스값을 통한 불러오기) 예시로는 피보나치 수열을 들 수 있다. 피보나치 수열을 구할때 f(5)값을 구하려면 f(4)와 f(3)이 필요하고 f(4)를 구하려면 f(3)과 f(2)가 필요하다 이러한 중복적인 값을 구할때 이미 구한값들을 Memoization 기법을 통해 배열등에 저장한후 불러오면 중복값을 다시 풀지 않고 불러올 수 있다. 피보나치 수열을 그냥 풀게..
[자료구조] 트리(Tree)란, 트리 순회, 이진 트리, 이진 탐색 트리(Binary Search Tree) 트리(Tree)의 특징 원소들 간에 다대일 관계를 가지는 비선형 자료구조이다. 계층적 관계를 표현하는 자료구조이다. 트리의 구조는 데이터의 저장보단 저장된 데이터의 탐색에 중점을 둔다. 사이클이 존재하지 않는다.(사이클이 없는 하나의 연결 그래프라 할 수 있다.) 루트 노드를 제외하고 모든 노드는 단 하나의 부모노드를 갖는다. N개의 노드를 갖는 트리는 N-1개의 간선(edge)를 갖는다. 트리(Tree)의 용어 노드(node) : 트리의 원소 (A, B, C, D, E, F, G, H, I, J) 간선(edge) : 노드를 연결하는 선으로 부모-자식간을 연결한다. 루트 노드(root node) : 부모가 없는 최상위 노드를 의미하며 트리는 단 하나의 루트노드를 갖는다. (A) 단말 노드(leaf nod..