이산수학 11강을 보며 배운내용
트리
사이클이 없는 단순 연결 그래프를 트리(tree)라고 한다
루트 트리
루트 노드로부터 서브 트리가 나와있다
트리 주요 용어
- 부모(parent) 노드
- 자식(child) 노드
- 형제(sibling) 노드
- 차수(degree): 자식 노드의 수
전체 차수는 트리 차수 중 가장 큰 것을 말한다
- 리프(leaf) / 단말(terminal) 노드: 자식이 없는 노드
- 레벨(level): 루트에서 N까지 경로의 길이
- 높이(height) / 깊이(depth)
- 무게(weight): 리프 노드의 개수
- 닮은 트리: 트리의 구조는 동일하지만, 노드의 데이터가 다를 때
주요 정리
n개의 꼭지점을 갖는 트리는 n - 1개의 변을 가진다
이진 트리(Binary Tree)
공집합이거나,
모든 노드가 최대 2개의 서브트리를 갖는 루트 노드
루트 트리와 다른 점
1. 공집합을 가질 수 있다
2. 왼쪽과 오른쪽을 구분한다
최대 노드 수
이진 트리 T, 높이 h 일 때, T의 최대 노드 수
=> 2h+1 - 1
완전 이진 트리
왼쪽 노드부터 채워진 이진 트리
n개의 노드를 갖는 이진트리의 최소 높이
자바스크립트 표현 => Math.floor(log2n)
포화 이진 트리
모든 노드가 채워진 이진트리
이진 탐색 트리
이진 트리에서 모든 노드가 탐색을 위한 키(key)값을 가지고 있고,
다음 속성을 만족할 때
- 왼쪽 서브트리의 값은 해당 루트 노드보다 작다
- 오른쪽 서브트리의 값은 해당 루트 노드보다 크다
키 값에 대해 구성되는 트리가 달라진다
키 값 예시: A, B, C, D
이진 탐색 트리의 검색 방법
- 탐색 노드를 루트 노드로 설정
- 탐색 노드와 주어진 키를 비교
- 일치하면 탐색 멈추고
- 주어진 키가 현재 탐색 노드보다 작으면,
왼쪽 자식을 탐색 노드로 설정, 왼쪽 자식 없으면 없음을 반환하고 탐색 중지 - 키가 현재 탐색 노드보다 크면,
오른쪽 탐색 노드로 설정, 오른쪽 자식 없으면 없음을 반환하고 탐색 중지
효율적인 이진 탐색 트리란?
- 비교 횟수가 적은 트리
- 비교 횟수 기댓값에 따라 구성
: 검색 대상이 될 확률이 높은 것을 위에 두는 것
신장 트리(Spanning Tree) 조건?
- 그래프 G의 모든 꼭지점을 포함
- 사이클이 존재하지 않는 G의 부분 그래프
최소 신장 트리(MST: Minimum ST)
가중치의 합이 가장 작은 신장트리
완전 그래프 Kn의 신장 트리 수는 nn-2
MST 구하는 알고리즘
Kruskal 알고리즘
- 가중치의 오름차순으로 변을 정렬
- 가장 작은 가중치 변부터 트리에 추가
- 사이클이 생기지 않게 모든 꼭지점이 포함되도록 계속 추가
Prim 알고리즘
- 임의의 꼭지점 하나를 트리에 추가
- 트리와 연결된 꼭지점 중에서 가장 작은 가중치 변으로 연결된 꼭지점 추가
- 모든 꼭지점 연결될 때까지 방법 2번 반복
'Computer Science > Discrete Mathematics :: 이산수학' 카테고리의 다른 글
이산수학 강의 마무리 정리 (0) | 2022.06.04 |
---|---|
이산수학 12강 :: 순열, 조합, 비둘기집의 원리 (0) | 2022.05.10 |
이산수학 10강 :: 그래프(2/2), 평면 그래프, 오일러, 해밀턴, 가중 그래프, 최단 경로문제 (0) | 2022.04.26 |
이산수학 9강 :: 그래프(1/2), 용어, 종류 (0) | 2022.04.21 |
이산수학 8강 :: 디지털 논리회로, 부울대수, 부울대수 간소화 (0) | 2022.04.19 |