# Lecture 3

## Greedy Algorithms

• Constructing a solution step-by-step
• Once you make a decision (make a step), there is no going back
• Each step should be the local optimum, hoping it works out for a global optimum
• It can also be used to find the least optimal step in a solution, since we can compare a solution to our greedy algorithm’s solution

### Minimum spanning tree (MST)

Given a connected, undirected graph, the minimum spanning tree is a fully connected tree where there are the minimum number of edges (weights should be considered too). #### Applications of MST

• Network designs: understanding the most optimum way to connects hosts in a local area network
• Approximations of NP-Hard Problems: Travelling salesman etc.

### General properties of MSTs

Cut Property: We have a set of $S$ vertices. We look at an edge $e$ as the minimum cost edge from $S$ to another set of vertices.

Cycle Property: If we have a cycle, then there is always an edge with the longest weight, which we can remove.

Cutset Intersection: The edges in the cycle that are also in the cutset.

### Prim’s Algorithm (Dijkstra)

Initialise $S =$ any node. Apply the cut property to $S$. Add a minimum cost edge to the cutset and add one new explored node to $S$. Every time there’s a cutset intersection, we remove the most expensive edge

##### Algorithm ##### Example trace of the previously given graph #### Analysis of Prim’s Algorithm

Runtime is $O(m \log n)$ with a binary heap. It is more likely $O(n^2)$ if using the basic array structure

### Kruskal’s Algorithm

Consider edges in ascending order of weight

Case 1: If adding $e$ to $T$ creates a cycle, discard $e$.

Case 2: Otherwise, insert $e = (u,v)$ into $T$ according to the cut property.

Importantly, Kruskal’s algorithm will create disconnected components. Once there are no more available edges that don’t create a cycle, we are done

##### Algorithm In this case, we use an efficient merge algorithm to merge sort the set.