论算法的发现(I)– 组合优化的基本方法

数 学 杂 志 (J. of Math. PRC)
Vol.14(1994) No. 3. Page 436-444
收稿日期:1993-01-08

摘要 -集合表示具有规定性质 的集合。 -对象是指具有规定结构的 -集合。 -集合本身是具有空结构的 -对象。

组合最优化的问题 是指: 对于每一个 -集合,从其诸 -对象中找出 -优者。 以最小生成林问题、平面凸壳问题及整序问题(§§2-5)为实践背景,对于问题XYZ的一个实例 , 把集合 -子集合的全体记作簇 , 把这些子集合的 -优 -对象的全体记作簇 , 把实例 -对象(可行解)的全体记作

当问题 是第一类优化问题,规定 以及 是两个具有单位元素构成的带(band)。 把三个簇 , 合在一起,记作 ,叫做实例 解带(solution band), 问题 的所有实例 的解带构成这问题的解带簇

,算子 是一个同态映射,当 -对象是空结构时,不但有 而且算子 还是一个投影算子。

利用解带的几何直观,探索实例的精确解,有三种求解思路:添元章法、同解章法与枚举章法。

关键词 第一类优化问题;解带;投影;三种求解章法

组合优化是研究有限集合上各种优化问题的学问。

-集合表示具有规定性质 的集合。 -对象是指 具有规定结构的 -集合。如把若干个实数排成非减序列就是这实数集合的一种结构。 -集合本身是具有空结构的 -对象。

组合优化中的任一问题写作问题

定义 1 问题 是指:对于每一个 -集合,从其诸 -对象中找出 -优解。

在一个具体的 集合 中寻找它的 对象 的任务叫做问题 的 一个实例 叫做集合 (关于问题 )的优化对象、优化解或解。当是空结构时, 还叫做优化集合。

能够用以解决每一个实例的、具有准确步骤的方法叫做问题 的一个算法。

对于空结构的 -对象,定义 与组合最优化的定义 (马仲蕃 1988) 相一致。 因此,组合优化包括组合最优化。它还包括计算机科学、计算几何、排序论等等的许多问题。

组合优化的理论研究的中心内容是解问题,包括发现算法、研究问题之间、算法之间以及问题与算法之间的各种关系。

系列文章《论优化问题的公理方法(I)一(V)》(秦裕瑗 1993)讨论了这方面的问题。本系列文章作进一步的探讨, 尤其着重探求所谓的算法的算法,即对于某些问题类,寻求系统的、统一的程序,以发现求解某具体问题的种种方法。

本文将讨论:组合优化的基本特征(§1),从三个具体问题(§§2—5,最小生成林问题、平面凸壳问题与整序问题),引申出解带(solution band)概念(§6)。 从几何直观,提出从 的投影概念。导出了求解第一类组合优化问题的三种方法:添元章法、同解章法与枚举章法。 最后,提出一个设想,能否用篇法、章法、法与算法四个层次来系统地整理、概括并发展某些熟知的算法。

基本概念

直接从问题 的定义出发,考察它的实例 的特征。

-对象叫做实例 的可行解,其全体叫做可行域,记作 。把每一个可行解看作一个点, 是一个集合,把每一个可行解看作是对象,则 是一个族。

可行解 有一个 值,它常常通过目标函数 算得一个实数值,设 。 那些在集合 上的最优的可行解的全体记作 ,叫做 的优化集合,于是 在条件 规定了 opt 是指取最大或最小,显然有:

:集合 有唯一的子集合 与之对应,写 非空当且仅当 非空。

优化集合 的每一个元素 的一个优化解。若 ,还有

设目标函数的构成与集合 无关,即无论可行解 在那一个集合 中, 目标函数值 不变,例如 是赋权图中某个边子集合, 的基数,或 的诸边的权之和。 确实有不少优化问题的目标函数是随 而改变的,不过本系列文章将不涉及后一种情形。

作为整体,它的非空子集合 作为局部,有一个简明直观的经验之谈:

  • 整体的最优解在局部也最优。

这是说,若 ,则 。 其实,还有 。因为当 ,竟然有 ,应有: 从而 。矛盾。

把这事实叙述为

最优化原理 若整体有若干个最优解在局部之中,则它们是局部所仅有的最优解。

用符号表述为

最优化原理 ,且 。若 ,则

由这原理,即得(秦裕瑗 1993)

定理 1( ,则

定理 2(

定理 3

推论

定理 4 成立的充要条件为 成立。

以上是对实例的可行解集合的情形讨论的。

(秦裕瑗 1993)中所述,有不少组合优化问题,其实例具有如下性质:

(i) 对于问题 的实例 ,集合 -子集合 也能构成一个实例

(ii) 集合 及它的 -子集合 总有其唯一的子集合作为它的优化集合,分别记作

(iii) 非空当且仅当 非空。

,则

因此,这类优化问题,同样有

性质 (ii) 有一定的局限性,若优化解 总是唯一的,则说涉及目标函数的参数是规范的。 规范化是一种技术,它能在改变有关参数的值或标记方法之后,使优化解唯一,且这个优化解相当于未改变之前的诸优化解中的一个。 许多优化问题都是能够规范化的。

在讨论 -对象时,补充规定:

(iv) 之间进行交、并、补、差等运算时,结果首先是一个集合。如果结果具有明确规定的结构,才具有结构的意义。

例如 都是集合, 则具有结构的意义。

为了统一地讨论这些问题,我们作

定义 2 是含有有限个元素的论域,由集合 构成的 -子集合的全集记作 :

: ;

: 若 ,对于任意 ,有

: ,则
则说 是一个 -簇。

定义 3 -簇 上,算子 满足条件:

公理 1( 有唯一的( -对象) 与之对应。

公理 2( 非空当且仅当 非空。

公理 3(
则说 是簇 上的第一类优化算子。

定义 4 对于问题 的每一个实例 ,我们把集合 -子集合的全体作为簇 , 以及把 -对象(可行解)的全体作为簇 。 若能把求解实例 的任务与簇 集合上的第一类优化算子 相对应,则说问题 是第一类优化问题。 还把前者说作子集合型的,后者是可行解型的。

当目标函数 与可行域 所选子集合无关,问题 总是可行解型第一类优化问题。

下面讨论三个第一类优化问题。

最小生成林问题的一个提法

最小生成树问题,即问题 ,是熟知的。它的实例 有赋权连通图 , 边 的权记作

首先,最小生成树一般并不唯一,但把权相等的那些边 用三元组 作为权, 并以字典序排序,权就规范化了,解是唯一的。

第二,设 -图 是赋规范权的简单图,它的连通分枝数为 。我们建议,不讨论问题 , 而讨论 ,即最小生成林 (minimum spanning forest) 问题,这是指,实例 -图 中, 在诸 -生成林中,寻找权和最小者,记作 。当然若 =1,两个问题一致。 这样解,可以更方便地讨论问题:一个简单图 的一个生成子图 总有它的 , 而连通图 的一个生成子图 不一定有

第三,如果给定的图 本身就是一个林,那末 -MSF,即 ,就是 本身,即

现在把问题 写成如下形式:实例 -图

: 是简单图,连通分枝数为

: 边集合 赋有规范权,
在诸 -子图,

: 每一个都是 -生成林
中,求 -优者:

: 生成林的值等于林的诸边的权之和,

: 值以小为优。
求得的 叫做 的最小生成林。

问题 (以及问题 ) 是可行解型第一类优化问题。

对于赋规范权简单图 的一个生成子图 ,如果含有圈,则圈的权最大的诸边中,按 字典序最后一条应予删去,从而不属 ,即对于 ,有 于是 成立。所以,问题 也是子集合型第一类优化问题。

最小生成林问题的解

对于问题 的实例 有三个特征。首先,它是图 的一个生成子图,其次,它是一个生成林; 第三,它的连通分枝数等于 。因此, 涉及到三个图簇,一是图 的生成子图的全体,记作簇 ; 二是 中的生成林的全体,即那些满足条件 的图 ,记作簇 ; 第三是是簇 -生成林的全体,记作簇 。显然有

含有 个生成子图。以子图所含边数为参数, 被分成 层, 最高层是第 层,只有一个元素,就是图 。而空图 在最底层,是第0层。根据 -生成林的特征, 中每一个图都含有 条边。所以它们都在第 层,所求的解 就在这一层里。

关于子图间的并运算,如果 ,定义 ,则 是一个带(band), 即 是一个具有零元素的交换半群,且是 -幂等的(即 )。

关于子图间的包含关系, 是半序的,称为半序集合

从不同的观点考察同一个 ,可以设簇 ,集合 ,半序集合 以及带 等等。

中的最小元为空图 ,在第0层,而最大元 的最高层。

关于并运算, 不是带 的一个子带。然而,对于 ,我们定义 不难证明,集合 是一个带。

中每一个元素 是赋规范范数的简单图。它唯一地对应 中的元素 ,一个 。而图 当然属于 。它的 (即 )就是 本 身,即 。这表明,算子 具有投影的特征。

因为当 ,总有 。所以 中每一个元素 在 带 中有相同的投影 ,即有相同的 -最小生成林, 从而集 可利用 进行划分。

总之,对于问题 的实例 有带 和带 , 算子 是从 的一个同态映射: 不仅如此, 还是一个投影算子。

平面凸壳问题

凸壳问题是离散型计算几何的中心问题之一,它不仅有广泛的实际应用,也是求解许多表面上互不相关的问题的一个有力工具。

仅是为了达到我们的目的,限于讨论平面凸壳(planar convex hull)问题,即问题 。这是指, 求包含平面有限点集的最小凸多边形,叫做凸壳。等价地,在点集合中找出这样的凸子集合 (即以其作为顶点集合能围成一个(闭)凸多边形域),含有所给的点集合。凸壳是唯一的。

问题 的实例 可以写成下面形式:设有 -集合

: 是平面点集合,

: 是有限的,
在诸 -子集合

: 是凸集合,
中,求 -优者:

: 由 -凸集合 围成的凸多边形域记作 ,规定 的值为

:值以小为优。
求得的 叫做 的凸壳。

对于点集合 ,它的子集合的全体记作簇 ,那些凸子集合的全体记作簇 ,而 的所有可行解, 即凸集合,记作 ,显然有

,是一个带, 也是一个带,其中 算子在 之间是一个同态映射。

因为 的凸壳为 ,集合 的凸壳就是 本身。因此, 是带 中的 在带 中的投影, 是一个投影像子。

问题 显然是可行解型第一类优化问题。它还是子集合型第一类优化问题。因为 , 当 时,属于 的点不会属于 ,所以有

排序问题

排序(sorting)问题同题 ,是指:把有限互异整数排成递增序列。

这是计算科学中应用最广、研究最深的问题之一。

把整数集合 排成一个序列 ,记作【 】或 【 】。采用符号【 】,以便参加加运算。若 是递增的,于 是

例如

问题 的实例 可以写成下面形式:设有 -集合

: 诸元素 为互异整数。

: 为有限。
在诸 -对象

: 它的元素不重复地取尽

: 结构是排成一个序列,
中,求 -优者;

: 序列【 】 的目标函数值为

: 值以大者为优,
求得的 】 叫做 的整序。

所以,问题 是一个组合优化问题。

把集合 的子集合全体记作簇 ,对于 ,有唯一的整序 (递增序列) 。 这种整序的全体记作簇 ,集合 的所有排列(可行解)记作簇

问题 显然是 ( 上)可行解型的第一类优化问题。它还是子集合型的第一类优化问题。 因为 有唯一的整序 是指两个递增序列 , 合并成一个递增序列,显然有

是两个带。 算子 在它们之间是一个同态映射,但是 之间没有包含关系,也没有投影概念。

优化问题的解答与求解的三个算法

以上述的三个问题为实践背景,来讨论一般性问题。

设有问题 的一个实例 ,对于集合 -集合的全体记作簇 -对象的全体记作簇 的可行解的全体记作簇 。总有

对于(子集合型 \可行解型)第一类优化问题, 是两个带。 算子 是从 的一个同态映射:

对于非空结构 -对象 (例如整序问题), 之间没有包含关系。对于空结构 -对象 (如最小生成林问题与平面凸壳问题),则有 这时,同态映射 还是一种投影,即 的解 是带 中的元素 在带 中的投影。因为有

无论 -对象的结构是否非空,把三个簇 合并, 记作 。叫做实例 的解带 (solution band)。

问题 的每一个实例有一个解带,所有实例的解带构成问题 的解带簇。

求解实例 ,即求出 ,是我们目的。解带的几何直观性提供了几个求解的思路,称为章法。

第一种算法是在带 中如何从确定的、已知的空集合 出发找出 。在(秦裕瑗 1993)的文 (II)等中已讨论过:若 ,记作 利用公式右端,有多种方法来求解 。所有这些统称为添元章法,最基本的一种是生成法:作 于是 针对§§2-5的三个问题,对于集合 (依次当作赋规范权简单图/平面有限点集合/有限互异整数集合), 作出含有 个元素的子集合 (生成子图/点子集合/数的集合)的 优的 的 -对象( - /凸壳/递增数列), 于是 是所求的优化解( 的凸壳/ 的递增数列)。 具体化到这三个问题,得到相应的生成算法。

对于问题 的实例 ,如果把诸边按其权的递增性先排成一列。再用生成法,得到一种改进,是熟知的 Kruskal 算法(1936)。

的右端两两相加,而得分治法,也不难应用来求解上述三个问题。

第二种算法是从确定的、已知的集合 出发。沿着什么途径到达 。 第一种仅限在带 之中,这时 只能是空结构。

是带 的一个子带, 只是它的零元素是 。这时 ,即簇 中每一个集合 都与 有同解。

一种求解 的方法是在簇 中设计一个序列 其中

问题 的破圈法 (管梅谷,1975),问题 的 Hadwiger-Debrunner算法 (1984) 都属于这一类。

对于问题 的一个实例 ,除了 之外,还可能有众多的实例与实例 有相同的解 。 把所有这种实例记作 ,叫做实例 的同解实例簇。 实例 与实例 都在其中。于是可以像 那样, 在 内设计出求解方法。这时无需有 与/或 。 这两种方法统称为同解章法,在(秦裕瑗 1993)中已经作了初步讨论。几种叠代法以及离散型动态规划方法都属于此。

第三种是在可行解集合 中找出优化解 ,即求解 求解的基本方法是枚举,以及由之发展起来的隐枚举法、分枝定界法,规划论法、凸多面体法以及本系列文章将介绍的对称差(的)分解法等等, 这里统称为枚举章法。

以上讲的三种章法都是求精确解的,统称为精确篇法。

写一本内容丰富的书,总纲之下,分篇、章、节、段、句,以示层次,并以节为基本单位。 组合优化涉及面很广,有众多的求解方法。为了表达这些方法清楚些,有必要在总纲之下,也分层别类。 我们建议,分四个层次;篇法,章法、法和算法,而以法作为基本单位。 对于第一类优化问题的求解方法,至少有四个篇法。精确篇法、近似篇法、启发篇法和随机篇法。 在精确篇法下,至少有三个章法:添元章法、同解章法和枚举章法。 添元章法又有生成法、分治法、层次法等等。 一个具体的优化问题,它本身有其具体的术语,概念与表达形式,有其特征(如平面性、欧氏距离、非负性等), 还有相应的计算方法,数据结构的成果等。 借助所有这些,把上面讲的篇法、章法与法应用过来而得到的方法以及其改进,统称为求解这问题的算法。

本系列文章中,把篇法、章法、法与算法作为专门术语,而把方法、解法这两个词作为一般名词。 让它们带有某些含糊之处,便于行文。至于问题这个词既是专门的又是一般的。

事情发展到某种程度以后,人们也许有一天手边开始有一个不断需要完善的“提纲”。 用它来帮助人们判断一个崭新的组合优化问题属于那一类。 果然在“提纲”之内,人们就可以按部就班地探求各种算法。 还用它来帮助人们整理熟知的问题的许多算法。 “提纲”可收到纲举目张的效果,“提纲”成了“算法的算法”。这也许是一个梦思,却是值得追求的。

致谢 1993年5月作者访问新疆大学与兰州大学教学系,与张福基、郭韦琦两教授讨论过程中得到启发, 从而建立了解带和投影这两个概念,引发了这篇文章,特此致谢。

秦裕瑗. 1993. “组合优化问题的公理方法(i)-(III).” 应用数学.
马仲蕃. 1988. 中国大百科全书 数学卷. 数学卷. 中国大百科全书出版社.

No comment found.

Add a comment

You must log in to post a comment.