zoukankan      html  css  js  c++  java
  • (8)图的实现方式,图的搜索算法有哪些——3

    图的实现方式有两种:一种是邻接矩阵,一种是邻接链表。

    图(Graph)是一个用线或边连接在一起的顶点或结点的集合。

    G = (V,E)  //V:顶点,结点或点。E:边,弧或连线。

    根据图的边是否有方向,可以把图分为有向图和无向图。

    而根据图的边和顶点的关系又可以分为完全图和非完全图。完全图指的是n个顶点有n(n-1)/2条边的无向图。

    无向图和有向图最常用的实现都是基于邻接的方式。即邻接矩阵邻接链表

    邻接矩阵:

    n个顶点的图G=(V,E),为n*n的矩阵A。A中的每个元素是0或1。由于无向图是没有方向的,因此矩阵中(n,m)和(m,n)的值都为1,所以无向图的邻接矩阵是对称的,在存储时可以进行压缩。

    邻接链表:

    图的邻接链表是作为链表保存的。

    图的搜索指的是从一个给定的顶点开始,能够到达的顶点的集合。图的搜索算法主要有广度优先搜索和深度优先搜索。

    图的搜索指的是从一个给定的顶点开始,访问能够达到的顶点。

    广度优先遍历(BFS)

    (1)从某个顶点V出发,访问该顶点的所有邻接点V1,V2..VN

    (2)从邻接点V1,V2...VN出发,再访问他们各自的所有邻接点

    (3)重复上述步骤,直到所有的顶点都被访问过

    .深度优先遍历(DFS)

    (1)从某个顶点V出发,访问顶点并标记为已访问

    (2)访问V的邻接点,如果没有访问过,访问该顶点并标记为已访问,然后再访问该顶点的邻接点,递归执行。

    如果该顶点已访问过,退回上一个顶点,再检查该顶点的邻接点是否都被访问过,如果有没有访问过的继续向下访问,如果全部都访问过继续退回到上一个顶点,继续同样的步骤。

    ——整理自《C/C++程序员·面试宝典》

  • 相关阅读:
    Codeforces 716C[数论][构造]
    HDU 5808[数位dp]
    Codeforces 611d [DP][字符串]
    Codeforces 404D [DP]
    HDU 5834 [树形dp]
    HDU 5521 [图论][最短路][建图灵感]
    矩阵
    kruskal 处理最短路 问题 A: 还是畅通工程
    Dijastra最短路 + 堆优化 模板
    CodeForces
  • 原文地址:https://www.cnblogs.com/thunder-wu/p/6670209.html
Copyright © 2011-2022 走看看