<p>The minimum spanning tree problem is to take a connected weighted graph and find the subset of its edges with the lowest total weight while keeping the graph connected (and as a consequence resulting in an acyclic graph).</p>

<p>The algorithm I am considering is:</p>

<ul>
<li>Find all cycles.</li>
<li>remove the largest edge from each cycle.</li>
</ul>

<p>The impetus for this version is an environment that is restricted to "rule satisfaction" without any iterative constructs. It might also be applicable to insanely parallel hardware (i.e. a system where you expect to have several times more degrees of parallelism then cycles).</p>

<p>Edits:</p>

<p>The above is done in a stateless manner (all edges that are not the largest edge in any cycle are selected/kept/ignored, all others are removed).</p>

What happens if two cycles overlap?  Which one has its longest edge removed first?  Does it matter if the longest edge of each is shared between the two cycles or not?
For example:
```
```
V = { a, b, c, d }
E = { (a,b,1), (b,c,2), (c,a,4), (b,d,9), (d,a,3) }
```
```
There's an a -> b -> c -> a cycle, and an a -> b -> d -> a