Kruskal's Minimum Spanning Tree Algorithm
ํฌ๋ฌ์ค์ปฌ(Kruskal) ์๊ณ ๋ฆฌ์ฆ์ด๋? Kruskal's Algorithm์ ์ต์ ๋น์ฉ ์ ์ฅ ๊ทธ๋ํ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค. ๋ณ์ ๊ฐ์๋ฅผ E, ๊ผญ์ง์ ์ ๊ฐ์๋ฅผ V๋ผ๊ณ ํ๋ค๋ฉด Kruskal's Algorithm์ O(ElogV)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ต๋๋ค. ํฌ๋ฌ์ค์ปฌ์ MST(์์ฌ์์ด ๋ฐฉ๋ฒ) ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ต Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 edge_set kruskal_MST(edge_set E, int n) { sort(E); // ๊ฐ์ ์ ๋ ฌ edge_set MST_E = { }; for (i=0; i<n; i++) init_set(i); // n๊ฐ์ ์งํฉ(ํธ๋ฆฌ)์ ์์ฑ while(MST_E์ ๊ฐ์ ์ < n - 1) { (u, v) = E์ ์ต์ ๊ฐ์ค์น ๊ฐ์ ; E = E - {(u, v)}; if(find(u) != find(v)) // u์ v๊ฐ ๋ค๋ฅธ ์งํฉ(ํธ๋ฆฌ) ์์ { MST_E = MST_E โช {(u, v)}; // ๊ฐ์ ์ถ๊ฐ union(u, v); // ๋ ์งํฉ(ํธ๋ฆฌ)์ ํฉ๋ณ } } return MST_E; } - ์์ - ...