BFS 2

Graph (그래프)

그래프 아이템(사물 또는 추상적 개념)들과 이들 사이의 연결관계를 표현 정점(Vertex)의 집합과 이들을 연결하는 간선(Edge)들의 집합으로 구성된 자료 구조 v : 정점의 개수, e : 간선의 개수 v 개의 정점을 가지는 그래프는 최대 v(v-1)/2 간선이 가능 선형 자료구조나 트리 자료구조로 표현하기 어려운 N : N 관계를 가지는 원소들을 표현하기에 용이 그래프 유형 무향 그래프 (Undirected Graph) 유향 그래프 (Directed Graph) 가중치 그래프 (Weighted Graph) 사이클 없는 방향 그래프 (DAG, Directed Acyclic Graph) 완전 그래프 정점들에 대해 가능한 모든 간선들을 가진 그래프 부분 그래프 원래 그래프에서 일부의 정점이나 간선을 제외한..

Algorithm 2021.04.29

BFS (Breadth First Search, 너비 우선 탐색)

설명 그래프를 탐색하는 방법에는 크게 두 가지가 있음 깊이 우선 탐색 (Depth First Search, DFS) 너비 우선 탐색 (Breadth First Search, BFS) 너비우선탐색은 탐색 시작점의 인접한 정점들을 먼저 모두 차례로 방문한 후에, 방문했던 정점을 시작점으로 하여 다시 인접한 정점들을 차례로 방문하는 방식 인접한 정점들에 대해 탐색한 후, 차례로 다시 너비우선탐색을 진행해야 하므로, 선입선출 형태의 자료구조인 큐를 활용 BFS는 아래와 같은 순서로 탐색 BFS 알고리즘 def BFS(G, v): # 그래프 G, 탐색 시작점 v visited = [0] * n # n : 정점의 개수 queue = [] # 큐 생성 queue.append(v) # 시작점 v를 큐에 삽입 while..

Algorithm 2021.03.04