Таким образом, в основном, этот алгоритм выполняет просмотр списка вершин и создает путь на основе стоимости от одной вершины к другой. Стоимость - это просто термин, объясняющий сложность перехода из одной вершины в другую, обычно просто расстояние. Давайте углубимся в код.
while (countIncluded != vertices.length) {
Я знаю, вы сказали, что поняли, что это значит, но я все равно пойду. Этот цикл while позволит вам пройти через каждую вершину в массиве, чтобы каждая из них была связана хотя бы с одной другой.
int u = -1;
for (int i = 0; i < vertices.length; i++) {
Я объединил эти две строки, потому что первая не очень помогает. Переменная u
является индексом текущей рассматриваемой вершины. Первоначально он установлен в -1, потому что это недопустимая позиция в массиве. Следующая строка, цикл for
, просто зацикливается на каждой вершине в данном массиве.
if (!included[i]) {
if (u == -1 || C[u] > C[i])
u = i;
Первая строка просто проверяет, включено ли текущее значение i
или текущая вершина в дерево. Если это так, нам не нужно проверять снова и переходить к следующему. Следующая строка сначала проверяет, равен ли u
-1. Как указано выше, -1 - это просто временное значение заполнителя, и эта проверка гарантирует, что он всегда будет указывать на действительную вершину. Вторая проверка - проверка, превышает ли стоимость u
стоимость i
. Это то, что на самом деле делает алгоритм. То, что он в основном делает, это получение стоимости u
или временной вершины. Затем он сверяется со стоимостью i
. Если стоимость i
меньше стоимости u
, установите для u
значение i
. При этом он найдет вершину с наименьшей стоимостью, потому что запоминает значение u
во всей этой вещи.
included[u] = true;
countIncluded++;
Первая строка устанавливает для индекса u
в вашем массиве значение true. Это гарантирует, что он не будет проверен снова в вашем алгоритме, чтобы предотвратить бесконечный цикл проверки одной и той же вершины на каждой отдельной итерации. После этого countIncluded
увеличивается для отслеживания количества добавленных вершин.
Надеюсь, это поможет! Не стесняйтесь просить меня уточнить что-либо!