应用运筹学基础:组合优化 (2) - 一类问题的贪心解法

这一节课讲解了被称为独立系统的一类问题,以及用贪心解决独立系统问题的近似比。

独立系统

考虑一个有限元素集合 $E$,给 $E$ 中的每个元素 $e$ 定义一个非负的费用 $c(e)$。再考虑 $\mathcal{F} \in 2^E$,那么对于 $F \in \mathcal{F}$,我们定义 $F$ 的费用 $c(F) = \sum\limits_{e \in F} c(e)$。现在我们要找出一个 $F$,使得 $c(F)$ 最大(或最小)。这就是这节课我们需要考虑的一类问题。

独立系统

从这类问题中,我们引入独立系统的概念。对于一个二元组 $(E, \mathcal{F})$,若 $\forall Y \in \mathcal{F}$,$X \subseteq Y \to X \in \mathcal{F}$,那么我们称 $(E, \mathcal{F})$ 为独立系统。由这个定义我们马上推出,$\emptyset \in \mathcal{F}$。

独立集与相关集

在独立系统 $(E, \mathcal{F})$ 中,$\mathcal{F}$ 中的元素称为独立集,$E - \mathcal{F}$ 中的元素称为相关集。

基与圈

我们将 $\mathcal{F}$ 中的极大独立集称为基,将 $E - \mathcal{F}$ 中的极小相关集称为圈。

对于 $X \subseteq E$,定义 $X$ 上的基为 $X$ 中的极大独立集。

秩商

对于 $X \subseteq E$,$X$ 中的基大小可能不同。我们定义 $X$ 的秩 $r(X)$ 为 $X$ 中最大的基的大小,类似地定义 $X$ 的下秩 $\rho(X)$ 为 $X$ 中最小的基的大小。

由此定义独立系统的秩商 $q(E, \mathcal{F}) = \min\limits_{x \subseteq E} \quad \frac{\rho(X)}{r(X)}$。秩商是一类问题中贪心解法近似比的下界,下面会进行说明。

一类最大(小)化问题

根据独立系统的定义,我们引出一类最大(小)化问题。

最大化问题:给出一个独立系统 $(E, \mathcal{F})$,找出一个 $F \in \mathcal{F}$,使得 $c(F)$ 最大。

很显然,由于每个元素的费用都是非负的,所以 $|F|$ 越大,$c(F)$ 也越大。所以最优的 $F$ 一定是基。

最小化问题:给出一个独立系统 $(E, \mathcal{F})$,找出一个 $F \in \mathcal{F}$,使得 $F$ 是基,且 $c(F)$ 最小。

(如果不要求 $F$ 是基,那么取 $F = \emptyset$ 就会让代价最小,没什么意义...)

最大化问题的实例有很多。

0-1 背包问题:$E$ 中的元素是每个物品,$\mathcal{F}$ 中的元素是所有可以放进背包的物品集合,费用就是物品的价值。

最大权独立集:$E$ 中的元素是点,$\mathcal{F}$ 中的元素是独立集,费用就是每个点的权值。

最长简单路径:$E$ 中的元素是边,$\mathcal{F}$ 中的元素是所有从起点到终点的简单路径以及其子集,费用就是每条边的距离。

最大权森林:$E$ 中的元素是边,$\mathcal{F}$ 中的元素是所有不含圈的边集,费用就是每条边的权值。

最小化问题也有很多实例。

最小生成树:$E$ 中的元素是边,$\mathcal{F}$ 中的元素是所有不含圈的边集,费用就是每条边的权值。

最短路:$E$ 中的元素是边,$\mathcal{F}$ 中的元素是所有从起点到终点的简单路径以及其子集,费用就是每条边的距离。

旅行商问题(TSP):$E$ 中的元素是边,$\mathcal{F}$ 中的元素是哈密尔顿回路及其子集,费用就是每条边的距离。

拟阵

拟阵(matroid)是一个特殊的独立系统。一个独立系统需要满足以下三个条件中的一个才被称为是拟阵(事实上以下三个条件等价):

(1) 若 $X, Y \in \mathcal{F}$,且 $|X| > |Y|$,则 $\exists e \in X - Y$,$Y \cup \{e\} \in \mathcal{F}$;

(2) 若 $X, Y \in \mathcal{F}$,且 $|X| = |Y| + 1$,则 $\exists e \in X - Y$,$Y \cup \{e\} \in \mathcal{F}$;
(3) $\forall X \subseteq E$,$X$ 的所有基大小相同。

接下来说明这三个条件等价。

(1) 推出 (2) 是显然的,(2) 推出 (1) 使用归纳法即可。

(1) → (3):假设存在 $X, Y \in \mathcal{F}$,$X$ 与 $Y$ 都是基,且 $|X| > |Y|$。那么 $\exists e \in X - Y$,$Y \cup \{e\} \in \mathcal{F}$,说明 $Y$ 不是基。矛盾。
(3) → (1):假设存在 $X, Y \in \mathcal{F}$,$|X| > |Y|$,且 $\forall e \in X - Y$,$Y \cup \{e\} \not\in \mathcal{F}$,那么说明 $Y$ 是基。由于 $X$ 是独立集,存在一个基 $Z$ 使得 $|Z| \ge |X| > |Y|$,那么有两个基 $Y$ 与 $Z$ 大小不同。矛盾。

我们另外定义 $\mathcal{F}^* = \{F \subseteq E \quad | \quad \exists (E, \mathcal{F}) \text{ 的基 } B, F \cap B = \emptyset\}$。

很容易发现,$(E, \mathcal{F}^*)$ 也是独立系统。我们称 $(E, \mathcal{F})$ 与 $(E, \mathcal{F}^*)$ 互为对偶。

下面证明 $F \in \mathcal{F}^{**} \to F \in \mathcal{F}$:

首先,由 $F \in \mathcal{F}^{**}$ 可以推出 $\exists (E, \mathcal{F^*}) \text{ 的基 } B_1, F \cap B_1 = \emptyset$。

又可以推出 $\exists (E, \mathcal{F}) \text{ 的基 } B_2, B_1 \cap B_2 = \emptyset$。

注意到 $B_1 \cup B_2 = E$,否则我们可以从 $E - (B_1 \cup B_2)$ 中选出一个元素加入 $B_1$,仍有 $B_1 \cap B_2 = \emptyset$,那 $B_1$ 就不是基了。

既然 $B_1 \cup B_2 = E$,且 $F \cap B_1 = \emptyset$,那么只能有 $F \subseteq B_2$。根据独立系统的定义,有 $F \in \mathcal{F}$。

反过来也是成立的,证明类似就略去。

两类贪心算法

下面介绍两类贪心算法,分别用于独立系统的最大化和最小化问题。

Best in:将 $E$ 中所有元素按费用从大到小排序,使得 $c(e_1) \ge c(e_2) \ge ... \ge c(e_n)$。一开始令 $F = \emptyset$,按 $e_1, e_2 \dots, e_n$ 的顺序考虑,若 $e_i$ 加入 $F$ 后 $F$ 仍是独立集那就加入。这个贪心算法用于解决最大化问题。

Worst out:将 $E$ 中所有元素按费用从大到小排序,使得 $c(e_1) \ge c(e_2) \ge ... \ge c(e_n)$。一开始令 $F = E$,按 $e_1, e_2 \dots, e_n$ 的顺序考虑,若把 $e_i$ 从 $F$ 中去掉后 $F$ 还含有至少一个基那就去掉。这个贪心算法用于解决最小化问题。

接下来介绍重要的 Best in 定理:设 $G(E, \mathcal{F})$ 表示 best in 贪心得到的解,$\text{OPT}(E, \mathcal{F})$ 表示最优解,则 $$q(E, \mathcal{F}) \le \frac{G(E, \mathcal{F})}{\text{OPT}(E, \mathcal{F})} \le 1$$ 从这个定理可以看出,如果一个独立系统是拟阵,那么用 best in 得到的最大化问题的解一定是最优解。

下面证明 Best in 定理:

首先定义 $E_j = \{e_1, e_2, \dots, e_n\}$,$G_n$ 是 best in 贪心选中元素的集合,$O_n$ 是最优解选中元素的集合。令 $G_j = E_j \cap G_n$ 表示 best in 贪心在考虑 $e_j$ 之后选择了哪些元素,$O_j = E_j \cap O_n$ 表示最优解在考虑 $e_j$ 之后选择了哪些元素。记 $d_j = c(e_j) - c(e_{j+1})$ 以及 $d_n = c(e_n)$,那么 $$\begin{matrix} c(G_n) & = & \sum\limits_{j=1}^n(|G_j| - |G_{j-1}|)c(e_j) \\ & = & \sum\limits_{j=1}^n|G_j|d_j \\ & \ge & \sum_{j=1}^n \rho(E_j)d_j & \text{(因为容易证明 } G_j \text{ 是 } E_j \text{ 的一个极大独立集)} \\ & \ge & q(E, \mathcal{F})\sum\limits_{j=1}^n r(E_j)d_j & \text{(根据秩商的定义)} \\ & \ge & q(E, \mathcal{F})\sum\limits_{j=1}^n |O_j|d_j \\ & = & q(E, \mathcal{F})c(O_n) \end{matrix}$$ 这就证明了 Best in 定理。

可以举一个例子说明 Best in 定理的下界是紧的:根据秩商的定义,$\exists X \subset E$,$X$ 的基 $B_1$ 和 $B_2$ 满足 $\frac{|B_1|}{|B_2|} = q(E, \mathcal{F})$。我们定义 $$c(e) = \begin{cases} 1 & e \in X \\ 0 & e \not\in X \end{cases}$$ 然后把 $B_1$ 中的元素排在前面形成 $e_1, e_2, \dots, e_{|B_1|}$,后面随便排。如果使用 best in 贪心,就会把前面 $|B_1|$ 个元素选走,然而最优解可以选 $|B_2|$ 个元素。

另外还有两个奇怪的定理,上课提了一下...

Worst out 定理:使用 worst out 贪心得到的解满足 $$1 \le \frac{G(E, \mathcal{F})}{\text{OPT}(E, \mathcal{F})} \le \max\limits_{F \subseteq E} \quad \frac{|F| - \rho^*(F)}{|F| - r^*(F)}$$ 其中 $\rho^*(F)$ 表示对偶独立系统中的下秩,$r^*(F)$ 表示对偶独立系统中的秩。

$n$ 个拟阵的交:$n$ 个拟阵的交,用贪心得到的解近似比为 $\frac{1}{n}$。

时间: 2024-08-27 13:10:27

应用运筹学基础:组合优化 (2) - 一类问题的贪心解法的相关文章

应用运筹学基础:线性规划 (1)

学校有一门课叫<应用运筹学基础>,是计算机学院唯一教优化的课程,感觉上得还行,这里简单记录一下上课学到的知识.第一节课是线性规划(linear programming). 凸集 对于集合 $S$,若任意两元素 $x, y \in S$,且对于任意 $0 \le \theta \le 1$ 有 $\theta x + (1-\theta)y \in S$,那么 $S$ 是凸集(convex set,形象地想象就是凸的图形). 可以推广:若 $S$ 为凸集,那么对任意 $n \ge 2$ 个元素

移动前端开发基础与优化

移动前端开发基础与优化 http://qywx.gitcafe.io/2014/11/22/%E7%A7%BB%E5%8A%A8%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%9F%BA%E7%A1%80%E4%B8%8E%E4%BC%98%E5%8C%96/ 优雅且高效的使用Chrome Developer Tools(上) http://lin-chao.github.io/2014/10/10/%E4%BC%98%E9%9B%85%E4%B8%94%E9%A

应用运筹学基础:组合优化 (6) - 近似算法选讲 (4)

这节课介绍了斯坦纳树问题(Steiner tree)与旅行商问题(TSP),并讲解了它们的近似算法. 平面上的斯坦纳树 平面上的斯坦纳树指的是这样的问题:平面上有 $n$ 个点,要用总长尽量少的线段把它们连通起来.要注意,线段不一定要在给定的 $n$ 个点相交(不然跑个最小生成树就没了),完全可以在平面上的其它点相交.最优解中,线段在平面上除了给定点外的交点称为斯坦纳点. 可以从上图看出 $n = 3$ 和 $n = 4$ 的情况,$S$.$S_1$ 和 $S_2$ 是斯坦纳点.$n = 3$

NFS服务基础及优化

一.NFS主配置文件(默认为空):            /etc/exports        格式:            共享的目录    共享地址1(参数1,参数2,...)    共享地址2(参数1,参数2,...)        注意:            共享目录的本地权限,如果需要读写共享,一定要让本地目录被NFS客户端的用户(nfsnobody)可以读写        重要参数:            rw    读写权限            ro    只读权限     

【运筹学基础】——宏观总结

宏观大图: 简单来说,运筹学这本书,理论挺好懂的,计算部分太多了,需要动手去做.在运筹学的科学理论指导下进行决策. 我将本书分为了三个部分:决策程序,库存管理,以及决策方法. 在决策程序阶段,一看步骤我就想起了信息系统开发管理编的知识网,系统开发步骤啥的.既然是步骤,那肯定都会有模板的,就例如这个决策程序步骤吧! 首先,我们要确定要决策的问题目标,然后针对这个问题拟定可行的解决方案,拟定好方案后,就要对这些方案进行预测,然而预测也要有一定的步骤(略过).无论是谁都会很在意盈亏的,预测完就要进行盈

【运筹学基础】——导论

导图: 总结: 第一章导论,主要讲了三部分.分别是: 一.什么是运筹学 在运筹学的解释中,我们定好3个关键词,就可以解决这个问题了. 利用,干什么,目的(通过--为--提供依据) (1)利用计划方法和有关学科要求 (2)把复杂功能关系转换为数学模型 (3)其目的是通过定量分析为决策和揭露新问题提供数量依据. 二.定量分析与定性分析 量与性的问题. 性通过主观经验来分析解决问题 量通过计量方法来解决问题,一般是复杂重要的问题,以及重复简单的问题. 三.用运筹学的知识去解决决策的六个步骤 我将六个步

javascript基础-性能优化

优化点 性能检测 基调网络 http://www.cesule.com/cesule/status/show/3496d91653a14743af2bd2e261aee204 chrome检测 优化原则 ‘两害取其轻’: 没有完美的方案.比如,优化与项目工程冲突时,择其一. 并不是每一条都需要优化,根据具体情况来.    优化前后需对比是否有效. 性能优化属于前端集成解决方案的一部分.即推进前端工业化,自动处理.使研发人员只专注于‘业务逻辑’.

bootstrap基础排版优化(待续

1.标题 h1到h6元素重新定义了标准,并设置了上下外边距 h1到h6等6个class样式和以上元素样式一样,但没有上下外边距 在标题内使用small元素,显示小一点的字体,颜色为灰色,行间距为1,h1h2h3内字体为正常字体65%,h4h5h6则是75%. 2.页面主题 全局字体设置为14px,inline-height为20px,p元素中会有一个额外的10px的margin-bottom. 如果让一个段落突出,使用.lead样式,作用是增大字体大小.粗细.行间距.下边距. 3.强调文本 b,

无线网络的基础及优化方案

一.理论基础 注:关于射频等通信技术,本人不是太了解,相关总结如下,如有不当,欢迎指正. ①无线网络信号的本质是电磁波,电磁波的传播速率等于频率与波长的乘积,而这个乘积实际上是一个固定值,就是光速,换句话说电磁波的频率越高,波长就越短,因此5GHz信号的波长显然要比2.4GHz信号的要短,而波长越短的电磁波穿透力就越强.(2.4G波长≈12.5cm 5G波长≈6cm) ②因为波源的震动频率不同,所以会有不同频率的电磁波. ③有关电磁波的频率与穿透力的关系.理论上,频率越高,穿透力越强,所以5g比