Skip to content
Merged
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ An implementation of Boruvka's algorithm to find a minimum spanning tree in a gr
```
Finding MST with Boruvka's algorithm:
Vertices: [0, 1, 2, 3, 4, 5, 6, 7, 8]
Edges (vertex_1, vertex_2, weight):
Edges (node1, node2, weight):
(0, 1, 4)
(0, 6, 7)
(1, 2, 9)
Expand Down Expand Up @@ -50,7 +50,7 @@ Added edge 0 - 6 with weight 7 to MST.
Added edge 2 - 3 with weight 6 to MST.

MST found with Boruvka's algorithm.
MST edges (vertex_1, vertex_2, weight):
MST edges (node1, node2, weight):
(0, 1, 4)
(0, 6, 7)
(2, 3, 6)
Expand Down
Binary file modified docs/main.pdf
Binary file not shown.
16 changes: 5 additions & 11 deletions docs/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
\begin{document}

\title{Borůvka's Algorithm}
\author{Student Number: 690065435}
\author{Isaac Cheng}
\date{December 2022}

\maketitle
Expand All @@ -29,12 +29,6 @@
\vspace*{\fill}
\begin{center}
YouTube Video Link: \url{https://www.youtube.com/watch?v=n5LNVobuBNU}

\vspace{0.5em}
Word Count: 1,469

\vspace{1em}
I certify that all material in this report which is not my own work has been identified.
\end{center}
\vspace{1em}

Expand Down Expand Up @@ -71,7 +65,7 @@ \section{Pseudocode}

\nl Initialise a list of components $N$, where $N_k$ denotes the vertices in component $k$.

\nl \For{vertex $v \in V$}{
\nl \For{node $v \in V$}{
\nl $N_v = v$.
}

Expand Down Expand Up @@ -158,17 +152,17 @@ \subsection{Two-Approximation for the Travelling Salesperson Problem}

\begin{algorithm}
\caption{Two-Approximation for the Travelling Salesperson Problem with MST-DFS \cite{andreae1995performance}}
\nl Set a vertex as the start.
\nl Set a node as the start.

\nl Construct a minimum spanning tree, $T$.

\nl Create a list of vertices, $H$, that is ordered according to when they are visited in a pre-order tree walk of $T$, and add the start vertex at the end.
\nl Create a list of vertices, $H$, that is ordered according to when they are visited in a pre-order tree walk of $T$, and add the start node at the end.

\nl Return the path $H$.
\end{algorithm}

\subsection{Parallel Computation of Minimum Spanning Trees}
Several other algorithms are technically more optimal for finding a minimum spanning tree depending on the input graph -- Prim's algorithm is faster for dense graphs, and Kruskal's algorithm is faster for sparse graphs \cite{bazlamaccci2001minimum}. However, this only considers sequential implementations of the algorithms -- Borůvka's algorithm has become increasingly popular because it is easy to parallelise \cite{mariano2015generic}. This contrasts with the aforementioned algorithms, which are intrinsically serial -- they start with a single component and seek to add edges to it, making it difficult to parallelise them as we must keep and check edges in a strict order. As Borůvka's algorithm starts with multiple components and seeks to connect them with the shortest edge, it can be parallelised by distributing the edges between processors to determine the shortest connecting edge for each vertex \cite{chung1996parallel}. The parallel implementation of Borůvka's algorithm enables faster performance on multi-core or distributed systems, giving it an advantage over other classical minimum spanning tree problems when working at a large scale.
Several other algorithms are technically more optimal for finding a minimum spanning tree depending on the input graph -- Prim's algorithm is faster for dense graphs, and Kruskal's algorithm is faster for sparse graphs \cite{bazlamaccci2001minimum}. However, this only considers sequential implementations of the algorithms -- Borůvka's algorithm has become increasingly popular because it is easy to parallelise \cite{mariano2015generic}. This contrasts with the aforementioned algorithms, which are intrinsically serial -- they start with a single component and seek to add edges to it, making it difficult to parallelise them as we must keep and check edges in a strict order. As Borůvka's algorithm starts with multiple components and seeks to connect them with the shortest edge, it can be parallelised by distributing the edges between processors to determine the shortest connecting edge for each node \cite{chung1996parallel}. The parallel implementation of Borůvka's algorithm enables faster performance on multi-core or distributed systems, giving it an advantage over other classical minimum spanning tree problems when working at a large scale.

\subsection{Faster Sequential Algorithms for Minimum Spanning Trees}
The concepts behind Borůvka's algorithm have also been used to develop faster sequential algorithms. For example, the expected linear time minimum spanning tree algorithm proposed by Karger, Klein, and Tarjan runs in O(E) time. It involves an adaptation of Borůvka's algorithm by using the Borůvka step, which reduces the number of vertices in the graph by at least a factor of two, on graph G to create a contracted graph G' \cite{dixon1992verification, king1995simpler}. This is followed by a random sampling step that selects a subgraph H by selecting each edge in G' independently with a probability of 1/2 \cite{bazlamaccci2001minimum}. Finally, the verification step removes F-heavy edges from G' to reduce the graph further using a linear time minimum spanning tree verification algorithm \cite{dixon1992verification, king1995simpler, karger1995randomized}.
Expand Down
Loading