## Learning Outcomes

At the end of this lecture, you’ll be able to:

- Identify the operations of the
**Union-Find data structure**. - Trace the
**quick find**implementation strategy for union-find. - Trace the
**quick union**implementation strategy for union-find. - Differentiate the advantages/disadvantages of quick find vs. quick union.
- Trace the “quick union” implementation with
**union-by-size**and**path compression**heuristics. - Explain the runtime improvements gained by using the heuristics for union-find operations.
- Define the
**iterated logarithm**(log-star) function. - Identify the
*amortized*runtime of union-find operations. - Explain how to implement Kruskal’s algorithm efficiently using a union-find structure for detecting cycles, and identify the resulting run-times.

## Lecture Plan

In this lecture, we'll cover the following lessons:

- Dynamic Connectivity: A Data Structure for Graphs
- Union-Find Data Structure: Introduction
- Union-Find Data Structure: Operations
- Implementation: Quick Find⚡
- Implementation: Quick Union⚡
- Quick Union: Improvement 1: Weighting⚡
- Quick Union: Improvement 2: Path Compression⚡
- Quick Union: Exercise
- Quick Union: Runtime after improvements!⚡
- Kruskal's Runtime: Using Union-Find⚡

Lessons marked with ⚡ contain exercise/activity.