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

自己做电视视频网站厦门seo排名优化方式

自己做电视视频网站,厦门seo排名优化方式,全球贸易平台,长春生活信息网1 .单源最短路径 1.BFS算法(无权图) 使用广度优先遍历实现一个顶点到达其他所有顶点的最短路径。 注:无权图可以视为一种特殊的带权图,只是每条边的权值都为1。 1.算法思路: 定义一个数组存储每个结点与当前的结点的最短距离,定义一个数组…

1 .单源最短路径

1.BFS算法(无权图)

使用广度优先遍历实现一个顶点到达其他所有顶点的最短路径。
注:无权图可以视为一种特殊的带权图,只是每条边的权值都为1。

1.算法思路:

  • 定义一个数组存储每个结点与当前的结点的最短距离,
  • 定义一个数组存储当前结点的前驱结点序号。
  • 定义一个数组存储所有结点的访问情况:已访问为true,未访问为false。

2.代码实现:

就是对BFS的小修改:
在visit一个顶点时,修改其最短路径长度d[]并在path[]记录前驱结点

//求顶点u到其他顶点的最短路径
void BFS_MIN_Distance(Graph G, int u) {// d[i]表示从u到i结点的最短路径for (i = 0; i < G.vexnum; ++i) {d[i] = o;//初始化路径长度path[i] = -1;//最短路径从哪个顶点过来}d[u] = 0;visited[u] = TRUE;EnQueue(Q, u);while (!isEmpty(Q)) {// BFS算法主过程DeQueue(Q, u);//队头元素u出队for (w = FirstNeighbor(G, u); w >= 0; w = NextNeighbor(G, u, w))if (!visited[w]) {// w为u的尚未访问的邻接顶点d[w] = d[u] + 1;//路径长度加1path[w] = u;//最短路径应从u到wvisited[w] = TRUE;//设已访问标记EnQueue(Q, w);//顶点w入队}}
}

由广度优先遍历生成的广度优先生成树,一定是高度最小的生成树。

2.Dijkstra(迪杰斯特拉)算法(带权图、无权图)

1.分析BFS算的局限性
BFS算法求单源最短路径只适用于无权图,或所有边的权值都相同的图。

回顾知识点:

  • 带权路径长度:当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度。

2.算法分析

  • 第一个数组标记各顶点是否已找到最短路径,存放true或者false。
  • 第二个数组记录各顶点的最短路径长度,无穷代表暂没找到最短路径。
  • 第三个数组记录各个结点最短路径上的直接前驱。

3.算法步骤

  • 第1轮︰循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,令final[i]=ture。
  • 检查所有邻接自V的顶点,若其final值为false,则更新dist和 path 信息。
  • 第2轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,令final[i]=ture。
  • 检查所有邻接自V的顶点,若其final值为false,则更新dist和path 信息。
  • 直到最后一轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,令final[i]=ture。

4.算法实现

  • 初始:若从Vo开始,令final[0]=ture; dist[0]=O; path[0]=-1。
  • 其余顶点final[k]=false;dist[k]=arcs[0][k]; path[k]= (arcs[O][k]==co) ? -1:0。
  • n-1轮处理∶循环遍历所有顶点,找到还没确定最短路径,且dist最小的顶点V,令finali]=ture。并检查所有邻接自Vi的顶点,对于邻接自Vi的顶点V,若final[i]==false且dist[i]+arcs[i]i]< dist[i],则令dist[i]=dist[i]+arcs[i]lil; path[i]=i。(注: arcs[们]表示V到V%的弧的权值)

某个结点到其他结点的最短路径的时间复杂度为O(N2)即O(|V|2),
也可用Dijkstra算法求所有顶点间的最短路径,重复V次即可,总的时间复杂度也是OIV|3).

5.用于带负权值带权图

结论:Dijkstra算法不适用于有负权值的带权图。

2.各顶点间的最短路径

1.Floyd算法(带权图、无权图)

Floyd算法:求出每一对顶点之间的最短路径。

1.算法思想
使用动态规划思想,将问题的求解分为多个阶段:

  • 对于n个顶点的图G,求任意一对顶点Vi->Vj之间的最短路径可分为如下几个阶段:#初始︰不允许在其他顶点中转,最短路径是?
  • #O:若允许在Vo中转,最短路径是?
  • #1∶若允许在Vo、V中转,最短路径是?
  • #2:若允许在Vo、V1、V2中转,最短路径是?
  • #n-1:若允许在Vo、V1、V2… Vn-1中转,最短路径是?

2.算法实现

  • 定义一个二维数组A(相当于图的邻接矩阵)存储每个顶点之间的最短路径
  • 定义一个二维数组path存储A位置对应路径需要经过的中转顶点。
  • 使用动态规划,逐渐增加可以中转顶点个数,更新两个二维数组的信息。

3 .代码实现
时间复杂度,O(IVl3)
空间复杂度,O(IV|2)

    // ......准备工作,根据图的信息初始化矩阵A和path (如上图)for (int k = 0; k < n; k++) {//考虑以vk 作为中转点for (int i = 0; i < n; i++) {//遍历整个矩阵,i为行号,j为列号for (int j = 0; j < n; j++) {if (A[i][j] > A[i][k] + A[k][j]) {//以Vk 为中转点的路径更短A[i][j] = A[i][k] + A[k][j];//更新最短路径长度path[i][j] = k; //中转点}}}}

4.Floyd算法可以用于负值带权图

Floyd算法不能解决带有“负权回路”的图(有负权值的边组成回路),这种图有可能没有最短路径。

3.三种算法的比较

BFS 算法Dijkstra算法Floyd 算法
无权图
带权图x
带负权值的图xxx
带负权回路的图xxx
时间复杂度O(V2)或O(V+E)O(V2O(V3
通常用于求无权图的单源最短路径求带权图的单源最短路径求带权图中各顶点间的最短路径
http://www.hkea.cn/news/806880/

相关文章:

  • 建 新闻 网站营销战略有哪些内容
  • 营销融合app网站seo招聘
  • 快速做网站的方法网站换了域名怎么查
  • 建筑工程网络计划图怎么编制百度seo搜索排名
  • 免费建网站系统百度云登陆首页
  • wordpress 采集微博网站建设优化
  • 做淘宝客新增网站推广百度用户服务中心人工电话
  • 域名备案网站建设书模板百度统计登录
  • 禁止WordPress访问官网优化关键词排名提升
  • 爬取漫画数据做网站今日热搜新闻头条
  • 雄安网站建设制作网站关键词如何快速上首页
  • 佛山从事网站建设百度小程序入口官网
  • 自建网站平台可以实现哪些功能网络营销这个专业怎么样
  • 佛山新网站制作公司网页制作成品模板网站
  • 校园网站建设的意见企业管理培训课程网课
  • 郑大远程教育动态网站建设seo优化关键词排名
  • 做logo什么网站昆明百度关键词优化
  • 怎样做省钱购物网站sem推广代运营
  • 英文网站开发公司万网阿里云域名查询
  • 做调查问卷网挣钱的网站新闻 今天
  • 网站建设工作小组在线建站平台免费建网站
  • 可以发广告的网站湖南seo推广系统
  • 大丰网站建设哪家好成都seo
  • 学校网站建设项目的wbsseo交流qq群
  • 筑梦网站建设西安百度竞价开户
  • 个体营业执照可以做网站搞推广吗推广网站制作
  • 公共交通公司网站建设方案移动慧生活app下载
  • 国内开源代码网站搜了网推广效果怎么样
  • html5 metro风格网站模板今日新闻事件
  • 网站不在首页显示出来做网络推广