码迷,mamicode.com
首页 > 其他好文 > 详细

图的广度优先遍历

时间:2015-05-31 21:38:32      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

1.广度优先遍历是连通图的一种遍历策略。其基本思想如下:

1)、从图中某个顶点V0出发,并访问此顶点;

2)、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;

3)、重复步骤2,直到全部顶点都被访问为止。

 

 

2.例如下图

技术分享

 

1).从0开始,首先找到0的关联顶点3,4
2).由3出发,找到1,2;由4出发,找到1,但是1已经遍历过,所以忽略。
3).由1出发,没有关联顶点;由2出发,没有关联顶点。
所以最后顺序是0,3,4,1,2

 

3.下面是基于Java的代码实现

 1 int rs[] = new int[100];               //访问结果集           
 2 int k = 0;                             //访问结果集计数
 3 
 4  void bfs(int[][] map, int v) {
 5 
 6         int max = map.length;
 7         int size = max + 1;
 8         int queue[] = new int[size];
 9 
10         int front = 0;
11         int rear = 0;
12 
13         int visited[] = new int[max];
14 
15         visited[v] = 1;
16         rear = (rear + 1) % size;
17         queue[rear] = v;
18 
19         rs[k++] = v;
20 
21         while (rear != front) {
22 
23             front = (front + 1) % size;
24             int w = queue[front];
25             for (int i = 0; i < map[w].length; i++) {
26                 if (map[v][i] != 0 && visited[i] == 0) {
27                     rear = (rear + 1) % size;
28                     queue[rear] = i;
29                     visited[i] = 1;
30                     rs[k++] = i;
31                 }
32             }
33         }
34 
35     }

 

图的广度优先遍历

标签:

原文地址:http://www.cnblogs.com/yfyzy/p/4542677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!