세리프 따라잡기

WEEK03- TIL 최소 스패닝 트리 본문

SW사관학교 정글

WEEK03- TIL 최소 스패닝 트리

맑은 고딕 2022. 4. 15. 19:24

최소 신장(스패닝) 트리 (minimum spanning tree)

= 전체 요소들을 연결할 때 사용한다. kruskal 알고리즘, prim 알고리즘이 있다.

 

스패닝 트리란?

- 원래의 그래프의 모든 노드가 연결되어 있으면서 트리의 속성을 만족하는 그래프

 

조건?

- 본래의 그래프의 모든 노드를 포함해야 함

- 모든 노드가 서로 연결

- 트리의 속성을 만족시킴(사이클이 존재하지 않음)

☞ 사이클이란?

 그래프가 서로 연결되어 사이클을 형성하는 경우. 최소 비용 스패닝 트리에서는 사이클이 발생하면 안 된다!

 애초에 모든 노드를 이어붙이기만 하면 되는데 사이클이 발생할 이유가 없다고 한다!

==> 이러면 안됩니다~

 

크루스칼 kruskal

1. 간선들을 정렬

2. 간선이 잇는 두 정점의 root 찾기

3. 다르면 하나의 root를 바꾸어 연결 시킴

 

프림 prim

1. 임의의 정점을 선택

2. 해당 정점에서 갈 수 있는 간선을 minheap에 넣음

3. 최소값을 뽑아 해당 정점을 방문 안 했으면 선택

 

​크루스칼 알고리즘은 간선들을 정렬해야하기 때문에 간선이 적다면 크루스칼로, 많다면 프림으로 사용한다.

→ 근데 크루스칼을 더 사용 많이 한다고..!

 

 

'SW사관학교 정글' 카테고리의 다른 글

WEEK03 - TIL 다익스트라  (0) 2022.04.17
WEEK03- TIL DFS와 BFS  (0) 2022.04.16
WEEK02 - TIL 시간 복잡도(basic)  (0) 2022.04.12
WEEK02 - TIL 우선순위 큐(Priority Queue)  (0) 2022.04.11
WEEK02 - TIL 스택/큐  (0) 2022.04.10
Comments