Java-реализация DepthFirstSearch
Я пытаюсь узнать, как реализовать графики (поиск в глубину) в Java. И вот фрагмент кода, который я не понимаю, что символ здесь означает. Это примерно такой кусок кода:
private void dfs(Graph G, int v) {
count++;
marked[v] = true;
for (int w : G.adj(v)) {
if (!marked[w]) {
dfs(G, w);
}
}
}
Я не понимаю, что такое "ш"?!
Благодарю.
РЕДАКТИРОВАТЬ: Вот полный код, может быть, это поможет вам узнать точно, что здесь происходит:
package edu.princeton.cs.algs4;
public class DepthFirstSearch {
private boolean[] marked; // marked[v] = is there an s-v path?
private int count; // number of vertices connected to s
public DepthFirstSearch(Graph G, int s) {
marked = new boolean[G.V()];
validateVertex(s);
dfs(G, s);
}
private void dfs(Graph G, int v) {
count++;
marked[v] = true;
for (int w : G.adj(v)) {
if (!marked[w]) {
dfs(G, w);
}
}
}
public boolean marked(int v) {
validateVertex(v);
return marked[v];
}
public int count() {
return count;
}
private void validateVertex(int v) {
int V = marked.length;
if (v < 0 || v >= V)
throw new IllegalArgumentException("vertex " + v + " is not between 0 and " + (V-1));
}
public static void main(String[] args) {
In in = new In(args[0]);
Graph G = new Graph(in);
int s = Integer.parseInt(args[1]);
DepthFirstSearch search = new DepthFirstSearch(G, s);
for (int v = 0; v < G.V(); v++) {
if (search.marked(v))
StdOut.print(v + " ");
}
StdOut.println();
if (search.count() != G.V()) StdOut.println("NOT connected");
else StdOut.println("connected");
}
}
2 ответа
Хотя вы только что опубликовали часть своего кода, я считаю, что w
обозначает каждый узел, который находится рядом с текущим узлом v
, Или мы можем сказать, что w
обозначает каждый элемент в G.adj(v)
, который должен быть arrayList или что-то в этом роде.
Увидеть foreach
Цикл грамматики здесь: Как работает Java "для каждого" цикла?
Обновления:
Прочитайте подробный код, хотя отсутствие определения Graph
Все еще уверен, что ответ должен быть разумным.
Цикл for в вашем примере является foreach
петля. G.adj(v)
скорее всего возвращает какую-то коллекцию. W
представляет каждый отдельный элемент в коллекции. Для каждого элемента W
в этой коллекции сделай что-нибудь.