《圖論》——廣度優先遍歷演算法(BFS)

Thinkgamer_gyt發表於2015-07-30

十大演算法之廣度優先遍歷:


本文以例項形式講述了基於Java的圖的廣度優先遍歷演算法實現方法,具體方法如下:

用鄰接矩陣儲存圖方法:

1.確定圖的頂點個數和邊的個數

2.輸入頂點資訊儲存在一維陣列vet中

3.初始化鄰接矩陣;

4.依次輸入每條邊儲存在鄰接矩陣array中

輸入邊依附的兩個頂點的序號i,j;
將鄰接矩陣的第i行第j列的元素值置為1;
將鄰接矩陣的第j行第i列的元素值置為1;

廣度優先遍歷實現:

1.初始化佇列Q
2.訪問頂點v;ifVisit[v]=1;頂點v入隊Q;
3.while(佇列Q非空)

v=佇列Q的隊頭元素出隊;
w=頂點v的第一個鄰接點
while(w存在)

如果w未被訪問,則訪問頂點w;visited[w]=1;頂點w入佇列Q

w=頂點v的下一個鄰接點

如下程式碼參考此圖完成:


實現程式碼如下:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class BFS {
 
	private Object[] vet;     //定義vet陣列用來存放頂點資訊
	private int[][] array;    //定義鄰接矩陣存放圖的頂點資訊
	private int vexnum;       //儲存邊的條數
	private boolean[] ifVisit;//存放結點是否被訪問過
	private List

相關文章