首页 > 其他分享 >第K短路相关证明

第K短路相关证明

时间:2023-10-19 18:33:35浏览次数:39  
标签:队列 短路 路径 距离 证明 出队 相关 最优

Dijkstra正确性证明

采用反证法+数学归纳法

设目前已经出对的点得到的都是最短路,那么对于现在刚好出队这个点t来说:

  1. 因为它是优先队列的对头,而且图中的边权都是非负数,所以它不可能被队列中的点再更新
  2. 因为每个点只会出队一次,所以它也不会被已经出队的点再次更新
  3. 还没有入队的点距离更远,也不可能再更新它

综上,每个点的最短路距离在出队时就已经确定了。

 

A*实现的K短路正确性证明

首先,设每个点的估价总距离为h(x),实际总距离为a(x),当前求出的距离为s(x),估价函数为f(x)

1.

对于路径u1->u2->u3->...->un来说,如果我们正处在求k短路的迭代过程当中,那么其中的任何一个字段,都不可能包含i短路(i>k)的部分:

反证法:假设它包含,那么这一段就可以被替换为更短的子段,与我们的前提矛盾。

因此,对于每个点,当它的遍历次数达到k时,就可以无视它了

2.

对于满足拓扑序的一段路径,u1->u2->...->un来说,h(ui)非严格递增。

 只有在最理想的情况下,对于j>i,才会有h(j)=h(i),其他情况下h(j)>h(i),所以h(j)>=h(i)

3.

最重要的一部分

 

重点第i次出队时,得到的就是第i短路。

可以采用归纳法证明:

第一次出队时,假设得到的这个dist1大于最优值dis1,那么

1.若当前优先队列中有最优路径上的点u,则dist1>dis1>=h(u),与当前点时优先队列队友矛盾。

2.若当前队列中没有最优路径上的点,只有已经出队的点中包含了最优路径上的点,那就需要先从当前队列点绕到那些已经出队的点,再把它入队来更新最优值,因为只有非负权边,显然会越找越大。

以此类推....

 

证毕。

标签:队列,短路,路径,距离,证明,出队,相关,最优
From: https://www.cnblogs.com/smartljy/p/17775363.html

相关文章

  • celery包结构、celery延迟任务和定时任务、django中使用celery、接口缓存、双写一致性
    celery包结构project├──celery_task #celery包  这个包可以放在任意位置│├──__init__.py#包文件│├──celery.py#celery连接和配置相关文件,且名字必须叫celery.py│└──tasks.py#所有任务函数│├──add_task.p......
  • 数据库相关概念
    数据库系统相关概念数据库优点数据持久性(DataPersistence):数据库系统可以将数据永久存储在磁盘上,即使系统关闭或断电,数据也不会丢失。数据共享和多用户访问(DataSharingandMulti-UserAccess):多个用户可以同时访问数据库,而不会发生冲突,这有助于团队协作和数据共享。......
  • 易基因:WGBS等揭示植物基因体动态DNA甲基化与基因表达可塑性相关|Genome Biol
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。在一些真核生物中,DNA甲基化发生在基因编码区,称为基因体甲基化(genebodymethylation,GbM)。尽管DNA甲基化在转座子和重复DNA沉默中的作用已得到很好的表征,但基因体甲基化与转录抑制无关,其生物学重要性尚不清楚。2023......
  • 多源最短路径的原理及C++实现
    时间复杂度O(n3),n是端点数。核心代码template<classT,TINF=1000*1000*1000>classCNeiBoMat{public:CNeiBoMat(intn,constvector<vector<int>>&edges,boolbDirect=false,boolb1Base=false){m_vMat.assign(n,vector<int>......
  • 存在负权边的单源最短路径的原理和C++实现
    负权图此图用朴素迪氏或堆优化迪氏都会出错,floyd可以处理。负环图 但floyd无法处理负权环,最短距离是无穷小。在环上不断循环。经过k条边的最短距离(可能有负权变)贝尔曼福特算法(bellman_ford)就是解决此问题的。原理循环k次,循环第i次时,m_vDis表示各点最多经过i-1条边的最短距离;v......
  • 斜率优化相关
    记一下。形如\(f_i=\min/\max\{f_j+a_ib_j+c_i+d_j+e\}\)的式子可以使用斜率优化。如果斜率有单调性,可以使用单调队列。如果没有,可以使用李超树或者cdq分治。单调队列暂鸽。没有单调性,使用李超树。为方便记录,只讨论\(f_i=\min\{f_j+a_ib_j+c_i+d_j+e\}\),\(\max\)同理......
  • GMAC网卡相关介绍与分析
    GMAC网卡相关介绍与分析来源 https://www.cnblogs.com/forwards/p/17101438.html环境描述UTP这里指MDI连接RJ45接口,UTP对网线来讲为非屏蔽双绞线。SDSSERDES是英文SERializer(串行器)/DESerializer(解串器)的简称,SerDes的主要特点包括:1)在数据线中时钟内嵌,不需要传送......
  • 小程序相关
      ......
  • 证明反对称矩阵的秩是偶数
    对反对称矩阵消元,如果有非零元素,不妨假设\(a_{1,2}\neq0\)。定义对\((i,j,k)\)使用操作1表示,第\(i\)行\(\timesk\)加到第\(j\)行然后第\(i\)列\(\timesk\)后加到第\(j\)列。注意到操作完仍是反对称矩阵。可以使用操作1把所有第一行第二行,第一列第二列除了......
  • 微信公众号相关
    importcom.alibaba.fastjson.JSONObject;importokhttp3.*;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;importjava.text.Me......