Перколяция в Java - используется структура данных - PullRequest
0 голосов
/ 13 апреля 2020

Я изучаю курс Седжвика по алгоритмам и у меня возникают проблемы с пониманием структуры данных, используемой при решении проблемы перколяции в Java.

То, что я выяснил самостоятельно (без учета решений других ) заключается в том, что для сетки будет использоваться логический массив NxN ( true / false обозначает открытое / закрытое поле). Однако при использовании виртуальной вершины и низа решение определяет их как:

bottom = N * N + 1;  //virtual bottom
private int top = 0; //virtual top

и взвешенный объект UnionFind как:

uf = new WeightedQuickUnionUF(N * N + 2);

Может кто-нибудь объяснить, почему это так: N * N + 2 ?

Код для WeightedQuickUnion:

public WeightedQuickUnionUF(int n) {
    count = n;
    parent = new int[n];
    size = new int[n];
    for (int i = 0; i < n; i++) {
        parent[i] = i;
        size[i] = 1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...