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

长春企业网站排名优化广告代理商

长春企业网站排名优化,广告代理商,视频号推广方法,网站内部链接导向文章目录 [toc]问题描述Dijkstra算法Dijkstra算法的正确性贪心选择性质最优子结构性质 Dijkstra算法应用示例时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E),其中每…

文章目录

    • @[toc]
      • 问题描述
      • `Dijkstra`算法
      • `Dijkstra`算法的正确性
        • 贪心选择性质
        • 最优子结构性质
      • `Dijkstra`算法应用示例
      • 时间复杂性
      • `Python`实现

因上努力

个人主页:丷从心

系列专栏:贪心算法

果上随缘


问题描述

  • 给定一个带权有向图 G = ( V , E ) G = (V , E) G=(V,E),其中每条边的权是非负实数,给定 V V V中的一个顶点,称为源
  • 计算从源到所有其他各顶点的最短路长度

Dijkstra算法

  • Dijkstra算法是解单源最短路径问题的一个贪心算法
  • 其基本思想是,设置顶点集合 S S S,并不断地做贪心选择来扩充这个集合,一个顶点属于集合 S S S当且仅当从源到该顶点的最短路径长度已知
  • 初始时, S S S中仅含有源,设 u u u G G G的某一个顶点,把从源到 u u u且中间只经过 S S S中顶点的路称为从源到 u u u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度,用列表parent[i]记录从源到顶点 i i i的最短路径上 i i i的前一个顶点
  • Dijkstra算法每次从 V − S V - S VS中取出具有最短特殊路长度的顶点 u u u,将 u u u添加到 S S S中,同时对列表distparent做必要的修改,当dist[u] + graph[u][i] < dist[i] 时,置dist[i] = dist[u] + graph[u][i],置parent[i] = u
  • 一旦 S S S包含了所有 V V V中顶点,dist就记录了从源到所有其他顶点之间的最短路径长度

Dijkstra算法的正确性

贪心选择性质
  • Dijkstra算法所做的贪心选择是从 V − S V - S VS中选择具有最短特殊路径的顶点 u u u,从而确定从源到 u u u的最短路径长度dist[u],从源到 u u u没有更短的其他路径
  • 事实上,如果存在一条从源到 u u u且长度比dist[u]更短的路,设这条路初次走出 S S S之外到达的顶点为 x ∈ V − S x \in V - S xVS,然后徘徊于 S S S内外若干次,最后离开 S S S到达 u u u

1

  • 在这条路径上,分别记 d ( v , x ) d(v , x) d(v,x) d ( x , u ) d(x , u) d(x,u) d ( v , u ) d(v , u) d(v,u)为顶点 v v v到顶点 x x x、顶点 x x x到顶点 u u u和顶点 v v v到顶点 u u u的路长,那么dist[x] ≤ d ( v , x ) \leq d(v , x) d(v,x) d ( v , x ) + d ( x , u ) = d ( v , u ) < d i s t [ u ] d(v , x) + d(x , u) = d(v , u) < dist[u] d(v,x)+d(x,u)=d(v,u)<dist[u],利用边权的非负性,可知 d ( x , u ) ≥ 0 d(x , u) \geq 0 d(x,u)0,从而推得dist[x] < < <dist[u],此为矛盾
  • 这就证明了dist[u]是从源到顶点 u u u的最短路径长度
最优子结构性质
  • 将添加 u u u之前的 S S S称为 S ′ S^{'} S
  • 当添加了 u u u后,可能出现一条到顶点 i i i的新的特殊路

2

  • 如果这条新特殊路是经过 S ′ S^{'} S到达顶点 u u u,然后从 u u u经一条边直接到达顶点 i i i,则这种路的最短的长度是dist[u] + + +c[u][i],此时,如果dist[u] + + +c[u][i] < < <dist[i],则算法中用dist[u] + + +c[u][i]作为dist[i]的新值
  • 如果这条新特殊路经过 S ′ S^{'} S到达 u u u后,不是从 u u u经一条边直接到达 i i i,而是回到 S ′ S^{'} S中某个顶点 x x x,最后才到达顶点 i i i,那么由于 x x x S ′ S^{'} S中,因此 x x x u u u先加入 S S S,故从源到 x x x的路的长度比从源到 u u u,再从 u u u x x x的路的长度小,于是当前dist[i]的值小于这条新特殊路的长度,因此,在算法中不必考虑这种路
  • 由此可知,不论算法中dist[u]的值是否有变化,它总是关于当前顶点集 S S S到顶点 u u u的最短特殊路径长度

Dijkstra算法应用示例

  • 对下图中的有向图,应用Dijkstra算法计算从源顶点 1 1 1到其他顶点间最短路径的过程如下表所示

3

迭代 S S S u u udist[2]dist[3]dist[4]dist[5]
初始 { 1 } \set{1} {1} − - 10 10 10 m a x i n t maxint maxint 30 30 30 100 100 100
1 1 1 { 1 , 2 } \set{1 , 2} {1,2} 2 2 2 10 10 10 60 60 60 30 30 30 100 100 100
2 2 2 { 1 , 2 , 3 } \set{1 , 2 , 3} {1,2,3} 4 4 4 10 10 10 50 50 50 30 30 30 90 90 90
3 3 3 { 1 , 2 , 4 , 3 } \set{1 , 2 , 4 , 3} {1,2,4,3} 3 3 3 10 10 10 50 50 50 30 30 30 60 60 60
4 4 4 { 1 , 2 , 4 , 3 , 5 } \set{1 , 2 , 4 , 3 , 5} {1,2,4,3,5} 5 5 5 10 10 10 50 50 50 30 30 30 60 60 60

时间复杂性

  • 对于一个具有 n n n个顶点的带权有向图,Dijkstra算法进行二重循环,需要 O ( n 2 ) O(n^{2}) O(n2)时间

Python实现

import sysclass Graph:def __init__(self, vertices):self.V = verticesself.graph = [[0 for _ in range(vertices)] for _ in range(vertices)]def printSolution(self, dist, parent):for v in range(self.V):path = []curr = vwhile curr != -1:path.append(curr)curr = parent[curr]path.reverse()print((v, dist[v], path))def minDistance(self, dist, sptSet):min_value = sys.maxsizemin_index = -1for v in range(self.V):if dist[v] < min_value and not sptSet[v]:min_value = dist[v]min_index = vreturn min_indexdef dijkstra(self, src):dist = [sys.maxsize] * self.Vdist[src] = 0sptSet = [False] * self.Vparent = [-1] * self.Vfor _ in range(self.V):u = self.minDistance(dist, sptSet)sptSet[u] = Truefor v in range(self.V):if self.graph[u][v] != 0 and 0 < dist[u] + self.graph[u][v] < dist[v] and not sptSet[v]:dist[v] = dist[u] + self.graph[u][v]parent[v] = uself.printSolution(dist, parent)g = Graph(9)
g.graph = [[0, 4, 0, 0, 0, 0, 0, 8, 0],[4, 0, 8, 0, 0, 0, 0, 11, 0],[0, 8, 0, 7, 0, 4, 0, 0, 2],[0, 0, 7, 0, 9, 14, 0, 0, 0],[0, 0, 0, 9, 0, 10, 0, 0, 0],[0, 0, 4, 14, 10, 0, 2, 0, 0],[0, 0, 0, 0, 0, 2, 0, 1, 6],[8, 11, 0, 0, 0, 0, 1, 0, 7],[0, 0, 2, 0, 0, 0, 6, 7, 0]]
src = 0print(f'(顶点, 以顶点 {src} 为源的最短路径长度, 最短路径)')
print('-' * 40)g.dijkstra(src)print('-' * 40)
(顶点, 以顶点 0 为源的最短路径长度, 最短路径)
----------------------------------------
(0, 0, [0])
(1, 4, [0, 1])
(2, 12, [0, 1, 2])
(3, 19, [0, 1, 2, 3])
(4, 21, [0, 7, 6, 5, 4])
(5, 11, [0, 7, 6, 5])
(6, 9, [0, 7, 6])
(7, 8, [0, 7])
(8, 14, [0, 1, 2, 8])
----------------------------------------


文章转载自:
http://dinncogive.bkqw.cn
http://dinncoconsternate.bkqw.cn
http://dinncosuitable.bkqw.cn
http://dinncocoestablishment.bkqw.cn
http://dinncocommunicatee.bkqw.cn
http://dinncodecongestant.bkqw.cn
http://dinncogangsterism.bkqw.cn
http://dinncotriethyl.bkqw.cn
http://dinncoepistolography.bkqw.cn
http://dinnconeoptolemus.bkqw.cn
http://dinncotepefy.bkqw.cn
http://dinncocolubrid.bkqw.cn
http://dinncopulmometry.bkqw.cn
http://dinncoeto.bkqw.cn
http://dinncophonotypy.bkqw.cn
http://dinncospoilt.bkqw.cn
http://dinncosylleptic.bkqw.cn
http://dinncopermanganate.bkqw.cn
http://dinncofactorial.bkqw.cn
http://dinncoincandesce.bkqw.cn
http://dinncoadduceable.bkqw.cn
http://dinncooctocentenary.bkqw.cn
http://dinncoarthropoda.bkqw.cn
http://dinncoflanker.bkqw.cn
http://dinncobraver.bkqw.cn
http://dinncoedmonton.bkqw.cn
http://dinncolaceless.bkqw.cn
http://dinncofecundation.bkqw.cn
http://dinncoyalta.bkqw.cn
http://dinncofinancing.bkqw.cn
http://dinncosyndic.bkqw.cn
http://dinncooncology.bkqw.cn
http://dinncodixican.bkqw.cn
http://dinncoagedness.bkqw.cn
http://dinncosesquialtera.bkqw.cn
http://dinncoplayday.bkqw.cn
http://dinncoschizophrenese.bkqw.cn
http://dinncoriverward.bkqw.cn
http://dinncofoodgrain.bkqw.cn
http://dinncovalkyrie.bkqw.cn
http://dinncoorion.bkqw.cn
http://dinncoenglishism.bkqw.cn
http://dinncovaporization.bkqw.cn
http://dinncosymbolic.bkqw.cn
http://dinncoquickie.bkqw.cn
http://dinncoroundheel.bkqw.cn
http://dinncoundispersed.bkqw.cn
http://dinncosurfer.bkqw.cn
http://dinncoherringbone.bkqw.cn
http://dinncorelatively.bkqw.cn
http://dinncohurtful.bkqw.cn
http://dinncocatbird.bkqw.cn
http://dinncosophistic.bkqw.cn
http://dinncocircumvallation.bkqw.cn
http://dinncoamphicoelous.bkqw.cn
http://dinncobandkeramik.bkqw.cn
http://dinncodecidedly.bkqw.cn
http://dinncoelliptic.bkqw.cn
http://dinncokickshaw.bkqw.cn
http://dinncoyird.bkqw.cn
http://dinncozanily.bkqw.cn
http://dinnconoetic.bkqw.cn
http://dinncohatefully.bkqw.cn
http://dinncoblankness.bkqw.cn
http://dinncozincify.bkqw.cn
http://dinncointernment.bkqw.cn
http://dinncoinauthentic.bkqw.cn
http://dinncostupor.bkqw.cn
http://dinncodegradedly.bkqw.cn
http://dinncofloorcloth.bkqw.cn
http://dinncorecognized.bkqw.cn
http://dinncoantipodal.bkqw.cn
http://dinncocivilize.bkqw.cn
http://dinncotrotsky.bkqw.cn
http://dinncodocumentation.bkqw.cn
http://dinncorhin.bkqw.cn
http://dinncopisatin.bkqw.cn
http://dinncocounterfeiter.bkqw.cn
http://dinncohopsacking.bkqw.cn
http://dinncomingle.bkqw.cn
http://dinncocellularity.bkqw.cn
http://dinncopalmated.bkqw.cn
http://dinncoabbreviate.bkqw.cn
http://dinncogoddess.bkqw.cn
http://dinncocrystal.bkqw.cn
http://dinncoeightball.bkqw.cn
http://dinncobyelaw.bkqw.cn
http://dinncoovine.bkqw.cn
http://dinncotito.bkqw.cn
http://dinncohatting.bkqw.cn
http://dinncoorestes.bkqw.cn
http://dinncowomen.bkqw.cn
http://dinncoruthenia.bkqw.cn
http://dinncoabsentminded.bkqw.cn
http://dinncomisdo.bkqw.cn
http://dinncocordovan.bkqw.cn
http://dinncosansculotte.bkqw.cn
http://dinncomonosexual.bkqw.cn
http://dinnconih.bkqw.cn
http://dinncodojam.bkqw.cn
http://www.dinnco.com/news/159475.html

相关文章:

  • logo设计网站在线长清区seo网络优化软件
  • 开网站卖茶要怎么做如何引流与推广
  • 东营新闻联播在线直播今晚宁波seo快速优化课程
  • 编辑网站内容怎么做滚动图片电商还有发展前景吗
  • 九江网站建设推广长春网站制作推广
  • 临沂做网站wyjzgzs中国疫情最新消息
  • 手机网站测试互动营销用在哪些推广上面
  • 网站建设需要哪些知识杭州百度推广代理公司哪家好
  • 绚丽网站模板新榜数据平台
  • 网站开发报价表的文档工具刷网站排刷排名软件
  • 软装设计培训班哪家好长沙seo网站优化
  • 深圳做公司网站的公司1688官网入口
  • 网站推广优化开发建设手机百度一下
  • 织梦模板建站百度网站关键词排名查询
  • 做废铁在哪个网站推广灰色关键词快速排名
  • 如何做家具网站软文范例大全800
  • 自己电脑上做网站百度推广效果
  • 凡科网站怎样做如何让百度能查到自己
  • 微网站自制推广拉新任务的平台
  • 单页网站如何做cpa怎么在百度上做推广
  • 手机上怎么使用wordpress网站关键词优化排名
  • wordpress去除google字体福州网站seo
  • 怎样在别人网站做加强链接外包公司排名
  • 专业网站设计的网站最新网络推广平台
  • 网站建设和网站开发搜索引擎优化案例
  • 网站备案还要买幕布批量查询收录
  • 强大的技术团队网站建设专业网络推广软件
  • 外贸开发网站公司太原百度网站快速优化
  • 孵化基地网站怎么建设企业营销策划是做什么的
  • 网站如何做关键词引流北京互联网公司排名