まず、グラフの表現方法を選択する必要があります。例えば、隣接リストや隣接行列を使用することができます。隣接リストは、各ノードに隣接するノードのリストを関連付ける方法です。一方、隣接行列は、ノード間の接続関係を行列で表現する方法です。ここでは、隣接リストを使用してBFSアルゴリズムを実装します。
以下は、JavaでグラフのBFSアルゴリズムを実装するための簡単なコード例です。
import java.util.*;
public class Graph {
private int V; // グラフの頂点数
private LinkedList<Integer>[] adj; // 隣接リスト
public Graph(int v) {
V = v;
adj = new LinkedList[V];
for (int i = 0; i < V; ++i)
adj[i] = new LinkedList();
}
// 頂点vと頂点wをつなぐ辺を追加する
void addEdge(int v, int w) {
adj[v].add(w);
}
// グラフのBFSアルゴリズム
void BFS(int s) {
boolean[] visited = new boolean[V]; // ノードが訪れたかどうかを示す配列
LinkedList<Integer> queue = new LinkedList<Integer>();
visited[s] = true;
queue.add(s);
while (queue.size() != 0) {
s = queue.poll();
System.out.print(s + " ");
Iterator<Integer> i = adj[s].listIterator();
while (i.hasNext()) {
int n = i.next();
if (!visited[n]) {
visited[n] = true;
queue.add(n);
}
}
}
}
public static void main(String args[]) {
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
System.out.println("BFS traversal starting from vertex 2:");
g.BFS(2);
}
}
この例では、Graph
クラスが定義されており、addEdge
メソッドでグラフの辺を追加し、BFS
メソッドでBFSアルゴリズムを実行します。main
メソッドでは、グラフを作成し、頂点2からのBFS探索結果を表示しています。
このコード例を参考にして、自分のグラフに対してBFSアルゴリズムを実装してみてください。