์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- i-type
- mariadb
- ์ค๋ ๋
- tcp ํ๋กํ ์ฝ
- ํ๋ ์ ๊ตฌ์กฐ
- xv6
- ๊ฐ๋ฐ์์ทจ์
- ๋น์ฃผ๊ธฐ์ ํธ
- ์ฐ๋ถํฌdb
- reducible
- ์ค๋ฅ์ ์ด
- well known ํฌํธ
- ํ๋ก์ด๋์์
- ํ ํฐ ๋ฒ์ค
- leetcode
- git merge
- IEEE 802
- ํญํด99
- ์ฝ๋ฉํ ์คํธ์ค๋น
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์ค๋ฅ๊ฒ์ถ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- til
- tcp ์ธ๊ทธ๋จผํธ
- ์ค๋ธ์
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ์์๋ฒํธ
- ์ฃผ๊ธฐ์ ํธ
- 99ํด๋ฝ
- ๋ฐ์ดํฐ ์ ์ก
- Today
- Total
Unfazedโ๏ธ๐ฏ
๋งํฌ ์ํ(LS) ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ ๋ณธ๋ฌธ
๋งํฌ ์ํ(LS) ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ
9taetae9 2024. 12. 18. 14:32๊ฐ ๋ ธ๋๊ฐ ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๋งํฌ์ ์๋ณ์์ ๋น์ฉ์ ํฌํจํ๋ ๋งํฌ ์ํ ํจํท์ ๋คํธ์ํฌ์์ ๋ชจ๋ ๋ค๋ฅธ ๋ ธ๋๋ก ๋ธ๋ก๋์บ์คํ
=> ๋คํธ์ํฌ ํ ํด๋ก์ง์ ๋ชจ๋ ๋งํฌ ๋น์ฉ์ด ์๋ ค์ ธ ์์ด ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋ ธ๋๋ค์ ๋ธ๋ก๋์บ์คํธ๋ฅผ ํตํด ๋ชจ๋ ๋ ธ๋๋ ๋คํธ์ํฌ์ ๋ํ ๋์ผํ๊ณ ์๋ฒฝํ ๊ด์ ์ ๊ฐ๊ฒ ๋๋ค.
๊ฐ ๋ ธ๋๋ LS ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ๋ค๋ฅธ ๋ ธ๋์ ๋๊ฐ์ ์ต์ ๋น์ฉ ๊ฒฝ๋ก ์งํฉ์ ๊ณ์ฐํ ์ ์๋ค.
์๋์์ ์ค๋ช ํ ๋งํฌ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(Dijkstra's algorithm)์ด๋ผ ํ๊ณ , ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim's algorithm)๋ ํด๋น ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ด๋ จ๋์ด ์๋ค.
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(Dijkstra's algorithm)
ํ๋์ ๋ ธ๋(์ถ๋ฐ์ง, u๋ผ๊ณ ์ง์นญ)์์ ๋คํธ์ํฌ ๋ด ๋ชจ๋ ๋ค๋ฅธ ๋ ธ๋๋ก์ ์ต์ ๋น์ฉ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐ
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต์ ์ด๊ณ , ์๊ณ ๋ฆฌ์ฆ์ k ๋ฒ์งธ ๋ฐ๋ณต ์ดํ์๋ k ๊ฐ์ ๋ชฉ์ ์ง ๋ ธ๋์ ๋ํด ์ต์ ๋น์ฉ ๊ฒฝ๋ก๊ฐ ์๋ ค์ง๋ฉฐ ์ด k ๊ฐ์ ๊ฒฝ๋ก๋ ๋ชจ๋ ๋ชฉ์ ์ง ๋ ธ๋๋ก์ ์ต์ ๋น์ฉ ๊ฒฝ๋ก ์ค์์ ๊ฐ์ฅ ์ ์ ๋น์ฉ์ ๊ฐ๋ k ๊ฐ์ ๊ฒฝ๋ก์ด๋ค.
๊ธฐํธ ์ ์
D(v) : ์๊ณ ๋ฆฌ์ฆ์ ํ์ฌ ๋ฐ๋ณต ์์ ์์ ์ถ๋ฐ์ง ๋ ธ๋๋ถํฐ ๋ชฉ์ ์ง v๊น์ง ์ต์ ๋น์ฉ ๊ฒฝ๋ก์ ๋น์ฉ
p(v) : ์ถ๋ฐ์ง์์ v๊น์ง์ ํ์ฌ ์ต์ ๋น์ฉ ๊ฒฝ๋ก์์ v์ ์ง์ ๋ ธ๋(v์ ์ด์)
N' : ๋ ธ๋์ ์งํฉ. ์ถ๋ฐ์ง์์ v๊น์ง์ ์ต์ ๋น์ฉ ๊ฒฝ๋ก๊ฐ ๋ช ํํ ์๋ ค์ ธ ์๋ค๋ฉด, v๋ N'์ ํฌํจ
์ค์ ์ง์คํ ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ => ์ด๊ธฐํ ๋จ๊ณ์ ๋ฐ๋ณต ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ
๋ฐ๋ณต ๋ถ๋ถ์ ์ํ ํ์ : ๋คํธ์ํฌ์ ๋ ธ๋ ์
๋ฃจํ ์ํ ์ข ๋ฃ ํ : ์ถ๋ฐ์ง ๋ ธ๋ u์์ ๋คํธ์ํฌ์์ ๋ชจ๋ ๋ค๋ฅธ ๋ ธ๋๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐ์ถ
์ถ๋ฐ์ง ๋ ธ๋ u๋ฅผ ๋ํ ๋งํฌ ์ํ ์๊ณ ๋ฆฌ์ฆ
์ด๊ธฐํ ๋จ๊ณ
Initialization :
N' = {u}
for all nodes v
if v is a neighbor of u
then D(v) = c(u, v)
else D(v) = INF
- N'๋ ์ต๋จ ๊ฒฝ๋ก๊ฐ ํ์ ๋ ๋ ธ๋๋ค์ ์งํฉ
- ์์ ๋ ธ๋ u๋ฅผ N'์ ๋จผ์ ํฌํจ
- ๋ชจ๋ ๋
ธ๋ v์ ๋ํด:
- v๊ฐ u์ ์ด์ ๋ ธ๋๋ผ๋ฉด → D(v)๋ u์์ v๊น์ง์ ์ง์ ๋งํฌ ๋น์ฉ c(u, v)๋ก ์ค์
- v๊ฐ u์ ์ด์์ด ์๋๋ผ๋ฉด → D(v)๋ ๋ฌดํ๋(INF)๋ก ์ค์
๋ฐ๋ณต ๋จ๊ณ (Loop)
Loop
find w not in N' such that D(w) is a minimum
add w to N'
update D(v) for each neighbor v of w and not in N' :
D(v) = min(D(v), D(w) + c(w, v))
- N'์ ํฌํจ๋์ง ์์ ๋ ธ๋๋ค ์ค์์ ํ์ฌ D(w)๊ฐ์ด ๊ฐ์ฅ ์์ ๋ ธ๋ w ์ฐพ๊ธฐ
- ์ฐพ์ ๋ ธ๋ w๋ฅผ N'์ ์ถ๊ฐ
- w์ ์ด์ ๋
ธ๋๋ค ์ค N'์ ํฌํจ๋์ง ์์ ๋ชจ๋ ๋
ธ๋ v์ ๋ํด ๊ฑฐ๋ฆฌ ๊ฐ ๊ฐฑ์ :
- ๊ธฐ์กด D(v) ๊ฐ๊ณผ (D(w) + c(w, v))๋ฅผ ๋น๊ตํ์ฌ ๋ ์์ ๊ฐ์ผ๋ก ๊ฐฑ์
- D(w) + c(w, v)๋ u์์ w๋ฅผ ๊ฑฐ์ณ v๋ก ๊ฐ๋ ๊ฒฝ๋ก์ ๋น์ฉ
์ข ๋ฃ ์กฐ๊ฑด
until N' = N
- N'์ด ์ ์ฒด ๋ ธ๋ ์งํฉ N๊ณผ ๊ฐ์์ง ๋๊น์ง ๋ฐ๋ณต
- ์ฆ, ๋ชจ๋ ๋ ธ๋์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๊ฐ ํ์ ๋ ๋๊น์ง ๊ณ์๋จ
์ฃผ์ ํน์ง:
- ๊ฐ ๋ผ์ฐํฐ๋ ์์ ์ ์ถ๋ฐ์ ์ผ๋ก ํ์ฌ ๋คํธ์ํฌ์ ๋ชจ๋ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐ
- ๊ฐ ๋ฐ๋ณต๋ง๋ค ํ๋์ ๋ ธ๋์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๊ฐ ํ์
- ๊ทธ๋ฆฌ๋(Greedy) ๋ฐฉ์์ผ๋ก ๋์ํ๋ฉฐ, ํญ์ ํ์ฌ๊น์ง ์๋ ค์ง ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ ํ
- ์์ ๊ฐ์ค์น๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์ ์์ ์ผ๋ก ๋์
์๊ฐ ๋ณต์ก๋ :
์ฒซ ๋ฒ์งธ ๋ฐ๋ณต : ์ด๋ฏธ ๊ณ์ฐ๋ ๋ ธ๋์ ์งํฉ N'์ ํฌํจ๋์ง ์์ ๋ ธ๋ w๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ชจ๋ n๊ฐ์ ๋ ธ๋ ๊ฒ์ฌ
๋ ๋ฒ์งธ ๋ฐ๋ณต : ์ด๋ฏธ ๊ณ์ฐ๋ ๋ ธ๋์ ์งํฉ N'์ ํฌํจ๋์ง ์์ ๋ ธ๋ w๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ชจ๋ n-1๊ฐ์ ๋ ธ๋ ๊ฒ์ฌ
...
=> ์ต์ ์ ๊ฒฝ์ฐ n(n+1)/2 ๊ฐ ๋ ธ๋ ๊ฒ์ฌ, O(n^2)
ํ ์๋ฃ ๊ตฌ์กฐ ํ์ฉํ ๊ฐ์ ๋ ๋ฐฉ์์ ์ ํ ์๊ฐ์ด ์๋ ๋ก๊ทธ๊ธ์ ์๊ฐ์ผ๋ก ์ต์๊ฐ์ ์ฐพ์ ์์ด ์๊ฐ๋ณต์ก๋ : O(nlogn)์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ
์ฐธ๊ณ ๋์ :
์ปดํจํฐ ๋คํธ์ํน : ํํฅ์ ์ ๊ทผ(7ํ) - James F. Kurose , Keith W.Ross ์ง์