1. Pengertian BFS
Breadth-first search adalah algoritma yang melakukan pencarian secara melebar yang
mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi
semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Selanjutnya, simpul
yang belum dikunjungi dan bertetangga dengan simpulsimpul yang tadi dikunjungi , demikian
seterusnya. Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih
dahulu sebelum simpul-simpul pad aras d+1.
Algoritma ini memerlukan sebuah antrian q untuk menyimpan simpul yang telah
dikunjungi. Simpulsimpul ini diperlukan sebagai acuan untuk mengunjungi simpul-simpul yang
bertetanggaan dengannya. Tiap simpul yang telah dikunjungu masuk ke dalam antrian hanya satu
kali. Algoritma ini juga membutuhkan table Boolean untuk menyimpan simpul yang te lah
dikunjungi sehingga tidak ada simpul yang dikunjungi lebih dari satu kali.
{
int nodeIndex=-1;
if(nodeIndex!=-1)
{
for (int j = 0; j < adjacency_matrix[nodeIndex].length; j++) {
if(adjacency_matrix[nodeIndex][j]==1)
{
neighbours.add(nodes.get(j));
}
}
}
return neighbours;
}
Node element=queue.remove();
System.out.print(element.data + "\t");
ArrayList<Node> neighbours=findNeighbours(adjacency_matrix,element);
for (int i = 0; i < neighbours.size(); i++) {
Node n=neighbours.get(i);
if(n!=null && !n.visited)
{
queue.add(n);
n.visited=true;
}
}
}
}
nodes.add(node40);
nodes.add(node10);
nodes.add(node20);
nodes.add(node30);
nodes.add(node60);
nodes.add(node50);
nodes.add(node70);
int adjacency_matrix[][] = {
{0,1,1,0,0,0,0}, // Node 1: 40
{0,0,0,1,0,0,0}, // Node 2 :10
{0,1,0,1,1,1,0}, // Node 3: 20
{0,0,0,0,1,0,0}, // Node 4: 30
{0,0,0,0,0,0,1}, // Node 5: 60
{0,0,0,0,0,0,1}, // Node 6: 50
{0,0,0,0,0,0,0}, // Node 7: 70
};
System.out.println("The BFS traversal of the graph is ");
BreadthFirstSearchExample bfsExample = new BreadthFirstSearchExample();
bfsExample.bfs(adjacency_matrix, node40);
}
}