zoukankan      html  css  js  c++  java
  • -------------------siwuxie095

       

       

       

       

       

       

       

       

       

       

    这里介绍 ,那么什么是图呢?

       

       

       

    相对于来说,是一种更为复杂的数据结构

       

       

       

    一言难以蔽之,那就直接上图吧,如下:

       

       

       

    左边是一个图,右边也是一个图,简言之,可以把 暂且看成是

    节点 它们之间的连线 的集合

       

    根据连线的不同,又分为 有向图 无向图

       

       

       

    有向图:

       

    所谓 有向图就是节点和节点之间,由 有向线段 箭头 来进行连接

       

    如:

       

    对于 v1 和 v4 这两个节点来说,既有从 v1 到 v4 的箭头,又有从 v4

    到 v1 的箭头

       

    如果把这种两个节点之间的双向箭头表达成一条没有箭头的线,即 既有

    v1 到 v4 的去向线,又有从 v4 到 v1 的去向线,那就是无向图了

       

       

       

    无向图:

       

    所谓 无向图,就是节点和节点之间,由 无向线段 来进行连接

       

    也可以这么理解:可以把无向图中节点和节点之间的连线,都

    认为是有向图中的两条连线:一个去,一个回

       

       

       

    图的诸多概念:

       

       

    1)有向图

       

       

       

    有向图中的每一个节点,称之为 顶点

       

    顶点和顶点之间的 有向线段 箭头,称之为

       

    分为:弧尾 弧头,其中:

       

    箭头的尾端(起端) 弧尾,箭头的头端(终端) 弧头

       

       

       

    相对于一个顶点来说:

       

    1)从当前顶点射出去的箭头数,叫做 出度

    2)从其它顶点射回来的箭头数,叫做 入度

       

    如:

       

    对于 v1 顶点来说,它的出度是 2,入度是 1,因为从 v1 射出去

    了 2 个箭头,从其它顶点射回来了 1 个箭头

       

    出度 入度 和树中的 很类似

       

       

       

       

       

    2)无向图

       

       

       

    无向图中的每一个节点,也称之为 顶点

       

    顶点和顶点之间的无向线段,称之为

    (也可以理解为 双向的弧)

       

    一条边两端的顶点称之为 邻接点

       

    如:

       

    v1 和 v2、v1 和 v3、v1 和 v4 都是邻接点,因为它们都有边相连接,

    v2 和 v4 就不是邻接点,它们之间没有边相连接

       

       

       

       

       

    3)连通图

       

       

       

    对于无向图来说,如果它满足这样的条件:

       

    无向图中的每一个顶点,都有通往其他顶点的连线,或直接

    或间接,就可以把它称之为 连通图

       

       

    也可以描述为:对于任何一个顶点,都有通往其它顶点的路径

       

       

       

       

       

    4)完全图

       

       

       

    对于无向图来说,如果它满足这样的条件:

       

    无向图中的每一个顶点,都有通往其他顶点的直接的连线,

    就可以把它称之为 完全图

       

       

    完全图的边与顶点之间有一定的数量关系:

       

    边数 = 顶点数 * ( 顶点数 - 1 ) / 2

       

       

       

       

       

    5)生成树

       

       

       

    对于完全图来说,可以把它再进行简化,使得当前这个图中只有最小

    数量的边来连接每一个顶点,就可以把它称之为 生成树

       

       

    换句话说,生成树是由所有顶点,以及仅能连接这些顶点的边组成的

       

       

    生成树的边与顶点之间也有一定的数量关系:

       

    边数 = 顶点数 - 1

       

       

       

       

       

       

       

    在以上概念中,不难发现:

       

    对于图来说,它基本上除了 顶点,就是

       

    那么,如何通过 表达式 某种结构,来表示一个图呢?

       

       

       

    显然,是有表示方法的,而且表示方法还不仅有一种,称之为

    图的表示法 图的存储结构

       

       

       

       

    在数据结构中,无论是哪一种结构,都会有节点的遍历

       

    图,也不例外,只不过图的遍历更加复杂

       

       

       

    因为图中的节点之间的边更多,而且,如果是有向图,只有去向

    没有回向的可能也是有的

       

    所以,图的遍历相对于队列、栈、线性表、树来说,都要更加复杂

       

       

       

       

       

    图中最有价值的,就是 最小生成树

       

       

       

    对于一个图来说,计算最小生成树的价值是什么呢?

       

    如:

       

    几个城市之间,要修高速公路,在计算这些城市之间通过高速公路

    连接起来的最小的成本投入时,就要用到 最小生成树

       

       

       

       

       

       

       

    图的应用

       

       

    在如下地图中:

       

       

       

    可以把这张地图的每一个城市都看成是一个节点,于是:

       

    1)路径规划

       

    如:在出行的时候,我们都会挂导航,而导航上每次都会

    通过图的方式来进行计算,从而找到一条比较近的路

       

       

    2)工程规划

       

    如:在做 修高速公路、拉电网、拉光纤等工程时,都可以

    通过图的方式来计算成本

       

       

    3)战略规划

       

    如:在做 战争的游戏 军事指挥的辅助软件时,可以通过

    图的方式来做战略的规划,如下:

       

    可以把每一个城市的价值标出来,通过每个城市价值的不同,

    以及需要投入兵力的不同,来计算一个最佳的攻击方法

       

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    IDEA maven 项目编译忽略xml文件问题
    Mybatis Generator 路径和实体类要放的路径不一致 导致Could not resolve type alias
    Mybatis 错误:Error parsing Mapper XML. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias
    Spring Security使用报错 No bean named 'springSecurityFilterChain' is defined
    连接mysql失败 Path does not chain with any of the trust anchors
    IPFS客户端导致IDEA SSH登录错误,显示Connection reset
    Electron-从windows向electron拖动文件失败
    【Electron】renderer.js中无法require('electron').remote
    getElementsByNames无法获得对应的svg标签
    [React] setState更新成功不触发渲染,不常见的解决方法
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6847759.html
Copyright © 2011-2022 走看看