图和树的基本概念与认识

1.图是什么:

 图由顶点(vertex,node)和边(edge)组成。顶点就是代表对象,因为有时候题不会直接给顶点,而是某种对象,直接看成顶点即可。我们使用链接两顶点之间的线段来表示。顶点的集合V,边的集合是E,所以图记为G = (V,E), 连接两点u和v的边用e=(u,v)表示。


 图的种类:

  图大体上分成两种,边没有指向性的图叫做无向图,边具有指向性的图叫做有向图。我们还可以赋予各种各样的属性。比较具有代表性的权值(cost)。边上带有权值的图叫做带权图。在不同问题中,权值可以代表距离,时间以及价格等不同的属性。





无向图的术语:

两个顶点之间如果有边连接,那么就视为两个顶点相邻。相邻顶点的序列称为路径。起点和终点重合的路径叫做圈。

任意两点之间都有路径连接的图叫做连通图。顶点连接的边数叫做这个顶点的度。




没有圈的连接图叫做树(tree),没有圈的非连接图叫做森林。一棵树的边数恰好是顶点数-1.反之,边数等于顶点数-1

的连通图就是一棵树。如果树上选择一个顶点作为跟(root),就可以把根提到最上面,而离根越远的顶点越往下安排位置。

这样的树叫做有根树。不过,对于无根树,有时选择适当的顶点作为根使之变成有根树。


没有圈的有向图叫做DAG。对于每个顶点按照拓扑序列从左到右排列,那么所有的边都是从左指向右的。


图的表示:

1.邻接矩阵

邻接矩阵使用二维数组来表示图。g[i][j]表示的是顶点i和顶点j的关系。

由于在无向图中,只需要知道顶点i和j之间是否有边相连即可,因此如果顶点i和顶点j之间有边相连,那么g[i][j] 和 g[j][i]

就设为1,否则设为0。这样就可以表示一个无向图了(也叫双向图)。


由于在有向图中,只需要知道是否有从顶点i发出指向顶点j的边,因此如果顶点i有一条指向j的边,那么g[i][j]就设为1,

否则就设为0(注意这是有向图)。


在带权图中,g[i][j]表示的是顶点i到顶点j的边的权值。由于在边不存在的情况下,如果将g[i][j]设为0,就无法和权值为0

的情况区分开来,因此选取适当的较大的常数inf,然后令g[i][j]=inf。


使用邻接矩阵的好处是可以在常数时间内判断两点之间是否有边存在,但是很消耗空间,如果点数>1000就很麻烦了。

大部分情况下,只需要保存权值最小(最大)的边就可以了,所以在这种情况下可以无视其他的边。必须保存所有的边

时可以使用邻接表。

邻接表是通过把从顶点i出发有到顶点j的边,这样的信息保存在链表中来表示图的。



  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值