这一节着重讨论了线性规划的内容,并且通过线性规划重新讨论了第 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]]

边被切的条件是:
yu=0y_u = 0yv=1y_v = 1
换句话说:
yuτ<yvy_u^* ≤ τ < y_v^*
所以这条边被切的概率就是:
Pr[τ(yu,yv)]=yvyu\Pr[\tau \in (y_u^*, y_v^*)] = y_v^* - y_u^*

所以经过一系列推导,可以得到结论
![[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]]