一、图
1.概念
  点用边连起来就是图,其包含一些点和一些以这些点为端点的线。
2.基本术语
(1)有向图和无向图:有向图的边是有方向的,或者说这个图包含的边都是向量。无向图相反,都是一般的线段。
(2)结点的度:无向图中与某一点或者说结点相连的线段条数即这个结点的度。而有向图中结点有入度和出度,入读即为由其它结点指向此节点的边的条数,出度相反,指由其它结点指向此结点的边的条数。
(3)权值:指边的“费用”,碰到的实际问题中,边都会存在某一个值或几个值,可能是边的长度,可能是边的位置决定的一个价值,抑或包含多个因素的某种价值,总之是用来描述边的性质的。
(4)连通:存在两个点间可以通过经过一些边由一个点到达另一个点(注意有无方向),则称这两个点是连通的。
(5)回路:起点和终点相同,或者称之为“环”,这个很好理解。
(6)阶:阶数即顶点数。
(7)完全图:一个n阶的完全无向图包含n*(n-1)/2条边;一个n阶的完全有向图包含n*(n-1)条边。即任意两个顶点间都存在边相连。
(8)稠密图和稀疏图:没有明确的界限,即与完全图接近的程度。
(9)强连通分量:有向图中任意两点都能够连通的最大子图。单个点也是一个强连通分量。
3.结构
(1)二维数组邻接矩阵存储
  我称之为存在表示法。即建立一个二维数组,用下标表示边的两个顶点,值表示是否存在这两个点和对应的边。因为数组值能够表示是否存在,当然也可以存储其它意义的值(非0),所以取名,好记,人家的命名太高大上了。
(2)数组模拟邻接表存储
  我称之为模型表示法。即建立一个结构体数组,存储某点的每一条边的及右顶点,也同时表示了边的存在。结构体中还可以存储一些其它值(比如权值)。顾名思义,结构体变量中恰好刻画了一条边。
4.图的遍历
(1)深度优先遍历
  常用,类似深搜。由一个顶点开始,遍历与其相连接的点(一个或者说一条线着走),走到头(不再有未遍历的相邻的点后)返回上一个遍历的点重复该操作,直到所有的点都被遍历。当然,起始点不能只选择一个点,因为不一定能够通过一个点遍历整个图。所以每一个点都要作为起始点看一下。
(2)广度优先遍历
  不常用,类似广搜。多条线一起走,如果是二叉堆就是直接顺着数组遍历了。而对于图,还是要通过队列记录遍历。
5.一些图的问题
(1)一笔画问题(欧拉路)
  如果一个图存在一笔画,即一条通路上不存在其它的“岔路”,就是一笔画,也就是欧拉路或者说欧拉通路。而如果这样的一笔画最终能够回到起点,就称为欧拉回路。
  奇点:与这个点相连的边的数目为奇数个。
1)定理一:存在欧拉通路的条件:图是连通的,有且只有两个奇点。
2)定理二:存在欧拉回路发条件:图是连通的,没有奇点。
  求欧拉路的方法就是深搜。欧拉通路从奇点开始,欧拉回路从任意点开始。
(2)哈密尔顿环
  不重复的走过所有点最后回到起点的回路称为哈密尔顿环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值