๐Ÿ’ป Dev & CSAlgorithm & Coding Test

Kruskal's Algorithm ๊ตฌํ˜„ 2 (Method applying the Collapse Rule)

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ์š” : C ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ Kruskal's Algorithm(Kruskal Algorithm) ๊ตฌํ˜„. ๋ถ•๊ดด๋ฒ•์น™์„ ์ ์šฉํ•˜์ง€ ์•Š์€ Kruskal's Algorithm. ๋ถ•๊ดด๋ฒ•์น™์„ ์ ์šฉํ•œ Kruskal's Algorithm ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„: ์ด์ „ ๊ธ€๊ณผ ์ด์–ด์ง€๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์™€ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๋งํฌ์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2021.04.09 - [์•Œ๊ณ ๋ฆฌ์ฆ˜] - Kruskal's Algorithm ๊ตฌํ˜„ 1 (Method without applying the Collapse Rule) ์ฐธ๊ณ ๋กœ ์•„๋ž˜ ์ฝ”๋“œ์—์„œ ๋ถ•๊ดด๋ฒ•์น™(collapsing rule)์„ ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋Š”๋ฐ, ๋ถ•๊ดด๋ฒ•์น™์ด๋ž€ ์ž„์˜์˜ ๋…ธ๋“œ i์— ๋Œ€ํ•ด find ์—ฐ์‚ฐ์„ ํ•œ๋‹ค๊ณ  ํ•˜์˜€์„ ๋•Œ, ์ •์ƒ์ ์œผ๋กœ ๋ฃจํŠธ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด i๋ถ€ํ„ฐ ๋ฃจํŠธ๊นŒ์ง€์˜ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋“ค์„ ๊ทธ ๋ฃจํŠธ์˜ ์ž์‹์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, i์— ๋Œ€ํ•ด find ์—ฐ์‚ฐ์„ ํ•œ ๋ฒˆ ํ•˜์˜€๋‹ค๋ฉด ๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” i๋ถ€ํ„ฐ ๋ฃจํŠธ๊นŒ์ง€์˜ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ํ•œ ๋ฒˆ์— ์ž์‹ ์˜ ๋ฃจํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด ๋ฉ๋‹ˆ๋‹ค. ...

April 9, 2021 ยท 9 min ยท Sobamemil
๐Ÿ’ป Dev & CSAlgorithm & Coding Test

Kruskal's Algorithm ๊ตฌํ˜„ 1 (Method without applying the Collapse Rule)

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ์š” : C ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ Kruskal's Algorithm(Kruskal Algorithm) ๊ตฌํ˜„. ๋ถ•๊ดด๋ฒ•์น™์„ ์ ์šฉํ•˜์ง€ ์•Š์€ Kruskal's Algorithm. ๋ถ•๊ดด๋ฒ•์น™์„ ์ ์šฉํ•œ Kruskal's Algorithm Kruskal's Algorithm์— ๋Œ€ํ•œ Explanation์€ ์•„๋ž˜ ๋งํฌ์˜ ์ด์ „ ๊ธ€์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2020.07.02 - [์•Œ๊ณ ๋ฆฌ์ฆ˜] - ํฌ๋Ÿฌ์Šค์ปฌ(Kruskal) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด ๊ธ€์—์„œ๋Š” ์˜ˆ๋กœ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ Kruskal's Algorithm์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„ : Input File: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” .txt ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. [graphInf.txt 0.00MB](https://blog.kakaocdn.net/dna/9GWpl/btq2iFfdTGn/AAAAAAAAAAAAAAAAAAAAAPR1afPSYRSSngG_pTeKxCHZPt50vsapwyoi0hUqhYlq/graphInf.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=tBqiAllXzExVIgPQgq2UUYjZeLk%3D&attach=1&knm=tfile.txt) ํ”„๋กœ๊ทธ๋žจ Execution Result: ๋ถ•๊ดด๋ฒ•์น™์„ ์ ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ...

April 9, 2021 ยท 9 min ยท Sobamemil
๐Ÿ’ป 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