Algorithms
Algorithm) DFS/BFS
thals0
2022. 10. 25. 12:49
728x90
κ·Έλν νμ μκ³ λ¦¬μ¦: DFS/BFS
νμ(search)μ΄λ λ§μ μμ λ°μ΄ν° μ€μμ μνλ λ°μ΄ν°λ₯Ό μ°Ύλ κ³Όμ
λνμ μΈ κ·Έλν νμ μκ³ λ¦¬μ¦μΌλ‘ DFS/BFSκ° μ‘΄μ¬
μλ£κ΅¬μ‘°
μ€ν(μ μ νμΆ)
λ¨Όμ λ€μ΄ μ¨ λ°μ΄ν°κ° λμ€μ λκ°λ νμμ μλ£κ΅¬μ‘°
μμ) λ°μ€ μκΈ°
DFS method μ μ
def dfs(graph, v, visited):
visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
graph = [
[],
[2,3,8],
[1,7],
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7]
]
visited = [False] * 9
dfs(graph, 1, visited)
BFS method μ μ
κ°μ λΉμ©μ΄ λͺ¨λ κ°μ λ μ΅λ¨κ±°λ¦¬λ₯Ό νμνκΈ° μν΄ μ°μΌ μ μλ μκ³ λ¦¬μ¦
from collections import deque
# BFS λ©μλ μ μ
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
graph = [
[],
[2,3,8],
[1,7],
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7]
]
visited = [False] * 9
bfs(graph, 1, visited)
728x90