π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_19_BFS λ³Έλ¬Έ
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_19_BFS
μ§μ§μνμΉ΄ 2022. 2. 2. 01:13220202 μμ±
<λ³Έ λΈλ‘κ·Έλ γμ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€γ μ youtubeλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€>
https://www.youtube.com/watch?v=CJiF-muKz30&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=19
1. BFS (Breadth - Frist Search)
: λλΉ μ°μ νμ
: κ°κΉμ΄ λ ΈλλΆν° μ°μ μ μΌλ‘ νμν¨
: ν μλ£κ΅¬μ‘° μ΄μ©
1) νμ μμ λ Έλλ₯Ό νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬
2) νμμ λ Έλλ₯Ό κΊΌλΈ λ€, ν΄λΉ λ Έλμ μΈμ λ Έλ μ€ λ°©λ¬Ένμ§ μμ λ Έλλ₯Ό λͺ¨λ νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬!
3) 2λ² κ³Όμ μ μνν μ μμ λκΉμ§ λ°λ³΅
+) λμ μμ
- μμ λ Έλ 1
: νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬ !
- νμμ λ Έλ 1μ κΊΌλ΄, λ°©λ¬Έ νμ§ μμ 2, 3, 8μ νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬ ! ( μμ μ λΆν° )
- νμμ λ Έλ 2λ₯Ό κΊΌλ΄, λ°©λ¬Έ νμ§ μμ 7λ₯Ό νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬ !
- νμμ λ Έλ 3μ κΊΌλ΄, λ°©λ¬Έ νμ§ μμ 4, 5λ₯Ό νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬ !
- νμμ λ Έλ 8μ κΊΌλ΄, λ°©λ¬Έ νμ§ μμκ² μλ€!! 무μ !
=> 1, 2, 3, 8, 7, 4, 5, 6 ( μ 체 λ Έλ νμ μμ, νμ λ€μ΄κ° μμ )
- python
from collections import deque
def bfs(graph, start, visited) :
queue = deque([start])
# νμ¬ λ
Έλλ₯Ό λ°©λ¬Έ μ²λ¦¬
visited[start] = True
# νκ° λΉ λκΉμ§ λ°λ³΅
while queue :
v = queue.popleft()
print(v, end = " ")
# μμ§ λ°©λ¬Ένμ§ μμ μΈμ μμλ₯Ό νμ μ½μ
for i in graph[v] :
if not visited[i] :
queue.append(i)
visited[i] = True
# κ° λ
Έλκ° μ°κ²°λ μ 보 νν ( 2μ°¨μ 리μ€νΈ )
graph = [
[],
[2, 3, 5],
[1, 7],
[1, 4, 5],
[3, 4],
[3, 5],
[2, 5, 4],
[7],
[1, 7]
]
# κ° λ
Έλκ° λ°©λ¬Έλ μ 보 νν ( 1μ°¨μ 리μ€νΈ )
visited = [False] * 9
dfs(graph, 1, visited)
# result
# 1 2 7 3 4 5
- c++
#include <bits/stdc++.h>
using namespace std;
bool visited[9];
vector<int> graph[9];
// BFS ν¨μ μ μ
void bfs(int start) {
queue<int> q;
q.push(start);
// νμ¬ λ
Έλλ₯Ό λ°©λ¬Έ μ²λ¦¬
visited[start] = true;
// νκ° λΉ λκΉμ§ λ°λ³΅
while(!q.empty()) {
// νμμ νλμ μμλ₯Ό λ½μ μΆλ ₯
int x = q.front();
q.pop();
cout << x << ' ';
// ν΄λΉ μμμ μ°κ²°λ, μμ§ λ°©λ¬Ένμ§ μμ μμλ€μ νμ μ½μ
for(int i = 0; i < graph[x].size(); i++) {
int y = graph[x][i];
if(!visited[y]) {
q.push(y);
visited[y] = true;
}
}
}
}
int main(void) {
// λ
Έλ 1μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[1].push_back(2);
graph[1].push_back(3);
graph[1].push_back(8);
// λ
Έλ 2μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[2].push_back(1);
graph[2].push_back(7);
// λ
Έλ 3μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[3].push_back(1);
graph[3].push_back(4);
graph[3].push_back(5);
// λ
Έλ 4μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[4].push_back(3);
graph[4].push_back(5);
// λ
Έλ 5μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[5].push_back(3);
graph[5].push_back(4);
// λ
Έλ 6μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[6].push_back(7);
// λ
Έλ 7μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[7].push_back(2);
graph[7].push_back(6);
graph[7].push_back(8);
// λ
Έλ 8μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph[8].push_back(1);
graph[8].push_back(7);
bfs(1);
}
- java
import java.util.*;
public class Main {
public static boolean[] visited = new boolean[9];
public static ArrayList<ArrayList<Integer>> graph = new ArrayList<ArrayList<Integer>>();
// BFS ν¨μ μ μ
public static void bfs(int start) {
Queue<Integer> q = new LinkedList<>();
q.offer(start);
// νμ¬ λ
Έλλ₯Ό λ°©λ¬Έ μ²λ¦¬
visited[start] = true;
// νκ° λΉ λκΉμ§ λ°λ³΅
while(!q.isEmpty()) {
// νμμ νλμ μμλ₯Ό λ½μ μΆλ ₯
int x = q.poll();
System.out.print(x + " ");
// ν΄λΉ μμμ μ°κ²°λ, μμ§ λ°©λ¬Ένμ§ μμ μμλ€μ νμ μ½μ
for(int i = 0; i < graph.get(x).size(); i++) {
int y = graph.get(x).get(i);
if(!visited[y]) {
q.offer(y);
visited[y] = true;
}
}
}
}
public static void main(String[] args) {
// κ·Έλν μ΄κΈ°ν
for (int i = 0; i < 9; i++) {
graph.add(new ArrayList<Integer>());
}
// λ
Έλ 1μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(1).add(2);
graph.get(1).add(3);
graph.get(1).add(8);
// λ
Έλ 2μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(2).add(1);
graph.get(2).add(7);
// λ
Έλ 3μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(3).add(1);
graph.get(3).add(4);
graph.get(3).add(5);
// λ
Έλ 4μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(4).add(3);
graph.get(4).add(5);
// λ
Έλ 5μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(5).add(3);
graph.get(5).add(4);
// λ
Έλ 6μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(6).add(7);
// λ
Έλ 7μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(7).add(2);
graph.get(7).add(6);
graph.get(7).add(8);
// λ
Έλ 8μ μ°κ²°λ λ
Έλ μ 보 μ μ₯
graph.get(8).add(1);
graph.get(8).add(7);
bfs(1);
}
}
'π¦₯ μ½ν > μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_21_μ νμ λ ¬ (0) | 2022.02.08 |
---|---|
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_20_DFS & BFS λ¬Έμ νμ΄ (0) | 2022.02.02 |
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_18_DFS (0) | 2022.02.02 |
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_17_μ¬κ· ν¨μ (0) | 2022.02.02 |
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_16_μ€νκ³Ό ν (0) | 2022.02.02 |