当前位置: 首页 > wzjs >正文

产品设计作品网站网页设计工作室长沙

产品设计作品网站,网页设计工作室长沙,香港免费空间,美容加盟的网站建设一、图的存储方式(千奇百怪) 1)邻接表 2)邻接矩阵 3)其他 也可以用数组表示图: Q:一个数组arr,存储一个没有环的特殊图,其每个位置上的数字代表其父节点(e…

一、图的存储方式(千奇百怪

1)邻接表

2)邻接矩阵

3)其他

也可以用数组表示图:

Q:一个数组arr,存储一个没有环的特殊图,其每个位置上的数字代表其父节点(eg:arr[0] = 5表示0的父节点是5),以此类推可得到下面的图:

使用小数组表示图:

一个数组中每一个位置都存放着一个数组,它依次存储【权重,起始点,中止点】,因此 [3, 0, 2] 就代表着有一条权重为3,从0开始,指到2的边,其余以此类推:

由于表达图的方式 千 奇 百 怪 ,所以推荐:

(1)选择一种习惯的图表示方法,用该种表示方式来实现所有的图的算法;

(2)想办法将题中所给出来的图转化为自己熟悉的图的表示方法,再运用写好的算法即可!

4)推荐存储方式(代码)

一种供参考的图的存储方式:

转化示例:

二、图的遍历

(1)宽度优先遍历

区别二叉树的宽度优先遍历,因为图中可能含有环!

仍然借助队列实现(二叉树的宽度优先遍历也是借助队列): 

结合画图理解:

tips:若需要进一步减少常数级别的耗时,可以采用数组来替换哈希表,因为数组的查询比哈希表更快一些; 

(2)深度优先遍历

借助栈和哈希表来实现:

结合下图来理解:

中保存的是DFS的路线!


 三、拓扑排序算法

适用范围:要求有向图,且有入度为0的节点,没有环。

常用环境:编译顺序

如下图所示,假设编译文件A需要先编译文件BCD,编译文件B又需要先编译文件CDE,请问应该以什么样的顺序编译整个文件?

算法思路:

        1、先找到一个入度为0的点,记录该点,并删除其“影响”(此处指有向边);

        2、重复上述过程直到没有未记录的节点;

四、kruskal与prim(针对无向图)

作用:生成最小生成树(在保证连通性的情况下,确保边的权值总和最小);

(1)kruskal算法

的角度出发考虑,对于所有边,按照权重排序;依次连线上最小的边,若会形成,则去掉这条边。

检查是否形成环会用到“并查集”的概念,该部分实现将会在后续课程涉及。

例1:

 例2:是否成环 == in节点和out节点是否属于同一个集合中

并查集的简单替换:(比并查集慢)

思路:定义一个setMap,里面存储着每个节点和它所属的集合;为主函数提供两个方法——一个用于判断from和to节点是否处于同一个集合中,另一个用于实现合并集合的操作。

有了上述的并查集结构后,我们可以实现k算法:

(2)prim算法

的角度出发考虑,从任意的点开始,标记该点使用过,对于该点可达的边标记为解锁状态;选择当前解锁边中两侧点不全出现过且权值最小的一条,将其标记为使用过,并标记该边连接的另一个节点为使用过;重复上述直到用过所有点。

:假设从A开始,解锁AB6、AC1、AD5三条边;选择AC1边,解锁CB5、CE6、CF4、CD5边;选择CD4边,解锁FE5、FD2边;选择FD2边,无需解锁;此时【ACFD】已经被使用,故只能选择CB5而非CD5、AD,解锁AB6、BE3;选择BE3,已经遍历所有点,p算法结束。

思考:为什么k算法需要并查集(集合查询结构)而p算法不需要?

k算法可能出现已经连成将节点两小片后再将两边相连成一大片的情况;而p算法总是选择相邻(已解锁)的边,使用哈希表即可。

代码实现:

结合图像理解:当A选择B时,AB、AC会被添加,但是由于A、B两点已经被食用过,所以会直接跳过AB边而寻找其他边!

五、Dijkstra算法

适用范围:可以有权值为负数的边,但是不能有累加和为负数的环!

作用:指定一个点,给出从该节点出发到所有其他点的最短距离。

算法流程:初始化一个距离表,将初始节点置为0,初始节点到其他节点的距离置为正无穷;每次从距离表中选取距离最近的节点,检查其所有边的权重,若从原点通过该点到达下一个点的距离更小,则更新距离表,否则不做处理;重复上述过程直至完成对所有点的遍历。

例:

代码实现:

堆优化思路:之前寻找最小值使用遍历的方法,所以较慢,所以考虑使用堆来存储数据;但是当权值更新后,不一定还能满足堆的顺序,此时需要对于其进行手动调整,只有这样是最快的方式。

http://www.dtcms.com/wzjs/220097.html

相关文章:

  • 网站备案背景幕布是什么用模板快速建站
  • 360免费做网站微信客户管理
  • 长沙网站制作哪家好不受国内限制的浏览器下载
  • 宜兴市建设局官方网站今日新闻内容
  • 网站源码绑定域名处理高端seo服务
  • 深圳专业企业网站制作百度账号管理
  • 网站开发转软件开发成都疫情最新情况
  • 电商网站建设求职定位网络推广长沙网络推广
  • 找人做网站流程百度推广代理公司
  • 广东省建设厅安全员b证报名网站百度seo策略
  • 商业网站建设案例课程百度宣传做网站多少钱
  • 嵌入式软件开发和硬件开发市场推广seo职位描述
  • 广州做网站哪家公司好百度app安装下载免费
  • 做网站制作课程总结网络营销七个步骤
  • 一个做网站的团队需要哪些人员app推广怎么联系一手代理
  • 自己有个服务器 怎样做网站如何搭建网站平台
  • 利用表单大师做网站地推平台去哪里找
  • 中山网站建设金科武汉seo网站推广培训
  • 专业做网站的团队推荐免费关键词排名优化软件
  • 什么网站可以做动图小程序开发文档
  • 网站开发感受佛山网络公司 乐云seo
  • 如何在网站后台找到死链接友情链接查询友情链接检测
  • 网站开发后期要解决的问题seo推广绩效考核指标是什么
  • 东营做网站哪里好电商营销的策略与方法
  • 深圳市移动端网站建设搜索引擎优化分析
  • 用vs做网站互联网营销的方法
  • wordpress清理过期文件seo是什么部位
  • 天河网站建设系统网站权重查询接口
  • 如何建手机销售网站百度网站推广费用多少
  • 正规的常州网站推广网络营销专家