线性规划学习笔记

线性规划

Introduction

线性规划,粗糙地看来就是对于线性的约束(等、不等)和线性的目标求极值。

可以写成以下形式:

  1. 标准形

    i,jai,jxjbii,xi0maxicixi

    亦(向量形式)

    AXBX0maxCTX

  2. 松弛形

    AX=BX0maxCTX

    关于标准形与松弛形的转化:
    对于小于号,添加一个系数为负的自变量,
    大于号则系数为正。

    jai,jxjbijai,jxj+xnew=bixnew0

  3. 单纯形

    i[1,m],xn+i=bij=1nai,jxji[1,n+m],xi0maxj=1ncixi

    我们称x1~xn为非基本变量,xn+1xn+m为基本变量
    事实上是松弛形的另一种写法

单纯形法

i,bi>0
我们对于非基本变量全部取0是一个可行解,
当此时i,ci0时达到最优,

如果并非最优,我们要更换一组基本变量,

xn+l=blj=1,jenal,jxjal,exexe=1al,e(blj=1,jenal,jxjxn+l)

方法是选出ce最大的非基变量xe
al,e>0blal,e最小的xn+l替换,
这样可以保证变化后bi0,
同时使目标变化最大(ceblal,e)
上述操作成为转轴

若初始时bi<0,找到一个负的ai,j对其转轴,
不知道为什么一定会停下来。

对偶

我们有一组线性规划互为对偶:

AXBX0maxCTX

ATYCY0minBTY

maxCTX=minBTY

大概长成这样:

x1 x2 xn
y1 a1,1 a1,2 a1,n b1
y2 a2,1 a2,2 a2,n b2
ym am,1 am,2 am,n bm
c1 c2 cn z

网络流模型

网络流本质也是一类线性规划问题,有部分线性规划问题可以通过网络流解决

流量守恒

对于线性规划问题我们写成松弛形式,
再通过线性变换使得每个变量只出现两次,符号相反,
那么我们将这些变量视为弧,将限制视为点,根据流量守恒构图。

对于区间类问题来说通常有变量连续出现的情况,
那么我们将相邻两个限制相减,
最后新添一条最后限制取反的限制,开头限制不变,
通常可以得到美妙的结果。

对偶

对于费用流,流量为fu,v,最大流量为cu,v,代价为wu,v,每个点的流出减去流入bu,我们有:

u,vfv,uvfu,vbuu,v,fu,vcu,vu,v,fu,v0minu,vfu,vwu,v

令对于边的对偶变量为zu,v,对于点的为pu,对偶得到

u,v,pvpuzu,vwu,vu,v,zu,v0u,pu0maxupubuu,vzu,vcu,v

因为cu,v0,且zu,v只有一条限制,我们令其取下界,得zu,v=max(0,pvpuwu,v)

maxupubuu,vcu,vmax(0,pvpuwu,v)minupubu+u,vcu,vmax(0,pvpuwu,v)

对于一个线性规划问题,若能化为上述形式,则必定可以通过费用流解决(只是方案难搞...

我们可以通过在目标式中添加若干的项来做到加入限制

参考资料

单纯形法学习笔记 by p_b_p_b
《再探线性规划对偶在信息学竞赛中的应用》 - 学习笔记 by p_b_p_b

2021国家集训队论文

posted @   鼠曲雪兔子  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示