[Algorithm][κ·Έλž˜ν”„] λ‹€μ΅μŠ€νŠΈλΌ(Dijkstra) μ•Œκ³ λ¦¬μ¦˜
Β·
Computer Science/Algorithm
λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ΄λ²ˆ ν¬μŠ€νŠΈμ—μ„œλŠ” κ°€μ€‘μΉ˜κ°€ μžˆλŠ” κ·Έλž˜ν”„μ—μ„œ ν•œ μ‹œμž‘μ μœΌλ‘œλΆ€ν„° λͺ¨λ“  μ •μ κΉŒμ§€μ˜ μ΅œλ‹¨ 거리λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μΈ λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λ‹¨μˆœν•œ BFSλ‚˜ DFSλ‘œλŠ” κ°€μ€‘μΉ˜κ°€ μžˆλŠ” κ·Έλž˜ν”„μ˜ μ΅œλ‹¨ 경둜λ₯Ό κ΅¬ν•˜κΈ° μ–΄λ ΅μ§€λ§Œ λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ€ μš°μ„ μˆœμœ„ 큐λ₯Ό ν™œμš©ν•΄ μ΅œμ ν™”λœ λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ΄λž€?νŠΉμ • μ‹œμž‘μ μ—μ„œ λͺ¨λ“  μ •μ κΉŒμ§€μ˜ μ΅œλ‹¨ 거리λ₯Ό κ³„μ‚°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.κ·Έλž˜ν”„μ˜ κ°„μ„  κ°€μ€‘μΉ˜κ°€ μŒμˆ˜κ°€ μ•„λ‹Œ κ²½μš°μ—λ§Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.음수 간선이 μ‘΄μž¬ν•˜λ©΄ 이후에 더 짧은 κ²½λ‘œκ°€ λ‚˜νƒ€λ‚  수 μžˆμœΌλ―€λ‘œ 벨만-ν¬λ“œ(Bellman-Ford) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.μš°μ„ μˆœμœ„ 큐(Priority Queue)λ₯Ό ν™œμš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 있으며 μ‹œκ°„ λ³΅μž‘λ„λŠ” O((V + E) log V..
[Algorithm][κ·Έλž˜ν”„] λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS, Breadth First Search)
Β·
Computer Science/Algorithm
λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS)이번 ν¬μŠ€νŠΈμ—μ„œλŠ” κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜ 쀑 ν•˜λ‚˜μΈ λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.λ„ˆλΉ„μš°μ„ νƒμƒ‰(BFS)μ΄λž€?μ‹œμž‘ μ •μ μ—μ„œ κ°€κΉŒμš΄ 정점뢀터 μ°¨λ‘€λŒ€λ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ¦‰, λ¨Όμ € λ°©λ¬Έν•œ μ •μ μ˜ 이웃 λ…Έλ“œλ“€μ„ λͺ¨λ‘ νƒμƒ‰ν•œ λ’€ λ ˆλ²¨λ³„λ‘œ λ„˜μ–΄κ°‘λ‹ˆλ‹€.주둜 같은 κ°€μ€‘μΉ˜λ₯Ό κ°€μ§„ κ·Έλž˜ν”„μ—μ„œ μ΅œλ‹¨κ±°λ¦¬ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ“°μž…λ‹ˆλ‹€.μˆ˜λ„ μ½”λ“œ(Pseudo Code)u: 탐색 μ‹œμž‘ 정점visited[]: 각 μ •μ μ˜ λ°©λ¬Έ μ—¬λΆ€λ₯Ό μ €μž₯ν•˜λŠ” λ°°μ—΄ (쀑볡 λ°©λ¬Έ λ°©μ§€)Q: 탐색할 정점을 μˆœμ„œλŒ€λ‘œ λ‹΄μ•„λ‘λŠ” 큐 (FIFO ꡬ쑰)v: ν˜„μž¬ νμ—μ„œ κΊΌλ‚Έ 정점w: ν˜„μž¬ 정점 v의 인접 정점듀BFS(u): visited[u] ← true // μ‹œμž‘ 정점 u λ°©λ¬Έ ν‘œμ‹œ Q ← e..