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

网络公司如何建网站中国能源建设集团有限公司招标网

网络公司如何建网站,中国能源建设集团有限公司招标网,江门建站价格,旅游网站管理系统论文Floyd 算法 重点&#xff1a;多源最短路径算法&#xff0c;前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径 时间复杂度&#xff1a; O(n^3)空间复杂度&#xff1a;O(n^2) #include <iostream> #include <vector> using namespace std…

Floyd 算法

重点:多源最短路径算法,前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径

  • 时间复杂度: O(n^3)
  • 空间复杂度:O(n^2)
#include <iostream>
#include <vector>
using namespace std;int main() {int n, m, p1, p2, val;cin >> n >> m;vector<vector<int>> grid(n + 1, vector<int>(n + 1, 10005));  // 因为边的最大距离是10^4for(int i = 0; i < m; i++){cin >> p1 >> p2 >> val;grid[p1][p2] = val;grid[p2][p1] = val; // 注意这里是双向图}// 开始 floydfor (int k = 1; k <= n; k++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {grid[i][j] = min(grid[i][j], grid[i][k] + grid[k][j]);}}}// 输出结果int z, start, end;cin >> z;while (z--) {cin >> start >> end;if (grid[start][end] == 10005) cout << -1 << endl;else cout << grid[start][end] << endl;}
}

A * 算法

重点:Astar关键在于启发式函数,也就是影响广搜或者 dijkstra 从容器(队列)里取元素的优先顺序

#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
int moves[1001][1001];
int dir[8][2]={-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2};
int b1, b2;
// F = G + H
// G = 从起点到该节点路径消耗
// H = 该节点到终点的预估消耗struct Knight{int x,y;int g,h,f;bool operator < (const Knight & k) const{  // 重载运算符, 从小到大排序return k.f < f;}
};priority_queue<Knight> que;int Heuristic(const Knight& k) { // 欧拉距离return (k.x - b1) * (k.x - b1) + (k.y - b2) * (k.y - b2); // 统一不开根号,这样可以提高精度
}
void astar(const Knight& k)
{Knight cur, next;que.push(k);while(!que.empty()){cur=que.top(); que.pop();if(cur.x == b1 && cur.y == b2)break;for(int i = 0; i < 8; i++){next.x = cur.x + dir[i][0];next.y = cur.y + dir[i][1];if(next.x < 1 || next.x > 1000 || next.y < 1 || next.y > 1000)continue;if(!moves[next.x][next.y]){moves[next.x][next.y] = moves[cur.x][cur.y] + 1;// 开始计算Fnext.g = cur.g + 5; // 统一不开根号,这样可以提高精度,马走日,1 * 1 + 2 * 2 = 5next.h = Heuristic(next);next.f = next.g + next.h;que.push(next);}}}
}int main()
{int n, a1, a2;cin >> n;while (n--) {cin >> a1 >> a2 >> b1 >> b2;memset(moves,0,sizeof(moves));Knight start;start.x = a1;start.y = a2;start.g = 0;start.h = Heuristic(start);start.f = start.g + start.h;astar(start);while(!que.empty()) que.pop(); // 队列清空cout << moves[b1][b2] << endl;}return 0;
}

总结

Floyd算法本质是动态规划,递推算出每个节点之间的最短距离。可以用于有负权值的最短路径。

Astar 是一种 广搜的改良版。 有的是 Astar是 dijkstra 的改良版。

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

相关文章:

  • 交易平台网站怎么做广元市建设银行网站
  • 婚纱摄影网站建设公司wordpress卡死
  • vs2010做的网站公司网站开发实施方案
  • 北京网站制作培训机构WordPress網站放ICP
  • 案例网站模板_案例网网站关键词快排名
  • 学做吃的的网站天津网站制作的公司哪家好
  • 合肥营销网站建设公司橙色网站欣赏
  • 有没有做盗版电影网站犯罪的邀请推广app
  • 网站开发长春建站资讯
  • 做网站 源码大兴专注高端网站建设
  • 科讯网站发布文章梅州英文网站建设
  • 个人接单做网站的平台百度网盘官网下载
  • 哪里卖网站域名网站建设开源代码
  • fla可以做网站么新公司注册详细流程
  • 长沙网站制作大丰网站建设哪家好
  • 网站搭建论文ai建站工具
  • 购物网站怎么做项目简介荣耀借壳上市公司
  • 如何申请免费网站空间做网站租用数据库
  • 企业创建网站免费建站cms
  • 顺德网站建设方案在建设厅网站怎么办建造师延期
  • .net给网站做短信验证下饶网站建设
  • wordpress 商品站wordpress轮播的插件
  • 红酒手机网站建设什么网站做招聘效果好
  • 优质的网站建设案例怎么上平台卖自己的产品
  • 深圳网站建设推广方案做烘焙的网站
  • 西安网站建设公司云网视频网站是用什么框架做的
  • 中国电力建设股份有限公司网站wordpress调用标签大全
  • 兰州网站建设推广哈尔滨专业建设网站设计
  • 住房建设局网站如何重启网站服务器
  • 语言互动网站建设服务器公司