J2SE_5_数据结构与算法(3)之图

       图跟树一样,也是非线性结构,咋看起来有点复杂,其实它很简单。树具有层次关系,上层元素可以与下一个多个元素连接,但是只能和上层的一个元素连接。在图结构中,节点间的连接是任意的,任何一个元素都可以与其他元素连接。

       图相对而言很简单,我们只介绍的图的遍历最小生成树,现在我们开始。


遍历


1.概念

      从图中某一个顶点出发,访问图中的每一个结点,并要求只能访问一次,不能重复访问。

2.方法

                               

(1)广度优先遍历

       基本思想:首先访问顶点,再访问顶点的全部未访问的邻结点,再访问邻结点的所有结点即可(类似树的层次遍历)。

       广度优先遍历:V1,V2,V3,V4,V5,V6或V1,V4,V3,V2,V6,V5

(2)深度优先遍历

       基本思想:首先访问顶点,再访问顶点的每个邻结点,从该点继续深度优先遍历(类似于树的前序遍历

       深度优先遍历:V1,V2,V5,V3,V6,V4或V1,V4,V6,V3,V5,V2


总结,图的广度优先遍历和深度优先遍历的结果并不唯一。


最小生成树

                                               

(1)普里姆(Prim)算法
       基本思想:选一个顶点开始,查找与顶点相邻且代价(边值)最小的边的另一个顶点,直到最后。
       例如:V1作为顶点,V1->V3->V6->V4,V3->V2->V5,连接图中所有的结点即可。
(2)克鲁斯卡尔(Kruskal)算法
       基本思想:选择图中最小的边,直到所有结点都连通。
       例如:第一小边:V1->V3,第二小边:V4->V6,第三小边:V2-V5,第四小边:V3->V6,第五小边:V3->V2,此时所有的结点都连到了一起。
(3)算法对比
       普里姆算法更加注重的是结点,点与点之间距离最短的优先;克鲁斯卡尔算法更加注重的是,将边排序,最小边排在前面,最大边排在后面。


总结


          由于图的内容相对要简单,所以我们讲解的内容相对而言要少,就当是精益求精吧。后面的排序和算法才是我们的重点,后面的博文马上杀到。

转载于:https://my.oschina.net/zhumenzhongren/blog/666978

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值