[Home Page - Algorithms](/@roger61205/Algorithms)
[toc]
Let $G=(V,E)$ be a connected, directed and weighted path.
# Algorithm
Chu-Liu-Edmonds' Algorithm takes the following steps to find a MST in a directed graph:
1. Step 1
Initially, every vertex is considered a subtree. For each subtree, keep 1 incoming edge with the minimum weight.
1. Step 1-1:
If there is no cycle, go to step 2.
2. Step 1-2:
If there is a cycle,
1. Step 1-2-1
Merge subtrees with the cycle into one.
2. Step 1-2-2
For each vertex in the subtree, add the weight of its outgoing edge chain to its incoming edges not in the subtree.
3. Step 1-2-3
Go to step 1.
2. Step 2: Break all cycles by removing edges that cause multiple parents.
# Analysis
**Reference**
[8.4. Edmonds' Algorithm - GitBook](https://emory.gitbook.io/dsa-java/minimum-spanning-trees/edmonds-algorithm)