隣接行列でDFSとBFSを実行するJavaでプログラムを作成しようとしています。私が今までにコンパイルして、これまでのところ希望する出力を与えるコードです。隣接行列DFSとBFS
しかし私は私のforループと関係があるかもしれないと感じる解決できないエラーを受けています。
次のようにエラーがある:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at GraphMatrix.dfVisit(GraphMatrix.java:304)
at GraphMatrix.dfVisit(GraphMatrix.java:306)
at GraphMatrix.dfVisit(GraphMatrix.java:306)
at GraphMatrix.DF(GraphMatrix.java:261)
at GraphMatrix.main(GraphMatrix.java:347)
エラーは以下のスニペットであるコード:
private void dfVisit(int prev, int v)
{
visited[v] = ++id;
System.out.println("Visited vertex" + ": " + v + " Along edge : " + prev);
for (int u: adj[v]) {
if (visited[u] != visited[v]) {
dfVisit(prev, u);
}
}
}
:もしなステートメントからライン上
// method to initialise Depth First Traversal of Graph
public void DF(int s)
{
id = 0;
for(int v = 1; v <= V; v++) {
visited[v] = 0;
}
dfVisit(0, s); //error being signaled here
}
そして第二
最後に、主にg.DF:
public static void main(String[] args) throws IOException
{
int s = 4;
String fname = "wGraph3.txt";
GraphMatrix g = new GraphMatrix(fname);
g.display();
g.DF(s);
g.BF(s);
}
}
任意の助けいただければ幸いです。
だからあなたは何を示唆している、この擬似コードオフ私のdfVisit方法を基づか.. が が訪れ始め 'グラフ:: dfVisit(頂点prevを、頂点V)[V] = ++ ID プリント「訪問頂点「 、「エッジに沿って「V、PREVは、 『 - 』 [U] dfVisit(U) End' –
を訪問していない場合は、V 各頂点のためにuがADJ(V) を私は本当に、さらに何も言うことができません、 @AmyKelly。実装しようとしているアルゴリズム*に本質的に間違っているものはありません。むしろ、作業しているデータの解釈や実装の詳細に問題があるようです。あなたは私がすでに行っているよりも、誰かがより具体的になるために必要な情報を提示していません。 –