这一节着重讨论了线性规划的内容,并且通过线性规划重新讨论了第 5 节的 min-cut 问题。
首先讨论了普通的线性规划,然后提出了整数线性规划
由于有些问题,比如 0-1 背包问题,又或是 min-cut 问题,这些问题的参数并不能为连续的变量,只能是整数。但是由于 ILP (整数线性规划) 是一个 NP-hard 问题,有时候无法在多项式时间内求解,因此我们来讨论将 ILP 放松并界定的方式
比如说,我们将这个 min-cut 问题用 ILP 的方式列出来。
![[Pasted image 20250613075501.png]]
但是他的求解是困难的,所以我们可以将他 relax 成 LP 问题,
![[Pasted image 20250613075550.png]]
- 原来你只能 “封” 或 “不封” 一条路;
- 现在我们放宽要求,允许 “封一半”(虽然不现实),比如:
- 路 A 封 60%,路 B 封 10%;
- 这听起来很奇怪,但数学上这样写,计算机会更容易解出最好的选择;
- 虽然它不是真正的 “最小割”,但我们能用它得到一个接近的好答案!
但是 实际上我们的结果必须是确定的,那么比如 A 是 40%,b 是 60%,我们该如何选择呢?
1. 四舍五入
字面意思,但是会有一个问题,如果用四舍五入的话,我们 relax 成 LP 问题的意义就没有了,所有的数据都是四舍五入,容易导致结果的偏差
2.Randomised Rounding(随机阈值法)
从 0 到 1 中随机选择一个阈值 τ\tauτ;
然后:如果 yv>τy_v > \tauyv>τ,就设成 1,否则设成 0。
💡 随机选择能 “平均” 掉一些不确定性,让你获得一个 “平均意义下表现不错” 的解。
老师说:
“如果你总是用 0.5 作为标准,那就不能利用 LP 解出来的那些信息!”
“我们应该利用 x∗x^*x∗ 和 LP 的所有变量,结合这些信息来做一个合理的、统计上可靠的转换。”
“所以更好的方法是:随机化(Randomised Rounding)。”
流程:
![[Pasted image 20250613080509.png]]
边被切的条件是:
,
换句话说:
所以这条边被切的概率就是:
所以经过一系列推导,可以得到结论
![[Pasted image 20250613105153.png]]
min-cut 问题是一个已经有解法的问题,这里只是热身,接下来要解决一个真正的 NP-HARD 的问题
# Max-Sat
这个问题就是
游戏道具:
有一堆开关,每个开关只能是 开 (1) 或 关 (0)。
老师写下了很多规则(子句)。
每条规则长这样:
“只要 开关 A 开着 或者 开关 B 关着 或者 …,我就满意。”
也就是说,只要里面有一个条件被满足,这条规则就算 “真”。
SAT(可满足)
问题:能不能找到一种开关状态,让老师的所有规则都满意?
如果能做到,游戏通关;如果做不到,就失败。
Max-SAT(最大可满足)
现实常常做不到让老师 100% 满意。
Max-SAT 换个问法:
“在最理想情况下,最多能让老师满意多少条规则?”
你的任务就是找出那种开关组合,让被满足的规则数量尽可能多。
为什么麻烦?
有 nnn 个开关时,可能的开 / 关组合有 2n2^n2n 种,枚举不上。
所以 Max-SAT 被称为 NP-Hard:电脑也很难一下子找到最优答案。
![[Pasted image 20250613105344.png]] 所以这个算法是一个 1/2 近似算法
![[Pasted image 20250613105427.png]]