单纯形法学习笔记(未完成)

用途:
解线性规划问题。

什么是线性规划?

一般式:
求解一个max(c[1]*x[1]+c[2]*x[2]+……+c[n]*x[n]),其中c为给定系数,x为一组解,并有约束
a[i][1]*x[1]+a[i][2]*x[2]+……+a[i][n]*x[n]<=b[i]
(1<=i<=m)
且x[j]>=0 (1<=j<=n)
可以把a看作一个像高斯消去法的矩阵。

标准式:
a[i][1]*x[1]+a[i][2]*x[2]+……+a[i][n]*x[n]=b[i]
(1<=i<=m)
且x[j]>=0 (1<=j<=n)
求max(c[1]*x[1]+c[2]*x[2]+……+c[n]*x[n])
注意:仅仅把大于等于变为等于,怎么变?加一个系数。
举个例子:
约束:

x+y<=4
x+3y<=6
x>=0 y>=0 
求max(3x+5y)

那我们可以变为

x+y+u=4
x+3y+v=6
x,y,u,v>=0
求max(3x+5y+0u+0v)

如果是大于等于,可以改写为减去一个u,v,且u,v>=0.
假设x没有x>=0的约束,可以改写成x=x’-x”,其中x’,x”>=0.
这样就转化成了标准式。当然不可能仅是大于或小于,这样则不存在最大值。
如果求最小值显然可以把每个系数取反,求的解后把结果反过来。

解的范围:
显然,如果是二维的,我们可以建立直角坐标系,我们只考虑小于的情况,那么,一个解的范围为直角坐标系的坐标轴,与直线围成的一定的范围。这个不想多解释。对于上述例子来说,解在(0,0),(0,2),(3,1),(4,0)顺序围成的一个凸四边行中。显然不可能总是四边形,但是这个多边形满足两个性质。
性质一:这个多边形一定是凸多边形。
性质二:我们的答案总在极点上。
多维依然有该性质。
那么相当于枚举每个极点,暴力求解。我们可以先取一个基点,就是凸多边形上的任意一个点,很显然可以取(0,0,4,6),这个组为标准式的解,其实质为x=0,y=0的解。然后判断相邻的两个点(0,2)或者(4,0),然后判断判断答案是否能增加,如果一个点比相邻两个点都大,这个点就是解,其实与暴力区别不大,后面说的单纯形法其实就是在换点。而主要是列出一个单纯形表,以及在表示进行一系列的操作,
我们的代码也就是在模拟这些操作。

真的有点多,打字贼慢,还有去玩,未完待续……

相关资料:
算法设计与分析基础 清华大学出版社 原著 (美)Anany Levitin
讲解:https://www.bilibili.com/video/av7847726/
相关题目:bzoj 1061

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值