Algorithm 2

[Python] 너비 우선 탐색, BFS (Breadth First Search) 알고리즘 파이썬 코드

지난 포스팅을 통해 DFS를 알아보았으니 형제 탐색법인 BFS를 알아보겠다.BFS 또한 DFS처럼 트리나 그래프를 순회하는 기본 방법 중 하나이다. BFS (Breadth First Search)? BFS는 너비 우선 탐색이다. 시작 노드부터 가까운 노드들을 모두 살펴본 뒤 그 다음 노드들을 탐색한다. 단순하게 생각해서 파원에서 파장이 퍼져나가는 모양을 생각하면 얼추 비슷하다. 특징과 장단점- 연결된 모든 노드를 탐색할 수 있다.- 방문 노드를 기억하고 재방문하지 않는다.- DFS가 스택을 활용하는 것과 다르게 보통 큐를 활용한다.- 최단경로 탐색에 적절하다. 해를 찾고나면 다음 해는 찾을 필요가 없기 때문이다.- 논리 구조가 간단하다.- 해가 깊은 곳에 있으면 탐색에 오랜 시간이 걸릴 수 있다.  BF..

Algorithm/Algorithm 2024.10.10

최소 스패닝 트리(MST, Minimum Spanning Tree), Kruskal & Prim 알고리즘

Spanning Tree 스패닝 트리란 그래프 내 모든 정점을 포함하는 트리입니다. 또한, 사이클을 포함하면 안된다는 특징이 있습니다. MST(Minimum Spanning Tree) 최소 스패닝 트리(최소 신장 트리)는 스패닝 트리 중 사용된 간선의 가중치가 최소인 트리를 뜻합니다. MST 특징 N개의 정점에 대해 N-1개의 간선이 존재합니다. 스패닝 트리이므로 사이클을 포함해서는 안됩니다. 간선 가중치의 합이 최소여야합니다. MST 구현 방법 1. Kruskal 알고리즘 Greedy method를 활용하여 구현합니다. 간선을 가중치 기준으로 오름차순 정렬합니다. 사이클을 포함하지 않는 경우 MST 구성 간선으로 포함시킵니다. N개의 정점에 대해 N-1개의 간선을 포함시킬 때까지 반복합니다. 💻 Kru..

Algorithm/Algorithm 2023.01.12