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

      

  • 相关阅读:
    Win7 VSCode 在线安装Rust语言及环境配置
    Win7 VSCode 离线安装Rust语言及环境配置
    Win7崩溃程序目录
    fatal error C1047: The object or library file xxx was created with an older compiler than other objects
    Notepad++正则表达式合并多行代码为1行
    Win7 VS2019安装后创建C++工程失败解决
    关于Visual Studio中书签Bookmark的一些问题
    Fira Code,可以让不等号!=直接显示出来的字体
    免费商用字体
    Win7 64位注册32位DLL
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10113088.html
Copyright © 2011-2022 走看看