zoukankan      html  css  js  c++  java
  • 图算法

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

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

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

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

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

    第一步: 如何表示地图 

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

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

    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

      

  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10113088.html
Copyright © 2011-2022 走看看