티스토리 뷰
트리의 지름 (Diameter of Tree)
트리에서 가장 멀리 떨어진 두 노드 사이의 길이를 트리의 지름이라고 한다. 이 트리의 지름을 가장 간단하게 구하는 방법은 다음과 같다.
- 트리의 임의의 한 노드 \(u\)에서 가장 멀리 있는 노드 \(v\)를 찾는다.
- \(v\)에서 가장 멀리 있는 노드 \(w\)를 찾는다.
- \(v\) ~ \(w\)가 트리의 지름이 된다.
위의 방법에서 특정 노드에서 가장 멀리 있는 노드는 DFS나 BFS를 사용하면 쉽게 찾을 수 있다.
증명은 귀류법을 이용하여 \(v\) ~ \(w\)가 아닌 다른 두 노드 \(a\) ~ \(b\)를 트리의 지름이라고 가정한 후, 이것이 모순이 됨을 보이면 된다. (자세한 내용은 여기를 참고하자)
예제
참고 자료
- http://koosaga.myungwoo.kr/entry/%ED%8A%B8%EB%A6%AC%EC%9D%98-%EC%A7%80%EB%A6%84-Diameter-of-tree
- http://cs.stackexchange.com/questions/22855/algorithm-to-find-diameter-of-a-tree-using-bfs-dfs-why-does-it-work
'알고리즘 이론' 카테고리의 다른 글
Modular Arithmetic (0) | 2017.03.18 |
---|---|
탐색 (Searching) (0) | 2017.03.06 |
Counting Sort, Radix Sort (0) | 2017.02.23 |
Suffix Array, LCP Array (0) | 2017.02.22 |
KMP Pattern Searching (0) | 2017.02.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- greedy
- sliding window
- BFS
- implementation
- Binary search
- sort
- Strings
- search
- tree
- pattern matching
- Segment Tree
- math
- Fenwick Tree
- Minimum Spanning Tree
- kmp search
- Graph
- Square root decomposition
- Data structure
- Dynamic Programming
- Heap
- parametric search
- karatsuba
- branch and bound
- constructive algorithms
- suffix array
- divide and conquer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함