zoukankan      html  css  js  c++  java
  • 大话数据结构 -07-1 图的定义、抽象数据类型与存储结构

    1. 定义

    在图结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

    2. 与线性表、树结构的区别

    3. 相关定义

    (1)无向、有向

    与图边或者弧相关的数字叫做权(Weight),带权的图通常称为网(Network)

     

    (2) 图的顶点与边间的关系

    无向图:

    边数等于各顶点度数和的一半(因为重复两次计数)

     有向图:

     

    注意:

    【1】图中顶点与顶点之间的路径并不是唯一的

    【2】

    【3】

    (3)连通图相关术语

    1无向连通图

    【2】连通分量

    注意这里极大的含义,是指能连通的最大结点。非连通图也可能含有连通分量!!

     

    此:图1有两个连通分量(图2与图3),图3满足极大顶点数(没有顶点能再与其连接),图4不满足极大定点数(还有D能与其相连)

     【3】有向图(每一对顶点)

    怎么理解??

    【4】连通图的生成树

    但是n-1条边并不一定是生成树

    4. 图的抽象数据类型

    5. 图的存储结构(共有五种不同的存储结构)

    (1)邻接矩阵

     

    【1】无向图

    注意:矩阵主对角线的值全为0,因为不存在顶点到自身的 边

              无向图的边数组是一个对称矩阵(以从左上角到右下角的主对角线为轴)

    规律:

    【2】有向图

     

    【3】网

    代码实现

     

    创建网

    缺点:对于边数相对于顶点较少的图,该结构存在对存储空间的极大浪费

    (2)邻接表

     

    【1】无向图

    【2】有向图

    容易得到每个顶点的出度。

    有时为了确定顶点的入度或以顶点为弧头的弧,可以建立一个有向图的逆邻接表。

    【3】带权重的网图

    【4】实现代码:

    结点定义代码

     

    无向图邻接表创建

    代码中使用了头插法

    对于无向图:

    缺点:

    (3)十字链表(适用于有向图)

     

    (4)邻接多重表(无向图)

     

    具体实现:

    邻接多重表与邻接表的差别,仅仅是在于同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点。

    (5)边集数组

  • 相关阅读:
    【笔记】信息熵以及模拟使用信息熵来进行划分
    【笔记】决策树的基本思想及简单操作
    【笔记】SVM思想解决回归问题
    【笔记】核函数
    【笔记】sklearn中的SVM以及使用多项式特征以及核函数
    【笔记】浅谈支持向量机(SVM)
    灵雀云:etcd 集群运维实践
    灵雀云Kube-OVN进入CNCF沙箱,成为CNCF首个容器网络项目
    几张图解释明白 Kubernetes Ingress
    重大升级!灵雀云发布全栈云原生开放平台ACP 3.0
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/10153049.html
Copyright © 2011-2022 走看看