Это код, который я нашел для BFS, но у меня проблемы с пониманием работы. Вещи вроде: int number_of_nodes = adjacency_matrix[source].length - 1;
и зачем брать int[] visited = new int[number_of_nodes + 1];
?описание кода BFS (Java)
public void bfs(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix[source].length - 1;
int[] visited = new int[number_of_nodes + 1];
int i, element;
visited[source] = 1;
queue.add(source);
while (!queue.isEmpty())
{
element = queue.poll();
i = element;
System.out.print(i + "\t");
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
queue.add(i);
visited[i] = 1;
}
i++;
}
}
}
Ваш вопрос кажется недостаточным, чтобы понять, что такое 'adjacency_matrix', и поскольку этот код не объясняет это, почему бы вам не вернуться к тому, где вы его нашли, и посмотреть еще? – Andreas
Я знаю, какая матрица смежности. Я просто не понимаю, почему количество узлов подсчитывается таким образом. –
Вы спрашиваете «почему« - 1 »? Если это так, это потому, что тот, кто написал код, решил сделать это именно так. – Andreas