数据结构-图的概述

数据结构-的概述

一、基本定义

1、:由点集和弧集(或者为边集)组成的 数据结构。(弧集或边集可为空)

注:弧是有方向的,边可以看成双向的弧。

2、有向图:由点集和弧集的数据结构为有向图。

3、无向图:由点集和边集的数据结构为无向图,无向图的临接矩阵为对称矩阵。

快速区分图是否有向:
1、有向图点的序偶<>表示,无向图的用()表示。
2、无向图边的数目不会大于(点 -1),而有向图的边个数可能会大于(点 - 1)个。

4、:网是弧或者边带权值的图(网是带权图)。

5、子图:若为子图,则其点集为原图的子集,边集或者弧集为原来图的子集。

6、完全图

无向完全图:边 = 点×(点 - 1)/2;
有向完全图:弧 = 点×(点 - 1);

7、稀疏图与稠密图:边或弧e满足以下要求为稀疏图:

e < N×logN

否则为稠密图。

8、:与顶点相关联的边的数目,称为度;有向图又分出度和入度。

9、连通图:任意两点间有途径相通(不一定是两点间的直接相连)

强连通图:上面的连通图的概念是相对于无向图来定义的;对于有向的连通图,则称为强连通图。

10、(强)连通分量:极大连通子图称为的连通分量

  (强)连通图:  只有一个(强)连通分量,就是它本身;
非(强)连通图:有 多个连通分量

二、存储信息

1、邻接矩阵表示法(数组表示法)

邻接矩阵的定义:用二维数组存储点与点之间的关联关系;用一维来表示点集合。(无权图用0、 1来表示边是否存在;有权图(即网)用权值表示边的存在,用无穷表示不存在的边)
注:对于无向图的邻接矩阵,它有对称的特性。

2、邻接表表示法(链式存储表示法)

采用链表的形式,对相关联的点点间的关系进行明显的存储:
下面截了学长PPT里的图片(偷懒,不做图了):

无向图的表示:

无向图

有向图的表示:

有向图

可以看出:1、无向图里面可以看出相应点的度
            eg:f点的度为3:分别为f点到b、c、d。
    2、有向图里面可以很直观看相应点的出度,通过表里的内容,统计出点的入度;
            eg:b点的出度为1; b点的入度为2 :b点到c, d点到b, a点到b。

此外:还有十字链表表示法(主要为了直观方便看出有向图的出入度而设计):主链的信息表由三部分组成,分别为:图上的点集,入度指针域指向,出度指针域指向;副链上的信息表示由四部分组成:前面存储的是相关点的信息,后面存储的是入度指针域和出度指针域,当遇到^的时候,结束计数。

三、图的遍历

2、简要的算法思想:
深度优先算法:我们采用栈的思想:
    首先将首个节点入栈;栈不空,重复下述步骤:
    a、栈顶顶点出栈,如果未访问,则访问并置访问标志;
    b、然后将首节点所有未访问的邻接点入栈。

广度优先算法:我们采用队列的思想:
    首先将首个节点入队;队不空,重复下述步骤:
    a、队头首结点出队;
    b、对首节点的所有邻接点,如果邻接点未被访问,则
访问邻接点并置访问标志,然后邻接点入队。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值