> For the complete documentation index, see [llms.txt](https://garychang.gitbook.io/data-structure/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://garychang.gitbook.io/data-structure/4-graph/4.3-spanning-tree/4.3.1-kruskals-algorithm.md).

# 4.3.1 - Kruskal's algorithm

$$G=(V, E)$$&#x20;

Steps:

1. 自 $$E$$ 中挑出最小成本的邊 $$(u, v)$$&#x20;

   $$\Rightarrow$$使用Heap的`Delete-Min()`，花 $$O(logE)$$&#x20;
2. 判斷$$(u, v)$$ 加入spanning tree中，是否會形成cycle

   1. 是: 放棄
   2. 否: 將(u, v)加入S中

   $$\Rightarrow$$使用Disjoint Set(互斥集)來判斷是否會產生cycle

   `if (find(u) != find(v){ //判斷u, v是否屬於同一個集合`&#x20;

   &#x20;    `​union(u, v);    //將u, v聯集加入S中`          &#x20;

   `}`                                               &#x20;
3. 重複1\~2直到已挑出$$v-1$$ 個邊或是E為空

若 $$S$$的邊數小於$$v-1$$ ，則 $$G$$ 無spanning tree。

Time: $$O(ElogE)$$&#x20;

e.g.

<img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIpo1kkcpkN8J3_YPvK%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.19.21.jpg?alt=media&amp;token=1ffb1e86-7633-49b0-91ef-d668e91da314" alt="" data-size="original">&#x20;

1. 挑出(1, 6)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsS5p3voBdmZR8gC2w%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.36.31.jpg?alt=media&amp;token=cb1fe4f6-aa0e-4d38-8ccb-75801f4f74c9" alt="" data-size="original">&#x20;
2. 挑出(3, 4)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsSAPS6z03l-pePEvj%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.37.08.jpg?alt=media&amp;token=d911ce3a-01a7-4d9e-8cdc-0ea4dc3db222" alt="" data-size="original">&#x20;
3. 挑出(2, 7)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsSD1Qy1wCqyFaUnRu%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.38.09.jpg?alt=media&amp;token=305a9bac-b581-4acc-9718-6fa8f884f48e" alt="" data-size="original">&#x20;
4. 挑出(2, 3)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsSJYkdg_8HZP9dQVe%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.39.52.jpg?alt=media&amp;token=15a2c962-10a8-4745-9b78-f23a52102769" alt="" data-size="original">&#x20;
5. 挑出(4, 7)會形成cycle
6. 挑出(4, 5)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsSPYl-UcyCoXiv6Hs%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.44.06.jpg?alt=media&amp;token=8c08b53b-5b13-4861-92b3-3ec4f1ab530e" alt="" data-size="original">&#x20;
7. 挑出(5, 7)會形成cycle
8. 挑出(5, 6)

   <img src="https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LIpnrR8j8h5zSGnE3TX%2F-LIsSi4WwlGei4o4ftvc%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-08-01%2015.45.52.jpg?alt=media&amp;token=b058375d-e247-4207-ba9a-160ecba70325" alt="" data-size="original">&#x20;

Min Cost = 99
