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     }
  • 相关阅读:
    Bzoj1499: [NOI2005]瑰丽华尔兹
    Bzoj1016: [JSOI2008]最小生成树计数
    清橙A1212:剪枝
    SPOJ1825:Free tour II
    http://www.freepik.com/
    A Guide To Transclusion in AngularJS
    styling-customizing-file-inputs
    You Don't Know JS: this & Object Prototypes
    git中https和SSH的区别
    difference between match and exec
  • 原文地址:https://www.cnblogs.com/yfyzy/p/4542677.html
Copyright © 2011-2022 走看看