๐Ÿ’ป Dev & CSAlgorithm & Coding Test

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; } - ์˜ˆ์ œ - ...

July 2, 2020 ยท 2 min ยท Sobamemil