离散优化模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法2(穷举法):不难看 出,酋长嫁女儿的不同 方法只有六种。比较所 有可能的嫁女儿方法, 酋长即可找到能获得最 多财礼数的嫁法(总财 礼数为57),显然,这 是穷举法
什么是算法??
问题:是指对一类实际问题的数学模 型的总称。在问题中一般总包含着若 干个参数,给定这些参数,就给出了 这一问题的一个实例。为区分起见, 今后我们一般将用D来记某一离散模 型问题,用I来记离散模型问题的某一 实例。
N
Nlogn N3
10
33 103
100
664 106
1000
9966 109
2n
1024
1.27×1030
1.05×10301
N!
3628800
10158
4×102567
P问题和ℙ类:一个问题如果被设计出求解它的多项式算法, 我们就认为它不算太难,且已基本上被解决。对它的任何 实例,我们都可以用计算机来求解并找到答案。我们把这 类问题称为P问题,即多项式时间可以求解的问题。P问题 全体构成一个集合,记此集合为ℙ类.
,
n(n 1) f1 (n) 算法1的计算量最多为: 2
算法2的计算量最多为:
f 2 (n) n log2 n
f 2 (n) t2 C
设计算机每秒可作C次比较,则算法1与算法2整理a1, a2,…, an所用的 时间分别为
f1 (n) t1 C
若n=100万,C=100万次/秒,则t1≈5.8天,而t2≈20秒。 可见在解较大规模的整理问题时,算法2明显优于算法1。
匈牙利算法的计算量为 O(n )
如果存在一个多项式P(n) ,对问题的任何一 个规模为n(例如有n个变量)的实例,求解 此实例的计算量均不会超过P(n) ,则称此算 法为多项式时间算法,并认为这种算法是好 算法(当然,多项式的次数越低越好),匈 牙利算法就是一个次数较低的多项式时间算 法。
3
规模n的近似值 算法要求的计算量 10 100 1000
1 2 1 2 3、两分图的最大权匹配问题: (两分图)一个图的顶点集合V如果可以被剖分成为两个非空子集 V1和V2 , ,位于同一子集中的顶点之间没有边相连,仅在两顶点分属不同子集时,它们 之间才有可能有边相连,这样的图被称为两分图。如果分属两个子集的顶点之间 均有边相连时,该图被称为两分完全图。 匹配:两分图的边集的一个子集被称为匹配,如果该子集中的任意两条边均无公共的顶点 两分图最大权匹配问题:给定一个两分图,在图中的每一条边上赋一个权使之成为网络 。求由该两分图生成的网络中具有最大总赋权值的匹配问题被称为最大权匹配问题。 例如,前面讲过的酋长嫁女儿问题就可以表示成为最大权匹配问题的一个实例。
酋长嫁女儿
非洲某酋长国的酋长想把自己的三个女儿嫁出去。 记他的三个女儿为A、B、C ,现设恰有三位求婚者, 记他们为X、Y、Z(这是标准形式,在一般模型中女 儿数和求婚者人数可以不同)。每位求婚者对A、B、 C愿意支付的财礼数视其喜欢程度的不同而不同,
A、B、C
X Y Z 5 26 3 27 10 28 (矩阵中的元素 1 4 7
酋长嫁女儿问题的数学模型为:
max cij xij
n i 1
s, t xij 1
x
j 1
Байду номын сангаас
n
ij
1
xij 0或1
上面的数学模型中中包含了一些参数:数n和矩阵 C
nn
在给定n及
Cnn
后我们就得到了问题的一个实例,例如,前面提到的问题 就是它的一个实例。那么,什么是算法呢?算法是为 求解问题而设计的方法,对问题的任意一个实例,算法 都应该能求出其相应的解来。 酋长嫁女儿问题的学名叫指派问题, 指派问题具有一些特殊的性质,存在着由匈牙 利数学家Konig提出的简便解法——匈牙利算法
离散优化模型
问题:给定n个实数a1, a2,…, an,要求将它整理成 由小到大排列(或由大到 小排列)的顺序:b1, b2,…, bn,b1≤ b2≤…≤ bn。
取出a1, a2,…, an中的 最小者,令其为b1。从a1, a2,…, an中去除b1,在余下的 n—1个数中选出最小者,令 其为b2,…,一直进行下去, 直至最后得到b1, b2,…, bn。
为求婚者i娶j愿付的财礼数)
问酋长应当如何嫁女儿,才能获得最多的财礼(从总体上 讲,他的女婿最喜欢他的女儿)。
(算法1)(贪婪法):
如果酋长采用类似于拍卖的方式将女儿一个 个地嫁出去,在嫁出每一个女儿时,将她嫁 给当前财礼出得最高的求婚者,并遵守一夫 一妻制的原则,这一方法被称为贪婪法或贪 心法(注:拍卖会上采用的就是贪婪法)。 根据这一方法将有:C嫁给Y,B嫁给X,A嫁 给Z,酋长得到的总财礼数为34。 分析:算法1的最大缺点是它没有求出最好 的结果,事实上,只要将C嫁给X,将A嫁给 Y,将B嫁给Z,则酋长可以得到的总财礼数 将增加到57。
几个经常遇到而又较为简单的P问题
1、线性规划问题:1947单纯性算法(指数算法),1979哈奇杨椭圆算法 (多项式时间算法)。椭球算法的实用效果还不够理想,如何设计线性规划问题 的较好算法,仍是当今数学研究中的重要工作之一。可见,P问题并非简单问题的 代名词。容易与困难是相对而言的 2、最小生成树问题:给定一个连通图G(V,E),其中V为图的顶点集合,E为图的边 集。先解释几个数学上的名词。图中不包含任何子圈的连通子图被称为一棵树,图 中包含边数最多的树被称为该图的生成树。给图的每一条边赋一个权,赋过权的图 被称为网络,求网络中具有最小总权的生成树问题被称为最小生成树问题。
离散模型除了可用优化形式表达以外,也可被表示成为等价的判定形式
NP问题和ℕℙ类:一个问题被称为是NP问题,如果对 它的每一个答案为“是”的实例可以在多项式时间 里被验证答案是否正确。 NP问题全体也组成一个集合, 此集合被称为ℕℙ类,不难证明ℙ ⊂ ℕℙ,(多项式时 间可求解,当然多项时间可验证)
ℙ = ℕℙ 吗?
(算法1)
容易看出,为了排出b1, b2,…, bn,算法共作了 次比较
n(n 1) 2
算法2 : (用归纳法定义) 步0 b1←a1 步1 设已排好b1,…,bk (1≤k<n), 将按两分法比较的方式把ak+1排 入其中,先与最中间的数(或最 中间的两数之一)比较,…,直 至确定 应在的位置。 若b1≤…≤bi≤ak+1≤bi+1≤…≤bk,令 (b1, b2,…,bk , bk+1)←(b1,…, bi, ak+1, bi+1, …, bk)。若k+1<n, 令k ← k+1,返回步1。
V V V且V V
最大流与最小费用最大流问题
最短路径问题
邮递线路与一笔画问题:(七桥问题)
无向图上的中国邮路问题
NP难问题举例: 1、哈密顿圈问题 2、旅行商问题:完全图中的最短Hamilton圈 3、多旅行商问题(TSP with a girlfriend) 4、集装箱问题——Bin—packing:有一批待装箱的物品J={p1,…,pn},pj的长度 为l(pj)。现有一批容量为C的箱子(足够数量),要求找到一种装箱方法,使 得所用的箱子数最少 5、(排序问题—Scheduling) 用m台机器加工n个零件,对零件的加工可以提出各种不同的附加条件,希望 排出一个加工顺序(或时间表),使在某种衡量标准下所求得的加工顺序为最 佳。
NPC问题既然不太可能有多项式时间算法,那么,当我们遇 到这类问题时又该怎么办呢?首先,我们应当看清我们要做 的事究竟是要寻找问题的算法呢还是只需要求解该问题某一 实例的解。例如,假如我们希望设计多旅行商问题的算法, 那么该算法应当能用于求解多旅行商问题的一切实例,假如 我们只希望找到某灾情巡视的最佳方案,那我我们要解的只 是多旅行商问题的一个实例而已,此时我们还可以试试自己 的运气,说不定可以得到较好一些的结果 如果我们的目的是要设计一个NP难问题的算法: 1、寻找有一定使用价值的非多项时间算法, 2、放弃求最优解,用降低精度要求来换取时间,求一个较好的结果 ,它虽非最优解,却能在较短时间(多项式时间)里求得,即设计 多项式时间的近似算法(或称多项式时间近似方案)。