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

微投票网站win7优化教程

微投票网站,win7优化教程,网站关联页面如何做,网址seo关键词⭐️dijkstra 介绍#xff08;想看的可以看#xff09; Dijkstra算法#xff08; /ˈdaɪkstrəz/ DYKE-str z#xff09;是一种用于找到加权图中的节点之间的最短路径的算法#xff0c;该加权图可以表示例如道路网络。它是由计算机科学家Edsger W. Dijkstra于1956年出版…⭐️dijkstra 介绍想看的可以看 Dijkstra算法 /ˈdaɪkstrəz/ DYKE-str z是一种用于找到加权图中的节点之间的最短路径的算法该加权图可以表示例如道路网络。它是由计算机科学家Edsger W. Dijkstra于1956年出版三年后出版。 该算法存在许多变体。Dijkstra的原始算法找到了两个给定节点之间的最短路径但更常见的变体将单个节点固定为“源”节点并找到从源到图中所有其他节点的最短路径生成最短路径树。 对于图中给定的源节点该算法找到该节点与其他节点之间的最短路径。 它也可以用于找到从单个节点到单个目的地节点的最短路径一旦到目的地节点的最短路径已经确定就停止算法。例如如果图中的节点表示城市而边路径的成本表示通过直接道路连接的成对城市之间的驾驶距离为简单起见忽略红灯停车标志收费公路和其他障碍物则Dijkstra算法可以用于找到一个城市和所有其他城市之间的最短路线。最短路径算法的一个广泛应用是网络路由协议最著名的是IS-IS中间系统到中间系统和OSPF开放最短路径优先。它也被用作其他算法如约翰逊算法的子程序。 Dijkstra算法使用的标签是正整数或真实的数字它们是完全有序的。它可以推广到使用任何部分有序的标签只要后续标签遍历边时产生后续标签是单调非递减的。这种推广称为通用Dijkstra最短路径算法。 Dijkstra的算法使用一种数据结构来存储和查询从一开始就按距离排序的部分解。Dijkstra的原始算法不使用最小优先级队列并在时间 。该算法的思想也在Leyzorek et al. 1957中给出。Fredman Tarjan 1984提出使用Fibonacci堆最小优先级队列来优化运行时间复杂度到 。这是渐近已知的最快的单源最短路径算法任意有向图与无界非负权重。然而特殊情况如有界/整数权重有向无环图等确实可以进一步改进如专业化变体中所述。此外如果允许预处理诸如收缩层次结构之类的算法可以快七个数量级。 在许多领域特别是人工智能领域Dijkstra算法或其变体被称为均匀成本搜索并被公式化为更一般的最佳优先搜索思想的实例. 另外的两个最短路算法 bellman-ford算法 floyd算法 具体原理 在图中所有的边上排满多米诺骨牌相当于把骨牌看成图的边。一条边上的多米诺骨牌数量和边的权值例如长度或费用成正比。规定所有骨牌倒下的速度都是一样的。如果在一个结点上推倒骨牌会导致这个结点上的所有骨牌都往后面倒下去。   在起点s推倒骨牌可以观察到从s开始它连接的边上的骨牌都逐渐倒下并到达所有能达到的结点。在某个结点t可能先后从不同的线路倒骨牌过来先倒过来的骨牌其经过的路径肯定就是从s到达t的最短路后倒过来的骨牌对确定结点t的最短路没有贡献不用管它。   从整体看这就是一个从起点s扩散到整个图的过程。   在这个过程中观察所有结点的最短路径是这样得到的   1在s的所有直连邻居中最近的邻居u骨牌首先到达。u是第一个确定最短路径的结点。从u直连到s的路径肯定是最短的因为如果u绕道别的结点到s必然更远。   2然后把后面骨牌的倒下分成2部分一部分是从s继续倒下到s的其它的直连邻居另一部分从u出发倒下到u的直连邻居。那么下一个到达的结点v必然是s或者u的一个直连邻居。v是第二个确定最短路径的结点。   3继续以上步骤在每一次迭代过程中都能确定一个结点的最短路径。   Dijkstra算法应用了贪心法的思想即“抄近路走肯定能找到最短路径”。算法可以简单概况为Dijkstra BFS 贪心。实际上“Dijkstra 优先队列 BFS 优先队列队列中的数据是从起点到当前点的距离”。   下面分析复杂度。设图的点有n个边有m条。编码的时候集合A一般用优先队列来模拟。优先队列可以用堆或其他高效的数据结构实现往优先队列中插入一个数、取出最小值的操作都是O(logn)的。一共往队列中插入m次每条边都要进集合A一次取出n次每次从集合A中取出距离s最短的一个点取出时要更新这个点的所有邻居到s的距离设一个点平均有k个邻居那么总复杂度是O(m×logn n×k×logn) O(m×logn)一般有m大于n。 模板题 问题描述 蓝桥王国一共有N个建筑和M条单向道路每条道路都连接着两个建筑每个建筑都有自己编号分别为1∼。其中皇宫的编号为1国王想让小明回答从皇宫到每个建筑的最短路径是多少但紧张的小明此时已经无法思考请你编写程序帮助小明回答国王的考核。 格式输入 输入第一行包含2个正整数N,M。第2到M1行每行包含三个正整数u,v,w表示u→v之间存在一条距离为w的路。1≤N≤3×1051≤m≤1061≤ui ,vi≤N0≤wi≤109。 格式输出 输出仅一行共N个数分别表示从皇宫到编号为1∼N建筑的最短距离两两之间用空格隔开。如果无法到达则输出−1 样例输入 3 3 1 2 1 1 3 5 2 3 2 样例输出 0 1 3 解析 dijkstra求解 参考程序 #includebits/stdc.h //#define inf LONG_MAX using namespace std; const long long inf0x3f3f3f3f3f3f3f3fLL; const int N3e52; int n,m,u,v; long long dis[N],w; struct edg{int to;long long d; }; vectoredg g[N]; struct node{int id;long long dis;bool operator (const node a)const{return disa.dis;}node(int b,long long c){idb;disc;} }; void dijkstra() {//node node1(1,0);dis[1]0;priority_queue node q;q.push(node(1,0));int done[N];for (int i1;in;i)done[i]0;while(!q.empty()){node node1q.top();q.pop();int id1node1.id;if(done[id1]) continue;done[id1]1;int szg[id1].size();for (int i0;isz;i){if(done[g[id1][i].to]) continue;if(dis[g[id1][i].to]node1.disg[id1][i].d)dis[g[id1][i].to]node1.disg[id1][i].d;q.push(node(g[id1][i].to,dis[g[id1][i].to]));}}} int main() {cinnm;for (int i1;in;i)dis[i]inf;for (int i1;im;i){cinuvw;g[u].push_back({v,w});//g[v].push_back({u,w});}dijkstra();for (int i1;in;i){if(dis[i]inf)cout-1 ;elsecoutdis[i] ;} return 0;}以个人刷题整理为目的如若侵权请联系删除~
http://www.pierceye.com/news/359749/

相关文章:

  • 行业门户网站php网站开发程序
  • 广州微信网站建设报价表上海注销营业执照流程
  • 陕西省建设执业资格注册中心网站科技有限公司 翻译
  • 做推广都有哪些网站网站怎么上传源码
  • discuz门户网站模板手机电子商务网站规划书范文
  • vps能同时做网站同时做其它事吗wordpress 支持小工具
  • 网站建设制作网络公司wordpress 汽车模板
  • 有哪些做外贸的网站网站快速搭建平台
  • wordpress搜索代码制做优化精灵
  • 连云港做网站推广东莞seo
  • 专业网站设计公司和普通设计公司的区别微信分销网站建设
  • 青海个人旅游网站建设网站建设教程软件下载
  • 做AMC12的题的网站龙华网站建设专业公司
  • 莱州网站制作友情链接交换形式
  • 如何编写网站做美食类网站现状
  • 一站式推广平台做家装模型的效果图网站
  • 企业电子商务网站开发实验报告苏州建筑设计公司排名
  • 网站的优化与网站建设有关吗网站先做移动站在做pc站可行吗
  • 河北网站制作公司电话建设网站的情况说明
  • 高校网站平台建设wordpress小工具不见了
  • 网站建设 会计处理北京垡头网站建设公司
  • 唐山网站制作案例网站建设中标
  • 网站开发培训费济南网络优化推广公司哪家好
  • 谷歌网站优化可以做物理题的网站
  • 公司的网站建设是什么部门品牌餐饮加盟网站建设
  • 深圳品牌网站建设公司哪家好学建网站 必须学那些知识
  • 国内设计网站推荐山东省建设安全生产协会网站
  • 南京专业网站开发团队如何用手机建网站
  • 在婚恋网站上做红娘怎么样正规网络推广服务
  • 网络媒体设计是做什么的西安网站优化公司