목차
1. 트리의 지름
트리의 지름이란 가장 먼 두 정점 사이의 거리 또는 가장 먼 두 정점을 연결하는 경로를 의미한다. 이때 부모와 자식 노드 사이의 거리를 1로 볼 수도 있고 가중치를 주어 부모와 자식 노드 사이의 거리를 1 이상으로 만들 수도 있다.
ex) 가중치가 주어진 트리
2. 트리 지름 구하기 알고리즘
트리의 지름을 구하는 알고리즘은 다음과 같다.
1.
임의의 점(노드) 를 잡는다.
2.
에서 가장 거리가 먼 점 를 잡는다.
3.
에서 가장 거리가 먼 점 를 잡는다.
4.
와 간의 경로가 트리의 지름이다.
증명
트리에서 정점 와 를 연결하는 경로가 지름이라고 가정하자.
그리고 위의 알고리즘에서 2번까지 시행했다고 하자. 즉, 임의의 점 를 잡고 에서 가장 먼 점 를 잡았다고 하자.
이때 가능한 모든 경우는 다음과 같다.
1) 가 또는 인 경우
2) 가 또는 인 경우
3) 가 모두 다른 점인 경우
가 또는 인 경우
우선 라고 하자.
이때 이다. 왜냐하면 는 지름이기 때문에 가장 크기 때문이다. 따라서 에서 가장 먼 점을 잡으려면 를 로 잡으면 된다.
그리고 마찬가지로 이기 때문에 에서 가장 먼 점을 잡으려면 를 로 잡으면 된다.
따라서 이므로 는 트리의 지름이 된다.
인 경우는 동일한 방식으로 를 만족하게 된다.
가 또는 인 경우
가 인 경우는 인 경우와 동일해지고, 가 인 경우는 인 경우와 동일해진다. 따라서 두 경우 모두 알고리즘을 만족한다.
가 모두 다른 점인 경우
이 경우엔 두 가지 경우로 나눌 수 있다.
1) 와 경로가 모두 정점 를 지나는 경우
2) 와 경로가 완전히 독립인 경우
1) 부터 살펴보자.
이때 를 무조건 만족한다. 증명은 다음과 같다.
일단 라고 하자.
(1)
인 경우 에서 가장 먼 점은 가 아니라 이다. ()
따라서 모순
(2)
인 경우 가 되어 가 트리의 지름이라는 가정에 모순된다.
이제 를 잡는데 를 잡을 때도 두 가지의 경우로 나뉜다.
(1) 와 경로 사이에 가 없는 경우
(2) 와 경로 사이에 가 있는 경우
(1) 와 경로 사이에 가 없는 경우
만약 라고 하자.
그런데 이므로 는 에서 가장 먼 점이라는 가정에 모순된다.
따라서 이므로 알고리즘을 만족한다.
(2) 와 경로 사이에 가 있는 경우
이므로
라면 는 의 가장 먼 점이 아니다. 왜냐하면 로 잡으면 더 멀기 때문이다. 따라서 그러므로
이제 경로들이 완전히 독립인 경우를 살펴보자.
2)
에서 가장 먼 점이 이기 때문에 이다.
그런데 이는 에서 보다 에서 가 더 멀다는 것을 의미한다. 이므로
따라서 가 트리의 지름이라는 가정에 모순된다.