• 图算法


    百度一查,上来就是什么各种搜索,晕。。

    首先不是应该说说图 是什么吗? 难道是我们平时说的图片?显然不是,图指的是 好多点以及他们之间的连线(图中定义是 边),这些点和线组合起来我们称之为图。 

    知道了什么是图,那么这个图能做什么用呢?我首先想到的就是地图了: 每个路口就是点,路口到另一个路口的路就是线了。还有就是我们的网络了,路由器就是点,网线就是线。

    然后是算法: 地图我想到的是如何走最短的路到达另一个路口, 网络就是如何最短或则最快访问到我要访问的服务器。。

    如何把具体的路口和路 描述为电脑语言?

    第一步: 如何表示地图 

    第二步: 如何找到最短路径或者最快访问。

    图的表示:邻接链表(边比较少的稀疏图), 邻接矩阵(边数量接近点个数平方的稠密图 )

    1. 邻接链表: 就是把一个节点相连的节点用 链表存储起来(可以理解为这些节点具有相同的hashcode),  所有节点 对应的 链表 存储到数组中, 这种图的表示方法即为邻接链表。存储空间最大 2E(E表示边数,V表示点数)

    b 就是图a 的 邻接链表

     2. 邻接矩阵: 类似于多维数组,维度由点数决定, 数组内的值用 0和1 表示,1表示有线连接。 占用空间为固定 V的2次方(V是点数),所以当点数较少时,建议使用该种图表示法。

    二、 图的搜索算法

     算法有: 广度搜索算法  , 深度搜索算法

    1. 广度搜索算法: 就是按层进行搜索, 起点为A ,搜索a 的所有直接子节点,然后搜索这些子节点的直接 子节点,依次进行,直到所有节点都被搜索到。

     参照 https://www.cnblogs.com/skywang12345/p/3711483.html

    2. 深度优先搜索: 以一个顶点A为起点,访问它的其中一个子节点,然后访问该子节点的子节点,依次访问到最后一个子节点。然后回到最后字节点的上个节点,看它有没有其他节点,如果有,

     按照上述步骤依次走完所有节点,直到A 的所有子节点(包含子子节点)都被访问。 如果图中还有没有被访问的点,选取一个,继续上述步骤,直至图中所有节点被访问。

    参照 https://www.cnblogs.com/skywang12345/p/3711483.html

      

  • 相关阅读:
    CodeForces1214B
    CodeForces1214A
    LuoGuP4551最长异或路径
    GXOI2018 滚粗记
    [BZOJ 4818/LuoguP3702][SDOI2017] 序列计数 (矩阵加速DP)
    [LuoguP3808] 【模板】AC自动机(简单版)数组版
    [NOIP 2016D2T2/Luogu P1600] 天天爱跑步 (LCA+差分)
    [CF160D]Edges in MST (最小生成树+LCA+差分)
    [Luogu P2891/POJ 3281/USACO07OPEN ]吃饭Dining
    [BZOJ 2287/POJ openjudge1009/Luogu P4141] 消失之物
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10113088.html
Copyright © 2020-2023  润新知