[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim's Algorithm)
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ๋ฎ์ ๊ฐ์ ๋ถํฐ ์ ํํด์ MST๋ฅผ ๋ง๋ค์ด ๋๊ฐ์ง๋ง, ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฌ๋ฌ ํธ๋ฆฌ๋ค์ ๋ง๋ค๊ณ ์ ์ ํฉ์น๋ ๊ฒ์ด ์๋๋ผ ํ๋์ ํธ๋ฆฌ๋ฅผ ์ ์งํด๊ฐ๋ฉด์ ์๋ก์ด ๊ฐ์ ์ ์ถ๊ฐํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
Algorithm Concept
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค.
- ์์์ ๋ฃจํธ๋ ธ๋ r์ ํฌํจํ๋ ํธ๋ฆฌ A๋ฅผ ๋ง๋ ๋ค.
- ํธ๋ฆฌ A์ ์ํ๋ ์ ์ ๋ค๊ณผ ์ํ์ง ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๋ค์ cross ํ๋ ๊ฐ์ ๋ค ์ค ๊ฐ์ค์น๊ฐ ๊ฐ์ฅ ๋ฎ์ light edge ๋ฅผ ์ฐพ๋๋ค.
- ํด๋น light edge๋ฅผ ํธ๋ฆฌ A๋ก ํธ์ ์ํจ๋ค.
- ๋น ๋ฅธ light edge ํ์์ ์ํด min heap ์ ์ด์ฉํ priority queue ๋ฅผ ์ฌ์ฉํ๋ค.
Pseudo Code
MST-Prim(G, w, r)
priority queue Q <- arbitrary vertex from graph G
for each vertex u in Q
key[u] = INFINITY
parent[u] = NIL
key[root] = 0
parent[root] = NULL
while(Q is not empty)
u = Extract Min from Q
for each v in adjacency list adj[u]
if v is in Q and w(u, v) is less than key[v]
parent[v] = u
key[v] = w(u, w);
๊ฐ๋จํ๊ฒ ์ค๋ช ํด๋ณด๋ฉด, ์ฐ์ ์์ ํ์ ๋ค์ด์๋ ๋ ธ๋๋ค ์ค key ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์์ key๋ฅผ ๊ฐ์ง ์ ์ ์ ๋ฝ๊ณ , ํด๋น ์ ์ ๊ณผ ์ด์ด์ ธ ์๋ ๋ค๋ฅธ ์ ์ ๋ค์ ๋ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ด ๊ฐ์ง ๊ฐ์ค์น์ ์ ์ ์ด ๊ฐ์ง key ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ ์์ ๊ฐ์ key๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด๋ค.
Example
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์์ ์ผ๋ ๋์ผํ ๊ทธ๋ํ๋ฅผ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ด๋ณด์
Phase 1
์ผ๋จ ๊ฐ ์ ์ ์ key๋ฅผ INFINITE์ผ๋ก ์ด๊ธฐํ ํด์ค๋ค. ์ด key ๊ฐ๋ค์ ์ฐ์ ์์ ํ์ ๋ค์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ์ ์ ํ๋๋ฅผ ์ง์ ํ๋ค. ์ด ์ ์ ์ด ์์์ ์ด ๋ ๊ฒ์ด๋ค. ์ด์ฐจํผ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ ํ๋์ ํธ๋ฆฌ๋ฅผ ๊ณ์ ํ์ฅํด๋๊ฐ๋ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์ ์์์ ์ ํฌ๊ฒ ์๊ด์๋ค.
Phase 3
์ ํํ ์ด๊ธฐ์ ์ ์ ์ key๋ฅผ 0์ผ๋ก ์ง์ ํ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์ ํ์์ dequeue ๋ฅผ ์งํํ๋ฉด 0์ด ๋์ค๊ฒ๋๋ค. ์ด์ ์ด key๊ฐ์ ๊ฐ์ง ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ ธ๋๋ค์ ๊ฒ์ฌํ๋ค.
Phase 4
์ฐ์ ๋ฐ๋ก ์์ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ์ ์ฐพ์๊ฐ๋ค. ํด๋น ์ ์ ์ key๊ฐ์ ์ฒ์์ ์ด๊ธฐํํ๋๋๋ก ๋ฌดํ๋๊ฐ ๋ค์ด๊ฐ ์์ ๊ฒ์ด๋ค. ๊ธฐ์ค์ด ๋๋ ์ ์ ์ผ๋ก๋ถํฐ ์ด ์ ์ ์ผ๋ก ์ด์ด์ง๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ 14์ด๋ค. ์ด ์ค ๋ ์์ ๊ฐ์ ์ ์ ์ key ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ํด์ฃผ์. ์ด์ ๋ฃจํธ๋ ธ๋ ์๋จ์ ์๋ ๋ ธ๋์ key ๊ฐ์ ๋ฌดํ๋๊ฐ ์๋๋ผ ๊ฐ์ ์ ๊ฐ์ค์น์๋ 14๊ฐ ๋๋ค.
๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฃจํธ๋ ธ๋์ ์ด์ด์ง ๋ชจ๋ ๋ ธ๋์ ๋ํด์ ์ด ๊ณผ์ ์ ์ํํ๋ฉด ์๋์ ๋ถ์ด์๋ ์ ์ ์ key๊ฐ์ 3์ผ๋ก ์ค์ ๋๋ค.
Phase 5
๋ฃจํธ ๋ ธ๋์ ์ฒ๋ฆฌ๋ ๋๋ฌ๋ค. ๊ทธ๋ ์ง๋ง ์์ง ์ฐ์ ์์ ํ๊ฐ ๋น์ด์์ง ์๊ธฐ ๋๋ฌธ์ dequeue ๋ฅผ ์ํํ๋ค. ๋ฃจํธ๋ ธ๋๋ ์ด๋ฏธ pop ๋์๊ธฐ ๋๋ฌธ์ ๋ค์์ผ๋ก key ๊ฐ์ด ์์ 3์ ๊ฐ์ง ์ ์ ์ด ๋์จ๋ค. ์ด ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค์ด ์ด์ ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก key๋ฅผ ์ ๋ฐ์ดํธ ํ๊ฒ๋๋ค.
- 14 ๋ฅผ key๋ก ๊ฐ์ง๋ ์ ์ ์ ์๋ก์ด ๊ฐ์ ์ ๊ฐ์ค์น์ธ 10์ ๋ง๋๊ฒ ๋๊ณ , ๋ ์์ ๊ฐ์ธ 10์ key์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ํ๋ค.
- ๊ฐ์ ๊ฐ์ค์น 8๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ๋ฌดํ๋์ key ๊ฐ์ ๊ฐ์ง๊ณ ์์๊ธฐ ๋๋ฌธ์ key์ ๊ฐ์ด ๋ ์์ ๊ฐ์ธ 8๋ก ์ ๋ฐ์ดํธ ๋๋ค.
Phase 6
๋ค์์ dequeue ๋๋ ์ ์ ์ ๋ฐฉ๊ธ ์ ์ key ๊ฐ 8๋ก ์ ๋ฐ์ดํธ ๋ ์ ์ ์ด๋ค. ์ด ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ์ ์ key๋ฅผ ์ ๋ฐ์ดํธ ํ๋ฉด ์์ ๊ฐ์ด key๊ฐ ์ค์ ๋๋ค.
Phase 7
ํ๋ฒ ๋ ์งํํ๋ฉด ๊ฐ ์ ์ ์ key๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฐ์ดํธ ๋๋ค.
More Steps...
ํ ์์ ์์ง ์ ์ ๋ค์ด ๋จ์์์ง๋ง, ๊ฐ ์ ์ ๋ค์ ๊บผ๋ด ํ์ธํด๋ณด๋ฉด, ๋ ์ด์ key๋ฅผ ์ ๋ฐ์ํธ ํ๋ ํ๊ฐ ์์์ ํ์ธํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ช์ฐจ๋ก ๊ฐ์ ๊ณผ์ ์ ๊ณ์ ์ํํด์ผ ํ๊ธด ํ์ง๋ง ์ต์ข MST๋ Phase 7๊ณผ ๋์ผํ ํธ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
'๐ฎ ์จ-์์ค > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ(Bellman-Ford Algorithm) (0) | 2021.07.18 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต๋จ๊ฒฝ๋ก(Shortest Path) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ(Kruskal Algorithm) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ ์ ์ฅ ํธ๋ฆฌ(MST) (1) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์๊ณ ๊ฒฝ๋ก(Critical Path) (0) | 2021.07.18 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote