목록알고리즘 (12)
개발스토리
그래프 탐색 ■ 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 탐색 과정 EX) 특정 도시에서 다른 도시로 갈 수 있는 지 없는 지에 대한 탐색 과정 DFS(깊이 우선 탐색) ■ root node나 다른 임의의 노드에서 시작하여 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하는 방법 ■ 넓게 탐색하기전에 깊게 탐색하는 것 ■ DFS가 BFS보다 좀 더 간단함 DFS(깊이 우선 탐색)의 특징 ■ 전위 순회를 포함한 다른 형태의 트리 순회는 모두 DFS의 한 종류이다. ■ 그래프 탐색의 경우 어떤 노드를 방문했었는 지 여부를 반드시 검사해야 한다. ■ DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같다. 1. 탐색 시작 노드를 스..
저번 포스팅에 이어서,,, 최소 비용 신장 트리 찾기 _ 간선 지향 전략 1. 그래프에 남아 있는 가장 가중치가 작은 간선을 선택한다. 2. 선택된 간선이 합쳐진 두 개의 정점들 사이에 있다면 그 간선을 버리고 아니면 최소 비용 신장 트리에 추가. 3. (n-1)개의 간선들이 추가될 때까지 과정 1과 2를 반복한다. 예: 간선 지향 전략_크루스칼 알고리즘 1. 간선들을 가중치에 의해 정렬한다. 2. (a,b)가 가중치가 가장 작으므로 선택하여 T에 추가하고, 정점 a와 b를 합친다. 3. 남은 간선들 중 (d,e)가 가중치가 가장 작으므로 선택하여 T에 추가하고 그래프의 정점 d와 e를 합친다. 4. 남은 간선들 중 (a, e)와 (b, e)가 가중치가 가장 작으므로 임의로 (a, e)를 선택하여 T에 ..
최소 비용 신장 트리 - n(> 1) 개의 도시들을 최소한의 비용으로 연결하는 철도망을 새로 구축하려고 한다. - 모든 도시들을 서로 연결하기 위해 도시간 철도를 최소한 (n - 1)개 깔아야 한다. - 각 철도는 두 도시를 연결한다. - 이 철도망들 중에서 철도 노선들의 총 길이가 최소가 되도록 철도망을 구축해야 한다. ■ 신장트리: 연결된, 무방향 그래프안에 있는 모든 정점을 다 포함하면서 트리가 되는 연결된 부분 그래프 ■ 신장트리는 순환을 포함하지 않으며 그래프 안에 있는 모든 정점들을 연결시킨다. ■ 신장트리의 가중치: 모든 간선들의 가중치들의 합 ■ 최소 비용 신장 트리: 최소 가중치를 가진 신장트리 예 : 최소 길이 철도망 억지 기법 알고리즘 ■ 모든 신장 트리를 찾은 후에 그 중에서 최소 ..