Link to code: PercolationUF.java
/**
* Simulate a system to see its Percolation Threshold, but use a UnionFind
* implementation to determine whether simulation occurs. The main idea is that
* initially all cells of a simulated grid are each part of their own set so
* that there will be n^2 sets in an nxn simulated grid. Finding an open cell
* will connect the cell being marked to its neighbors --- this means that the
* set in which the open cell is 'found' will be unioned with the sets of each
* neighboring cell. The union/find implementation supports the 'find' and
* 'union' typical of UF algorithms.
* <P>
*
* @author Owen Astrachan
* @author Jeff Forbes
*
*/
public class PercolationUF implements IPercolate {
private final int OUT_BOUNDS = -1;
/**
* Constructs a Percolation object for a nxn grid that uses unionThing to
* store sets representing the cells and the top/source and bottom/sink
* virtual cells
*/
public PercolationUF(int n, IUnionFind unionThing) {
// TODO complete PercolationUF constructor
}
/**
* Return an index that uniquely identifies (row,col), typically an index
* based on row-major ordering of cells in a two-dimensional grid. However,
* if (row,col) is out-of-bounds, return OUT_BOUNDS.
*/
public int getIndex(int row, int col) {
// TODO complete getIndex
return OUT_BOUNDS;
}
public void open(int i, int j) {
// TODO complete open
}
public boolean isOpen(int i, int j) {
// TODO complete isOpen
return false;
}
public boolean isFull(int i, int j) {
// TODO complete isFull
return false;
}
public boolean percolates() {
// TODO complete percolates
return false;
}
/**
* Connect new site (row, col) to all adjacent open sites
*/
private void connect(int row, int col) {
// TODO complete connect
}
}