zoukankan      html  css  js  c++  java
  • 图的广度优先遍历

    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     }
  • 相关阅读:
    结对项目——四则运算
    关于结对编程的感想
    《诗词大闯关》调查表与调查结果分析
    我的软件工程课目标
    我的软件工程课目标
    软件工程课程建议
    结对编程(二)
    结对编程——四则运算
    结对编程
    《诗词大闯关》问卷调查心得与体会
  • 原文地址:https://www.cnblogs.com/yfyzy/p/4542677.html
Copyright © 2011-2022 走看看