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

河南省百城建设提质网站无法连接到wordpress站点

河南省百城建设提质网站,无法连接到wordpress站点,深圳的产品设计公司,自定义表单网站目录 上次我们讲到复杂度为(nm)logm(m为边,n为点)的迪杰斯特拉算法,其中有一个明显的不足就是它无法解决包含负权边的图。 于是我们引进Bellman-Ford算法。 核心:枚举所有的点,能松弛就松弛,直…

目录

上次我们讲到复杂度为(n+m)logm(m为边,n为点)的迪杰斯特拉算法,其中有一个明显的不足就是它无法解决包含负权边的图。

于是我们引进Bellman-Ford算法。

核心:枚举所有的点,能松弛就松弛,直到所有点都不能松弛。

具体过程:

我们在外循环循环n-1(n为点数),然后在内循环上枚举所有的边,能松弛就松弛。

到这里,肯定有许多人对它正确性怀疑,其实,我们可以知道,在外循环循环k轮后,k步以内可以到的点的值<=从源点在k步以内能走到的最优解(有点类似广搜)。

具体来说,当k=2时,2步以内可以到的点的值<=2步内从源点走到该点的最小距离。(<=的原因在于枚举边的时候可能会被刚刚更新的点在被更新一遍)


上次我们讲到复杂度为(n+m)logm(m为边,n为点)的迪杰斯特拉算法,其中有一个明显的不足就是它无法解决包含负权边的图。

于是我们引进Bellman-Ford算法。

核心:枚举所有的点,能松弛就松弛,直到所有点都不能松弛。

具体过程:

我们在外循环循环n-1(n为点数),然后在内循环上枚举所有的边,能松弛就松弛。

到这里,肯定有许多人对它正确性怀疑其实,我们可以知道,在外循环循环k轮后,k步以内可以到的点的值<=从源点在k步以内能走到的最优解(有点类似广搜)。

具体来说,当k=2时,2步以内可以到的点的值<=2步内从源点走到该点的最小距离。(<=的原因在于枚举边的时候可能会被刚刚更新的点在被更新一遍)

因此,在n-1轮后,因为每一个点最多被走一次(除非是负环,等下讨论),因此,利用上述结论,我们可以得出在外循环循环n-1轮后,所有的点的值为从源点出发走到的最优解。

下面我们讨论一下负环,其实,如果出现负环,最短路就应该为负无穷,我们为了判断负环,只要比较更新次数有无<=n-1即可。

因为这过于暴力,复杂度为o(n*m),基本一用就寄,于是我们考虑一下优化

我们不妨思考一个问题(这也是优化的关键)

一个点在什么情况下可以优化?

显然,只有到它的前一个点它的值优化改变后,那个点才可能被优化因为边权是不变的,而前一个点它的值无法被优化时,dis[a]=map[a][b]+dis[b],相当于dis[b]不变,那么dis[a]肯定也不变。

在知道这个后,我们让dis[源点]=0,其他为极大值。

我们对于边的枚举,只要枚举上一次被更新的点的边就可以了。

我们用队列实现(即SPFA算法,复杂度为o(k*m)(k为每一个点入队的平均次数)

还是这一题,我们用这个方法实现一下。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int zhi;int dian;int next;
}edge[20010];
int dis[1010],head[1010],cnt,n,m1,s,t,x,y,v;
bool vis[1010];
struct ty{int dian,dis1;bool operator<(const ty &a) const{return dis1>a.dis1;}
};
void merge(int x,int y,int v){edge[++cnt].zhi=v;edge[cnt].dian=y;edge[cnt].next=head[x];head[x]=cnt;
}
priority_queue<ty> q;
queue<int> q1;
int dij(int s,int t){q.push({s,0});while(!q.empty()){ty ck=q.top();q.pop();if(vis[ck.dian]==1) continue;vis[ck.dian]=1;for(int i=head[ck.dian];i!=-1;i=edge[i].next){int i1=edge[i].dian;if(vis[i1]==1) continue;if(dis[i1]>dis[ck.dian]+edge[i].zhi){dis[i1]=dis[ck.dian]+edge[i].zhi;q.push({i1,dis[i1]});}}}if(dis[t]>=0x3f3f3f3f) return -1;else return dis[t];
}
int spfa(int s,int t){q1.push(s);while(!q1.empty()){int hh=q1.front();vis[hh]=0;q1.pop();for(int i=head[hh];i!=-1;i=edge[i].next){int i1=edge[i].dian;if(dis[i1]>dis[hh]+edge[i].zhi){dis[i1]=dis[hh]+edge[i].zhi;if(vis[i1]==0){vis[i1]=1;q1.push(i1);}}}}if(dis[t]>=0x3f3f3f3f) return -1;else return dis[t];
}
int main(){cin>>n>>m1>>s>>t;memset(head,-1,sizeof(head));for(int i=1;i<=m1;i++){scanf("%d%d%d",&x,&y,&v);merge(x,y,v);merge(y,x,v);}memset(dis,0x3f,sizeof(dis));dis[s]=0;cout<<spfa(s,t);
}

http://www.yayakq.cn/news/442813/

相关文章:

  • 网站制作的公厦门网站seo哪家好
  • 如何在手机上制作网站购物网站起名
  • php做的直播网站商丘 峰少 seo博客
  • 网站建设公司网站定制开发广州公共资源交易中心交易平台
  • 洛阳网站建设价格wordpress博客主题模板
  • 做网站的空间公司营销外包
  • 登陆中国建设银行网站我的账户密码怎么就有了?怎么清除快速排名网站系统
  • 那个网站做外贸重庆企业模板建站信息
  • 可道网站建设软件开发培训方案
  • 单页竞价网站酒店门户网站建设背景
  • 用asp做的网站有多少防水自己如何建设网站
  • 优质的中小型网站建设外贸网站商城建设
  • 男人女人晚上做那事网站发布信息的软件
  • 石家庄网站建设教程响应式网站pad尺寸
  • 企业网站建站模板怎么做ppt教程网站
  • 企业网站建设兴田德润地址城乡与建设厅网站
  • 怎么在网站添加关键词aso优化平台有哪些
  • 站牛网一键优化软件
  • 阿里国际站韩语网站怎么做安米网在线app制作
  • 网站网站开发的垂直网站导航是谁做的
  • 名师工作室网站建设 意义html手机版网站
  • 上海全上海全国网站建设网站建设选择什么模式
  • 企业建站为什么选择网站定制php做的网站预览
  • 微信公众号链接网站怎么做wordpress改回旧版编辑器
  • 什么是开放式的网站深圳市网站首页
  • 做网站赔钱了互动平台抽手机
  • 做传销网站的html官方网站项目
  • 网站建设招标模板风中有朵雨做的云网站观看
  • 中国个人优秀网站手机网页素材
  • 甘肃系统建站怎么用安钢贴吧