CS61B Fall 2023
Homework Intro Section
Homework 2: Percolation
Introduction
CS61B Fall 2023
What is Percolation?
CS61B Fall 2023
Percolation Methods
CS61B Fall 2023
What is a Weighted Quick Union and how can it help us?
CS61B Fall 2023
WeightedQuickUnion stores the parent of each node in the array and merges sets by setting the parent of one root to the other based off size (merge smaller into larger)
We can use a single array to represent our disjoint set when implementing union() optimally
arr[i] contains the parent of element i in the set; the index of a root contains -(# elements in set rooted at that index)
[-9, 0, 0, 0, 0, 1, 1, 4, 4]
WeightedQuickUnionUF
To think about in your code
CS61B Fall 2023
Initial State of the Universe
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
CS61B Fall 2023
After One Open
| | | | |
| | | | |
| | | | |
| | | | open! |
| | | | |
open(3, 4)
CS61B Fall 2023
After Two Opens
| | | | |
| | | | |
| | | | open! |
| | | | open! |
| | | | |
open(3, 4)
open(2, 4)
CS61B Fall 2023
To Support Connectedness, Must Make Union Calls
| | | | |
| | | | |
| | | | open!! |
| | | | open! |
| | | | |
open(3, 4)
open(2, 4)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
After Three Opens
| | | | |
| | | | |
| | open!! | | open!! |
| | | | open! |
| | | | |
open(3, 4)
open(2, 4)
open(2, 2)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
After Four Opens
open(3, 4)
open(2, 4)
open(2, 2)
open(2, 3)
| | | | |
| | | | |
| | open!! | open! | open!! |
| | | | open! |
| | | | |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
After Five Opens
open(3, 4)
open(2, 4)
open(2, 2)
open(2, 3)
open(0, 2)
| | open! | | |
| | | | |
| | open! | open! | open!! |
| | | | open! |
| | | | |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
After Six Opens
open(3, 4)
open(2, 4)
open(2, 2)
open(2, 3)
open(0, 2)
open(1, 2)
| | open! | | |
| | open! | | |
| | open! | open! | open! |
| | | | open! |
| | | | |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
Checking Fullness
open(3, 4)
open(2, 4)
open(2, 2)
open(2, 3)
open(0, 2)
open(1, 2)
isFull(2, 2)
| | open! | | |
| | open! | | |
| | open! | open! | open! |
| | | | open! |
| | | | |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
Checking Fullness
Could call connected for each item in top row but too slow!!
open(3, 4)
open(2, 4)
open(2, 2)
open(2, 3)
open(0, 2)
open(1, 2)
isFull(2, 2)
| | open! | | |
| | open! | | |
| | open! | open! | open! |
| | | | open! |
| | | | |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CS61B Fall 2023
Virtual Sites
CS61B Fall 2023
Beware! Backwash
CS61B Fall 2023
water should not flow back up through the virtual bottom site!
Backwash Tips
CS61B Fall 2023
FAQ
CS61B Fall 2023
FAQ
CS61B Fall 2023
Questions
CS61B Fall 2023