ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ก Introduction
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (Dijkstra's algorithm) ์ ํ์๋ฒ (Greedy) ์ ๋ํ์ ์ธ ์์ฉ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ๋ค์ต์คํธ๋ผ๋ฅผ ์์ ๊ทธ๋ํ๋ฅผ ํตํด ์ค๋ช ํ๊ณ , ๋ค์ ํฌ์คํธ์ ๊ทธ ๋ค์ ํฌ์คํธ๋ฅผ ์ด์ฉํด ์ง์ ์ฝ๋๋ก ๊ตฌํํด๋ณธ๋ค.
๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด๋?
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ค ๊ทธ๋ํ (Weighted Graph, ์ ์ ๊ฐ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ํ๋ ์๋ ๊ทธ๋ํ) ์์ ๊ฐ ์ ์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์๋ผ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐ๋ก ์์๋ฅผ ํตํด ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์์
๋จผ์ , ์๋ ์ฌ์ง์ ์ผ์ชฝ์ ๋์ฌ์ง ๊ฒ๊ณผ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์๋ค๊ณ ํ์. ์ด ๊ทธ๋ํ๋ฅผ ๋ถ์ํ์ฌ ์ค๋ฅธ์ชฝ ํ์ ์ฐ์ฌ์ง ๋ ์ข ๋ฅ์ ์ ๋ณด๋ฅผ ํ์ ํ ์ ์๋ค. A ๊ฐ ์์์ ์ผ ๋, A ๋ ์๊ธฐ ์์ ๊น์ง์ ๊ฑฐ๋ฆฌ์ด๋ฏ๋ก ์์์ ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๊ฐ 0์ด๊ณ , ๋๋จธ์ง ์ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ ์์ง ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ทนํ ๊ฐ(∞) ์ ๊ฐ์ง๋ค. ๊ฑฐ๋ฆฌ ์ธ์๋ ๋ฐฉ๋ฌธํ / ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ๋ค์ ๋ชฉ๋ก visited / unvisited ์ ํ์ฌ ๋ฐฉ๋ฌธ ์ค์ธ ์ ์ current ๋ฅผ ์ถ์ ํ๋ค.
1๋ฒ ๋จ๊ณ๋ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ๋ค ์ค ์์์ ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์ ๋ฐฉ๋ฌธํ๋ ๋จ๊ณ์ด๋ค.
์ฒ์์๋ A๊ฐ ๊ฑฐ๋ฆฌ 0 ์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๊ฐ๊น๋ค.
2๋ฒ ๋จ๊ณ๋ ํ์ฌ ๋ฐฉ๋ฌธ ์ค์ธ ์ ์ ์์ ์์ง ๋ฐฉ๋ฌธ๋์ง ์์ ์ด์ ์ ์ ๋ค๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ํ์ธํ์ฌ ๋ง์ฝ ํ์ฌ๊น์ง ์๋ ค์ง ๊ฑฐ๋ฆฌ๋ณด๋ค ์์ ์์๋ง ์ ๋ฐ์ดํธํ๋ ๋จ๊ณ์ด๋ค. ์ง๊ธ์ ๋ชจ๋ ๋ฌดํ๋(∞) ๋ณด๋ค๋ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ์ด๋ฏ๋ก ๋ชจ๋ ์ ๋ฐ์ดํธํ๋ค.
๊ฑฐ๋ฆฌ๋ ์์์ ์ผ๋ก๋ถํฐ ํ์ฌ ๋ฐฉ๋ฌธํ๋ ์ค์ธ ์ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ + ํ์ฌ ๋ฐฉ๋ฌธ์ค์ธ ์ ์ ๋ถํฐ ์ด์๊น์ง์ ๊ฑฐ๋ฆฌ์ด๋ค.
๊ทธ ๋ค์๋ถํฐ๋ 1๋ฒ๊ณผ 2๋ฒ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ค.
1๋ฒ ๋จ๊ณ์ธ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ค ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์ ๋ฐฉ๋ฌธํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ค. ํ์ฌ๋ B ์ด๋ค.
๊ทธ๋ฆฌ๊ณ 2๋ฒ ๋จ๊ณ์ธ ๋ฐฉ๋ฌธํ ์ ์ ์ ์์ง ๋ฐฉ๋ฌธ๋์ง ์์ ์ด์๋ค์ ์์์ ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
์์์ ์ค๋ช ํ๋ฏ์ด ํ์ฌ ๋ฐฉ๋ฌธ์ค์ธ B ๊น์ง์ ๊ฑฐ๋ฆฌ 3 + B ๋ถํฐ D ๊น์ง์ ๊ฑฐ๋ฆฌ 4 = 7 ๋ก ์ ๋ฐ์ดํธ๋๋ค.
7์ ๋ฌดํ๋(∞) ๋ณด๋ค ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ ๋๋ ๊ฒ์ด๋ค.
1๋ฒ๊ณผ 2๋ฒ์ ํ ๋ฒ์ฉ ๊ฑฐ์ณค์ผ๋, ๋ 1๋ฒ ๋จ๊ณ๋ก ์์ ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ๋ค ์ค ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์ ๋ฐฉ๋ฌธํ๋ค.
2๋ฒ ๋จ๊ณ๋ฅผ ์งํํ๋ค. ์ด์๋ค ์ค ๋ฐฉ๋ฌธ๋์ง ์์ ์ ์ ๊น์ง์ ์์์ ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๋ง์ฝ ์ง๊ธ๊น์ง ์๋ ค์ง ๊ฑฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ ์๋ค๋ฉด ์ ๋ฐ์ดํธ ํ์ง ์๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ ์๋ ค์ง ๊ฑฐ๋ฆฌ์ธ 7์ด ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฑฐ๋ฆฌ 12๋ณด๋ค ์์์ ์ ๋ฐ์ดํธ๊ฐ ์งํ๋์ง ์๋๋ค.
๋ 1๋ฒ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ค. ๋ง์ง๋ง ๋จ์ ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ธ D ๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
2๋ฒ ๋จ๊ณ๋ฅผ ์งํํ๋ ค๊ณ ํ๋๋ฐ, ์ด์๋ค์ ๋ชจ๋ ์ด๋ฏธ ๋ฐฉ๋ฌธํ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ํ์ ํด์ผ ํ ์ ์ ์ด ์กด์ฌํ์ง ์๋๋ค.
์ ์ฒด์์ ๋ดค๋๋ฐ ์ด์ ๋ ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ด ์๋ค. ํ์์ ์ข ๋ฃํ๋ค.
๐ ๊ฒฐ๋ก
์ด๋ ๊ฒ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ์๋ ๋ชฉํํ๋ ๋ ์ด์ ์์ผ๋ก ๊ฐ ๊ธธ์ด ์๋ ๋ง์ง๋ง ์ ์ , D ๊น์ง์ ๊ฑฐ๋ฆฌ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์์๋ค. ๋ค์ ํฌ์คํธ์์๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ค๋น๋ฅผ ํด๋ณด์.
์ถ์ฒ
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ํ๋ก๊ทธ๋๋จธ์ค - ๋์คํฌ ์ปจํธ๋กค๋ฌ 1๋ถ (1) | 2022.12.08 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] Dijkstra's algorithm 2๋ถ - ๊ตฌํ ์ค๋น (0) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2022.12.03 |
[์๊ณ ๋ฆฌ์ฆ] Fibonacci sequence (0) | 2022.11.23 |
[์๊ณ ๋ฆฌ์ฆ] Algorithms Study with JAVA - Backtracking (0) | 2022.11.18 |
- Total
- Today
- Yesterday
- ์ฝํ
- DeSerialization
- Java Data Types
- JPA
- Spring Boot
- @RequestBody
- FCM
- ci/cd
- DTO
- ๊ธฐ์ง๊ตญ ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- JPQL
- ๊ฐ์ ์๋ฒ
- JOIN FETCH
- N+1
- ์ญ์ง๋ ฌํ
- gitlab
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊น๋ฉ
- json web token
- ์ค์๊ฐ๋ฐ์ดํฐ
- spring
- Firebase
- ์ง์ฐ ๋ก๋ฉ
- docker
- LazyInitializationException
- google cloud
- Jackson
- ์ธ์ฆ/์ธ๊ฐ
- ๋์ปค
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |