获得徽章 6
赞了这篇沸点
今天学习了dijkstra算法(最小生成树),同时练习了堆优化和不采用堆优化的代码形式,想分享一些学习经验。
在我看来,dijkstra算法的关键主要有两点:1.找到可达距离最近的点2.更新可达距离。在算法中,我们会选定一个起点,并以起点所能达到的另一个简单初始化到各个点的距离数组:如果有可以到达的边,距离就是边的权重。如果节点之间并没有便可以直达,两点距离就是设定值MAX,点到自身的距离为0。随后我们可以由距离的比较得出下一个距离最短的节点。同时,因为有了新节点的加入,到各个点的最短距离发生变化(例如由1无法到达的3节点,通过新加入的2节点可以到达,distance就由MAX变为distance[1->2]+distance[2->3])此时依次把到各点的距离重新更新。循环往复,我们将依次找到的点连接起来就是最短路径。
此外,我还了解到了此算法的不同表现形式。比如说在堆优化的代码里用邻接表存储边的权值,而不用堆优化则用邻接矩阵存储。同时他们在更新distance时也有差异,堆优化使用优先队列取出最短距离,同时将更新的距离重新返回队列中,而不用堆优化则用choose函数选择最短边。
今天又是被算法大佬打击道心的一天,被bug折磨得不知天地为何物了
code.juejin.cn
在我看来,dijkstra算法的关键主要有两点:1.找到可达距离最近的点2.更新可达距离。在算法中,我们会选定一个起点,并以起点所能达到的另一个简单初始化到各个点的距离数组:如果有可以到达的边,距离就是边的权重。如果节点之间并没有便可以直达,两点距离就是设定值MAX,点到自身的距离为0。随后我们可以由距离的比较得出下一个距离最短的节点。同时,因为有了新节点的加入,到各个点的最短距离发生变化(例如由1无法到达的3节点,通过新加入的2节点可以到达,distance就由MAX变为distance[1->2]+distance[2->3])此时依次把到各点的距离重新更新。循环往复,我们将依次找到的点连接起来就是最短路径。
此外,我还了解到了此算法的不同表现形式。比如说在堆优化的代码里用邻接表存储边的权值,而不用堆优化则用邻接矩阵存储。同时他们在更新distance时也有差异,堆优化使用优先队列取出最短距离,同时将更新的距离重新返回队列中,而不用堆优化则用choose函数选择最短边。
今天又是被算法大佬打击道心的一天,被bug折磨得不知天地为何物了
展开
评论
2
赞了这篇沸点
赞了这篇沸点
赞了这篇沸点
评论
2
赞了这篇沸点
展开
评论
5
赞了这篇沸点
赞了这篇沸点
赞了这篇文章
赞了这篇沸点
学习任何东西的公式化打法就是:
预训练(先整点高质量数据研究下)
后训练(找个私教简单重复的练习基本功)
强化学习(真实环境猛怼 benchmark)
太无脑了
可能大模型最重要的意义是从根本上理解了学习。
预训练(先整点高质量数据研究下)
后训练(找个私教简单重复的练习基本功)
强化学习(真实环境猛怼 benchmark)
太无脑了
可能大模型最重要的意义是从根本上理解了学习。
展开
评论
3
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
![[捂脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_28.8981538.png)