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

江苏做网站的公司有哪些网站建设一般分几年摊销

江苏做网站的公司有哪些,网站建设一般分几年摊销,hao123网站源码制作2015最新仿,wordpress和django哪个好多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”,通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解: 目录 一、原理分析 1. 单源 BFS vs…

        多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”,通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解:


目录

一、原理分析

1. 单源 BFS vs 多源 BFS

2. 正确性证明

3. 时间复杂度

二、C++ 实现步骤

1. 初始化

2. BFS 扩展

三、代码示例

四、代码解释

初始化阶段

BFS 扩展阶段

五、应用场景

六、注意事项


一、原理分析

1. 单源 BFS vs 多源 BFS

  • 单源 BFS:从单一源点出发,逐层扩展,记录每个节点到该源点的最短距离。

  • 多源 BFS:将多个源点 同时加入队列,作为 BFS 的初始层。每个节点被首次访问时,记录的是到最近源点的最短距离。

2. 正确性证明

  • BFS 的逐层扩展特性保证:当某个节点被首次访问时,其路径长度即为最短距离。

  • 所有源点同时作为初始层,相当于它们处于“第 0 层”,后续扩展的层数即为到最近源点的距离。

3. 时间复杂度

  • 与单源 BFS 相同,时间复杂度为 O(N)(假设共 N 个节点),每个节点和边仅被处理一次。


二、C++ 实现步骤

以二维网格为例,假设 grid 表示网格,其中 1 为源点,0 为可通行节点。目标是计算每个节点到最近源点的距离。

1. 初始化

  • 队列:将所有源点坐标加入队列。

  • 距离数组:源点距离初始化为 0,其他节点初始化为 -1(表示未访问)。

2. BFS 扩展

  • 从队列中取出节点,检查其四个方向(上、下、左、右)。

  • 若相邻节点未被访问过,更新其距离并加入队列。


三、代码示例

#include <vector>
#include <queue>
using namespace std;vector<vector<int>> multiSourceBFS(vector<vector<int>>& grid) {int rows = grid.size();int cols = grid[0].size();queue<pair<int, int>> q;vector<vector<int>> dist(rows, vector<int>(cols, -1));// 初始化:将所有源点加入队列,并设置距离为 0for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {if (grid[i][j] == 1) {q.push({i, j});dist[i][j] = 0;}}}// 四个移动方向:上、下、左、右vector<pair<int, int>> dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};while (!q.empty()) {auto [x, y] = q.front();q.pop();for (auto [dx, dy] : dirs) {int nx = x + dx;int ny = y + dy;// 检查边界和是否已访问if (nx >= 0 && nx < rows && ny >= 0 && ny < cols && dist[nx][ny] == -1) {dist[nx][ny] = dist[x][y] + 1;q.push({nx, ny});}}}return dist;
}

四、代码解释

  1. 初始化阶段

    • 遍历网格,将所有源点(值为 1)的坐标加入队列,并设置其距离为 0

    • 其他节点的距离初始化为 -1,表示未访问。

  2. BFS 扩展阶段

    • 从队列中取出节点,检查四个方向的相邻节点。

    • 若相邻节点在网格内且未被访问,更新其距离为当前节点距离 +1,并将其加入队列。


五、应用场景

  • 计算多个起点到所有节点的最短距离(如疫情传播模拟、火源蔓延模型)。

  • 地图中多个商店到用户的最短路径计算。


六、注意事项

  1. 边权必须为 1:若边权不同,需使用 Dijkstra 或 Floyd-Warshall 算法。

  2. 空间优化:可直接在原数组上修改距离,避免额外空间开销。

  3. 性能优势:相比暴力法(每个源点单独 BFS),时间复杂度从 O(kN) 优化到 O(N),其中 k 是源点数量。

        通过多源 BFS,我们能够以高效的方式解决多个起点同时扩散的最短路径问题,是图论中一种重要的优化技巧。

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

相关文章:

  • 云南 房地产网站建设中文安卓开发软件
  • 克隆网站首页做单页站几个文件济南seo小黑seo
  • 英语课件做的好的网站项目建设表态发言
  • 苏州朗冠网站建设公司提高网站百度权重
  • 凌美上海建设工程网站关于建设网站的经费请示
  • 被百度收录的网站有哪些银川百度做网站多少钱
  • 网站建设的市场容量创建网站公司 徐州
  • 网站备案 ip餐厅网站建设文案书
  • 美食网站开发开题报告汕头seo代理商
  • 泉州网站开发公司苏州 手机网站
  • 做知识问答的网站绍兴市中等专业学校网站
  • 那些做网站的那些软件都叫啥手机开发框架
  • 做体彩网站怎么做c 网站开发模式
  • 做网站网站代理的犯法么网站开发背景怎么写
  • 甜点网站要怎么做常州做网站哪里好
  • 备案通过后怎么做网站安卓内核级优化神器
  • 章丘灵通环保设备在哪个网站上做的养老网站建设方案
  • 长春网站制作机构如何在宝塔中安装wordpress
  • 建设电影推荐网站的项目背景广州各区进一步强化
  • 网站页面优化方案外贸网站推广上海
  • 网站建设情况的自查报告服务器安全
  • 网络设计收入成都网站营销seo多少费用
  • 网站建设页面设计徐州建设局规划网站
  • 怎么用WordPress快速建站超值的扬中网站建设
  • 济南网站自然优化哈尔滨最新出入规定
  • 建设银行的网站为什么登不上常州网站价格
  • wordpress 目录 导航站上海做网站的公司哪个好
  • 甘谷县建设局网站中国建设银行人力资源网站
  • 百度收录较好的网站网站网页设计原则
  • 河北做it的网站重要的龙岗网站建设