问题描述

给定一个图,求解源点s到终点t的路径。

点弧关联矩阵定义如下:

列表示边,行表示一个顶点。

可以看到,每一列一定是-1和+1组成,其中-1表示入边,+1表示出边。

我们的目标是求解下列线性规划。

其中f表示选这条边还是不选,选为1,不选为-1,A表示上述的点弧关联矩阵。c表示费用,b表示流量守恒,即一个可行解(f1,f2…fn)必须构成一条路,而我们发现一条路上:除了s和t之外,其他路上的顶点都是一条边进入,一条边出去,即流量守恒。所以该顶点对应的行,比如是有一个+1对应的边选择了,一个-1对应的边选择了,如果该顶点还有一个+1的,也不能再选了,否则Af为1而不是0.

对偶问题

根据上面的原始线性规划,写出其对偶问题。

把上面矩阵形式展开,得到如下:

这里大家耐心展开验证一下即可,不多解释。
不多,需要指出的是,前面说过,对偶问题中的变量总是有其物理含义。那么其中yiy_iyi​你可以理解为顶点iii到终点ttt的最短路径长度。那么你再看看约束条件,其是说,对于任何一条边,边的左顶点的最短长度-右顶点的最短长度要比边上的长度相等或更小。这是当然的,否则如果yiy_iyi​就不是最短路径长度了,还不如选择这条边呢。


上面fj∗f_j^*fj∗​理解成fij∗f_{ij}^*fij∗​比较好,表示(i,j)这条边选或不选。后面的eje_jej​同理。下面同理。

原始对偶算法

在此之前,我们希望先对对偶问题再进行一个细微的处理。
我们发现点弧关联矩阵并不是行满秩的,而是行-1。你可以数学上证明,在物理上你可以理解为告诉了其他行(顶点)出入边情况,就知道剩下一个点的出入边情况。

这告诉我们,在原始线性规划中就可以减少一个约束,我们假设减少的是ttt顶点那行。设顶点个数为m,边个数为n,那么其对偶规划中的ATy≤cA^Ty\le cATy≤c则形式如下:

即变量少了一个yty_tyt​,但是我们可以加上,并且和原来同解。


即加上一个对偶变量,但是令其为0,所以变量就变成了m个,从而A也不用截断t所在行,由于乘以yt=0y_t=0yt​=0,其实这一行写什么都已经作废了。不过,其实这个加上去根本不为了别的,而是为了那个限制条件能够同意,否则没有yty_tyt​的话,对于(i,t)这样的边,限制条件需要单独写yi≤city_i\le c_{it}yi​≤cit​,但是现在令yt=0y_t=0yt​=0得到了统一。

从而得到如下:

原始对偶算法真正开始了。我们假设先得到了一个可行解yyy,然后计算J:

再有:

这里我们在原规划中已经去掉了t行,所以就是如上了。不过注意一下符号,还是之前说的fjf_jfj​写成fijf_{ij}fij​比较好理解,同理,那个j∈Jj\in Jj∈J写成(i,j)∈J(i,j)\in J(i,j)∈J比较好。

这个写出对偶问题,慢慢写就行了。不过,此处可以提示一下:RP中的限制条件为:

注意是n′n'n′,因为你看RP中:


所以现在的f′f'f′是全部大于等于0的那些,等于0的对应的那些A列已经清除了得到A′A'A′。

那么其对偶为ATy≤cA^Ty\le cATy≤c:

从而可以知道:

就是:

同理:

就是:


解释完毕。从而我们现在得到了:
(P),(D),(RP),(DRP),接下来就是按照原始对偶算法的步骤来求解了,参看下篇。

最短路问题的原始对偶算法形式相关推荐

  1. 线性规划的原始对偶算法

    假设有如下原始问题和对偶问题: 如果我们能够找到一个x,一个y,满足根据互补松弛定理,即使得: 那么这个x,y就是原始问题和对偶问题的最优解. 可是,直接这样找,相当于穷举,大海捞针,我们希望给出一个 ...

  2. 近似算法中的技巧之一原始对偶模式

    近似算法中的技巧之一原始对偶模式 原始对偶模式 背景回顾 基础介绍 原始对偶模式 线性规划松弛的整间隙 原始对偶模式的近似算法 总结 参考文献 原始对偶模式 背景回顾 在过去的四十年里,组合优化受到线 ...

  3. AOR4 原始对偶方法

    原始对偶算法 原始对偶算法利用了及其巧妙的方法减少参数,优化解,最后找到最优解. 互补松弛定理:最优解的等价命题为: 对于所有的j, 有(AjTy−cj)xj=0(A_j^Ty-c_j)x_j=0(A ...

  4. 针对安全探索的受限强化学习:原始对偶优化算法

    ©作者 | 周宣含 学校 | 国防科技大学 研究方向 | 深度强化学习 在强化学习中,智能体通过在未知环境中探索与试错来学习如何决策.大多数 RL 算法允许智能体自由地探索环境,并采取任意能够提升奖励 ...

  5. 原始-对偶(Primal-Dual)算法求解线性规划

    ​原始-对偶(Primal-Dual)算法(Dantzig, Ford, and Fulkerso,1956)是用来求解线性规划的一种算法,可以看作是单纯形法的一种变体,目的是减少迭代次数. 构建该算 ...

  6. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)

    前言 在前一篇博客 <统计学习方法>-- 感知机原理.推导以及python3代码实现(一) 里面,我们介绍了感知机原始形式以及具体推导.在这篇博客里面,我们将继续介绍感知机对偶形式以及py ...

  7. 对偶算法与ADMM算法

    学习笔记,仅供参考,有错必纠 转载自:机器学习与运筹优化(六)对偶算法与ADMM算法 文章目录 摘要 ADMM算法 参考文献 摘要 上文我们介绍了约束优化问题和拉格朗日对偶思想.对偶算法就像是男生女生 ...

  8. SVM(二):对偶算法、SMO算法

    拉格朗日乘子法 在学习对偶算法之前,首先我们需要了解一点数学知识--拉格朗日乘子法.它和高数中的拉格朗日乘数法很类似,都用于最优化的求解.不同的点是乘数法用于限制条件为等式的情况,而乘子法用于限制条件 ...

  9. 【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)

    对偶的概念? (1)概念 对偶一般来说是以一对一的方式,常常通过某个对合算子,把一种概念.公理或数学结构转化为另一种概念.公理或数学结构:如果A的对偶是B,那么B的对偶是A.在强对偶性成立的情况下由对 ...

最新文章

  1. 后端缓存的23个关键关注点
  2. 快速理解mysql主从,主主备份原理及实践
  3. 数据库新增幂等操作_使用数据库唯一键实现事务幂等性
  4. 魔法照片(洛谷-P1583)
  5. linux添加开机自启动脚本
  6. linux内存管理机制
  7. pycharm快捷键大全图_十个Pycharm使用小技巧——提升效率
  8. Ubuntu ROS Kinect2安装
  9. sqoop 使用笔记
  10. 通达信自带指标 阶段放量(c112)
  11. 19年电赛B题巡线机器人走过的坑
  12. hexo之icarus主题的美化修改以及简单的SEO配置
  13. ccs中c语言定义布尔常量,ccs库里面有变量的定义,我在添加了头文件后编译显示没有定义变量呢...
  14. 帮你快速拿Offer!Android攒了一个月的面试题及解答,含BATJM大厂
  15. JAVA jdk8安装
  16. android中帧布局效果,Android开发实现布局帧布局霓虹灯效果示例
  17. 第6章 计算机的运算方法
  18. 2021-03-18-8400
  19. freemodbus多从机支持
  20. 网页先锋 v1.5 官网

热门文章

  1. 【CVPR2022】基于鲁棒区域特征生成的零样本目标检测
  2. 158行Python代码复现:DeepMind提图像生成的递归神经网络DRAW
  3. 报名 | 顾险峰教授讲座:对抗生成网络的几何理论解释
  4. 福利 | 给你个机会与俞士纶(Philip S. Yu)面对面交流 !(附俞教授论文合集资源)...
  5. 手把手教你使用Dygraphs可视化时间序列数据(附代码、链接)
  6. 清华朱军团队包揽三项冠军 | NIPS 2017对抗样本攻防竞赛总结(附学习资料)
  7. 剑指offer:不用加减乘除做加法
  8. 太有缘!和同专业师兄同名同姓同年同月同日生还是同导师是什么体验?
  9. 简直让人欲罢不能!820个ML Python库,star超260万,持续周更中...
  10. c语言爬虫代码,simspider