我们经常会遇到需要寻找一个最优方案的问题,也即最优化问题。我们首先对实例和问题做一个区分。在本课程中,不失一般性地,当我们在做一般性讨论的时候,都假定所讨论的最优化问题是最小化问题。
定义1.1-1 (最优化问题的实例) 一个最优化问题的一个实例是一个二元组(F,c),其中F是一个集合,c是从F到实数集合的一个映射,称为代价函数。问题要求找出一个f∈F ,使得对于所有f∈F ,都有c(f)≤c(y) 。这样的f称为全局最优解,或者简称最优解。
定义1.1-2 (最优化问题) 一个最优化问题包含该问题的所有实例。
可以这么说,一个实例是给定了输入数据的,而一个问题则是实例的集合。所以当我们在面对生活中一个具体问题的时候,我们一般是面对一个问题的实例。
最优化问题可以自然地分成两类:一类是连续变量的问题,另一类是离散变量的问题。具有离散变量的问题,我们称它为组合的。在连续变量的问题里,一般地是求一组实数,或者一个函数;在组合问题里,是从一个无限集或者可数无限集里寻找一个对象——典型地是一个整数,一个集合,一个排列,或者一个图。一般地,这两类问题有相当不同的特色,并且求解它们的方法也是很不同的。对于具有离散变量的问题,从有限个解中寻找最优解的问题就是组合优化问题。
定义1.1-3 (组合优化问题)组合优化问题研究从一个包含有限对象的集合中,找出一个最优化的对象。
例1. 最基础的旅行商问题(Traveling Salesman Problem,TSP问题)是指给一个带权无向图G=(V,E),在G种找出一条权值最小的Hamilton路。Hamilton回路是从图中某个点出发经过图中所有节点并回到出发点的路,限制条件为图上所有的顶点必须且最多经过一次。
TSP问题是一个典型的组合优化问题,图1.1-1表示了旅行商问题的输入和输出。其输入是一个带权的无向图,其中的任意一个Hamilton回路均是该问题的一个研究对象,并且能保证有有限个数的研究对象,最优化的对象是其中边权值最小的那一个对象。其输出就是用某种方式表述的最优对象。
图1.1-1 旅行商问题
TSP问题又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。它的应用场景为,一个商人想要去n个城市推销商品,如何走最短的路去周游各个城市,最后回到出发点。除此之外,旅行商问题在现实生活中的货物装配、路径规划、订单派送等问题上又很广泛的应用。
例2. 最大团问题(Maximum Clique problem)也是一个经典的组合优化问题。若图G=(V,E)的一个顶点集合C中任意顶点与C中其他顶点都相邻,则称C是G的一个团。最大团问题即找G中点数最多的团C,使得G中任意C’, 均有|C|≥|C’|。
最大团问题中,图G的任意一个团为该问题的一个研究对象,由于G中的顶点集合是有限的,因此最大团问题的研究对象是有限的,最优化的对象是点数最多的团。最大团问题可以应用在社交网络,蛋白质结构分析等。图1.1-2表示了一个社交网中团的一个应用,若一家广告公司想要找一某博主打广告,那么找几个极大团的交点投放往往可以在节省成本的同时覆盖到更多的人。
图1.1-2 社交网
例3. 顶点覆盖问题(Vertex Cover Problem)是在图G=(V,E)中找一个顶点的集合L使得图中任意一边e=uv中至少一个顶点在L中。图1.1-3中左右两图均为一个顶点覆盖。最小顶点覆盖问题是在G中找一顶点集合L使得|L|最小。图1.1-3中左图和右图中标红点对应的集合皆为一个最小顶点覆盖。
图1.1-3 顶点覆盖问题
最小顶点覆盖问题也是一个经典的组合优化问题,图G的任何一个顶点覆盖L均为组合优化问题的研究对象,是有限的,最优化对象为顶点数最少的L。
最小顶点覆盖问题也有很广泛的应用,例如道路监控,网络连接失败的监控分析等。其中连接失败的网络监控问题可以通过计算最小顶点覆盖集合,来判断如果摆放最少的网络监控器来监控网络中所有边的连接状况。
例4.命题逻辑的可满足性问题(Propositional Satisfiability,SAT)是经典的组合判定问题,给定一个命题逻辑公式,SAT问题要求判断是否存在一组变量的指派,使得公式为真。变量的任何一组指派都是该问题的一个对象,因为变量个数有限所以对象也是有限的,使得命题逻辑得到满足的一组变量指派则是问题的一个最优化对象。
SAT问题在电路设计、时刻表的设计等实际问题上有很广泛的应用,有关SAT问题的详细内容将在后面的章节进行介绍。
通过以上4个比较经典的例子,有助于帮助我们理解什么是组合优化问题。除此之外,组合优化问题还有顶点着色问题、路径规划问题、时间表排布、调度问题、资源分配等组合优化问题。但是一般组合优化问题都是复杂的、难求解的,下一节中讲详细探讨这个问题。