본문 바로가기
반응형

Computer Science86

비선형 자료구조 (그래프) 이번 포스트에서는 비선형 자료구조 중 하나인 그래프에 대하여 설명하겠습니다. 그래프 그래프는 간선으로 연결된 정점들의 모음을 표현한 자료구조입니다. 이때 정점과 정점을 연결하는 간선들이 방향을 가지지 않는 경우, 이 그래프를 무방향 그래프라고 합니다. 반대로, 방향을 가지는 경우 방향 그래프라고 정의합니다. 부분그래프는 그래프 G의 정점 V와 간선 E가 있을 때, 부분그래프 G'는 다음 수식을 만족합니다. G' = (V', E'), V' 는 V에 속하고, E'는 E에 속해야합니다. 무방향 그래프 G 내 임의의 서로 다른 두 정점 u, v에 대해, u에서 v로 가는 경로가 존재한다면, G는 연결 되었다고 합니다. 이때, G 내에서 최대로 연결된 부분그래프를 연결요소 라고한다. 반대로 방향 그래프 G 에서 .. 2023. 9. 11.
자료들의 비교 기반 정렬 이번 포스트에서는 자료간의 비교를 통한 정렬에 대해서 포스팅하도록 하겠습니다. 비교 기반 정렬 비교를 통해서 정렬을 하는 방법에는 크게 5가지가 있습니다. 버블 정렬 선택 정렬 삽입 정렬 합병 정렬 퀵 정렬 이 외에도 이전 포스트에서 설명한 최대힙, 최소힙으로도 키 값의 오름차순, 내림차순을 부여할 수 있습니다. 버블 정렬 먼저 버블 정렬입니다. 버블 정렬은 리스트의 처음부터 끝까지 인접한 두 값의 순서가 맞지 않을 때, 교환하는 작업을 N-1 회 반복합니다. 따라서, 리스트의 처음부터 끝까지 검사하므로 N번, 그 반복문에서 N-1번 검사하기 때문에, 버블 정렬은 시간복잡도가 O(N^2)로 분석됩니다. 버블 정렬은 동일 키 값을 갖는 자료들의 순서가 정렬 후에도 유지되므로, stable 하다고 할 수 있.. 2023. 9. 8.
우선순위 큐의 구현 (이진 힙) 이번 포스트에서는 우선순위 큐 자료구조 구현을 위한 이진 힙에 대해서 포스트하도록 하겠습니다. 우선순위 큐 우선순위 큐는 큐 자료구조에서 각 노드에 우선순위를 부여하여 우선순위가 높은 순으로 삭제가 발생하는 큐를 의미합니다. 정렬되지 않은 배열에서 우선순위 큐를 구현한 경우, 삽입은 O(1)에 가능하나, 삭제가 O(N)의 시간복잡도가 소요됩니다. 반대로 정렬된 배열에서 우선순위 큐를 구현한 경우, 삽입은 O(N)에 가능하고 삭제는 O(1)의 시간복잡도가 소요됩니다. 이진 힙 이진 힙은 각 노드의 키 값이 자식노드의 키 값보다 크거나 같은 완전이진트리 (최대힙) 이거나, 각 노드의 키 값이 자식노드의 키 값보다 작거나 같은 완전이진트리 (최소힙) 를 의미합니다. 이진 힙은 삽입과 삭제가 O(log n)의 .. 2023. 9. 7.
균형 탐색 트리 (AVL)에 대하여 이번 포스트에서는 이전 포스트의 이진탐색트리의 보완버전인 균형탐색트리 (AVL)에 대하여 포스트 하도록 하겠습니다. 균형탐색트리(AVL Tree) AVL 트리는 각 노드의 왼쪽 서브트리의 높이와 오른쪽 서브트리의 높이 차이가 1 이하인 이진탐색트리입니다. 삽입과 삭제 과정에서 높이차가 1 이상인 경우가 발생하면, 트리 회전을 통해 균형을 맞추는 동작을 수행합니다. 이 과정에서 각 노드의 높이 차를 저장하기 위해 각 노드는 균형 인자를 가집니다. 균형인자는 노드의 왼쪽 서브트리의 높이에서 오른쪽 서브트리의 높이를 뺀 값을 가집니다. 공백 트리의 경우에는 -1로 정의됩니다. 따라서, AVL 트리는 균형인자가 -1, 0, 1 중 하나의 값을 가져야 합니다. 트리의 불균형 AVL 트리에서 불균형은 다음 4가지로.. 2023. 9. 5.
반응형