λ°μν
-- λ³Έ ν¬μ€ν μ μ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€ with νμ΄μ¬ μ± μ μ°Έκ³ νμ¬ μμ±λμμ΅λλ€.
1. νμμ΄λ
- λ§μ μμ λ°μ΄ν° μ€μμ μνλ λ°μ΄ν°λ₯Ό μ°Ύλ κ³Όμ
- λνμ μΈ νμ μκ³ λ¦¬μ¦μ DFS μ BFSκ° μμ
2. κ·Έλν νν λ°©μ
- κ·Έλνμ κ΅¬μ± : λ Έλ(μ μ ), κ°μ (Edge)
- κ·Έλνλ₯Ό μ½λλ‘ νννλ λ°©λ²μ 2κ°μ§κ° μλ€
2.1 μΈμ νλ ¬ νν λ°©μ
- 2μ°¨μ λ°°μ΄λ‘ κ·Έλνμ μ°κ²°κ΄κ³λ₯Ό νννλ λ°©μμ΄λ€.
- μλ κ·Έλνλ₯Ό νλ‘ νννλ©΄ μ€λ₯Έμͺ½μ νμ²λΌ ννμ΄ λ κ²μ΄λ€.
- μ΄ κ·Έλνλ₯Ό 2μ°¨μ 리μ€νΈλ‘ ꡬμ±νκ² λλ©΄ μλμ κ°λ€
INF = 999999 #무νλμ λΉμ© μ μΈ
#2μ°¨μ λ°°μ΄μ νμ©νμ¬ κ·Έλνλ₯Ό νν
graph = [
[0, 7, 5],
[7, 0 INF],
[5, INF, 0]
]
print(graph)
## κ²°κ΄κ° ---> [[0, 7, 5] , [7, 0, 999999], [5, 999999, 0]]
2.2 μΈμ 리μ€νΈ λ°©μ
- 리μ€νΈλ‘ κ·Έλνμ μ°κ²° κ΄κ³λ₯Ό νννλ λ°©μ
- ν΄λΉ κ·Έλνλ₯Ό μΈμ 리μ€νΈλ‘ νννκΈ° μν κ°λ μ μλμ κ°λ€.
- μ΄κ²μ νλ‘κ·Έλλ° μ½λλ‘ νννλ©΄ μλμ κ°λ€.
#row κ° 3κ°μΈ 2μ°¨μ 리μ€νΈλ‘ μ°κ²° 리μ€νΈκ° ννλλ€. (rowμ = node μ)
graph = [[] for _ in range(3)]
#λ
Έλκ° 0μΈ μ°κ²° λ
Έλ μ 보 (λ
Έλ, 거리)λ‘ νν
graph[0].append((1,7))
grpah[0].append((2,5))
#λ
Έλ 1
graph[1].append((0, 7))
#λ
Έλ 2
graph[2].append((0,5))
print(graph)
## κ²°κ³Ό ---> [[(1,7), (2,5)], [(0,7)], [(0,5)]]
2.3 μΈμ νλ ¬κ³Ό μΈμ 리μ€νΈμ μ°¨μ΄
- λ©λͺ¨λ¦¬ μΈ‘λ©΄
- μΈμ νλ ¬ : λͺ¨λ κ΄κ³λ₯Ό μ μ₯νλ―λ‘ λ Έλ κ°μκ° λ§μγ μλ‘ λ©λͺ¨λ¦¬κ° λΆνμνκ² λλΉλ¨
- μΈμ 리μ€νΈ : μ°κ²°λ μ 보λ§μ μ μ₯νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ.
- μλ μΈ‘λ©΄
- μΈμ νλ ¬ : λͺ¨λ κ΄κ³λ₯Ό μ μ₯νλ―λ‘ λ λ Έλκ° μ°κ²°λμ΄ μλμ§μ λν μ 보λ₯Ό μ»λ μλκ° λΉ λ₯΄λ€
- μΈμ 리μ€νΈ : μ°κ²°λ μ 보λ§μ μ μ₯νκΈ° λλ¬Έμ λ λ Έλκ° μ°κ²°λμ΄ μλμ§μ λν μ 보λ₯Ό μ»λ μλκ° λ리λ€. μ°κ²°λ λ°μ΄ν°λ₯Ό νλνλ λ€ νμΈν΄ 보μμΌ νλ€.
λ°μν