728x90
π‘ BFS
- BFS(Breadth First Search : λλΉ μ°μ νμ) μκ³ λ¦¬μ¦μ μ½κ² λ§ν΄ κ°κΉμ΄ λ ΈλλΆν° νμ
- ν μλ£κ΅¬μ‘°λ₯Ό μ΄μ©νλ κ²μ΄ μ μ
- μΈμ ν λ Έλλ₯Ό λ°λ³΅μ μΌλ‘ νμ λ£λλ‘ μκ³ λ¦¬μ¦μ μμ±νλ©΄ μμ°μ€λ½κ² λ¨Όμ λ€μ΄μ¨ κ²μ΄ λ¨Όμ λκ°κ² λμ΄ κ°κΉμ΄ λ ΈλλΆν° νμ μ§ν
π‘ λμ λ°©μ
- νμ μμ λ Έλλ₯Ό νμ μ½μ νκ³ λ°©λ¬Έ μ²λ¦¬
- νμμ λ Έλλ₯Ό κΊΌλ΄ ν΄λΉ λ Έλμ μΈμ λ Έλ μ€μμ λ°©λ¬Ένμ§ μμ λ Έλλ₯Ό λͺ¨λ νμ μ½μ νκ³ λ°©λ¬Έμ²λ¦¬
- 2λ²μ κ³Όμ μ λ μ΄μ μνν μ μμ λκΉμ§ λ°λ³΅
π‘ νμ΄μ¬ μ½λ
from collections import deque
# BFS μκ³ λ¦¬μ¦ κ΅¬ν
def bfs(graph, start, visited):
queue = deque([start]) # μμ λ
Έλ νμ λ£κ³ μ΄κΈ°ν
visited[start] = True # μμ λ
Έλ λ°©λ¬Έ νμ
# νκ° λΉμ΄μμ§ μμ λμ λ°λ³΅
while queue:
v = queue.popleft() # νμμ λ
Έλλ₯Ό νλ κΊΌλ΄ vμ ν λΉ
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] * (len(graph) + 1) # λ°©λ¬Έ μ¬λΆλ₯Ό λνλ΄λ 리μ€νΈλ₯Ό μ΄κΈ°ν
bfs(graph, 1, visited) # BFS ν¨μλ₯Ό νΈμΆνμ¬ μμ λ
Έλκ° 1μΌ λμ κ²°κ³Όλ₯Ό μΆλ ₯728x90
'Algorithm > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Python] μ¬κ·ν¨μ (0) | 2024.03.12 |
|---|---|
| [Python] μλ£κ΅¬μ‘° - μ€ν, ν (0) | 2024.03.12 |
| [Python] μ΄μ§ νμ μκ³ λ¦¬μ¦ (1) | 2023.11.20 |
| [Python] μ±μ νκ· - μ½λ©ν μ€νΈ λ¬Έμ (4) | 2023.11.20 |
| [Python] μ λ ¬ μκ³ λ¦¬μ¦ - μ ν, μ½μ , ν΅, κ³μ (2) | 2023.11.15 |