基础算法(二)---数据结构之图

基本概念:

  1. 路径:一个顶点序列w1,w2,…,wN使得(wi,wi+1)属于E(边的集合),1<=i<N
  2. 路径的长:该路径上的边数,即N-1
  3. 简单路径:这条路径上所有定点都是互异的,但第一个和最后一个可能相同
  4. 有向图中的圈:满足w1=wN且长至少为1的一条路径(如果是简单路径称为简单图)
  5. 连通:在一个无向图中,从每个定点到每个其他顶点都存在一条路径
  6. 强连通:具有连通性的有向图
  7. 弱连通:一个有向图不是强连通图,但它的基础图是连通的
  8. 完全图:每一对顶点间都存在一条的图

图的的表示:

  1. 邻接矩阵(适合稠密图):对每条边(u,v)置A[u][v]为true,否则为false,或者在其中放入该权值【邻接矩阵的空间需求为v的平方】
  2. 邻接表(图的基本表示方法):对于每一个顶点,使用一个表存放所有邻接的顶点,如果边有权,这个附加信息也可以存储在邻接表中。(邻接表本身可以被保存在任何中了的List)【邻接表的空间需求为E+V】

最短路径算法:

无权最短路径:

  1. 广度优先搜索(BFS):该方法按照层处理顶点,距离开始顶点最近的那些点首先被求值,而最远的那些顶点最后被求值(这很像对树的层序遍历)
    广度优先搜索的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077097
  2. Dijkstra算法(一种贪心算法):
    Dijkstra算法的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077104

PS:贪心算法:一般分阶段求解问题,在每个阶段把出现的当做最好的处理。

最小生成树:

一个无向图的最小生成树就是由该图的那些连接G的所以顶点的边构成的树,且其总价值最低(最小生成树存在当且仅当G是连通的)

  1. Prim算法:在每一步中都要把一个节点当做根,并往上加边,这样就把相关联的顶点家都增长的树上
  2. Kruskal算法:连续选择权值最小的边,并且当所选的不产生圈时,就把它作为所取定的边
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值