You are on page 1of 270

沁公、名竺

;二
‘‘‘;“次泛
杏泛‘之
书之之
论之之‘
“5湮泛
汉拉;公奋
全七‘
‘艺,
论岛沁决
凶全么空‘
“个匕二
艺,
冰 ̄ 汾论
之‘会;三
、艺‘“以喇

最 优 化 方 法
中国科学院数学研究所运筹室 编

科 等 必 瓜 私
1 9 8 0


5 兄又2 汉尾又只5 2 只兄司尼v 外况e 兑5 2 又砍习欢芍介饮下2 巧终2 从只5 2 又砍闷心奋乃况味2 5况万只5 砚又又万夕荞可又弓火 二
又之从兄5 2 二
饮二弓砚;
内 容 简 介
本书介绍运筹学方面的一些常见的方法和典型实例. 全 书共三
章. 第一章线性规划 ,主要是介绍单纯形法和对偶单纯形 法以及常见
的两个应用问题 , 即运输问题和分派问题的解法. 此外 ,
还简单介绍了
割平面 法和遍数 法. 第二章图与网络的方法,以运输问题为背景,着重
介绍 了主要矛盾线方法、 一 笔画方法、最大流与最小费用流间题的解 法
和图上作业法等 . 第三章非线性规划,只介绍其 中一部分方法,
本 书可供高等学校数学系师生以及运筹学工作者参考使用.

最 优 化 方 法
中 国 科 学院 数学 研 究 所 运 筹 室 编

科 4 峨 瓜 朴 出 版
北京朝阳门内大街 137 号

中国0 1 院印剧J-印刷
新华书店北 京发行所发行 各地新华书店经害

198 0 年 7 月第 一 版 开木 : 787 x 1092 1/ 32


1 98 0年 7 月第 一 次 印 刷 印 张 : 8 1/2
印数 :0 00 1- 14 ,920 字数 : 190,000
统 一 书号 :13031 ・1297
本 社 书号 :1800 . 13- 1

定 价: 1 .05 元

当人们有某一任务需要完成时,往往存在若千种不同的
方案可以达到预定的目标. 在这些方案中。哪些方案好,哪
些方案差,哪些方案合理,哪些方案不合理,这是人们关心
的问题. 要回答这些问题,首先应该确定依据什么标准来比
较,这就涉及到建立所谓的目标函数; 其次,需要考虑什么方
案是合理的,也就是说,在当前条件之下是许可的, 这就涉及
到建立所谓的约束条件. 有了目标函数和约束条件,如何以
适当可行的方法寻找出所要的最优方案,这就涉及到创建所
谓的最优化方法. 在本书中我们介绍一些最优化方法. 当问
题的目标函数和约束条件已经确定之后,这些方法有助于我
们在各种可容许的方案中寻找出最优的或较优的方案. 至于
如何建立 目标函数和约束条件的问题,即我们通常所说的塑
模问题,不在本书讨论之列.
将种种不同的方案加以比较,以确定哪些方案好,哪些方
案差,哪些方案合理,哪些方案不合理, 这类问题可以说是自
古有之. 今昔不同的是: 过去在作出判决时,人们往往借助
于经验和直观,而最优化方法则是在实践经验的基础上加上
科学的推导,也就是说,尽量以数字来回答问题.
读者可能会问: 这样一种方法为什么迟至近代才得到迅
速发展呢? 一种新生事物的出现,常常是因为客观上有此需
要,而当时条件又能给以某种满足. 当生产过程所涉及的因
素不多时,或者当生产过程本身所起的变化是在缓慢地进行
时,
对于生产中出现的问题,决策者根据 自己的经验往往会得
出较好的解决办法. 但当向题所涉及的因素很多时,或者过
程的变化很迅速时,人们就会感到经验不足,或者甚至无经
验可言. 近代工业中的生产问题,
例如大型车间的设计、
一些
精密复杂的工具(例如空间运载工具)的设计等等,所涉及的
因素很多,有的是数以万计. 这时,单凭经验和直观的分析,
就很难得出最优的方案. 在这种情况下,一个方案是否选择
得当,在经济方面往往会带来巨大的后果. 因此,最优化方法
是适应近代工业发展的需要而发展起来的.
最优化方法的发展与电子计算机的出现和发展有着密切
的关系. 因为电子计算机的使用,使得许多大型复杂的计算
问题能够得到解决. 最优化方法与计算机之间的密切关系,
也可以从最优化方法本身反映出来. 实际上,目前的最优化
方法大都具有下述两个特点:
1) 是数字计算方法,
而不是分析方法;
2) 是具有简单逻辑结构的、
能进行反复使用同样的算术
运算的方法.
当然,目前的最优化方法也有着很大的局限性. 首先,

塑造数学模型时常会遇到困难,例如,
有的因素难以用量的关
系来刻划. 在数学模型已经建立之后,如果所涉及的数学式
子很复杂,所涉及的因素很多,在计算上也会出现许多困难,
因此,假若能将实践经验与理论相结合,使得主要矛盾比较容
易地被抓住,尽量少去考虑不甚重要的因素,这样,就可省去
大量不必要的计算. 在这方面 ,
我国的工人、技术人员、干部
在广泛应用和推广优选法中积累了不少经验.
近代的最优化方法是在四十年代才出现的. 虽然历史不
久,
但是发展却非常迅速,应用范围愈来愈广,方法愈来愈多‘
在本书中,我们选择一些常见的方法加以介绍. 其中有的方
法在国内已经得到大量应用,有的方法还没有经过我们亲身
的实际检验. 假若读者在阅读本书之后,能根据我国的具体
情况,结合 自身的经验,使书中某些方法得到有效的应用,那
就是对我们工作的莫大支持和鼓励.
本书内容分为三部分: 第一部分是线性规划 (即目标函
数和约束条件都可用线性函数来表示). 主要是介绍单纯形
法和对偶单纯形法以及线性规划中常见的两个应用问题,即
运输问题和分派问题的解法. 此外,还简单地介绍了整数规
戈I]中的两种解法,即割平面法与遍数法.
第二部分是图与网络的方法. 图与网络是运筹学中近年
来迅速发展起来的一门分支,它的应用涉及到运输、工程、借
助计算机搞设计等等. 本书以运输问题为背景,着重介绍了
主要矛盾线方法、
一笔画方法、最大流与最小费用流问题的解
法和图上作业法等.
第三部分是非线性规划,即目标函数和约束条件中至少
有一个用非线性函数来表示. 这里只介绍其中一部分方法.
这个方法最近几年在最优设计等方面应用甚多. 当问题的目
标和约束都没有明确的数学表达式时,一般着重于用直接最
优化方法(或优选法). 由于我室已编有 《优选法》(科学 出版
社出版)一书,其它兄弟单位也写了不;少这方面的书,这里就
不再单独介绍了.
最优化方法除上述三部分外,还有动态规划,
最优控制等
等,
本书也不介绍了.
本书是集体写成的. 参加编写的司志有许国志、应玫茜、
田丰、马仲蕃等. 由于我们的水平所限,谬误一定不少,请读
者批评指正.
中国科学院数学研究所 越民义
目 录

第一章 线性规划 ・
............................................... 1
5 1. 实例・
・・・
・・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
,・・
・・・
・…… I
' 2. 数学描述・
・・・
・・・
・・・
・・・・
・・・
・・・
・・・
・・・
・・・
・・・
・… … ,
・・・
.・・
・・..・
・..… … 3
' 3 . 单纯形算法・
・・・
・・・
・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
............…… 11
' 4. 对偶单纯形算法・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
..............…… 29
' 5 . 运 输问题和 分派 问题 的算法 ・ ・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・・
・…… 41
5 6. 整数规划・ ・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・.・
.…… 6。
第二章 图与m 络的方法 ・
...................................... 75
' 1. 图与网络的基本 概念 ・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・…… 7,
5 2 . 树和最小部分树 ・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
..・
..・
..............…… 80
5 3 . 最 短路问题 和主要矛盾线方法・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・…… 85
5 4. 一笔画 和奇 偶点 图上作业 法・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・…… 97
5 5 . 114络最大流问题・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
・・
..・
...........…… 102
5 ‘. 网络最小费 用流问题・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・...…… 124
' 7. 网络的分析与合成・ ・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
… … 153
参考文献 ・ ・・
・・・
・・・
・・・
・・・
・・・
・・・
・。・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・……, ・
.…,・170
第三章 非线性规划 ・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・……171
5 1 . 引言 ・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・… … 171
5 2. 一个变量的极值间题・
・・・
・・・
・・・
・・・
・・・
・・・
・・
・・・
・・・
・・・
・・・
・・・
・・・
…… 174
' 3 . 多变量无条件极值问题・
・・・
・・・
・・・
・・・
・・・
・・
・・・
・・・
・・・
・・・
・・
・・・
・…… 185
5 4 . 条件极值问题(一 )・
・・・
・・・
・・・
・・・
・・・
・・・
・・・
・・
・・・
・・・
・・・
・・・
・・・
・・・
… … 210
' 5 . 条件极值问题(二 )・ ・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・… … 239
参考文献 ・ ・・
・・・
・。・
。・・
・・・
・・.....・
............. ....................…… 261
第一章 线 性一规 划

' 1. 实 例

线性规划渊源于生产实践,因此在生产实践中有很多问
题是它的研究对象. 现在仅举几个典型实例.
1.配料问题 在这类问题中可以举出汽油混合问题作为
代表,这个问题是线性规划的最早应用之一 我们知道汽油
是由原油提炼的. 不同的原油具有不同的化学性能,不同用
途的汽油又有着不同的指标要求. 例如飞机用的汽油就在某
些指标上比一般汽油要求严格得多. 由于各种产品的指标要
求多种多样,所以炼油厂根据设备技术条件和原油供应情况,
通常是提炼几种标准汽油,
然后将这些汽油适量混合,
必要时
加进一些化学药品,
以便达到实际产品的指标要求.
满足这些指标是任何一个混合方案必须满足的条件,这
是有关产品规格的要求,是有约束性的. 因此这些条件称为
约束条件.
通常符合指标要求的混合方案不止一个,当然我们希望
采取最好的方案. 比较方案的优劣就要有一个衡量标准. 这
个标准根据情况的不 同而异, 例如当某一种产品特 别 需 要
时,使该产品产量最大的方案就是最好的方案. 或者根据当
时情况,某一种标准油的库存较少,
那末使该种标准油用量最
少的方案就是最好的方案. 自然还可以根据其他经济指标或
技术指标来衡量优劣. 这种优劣的衡量,是表达我们所追求
的目标,通常可以用一个函数来描述,因此这个函数就被称为
. 1
目标函数.
这样,汽油混合问题就可以归结为寻求一个既符合产品
的指标要求和标准油供应情况(也就是满足约束条件)而又按
某一既定衡量标准达到最优(也就是目标函数取极值)的混合
方案.
现在来看第二个问题.
2.运输问题 这是线性规划中历史最久而又最著名的问
题. 在大跃进期间,我国运输工作者和运筹学工作者相互协
作,在这方面有很好的创造,这些成果将在网络问题一章中加
以介绍.
这个问题是这样的. 例如有几个产粮区分别有 若干吨
粮食要运出去,同时有几个大城市分别要运进来 若千吨粮
食. 这样就要制订一个调运方案. 在制订方案时,首先要满
足供需要求, 也就是产粮区待运的粮食要都运出去,而大城市
所需数量的粮食要都运进来. 这就是约束条件. 满足供需要
求的方案很多,自然我们希望制订一个总运费最小的方案.表
达这个总运费的函数就是 目标函数. 这样,运输问题就可以
归结为制订一个既满足供需要求(也就是满定约束条件)而又
使总运费最小(也就是目标函数取极小值)的调运方案.
现在来看第三个问题.
3.分派问题 例如有 n 种不同规格的产品要分派在 n 台
不同性能的机床上进行加工. 如果加工是同时进行的话,那
末每个产品只能而且必须分派在一台机床上,同时每台机床
只能而且必须加工一种产品,这就是分派问题所必须满足的
约束条件. 显然满足这个要求的方案是很多的. 由于产品的
规格不同和机床的性能各异,因此每一件产品在不同机床上
的工时定额就不一样. 我们希望制订一个加工时间总和为最
小的方案. 分派问题也是线性规划中的一个重要问题.
从上面三个问题中,
我们可以看出线性规划的一个概要.
总起来说,
就是要制订一个方案:
(1) 它既满足一些必须满足的条件,这些条件称为约束
条件;
C2) 它又能使一个既定的目标达到最优,
表达这个目标
的函数称为目标函数.

'2. 数 学 描 述

当我们用线性规划来求解一个实际问题时,我们必须把
这个实际问题用适当的数学形式表达出来. 在这个表达过程
中,
首先要明确哪些是变量,哪些是已给常数. 以后我们将用
Xi3 y,3 U1 。
‘或者 w ‘
来表示变量,
而用 a;,b1, c,或者 a;,
来表
示已给常数. 然后将实际问题 中的一些规律或关系,用数学
表达式来加以描述. 在能用线性规划求解的实际问题中,这
些数学表达式就是线性等式和线性不等式,而目标函数也是
一个线性函数. 这样,线性规划就可以定义为:
具线性等式和(或)线性不等式约束的线性函数的极值问
题,其变量恒要求为非负.
现在我们将结合第一节中所提到的三个 问 题 来 加 以 讨
论. 由于运输问题较易于陈述, 故先予讨论.
仍以粮食调运为例.设有 m 个产粮区分别有al,a2.,...,am
吨粮食待运,有 ,个大城市分别要运进 b1, 姚,… ,b。吨粮
食;而每吨粮食由产粮区 ‘到大城市 i 的运费为心 元. 由于
调出量、调进量和运费都是给定的,所以“,b;,心 C= = 1,
2,… ,m ; j二 1, 2, ..., 心 都是常数二当供需平衡时,我

们必须有总调出量等于总调进量,
亦即艺 a‘
一艺 b;. 制
i= 1 i 二1
汀调运方案就是要确定每一产区应向每一城市调运多少吨粮
食,因此在方案未制订前,这些都是未知数,我们用 xii表示
产区 云向城市 1 运送的粮食的数量,以吨计. 这样,变量和常
数就都明确了,其次 ,看看调运问题中的一些要求和衡量标
准 . 要满足城市对粮食的需要,我们必须有

艺 xi,
二bi (j一1,2,…,。
).
0 将产区待运的粮食都运出去,
同时由于供需平衡。
我们得到

艺 x。一“
‘(i  ̄ 1,2,… ,、).

此处 xii是变量,本来可正可负,
但其实际意义是产区 i 运往
城市 1 的粮食的吨数,因而它不能是负数,至少是 0(即意味
着产区 i 不向城市 1调运粮食). 也就是说
xii) 0 (i ̄ 1,2。… ,m ; j = 1,2,… ,n),
如果运费di,不依所运粮食的多寡而有所变动,那末 diixi, 便
是由产区 1 调运 xii吨粮食至城市 i 所需支付的运费;而总运
费便是

x。
一艺 艺 diixii.
i= 1 i = 1

这样 ,
整个运输问题便可表达为

min x。一艺 艺 diixii


i= 1 f = 1

并满足下列约束条件

艺 xii ̄
i= 1
。‘ (i  ̄ 1,2,… ,。),

艺 xii二 bi (j 二 1, 2, … ,。),

xii ) 0 (i 二 1, 2, … ,,;1 二 1, 2, … ,。
)。
, 斗
此处“和b,
均为正数,
且有艺 。
*一乏二b;,‘,也是正数.
i= 1 i = 1

现在来看分派问题,它与运输问题颇有相似之处. 设有
,种不同规格的产品要分派在 ,台不 同性能的机床上进行加
工. 设 心 为产品 i 在机床 i 上的加工工时定额,并设变量
xi;有下列含义:
i) xi,只取两个数值 。或 1,
ii) 当 xi; ̄ 1 时。表示产品 i 分派在机床 i 上加工; 当
xi; = 0 时, 表示产品 i 不分派在机床 i 上加工.
于是我们有

艺 xi,
一 (、一1,2, …,,

表示产品 1 分派且仅分派在一台机床上加工;

艺 xi,
一 (7 = 1,2,… ,,

表示机床 i 有且仅有一个产品分派在它二加工 ; 而 。台机床


加工时间总和为

x。
一叉 艺 di;xi;,
于是分派问题就可以写为

mi。二
。一艺 艺 d、

x;,
I= 1 i = 1

并满足下列约束条件

艺、
才= 1
(9一 1,2,… ,。),

艺,

i= 1
(i二 1,2,… ,n),
,‘
,二0 或 1 。= 1, 2, … ,n;j = 1, 2, … ,,
).
在这里,我们看到了分派问题和运输问题的一个显著区
别. 这就是在运输问题中,我们仅要求变量 xii为非负,即
xii) 0; 而在分派问题中,则要求变量 x;i仅取 。或 1 两个数
值. 通常当变量要求为非负整数时,
我们就称之为整数规划,
在以下的有关章节中,将专门讨论这种类型的规划. 但在分
派问题中,从理论上可以证明: 下列问题

mi。二
。一艺 艺 diixii
并满足下列约束条件

艺 xi,
一1 (j一1,2,…,,
),

艺 xii
i = 1
(i 二 1,2,… ,n ),

xii》 0 (Z  ̄ 1,2,… ,,;i 二 1,2, … ,n),


存在着一个解 对,
,它取值 。或 1,并使目标函数达到最小.因
此作为一个数学问题来求解时,我们就完全可以把分派问题
表达为后一种形式(即用xri) 0,而不是用xii = 。或 1 来作
为约束条件之一).
最后来讨论汽油混合问题, 这里要牵涉到一些业务知识,
因此我们用一些具体数字,以便于叙述和理解.
汽油混合问题,如前所述,就是在满足产品的指标要求和
标准油供应的情况下,最优化一个既定的目标函数, 例如可以
是要求某 一种产品的产量最高. 因此我们先谈一谈产品的指
标要求. 通常飞机汽油有两个主要指标: 即点火性能和挥发
性能. 点火性能影响到油气混合比,因而也就牵涉到飞机起
飞时的马力以及正常飞行时每单位数量的汽油能飞行的里程
等问题. 这个指标通常用“辛烷数”来表达. 挥发性能则牵涉
到汽油沸腾和蒸汽封锁等问题,
这和飞行的安全有很大关系.
这个指标通常用蒸汽压力来表达.
现在某炼油厂有四种标准汽油,设其标号为1, 2, 3, 4;
需要供应两种飞机汽油,其标号为 1, 2. 标准汽油和飞机汽
油的规格要求分别列表如下。

表 1 .1

飞机汽油 } 辛 烷 数 } 蒸汽压力(克/公分2) 生 产 指标

不小于 91 不 大于 9 .96 x 10-z 越 多 越 好

不 小 于 100 不 大于 9 .9 6 x 1 0- 2 不少于 2 50 ,000 升

表 1 .2

标准汽油 辛 烷 数 蒸汽压 力( 克/公分2) 库存量(升)




10 7 .5 7 .1 1 火 1 0 - ' 380 ,000

} 9 3 .0 11 .38 X 10-1 265 ,200

8 7 .0 5 .6 9 X 1 0 - ' 408 ,100
1 0 8 .0 2 8 .4 5 义 1 0 - ' 130 ,000

现在定义下列变量:
Xi = 飞机汽油 1 中所用标准汽油 i 的数量(升),(1  ̄ 1,
2,3, 4) ;
x4+‘二 飞机汽油 2 中所用标准汽油 ‘的数量(升),(i=
I,2,3。、).
这样,X,+ x2 + x3十 x;便是飞机汽油 1 的总产量,
从而
我们的 目标便是
m ax xo  ̄ x, + x2 十 x3 + x4.
至于约束条件,我们先看有关库存量和产量指标的约束
条件. 具体如下:
x5+ x6+ x7+ x8》 250,000,
x, + X 5( 3 80,000,
x2 + x6( 2 65,2 00 ,
x3 十 x7 镇 408,100,
x、十 x8 簇 130,000 .
当然这些 x、代表混合时所使用的标准汽油的数量,也必然是
一个非负数,所以有

x; ) 0 (i  ̄ 1,2, … ,8).
现在再来看有关辛烷数和蒸汽压力的约束条件.
在化学中有一条“分压定律”, 可叙述如下: “设有一混合
气体,由 ,种气体组成. 令混合气体的压力为 尸,所 占总容积
为 V ,各组成成份的压力及其所占容积分别 为 P1, ..., Pn

及。
1, …,。
。,则PV 一艺 p;vi.”
利用这条分压定律可建立
有关蒸汽压力的约束条件如下:
根据表 1.2 飞机汽油 1 的蒸汽压力应为
7.11X 10-2x,+ 〕
1.3 8 X 10-2x2+ 5.69X 10-2x3+ 28.45 X 10'2x4
xi + 勺 十 x3 + 介

但根据表1.1所列的规格要求,这个蒸汽压力不能大于 9.96 X
10-2,因此有
7.11x,+ 11.38x,+ 5.69x, + 28.45x. ,_ __
— — x2 十 x3 十 x 4
X, 十 哭 ,.,。

经过整理 ,

2.85x :一 1.42x2 十 4.27x: 一 18.4 9x4 ) 0 ,
由于飞机汽油 2 的蒸汽压力相同,
所以有
2.85x,一 1.42x6 + 4.2 7x7 一 18.4 9x8 妻 0.
关于辛烷数的考虑相同,因此有
16.5x1 + 2.Ox:一 4.0x3 + 17.0x4 ) 0,
7.5x,一 7.O x。一 13.0x, + 8.Ox8 异 0 .
这样。汽油混合问题就可以归结为:
m ax xo = x 1 + x2 + JC3 + x4
满足约束条件
x 5 + x6 + X 7 + x8 ) 2 50,000 ,
x1 + x 5簇 3 80,000 ,
x2 + x6 成 26 5,200 ,
x3 + x7提 408,100,
x4 + x8 镇 13 0,000 ,
2.85x,一 1.42x2+ 4.27x,一 18.49x4 李 0,
2.85x5 一 1.4 2x6 + 4 .2 7x7 一 18.49x8 ) 0 ,
16.5x1+ 2.Ox:一 4.0x3+ 17..Ox4) 0,
7.5x ,一 7.Ox6 一 13.Ox7 + 8.0x6 妻 0,
xi) 0(i 二 1。2,… ,8).
上述的第一个问题和第二个问题,是线性等式约束的线
性函数的极小值问题,其变量要求为非负 ;而第三个问题是线
性不等式约束的线性函数的极大值问题,其变量亦要求为非
负. 因此,这三个问题都符合于本节开始时所给出的线性规
划的定义,
现在有下列三点注记:
1) 当在某些问题中,实际情况并不要求某一变量 x‘为
非负时,我们可设 x;- y',一zi,并将其代人目标函数和约束
条件,这时 y‘和 z*都可要求为非负. 因此在以后讨论算法
时,
我们恒设有“ 非负”约束条件, 即xi) 0.
2) 关于目标函数. 上述三个实例中的前两个是 m in x0,
后一个是 m ax xo. 从算法的观点,
这也不是本质的区别,因为
我们可将 m ax x。写为m in ( - x0), 因此当讨论算法时,
恒考虑
m in x o,

3) 当在某些问题中,除 “
非负”约束条件,
即 xi) 0 外,
尚有其他不等式约束,如在汽油混合问题中. 这时恒可将其
转换为等式约束, 方法如下。
设有一不等式约束条件:
ai1x1+ ai2x2十… + ainxn 成 ai,
则我们加上一个变量xn+1,使其化为等式
ai1x , + ai2x2+ … + ainx。十 xn+1 = ai,
显然,此处 xn+1 必为非负. 若有
ai1x1 + a i2x2+ … + ainxn ) ai,
则我们减去一个变量 ‘+:,而使其化为等式
ar1x1 + ai2x21 … 十a inx,一 x n+1 “ ai,
显然,此处 xn+:亦为非负. 这种“
加上”或“
减去”的变量 xn+1
称为松弛变量. 在某些情况中,这种松弛变量的物理意义是
很明显的. 例如在汽油混合问题中,有关飞机汽油2 的生产
指标的约束条件本为
x5 + x6 + x7 + x8 》 25 0,0 00,
当我们减去松弛变量 x,后 ,
就化为等式
x 5 + X6 + x7 + x8 一 x 9 = 2 50,000 ,
这里 x,便代表超指标的产量. 又如关于标准汽油 1 的库存量
的约束条件本为
X, + x5毛 3 80,000 ,
当加上松弛变量 x1。后,就化为
X1 + x5 + x1o “ 38 0,0 00,
这里 xI。代表混合后,标准汽油 I 的库存量.
最后还要说一点,就是在以后讨论算法时,关于目标函
数,我们常写为
m in xo一 bo + clxl+ … + Cnxn,
此处 b。是一个常数,因此对求解,毫无影响. 加上 b。是为了
在计算过程中,以致形式上能趋于一致,
便于处理. 但这个 bo
也并不是没有实际含义,例如在汽油混合问题中,这个 b。
便
可理解为在制订该混合方案时,该厂在某一季度内,已生产的
飞机汽油 1 的累积产量.
这样,任何一个线性规划问题就都可以化为下列标准形
式:
m in x。二 bo + c,x,+ czx21 ・""1 Cm+nxm+n (2.1)
满足约束条件
a ilx, + ai2x:十 … 十 a i}m -V-nxm -l-e
 ̄ bi (i 二 1,2, m ), (2.2)
xi ) 00 二 1,2,(2.3) ’
一 。 一十n).
最后介绍两个名词,可行解和最优解. 满足约束条件的
解称为可行解. 使 目标函数取极值的可行解称为最优解.

'3. 单 纯 形 算 法

在这一节里,
我们将介绍求解线性规划问题的一个算法,
称 为单纯形算法.
先看一个数值例.
fl 1 m in二
。二0 + 20x,
一 立二
,一工,,+ ‘
,,‘
,tl
斗 2
满足约束条件

一 6x1 十 — x2 一 朴 十 x4 十9x7 二 0 ,

,。 , 1 1
一 I 乙x l 十 — x 2 一 一一 x 3 甲
十x5 + 3x7 ̄ 0, (3.2)
2 2

+ X6 二 1
xi) 0 (1 二 1,2,3,4,5,6, 7). (3
11
一 我们可以按照中学代数里求解线性联立方程的方法来试
图寻求一个可行解. 例如,可以把 (3.2) 中的变数二,
3 x23 x5.7
x7移项而得
。 。。 1 _
一 x 3 rt x4 = u 十 25x 1 一 -一 x 2 一 9 x 7,

八 , ,, 1 _ ,_ 、
X3 = u 十 I G x 1 一 一 x 2 一 x 5 一 5 朴 , X 5 .4 夕

x3 + x6 = 1.
然后把 (3.4) 看作变数为x3, x4J x。的三元联立方程组. 求解
后,得
x3 “ 0 一 24x1 十 x2 + 2x5 + 6x77


;一。一16x,
十立x2十2x5一3x7, (3.约
xb = 1 + 24x1 一 x2 一 2x 5 一 6x7,
若在 (3.5) 中,
令 x1二x:二 x、二x7 ̄ 0,则得 x,二 x4 二0,
x6 = 1,从而得一可行解. 但这个可行解是否就是最优解,还
需进行检验. 检验的方法如下: 利用 (3.5) 消去目标 函数
(3.1) 中的变数 xg, x4.1 X6,而得
x。
一。+ 32x1一二x2一二
,+ 3x7. (3.6)

在 0 .6) 中,x:的系数是负数,
而现在的可行解使 x2二 0. 如
果存在着另一个可行解,仍有 x1一 x5一x7二 0。但 x:为正
数,则将使 目标函数值下降. 因而还不能肯定现在求得的可
行解就是最优解. 例如,可将 (3.5) 的最后一个方程中的x2
和 x。相互移项而得
x2 = 1 十 24x1 一 2x5 一 x6 一 6x7
然后利用这个方程,消去 (3.力 中其余两个方程中的 x2,而得
x2 二 1 + 24x 1一 2x5 一 x6 一 6x
x3二 1 - x6, (3.7)
3 . , . 1 3 15
x4 = 一 卞 Z X 1 -r 一 介 一 一
4 2 斗 丸一 2
这种由 (3.约 变换为 (3.7) 的运算,称为旋转运算,在以
后的计算过程中, 将重复使用这种旋转运算.
现在若在(3.劝中,令二
、 ̄ x5 ̄ x6== x,
二0,则得x2=
x3一1,x4一立,

从而也得到一个可行解. 此时,如利用
(3.为 消去 目标函数中的 x2, x3, X4,则得

。一一互+ 2x1+ 三二

,十互二
。十丝x7. 2 4 2
(3.8)
在 (3.8) 中,所有变数的系数都是非负数: 而约束条件(3.3)
又要求所有变数均为非负,因此从 (3.8) 得知目标函数值不

能小于一丁. 而现在的可行解(xl一0,‘
,一‘
3一1,“一
三,x。

一二。
一x,
一。)确使目 标函数
-- -
取值一二
- - 一
,因而这个可
4 -
行解就是最优解.
从这个例子的解题过程中,可以略窥.单纯形算法的思路
的痕迹. 整个过程分为两个阶段. 第一阶段是寻求一个可行
解. 当求得可行解后,如经过检验,它还不是最优解,则转入
第二阶段. 第二阶段,
是从第一阶段中所求得的可行解开始,
经过旋转运算进行调整,以求得一个新的可行解. 如果仍旧
不是最优解,
则重复进行调整.
在 '2 中已指出,任何一个线性规划间题都可以化为下列
标准形式:
m in x。二b,+ clxl+ c2x2 + ・
..+ c.,+,x,.+, (2.1)
满足约束条件
ailxl+ ai2x2 + … + ai,m+..*rm+.  ̄ bi (i 、 1,2,… ,,
,),
(2.2)
xi) 0 (j= 1,2,
…,。-+-n) , (2.3)
我们知道,所谓可行解,就是满足方程(2.2) 和不等式(2.3)
的解. (2.2), (2.3) 和代数里的线性联立方程组极为相似, 所
不同的是: i) (2.2) 中的变量的数目多于方程 的数 目; ii)
(2.3) 要求解为非负数. 关于 i), 我们已经指出:可以从 ,+ n
个变量中选择 n 个变 量,比 如 说 ‘+1, xm+2
将其移项而得一个。元联立方程组,如能求解,则求解后

Xi二 况 十 a抽m+l+ a知m+2+ … + a¥¥,xm+,

(,二 1,2,… ,。). (3

在例 1 中,这就是由 (3.2) 变换到 (3.5) 的过程. 此时 ,
(3.9) 中若 b; > 0(s = 1, 2, """ , m ) ,则已得如下的可行解:
xf  ̄ b,(,二 1,2,… ,。) ;
xs 二 O(S  ̄ m + 1, m 十 2, … ,,
,+ ,).
问题是,当 况 不全为非负时, 应如何处理. 例如 bj < 0 (, 二
1, 2, … ,t); b, ) O (s = i + 1, i + 2, … ,。). 此时可
以考虑一个辅助的线性规划问题,其目标函数是 (3.9) 中的
第 ‘个方程,而约束条件是 (3.9) 中的第 1 十 1 个,第i 十 2
个,… ,
第 。个方程,亦即
m ax x, ̄ bi + ailxm+l+ ai2xm+2+ … + ainxm+n
满足约束条件
x¥ _ 时 + a,lxm+l+ a,2xm+21 … + 。
二,‘十。
(,二 i + 1,i + 2, … ,。) ,
xi) 0 (j = 1 + 1,£+ 2,・ … 。+ ,
) .
由于 况 ) 0 (,二 1 十 1, i + 2 ,一 ,m ),所以对于这个辅
助线性规划问题, 已可求得一可行解,如尚非最优解,则进人
第二阶段. 当求得最优解后,若其目标函数值 xi < 0,则原
给问题无可行解, 否则便能得一满足 (2.2) 的解,其非负的 xi
至少增多一个. 此时若仍有非可行解, 则重复上述步骤.
这基本上就是整个算法的思路. 以下将给出具体步骤.
在求得 (3.9) 后,可利用 (3.9) 以消去目标函数 (2.1) 中
的X1.1 x25 … ,x。而得
x。一bo + C1xm+1+ C;xm+2+ … + Cnxm+n. (3.10)
在单纯形算法中,常将 (3.9) 和 (3.10) 列如表3.1,这种类型
的表称为单纯形算法表.

表 3 .1

xo x , x, xm +1 x m+z

C1 C,

0 一 1

x ,} 一h m 0 ・
・. 一1 a认, a篇2

对于这个表可以这样理解,即将表中的任意一行与表上方的
1,xo., x17 … ,Xm } xm +1, xm+27 ・二 ,xm +n,
逐项相乘,然后将 x;的各项相加,并令其相加之和等于常数
项,便得 (3.9) 或 (3.10),只不过是 x*和 b 相互移项而已.
以后的计算将根据此表进行.
在例 1 的计算过程中,已指出以后将重复使用旋转运算 .
所谓旋转运算, 就是从 (3.9) 中选择一个方程,
例如
x‘二 bi + ailx,

+1+ … + ainxm+i+ … + ainxm+x,
将其中的 x‘和 xm+i相互移项并化为

Xm+,
一牛(一bi+ 二
‘一ailxm+l- ・
一 ainxm+n).
a ii

然后利用 (3.11) 以消去 (3.9) 中其余方程中的 ‘+i. 显然,


此时必有a;;铸 0,我们称 a;,为旋转元. 当将这个运算移译
到按表 3.1 进行运算时,
便有下列旋转运算法则.
旋转运算法则 当以ai,为旋转元时:我们将表3.1中ai,
所在之行记为R (旋),其余各行分别记为R (x:) (: * i),并
将旋转元 a;,
标以* ,
以资识别.
(一) 将表3.1中R(旋)的每一项都乘以共 ,得到新表
一 a ii
的第 i 行.
(二) 将表3.1中R (旋)的每一项都乘以 a斗,然后将其
一 a ii

各乘积与 R (x,) 的各对应项逐项相加, 以得新表的第 ! 行.


(三) 将表 3.1 左方的x、 改为 ‘+i,其余不变.表上方的
1, x0, x1, … ,xm 7 x-+1, … ,Xm+,的排列顺序也不变.
现在给 出算法的具体步骤.
第一阶段. 从规划问题的标准形式开始,
寻求一可行解.
若求得可行解 ,
则检验其是否为最优解.
步骤 1.1 考虑约束条件 (2.2) 中的第一个方程. 若
all二a12= .・
一。l,m+n 0 0,而 b1钾 0,则方程自相矛盾,规
划问题无可行解,算法结束.
若在 all, a12, … ,al,m+。中至少有一个不是 。,不妨假
设。
11今 0,则可将其化为:
x;一鱼一些介一八._ a,,-土
二二。
十。. (3.12)
召11 召11 口11

然后利用 (3.12) 以消去(2.2) 中其余方程的 x,而得 。一 1


个新的方程;并将 (3.12) 移至最末一行,得到一个新方程组.
对新方程组重复上述运算,则或者在过程中证明无可行
解,
或者在 、次运算后 ,

x‘二鲜+ a,lxm+l+ 旅xm+2十… 十a,,xm+n
(, ̄ 1,2,… ,m ). (3.9)
然后利用 (3.9) 以消去目标函数 (2.i) 中的 xl, x2, ...s xm:-

x。二bo + C lxm+1+ C2 xm+2+ ・ - Cr um+n" (3.10)
将 (3.9) 和 (3.10) 列如表 3.2,转入步骤 L Z.
步骤 1.2 检查表 3.2 中的 从,从,, 介, b认
若 m in (b飞,瓦, … ,b氛) ) 0,则转人步骤 1.4,
若 m in (b呈,bZ,… ,b;,) < 0。则转人步骤 1.3.

表 3 .2

翔一
一 。 xo x , x, ・” 介 x i+ 1 … x ,,, x ,,,十1 .‘ xm +i .“. x m 十.

朴一
一 州 Ci 二“ Ci .‘
. ‘.

一一 !几
, … aii … a二
一 1 … 0

一川

一左+ 一1 … 0 城十,
, ;+1,
,… a;十:,

一bum ・
.・一1 a,, … a认, … am

步骤 1.3 根据假设,
表 3.2 中的 况 不全为非负. 不失去
一般性,
可设 b二< 0(,二 1, 2, … ,i),而 b二) o f,二i+ 1,
1 + 2, … ,。). 现有下列三种情况.
i) bi < 0,但 a;,
< 0 (,二 1, 2, … :,
。).
由于场十
1,x.+2.…,踢+,
均要求为非负,
从而二
‘不可能
大于b;。规划间题无可行解,算法结束.
ii) bi< 0,且存在一个 aii > 0, 以致 a二
,) 0 (,二 i1 1,
i + 2,… 。。).
此时以 aii 为旋转元,对表 3.2 进行旋转运算而得一新
表,
转人步骤 1.2.
iii) 鲜< 0,存在着 a;=> 0;但对于所有这样的列,均有
m in (ai+1,t, ai+2,t, … ,amt) < 0.
此时设aij= m ax (a;i, ail, … ,ar
ain). 考虑表3.2 中 a=}
所在之列,不失去一般性,可设
m ax (ar:+1,j, a=+24, … ,ai+,,i) < 0
( m in(ai+9+jj, ai+Y+2,i, … ,ar
a.j).
现在令

再址,
一 (典远,
续远,
…厂
a i+ q ,j
b;土
乙),(3.13) \ a i+ 1,i a i+ 2,j a i+ 9 ,i r

则以 ai+q,,为旋转元, 对表 3.2 进行旋转运算,


而得一新表,

入步骤 1.2. 当 (3.13) 中取极大值的项不唯一时, 例如
bi+。二 …  ̄ bi+t
a i+ q ,i a i+ w ,j

n la x
(李七,
华乙,
…,华乙、

\ a i+ l,1 a i+ 2,j a i+ y ,i /

则在 。
ri+q,i, … ,aJ+w,1中任取一个作为旋转元.
步骤 1.4 检查表 3.2 中的‘ ;,… ,弓,,
二,C t.
若m in 11, … ,‘ ;,… ,‘
功 > 0,则已得最优解:
Xs _ 况(,二 1,2 - … ,。);
X,二 0(,二 m + 1, m + 2, … ,。+ n).
否则转人第二阶段.
第二阶段. 从第一阶段所求得的可行解,
经过旋转运算,
以求得一个新的可行解,
以期目标函数值有所下降.
步骤2.1 在表 3.2 中,::= m in (c …,
弓,…,
Crj) < 0,
不失去一般性,可设
m ax (ar
aii, arzi, … ,a=j) < 0
毛 m in (a,+i,i, a,+z,in … ,a i). (3.14)
此时有下列两种情况.
i) 在(3.14) 中,t二0.
此时,
最优解不存在,
算法结束. 这是因为,若令 ‘+人

0,当几等j,而xm+,为任一正数,我们均得一可行解; 但当
xm十,无限增大时,则目标函数值就无限减小,
因而最优解不存
在.
li) 在 (3.14) 中,t > 0
此时令
下 . =
a 1夕
m ax
(b
ali一
ab",i・
…b
ai'i (’


”,
则以 aii为旋转元, 对表 3.2 进行旋转运算,而得一新表,
转人
步骤 1.4. 当(3.15) 中取极大值的项不唯一时,
鲜 例如

蜘〔 .

, - -一 一
"峋
了 ‘ 姚 勃
-一 max !



ali 一
;峋
则在召
:,
,一 ,awi中任取一个作为旋转元.
这就结束了具体计算步骤的叙述,
现在仍用例 I 为例,

行演算.
例1 min二
。一。+ 20x,
一立二


一工二


+ 6x7 (3.1)
满足约束条件
一8x,
十工x,
一二,
十二。 + 9x, = 0,

‘, 。 1 1
一 1L x 1 -r — x2 一 — X3 + X5 + 3X7 = 0, (3.2)
2 2

X3 + X6 “ 1
xi ) 0 (j = 1,2, 3, 4, 5, 6, 7), (3.3)
第一阶段.
步 骤 1.1. 对 (3.2) 中的第一个方程进行处理,

八 . 1 1 . I . 9
x l ̄ u -r — x2 一 — x 3 -r — 和 ,一 — x 7,
32 8 8 8

将上式代入其余二方程以消去 x,后 ,
得新方程组如下:

1 3 一一
— x2 t x3 一 -一 x 4 t X5 2 x7“ as
8 2

x, 十 x6 “ 1,

1 1 . 1 X
x1= u -I- - - x 2 一 — x 3 - -一 X 4 月尸 一

32 8 8

重复上述运算,

x,
一一三十上二
8 2
4一一x。

十 x6+ 丝工
7,
x2  ̄ 一 8 十 12x; 一 8x5 + 8x6 + 84 x7, (3.16)
X3 “ 1 一 X6.
利用 (3.16) 以消去目标函数中的 x1, x2, x3而得
xo “ 一 2 + x4 十 X 9 + 2x6 + 18x7 (3.17)
将 (3.16) 和 (3.17) 列如表 3.3.
表 3 .3

1 xo X , X , X , X4 X5 X 6 X7

x o 2 一1 0 0 0 1 1 2 18

x,
; 。 一1 。 。 生

_生



15

x 2 8 0 0 一1 0 12 一8 8 84*

x 3 一 1 0 0 0 一1 0 0 一1 0

步骤1.2.表3.3中,拭一一三,‘一一8,所以转人步

骤 1.3.
步骤 1.3.在表’
3.3 中出现情况ii),故以84 为旋转元。而
得表 3.4. 转入步骤 1.2.


骤1.2・表,

‘中・ b‘
一鑫・所以
再转入 步骤‘

,・

骤1.3・在表3.4屯本可应用情况ii),以命或
20
3/28 为旋转元,但为了叙述情况iii) 的运算:故考虑对应于x6
的列. 此时 b7/a76 二b3/ a} 二 I 均为极大,敌从 口
;‘,a7‘中任
取一个为旋转元,现取 a,。一一兰
2I
为旋转元,
得表;.、

表 3 .4

xo x , X2 x4 x5 万‘ X ,

3 1 91 2

一 1 】
抖 一
7 一
7 一

1 1 3 1
5 6
一 1
1152 28 28 56
2 1
一 一 1 2 2 *
21 驯 一 1
7 21 21

一 1 0 一 1 _ 1

表 3 5

l 万。 工1 工2 尤3 x 4 x6

x o 0 一1. 0 上 。 一2 一 3

1 1
一 一 3 *
X , 0 0 一1 立 。 拓 8
6 斗 I6

__21
X 6 一1 0 0 上


; 一 1

, 12


一 】

步骤 1.2. 在表 3.5 中,从二0, 呱二 1, 抓二。,故转人


步骤 1.4.
步骤 1.4. ‘二 一3 ,故转人第二阶段.
第二阶段.
步骤 2.1. 在表 3.5 中, m in c; = - 3‘ 此时有
下2b .


(一鄂>1一
(一劲,
所以取一影”
旋ha ・
得表3.6.

表,.6 ,考虑x4的
一列・
此时有0・
(一3,
一0・
(一勃,

在 一1/3 和 一2 中,
任取一个为旋转元, 现在取 一1/3 为旋转
元. 而得表3.7. 在表 3.7 中,
以 xa列的 一1 为旋转元,而得
表3.8・此时mm
0<i‘一0,故已得最优解: xl一0,‘
,一1,
x3一‘
一 子・
xs- x6- x7一0・算法结束・
表 3 .6

1 xo Xi X i X3 X4 x 6 X6 X7

x o 0 一1 16 一止 。 一1 1 0 0

x 7 0 n. 16 1 _U 1* 2 。
一 吮广 分
气尸 一 二 ̄ 下: 甘 一 且
j 马 j 乡

犷6 一 1 0 56 一互 0 2 -6 一1 0

x3 0 0 一,
6 三 -1 一2 6 0 0

表 3 .7

1 工。 x1 x , x 3 万‘ 工s x6 x 7

万0 0 一1 32 一立 0 0 一1 0 3

万刁 0 0 一16 立 。 一1 2 0 一3

x6 一 1 0 24 一1* 0 0 一2 一1 一6

x 3 0 0 一24 1 一1 0 2 0 6

. 22 .
表 3 .8

l xp xl x 2 X 3 X4 x , X s

{ 3 5
x o 一1 2 0 0 0
2 4 221
_ 15

令 1 3
x4 0 2 0 0 一1
2 4 2

X 2 一 1 0 24 一1 0 0

0 一 1 0

单纯形算法的具体步骤和例题演算已如上述; 但还有些
问题需要说明. 例如,
_上述步骤会不会无限次继续下去,而得
不到结果. 从理论上说,这是完全可能的. 例如在表 3.6 中,
根据上述步骤,:;的一列中的 一1/3 和 一2 均可取为旋转元,
现在如取一2 为旋转元,
则得表 3.9. 重复下去,
则得表 3.10-
表3.13,而表3.13便是表3.5,因此,重复“
兜圈子”
而得不出
结果.

表 3 .9

1 xp x l x2 x3 x 4 x 5 x6 x,

尤0 0 一1 44 _ 二 上 。
4 2
x 7 0 0 , 一生 生 。
6 6 一下

x 6 一 l 0 0 0 一1 0
表 3 .10

1 艺。 X , X, X 3 X4 X, X6 X,

尤。 0 一1 20 _ 立 _生 0 0 0 6
4 2

X , 0 0 12 一生 上 。 一1 0 一3
2 2

x6 一 1 0 0 0 一1 〔
) 0 一I 0

表 3 .11

1 xo x, x 2 X3 X4 X, X 6 X7

x o 0 一1 -4 0 一二 3 0 0 33

x 5 0 0 一4* 0 一立 2 一1 0 15

x 6 一 1 0 0 0 一1 0 0 一1 0

表 3 12

1 尤o 丫,

x o 0 一 1 0 一 2 18

x , 0 0 一 1 。 _三



_止


145
言‘ 一 1 0 0 _ 1 一 1

一 1 一 8* 12 _ 一8 84

24
3 , 13

|州。
「 ;
川一 。
州一 634 ; 一
136
剑月 0 生
; 一1 一兰
xsl 一

1 3


5 一 一
2 - 。 21

我们知道在上述 步骤 2.1 中规定,当出现


b; 二… 二 b+
而,
/ 区 况 鱿、、
一ma X

端 一
心 -心1/

、 了

时,
则在 a,i, … ,aw,中任取一个为旋转元. 设取 a;i为旋转
元,
则在旋转运算后,-b;,...,-b;将分别变换为尽
I a ,i
,…,
-bw+ aiib,(一0) 因而旋转后所得的可行解,
其非零的
xi少于。个 (。为约束方程的个数). 这种现象称为 “蜕化”
现象. 我们也知道,若以 ‘:,为旋转元,则旋转后,一b。
便变
换为一风+ 导鲜 ,此处 ‘
:< 0, 歼,
< 0, 拭> 0. 因此当
a ri

鲜> 0 时。目标函数值严格下降。
而 当出现“蜕化”以致 鲜= 0
时,目标函数值就不变;因而就可能导致“兜圈子”. 上述由表
3.5- 3.6,表 3.9- 3.13 所构成的“兜圈子”就是这样造成的.
为了避免这种“兜圈子”现象, 我们引进“字典序”概念,并将上
述计算步骤略加修改.
所谓“字典序”就是仿照字典中汉字按其拼音字母而排列
先后的办法来定义两个向量之间的“
大小”
关系. 设有两个”
维向量a ,(a1, a2, … ,an)和b  ̄ (bl, b2, 。
二,乡
。),我们
定义: 向量 a “
字典式”
大于向量 b,若向量a 一b 二 (a:一
bi, a2一b2, … ,a,一b ) 的第一个非零分量为正数,
I 并记以
a >- b . 显然,我们可以定义“字典式”

小于的概念,并记之以
K . 当一个向量 a “ 字典式”大于零向量 0 时,我们称a 为

“字典式” 正向量,并记之以a 1-O,同样可定义“字典式”负向


量a ,并记之以a -< O.
表 3.2 中的每一行 R (x1) 都可以视为一个向量,因而可
利用 “ 字典序”来定义其行与行之间的大小关系, 并从而对上
述步骤加以修改如下.
步骤 1.1'. 同步骤 1.1.
步骤 1.2'. 检查表 3.2 中的R (xi), R (x2), … ,R (x,
),
若 R (xi), R (x2), … ,R (x ) 均为 “ 字典式”负向量, 则
转入步骤 1.斗 ‘,否则转人步骤 1.3',
步骤 1.3'. 根据假设, 表 3.2 中的R 王
(x1) 不全为“
字典式”
负向量. 不失去一般性,
可设R(x,t)}'0 (,二1, 2, … ,t),

而 R (xs)-< 0(,二i 十 1, i + 2, … ,m ). 现有下列三种情


况:

i) R (xi)?-0,但 。
:‘成 0 (t 二 1, 2, … ,。).
问题无可行解。算法结束.e

ii) R (xi) 卜0, 且存在一个 成; > 0, 以致 a ,) 0


(s= i + 1,i + 2,・二,,,).
此时以 ail为旋转元,
旋转运算后转入步骤 1.2'.
iii) R(xi)详。
,存在着。
:,
> 0;但对于所有这样的列,

有 m in (a;+i,‘
,ai+2,,
,… ,amt < 0.
此时设 air;,= m ax
ax (aairl1,,ai
r,
l, "…
".,,airn). 考虑表3.2 中喻
所在之列,不失去一般性,可设
m ax (aIi+1,,
,ai+2,,
,… ,ai+b., ),
< 0
成 m in a;+U+1,i, ai+U+2,j,一 ,Rmj
现在令R(xi旦 ̄为下列诸向量中“
字典式”
一 a i+ q ,i
最大的向量,
R (xi+1) R (xi+2) R业生之

.- a i+ 一 口i+ 2,i 一 召i+ 9 ,1

则以 。
ri+q,,为旋转元. 旋转后转入步骤 1.2'.
步骤 1.4'. 同步骤 1.4.
步骤2.1'.在表3.2 中,cj= m in (cc,… ,c … ,c )< 0,
不失去一般性 ,
可设
m ax ( ali, asi, … ,a/
ati < 0
( m in(at+i,, ,at+2,,,… ,ami)一 (3.14)
此时有下列两种情况:
i) 在 (3.14) 中,t 二0,
此时, 最优解不存在, 算法结束.
ii) 在 (3.14) 中,t > 0.

。、 、 R (xi) -., E Th I;、r ,-. r4-,+ ,' th 、,
,。+ ,。、
此时令 二竺己匕乙为下列诸向量中“
字典式”
最大的向量,
一 a ij

R (x1) R (x2) R (x7)


一 口1i — 召2, 一 a叮

则以ai,为旋转元,
旋转后转入步骤 1.4'',
这就结束了有关计算步骤的修改. 以后将称修改后的计
算步骤为计算步骤(字).
现在论证计算步骤(字)将在有限次运算后结束,即或者
证明问题无可行解或无最优解,或者求得最优解. 论证将分
下列几个问题进行 .
问题一 在步骤 2.1' 中,若进行旋转运算,则 旋 转 后,
R (xi) “字典式”
严格上升,
表 3.2 的其余各行仍为“
字典式”负
向量.
证 根据算法,
当第一次转人步骤2.1’时,R(x,) (s= 1,
2, … ,m ) 均为“字典式”负向量. 若以 ai,为旋转元,此时
R (xi)
为下列诸向量中, “字典式”最大的向量,
一 a :i

则旋转后,R(xo)变换为R(xo)+ 共 R (旋)(井R(xo)),

以二(xo)`・
字典
砰格上
升.*(敲换
为粤 (I
-<0),
其余各行分别变换为 R (xs) + a_=i_ R (旋) (,钾0 . 当 ,

1, 2, 。二,i一 1, i + 1,,"气
",t a} R(71星
.)夕R (xs)
一 a ii 一 a si

R(动十共 *(旋)交0" 当 ,二 ,+ 1,t + 2,."",


二时,

由心,
) 0,得R (x,) + 」
a件R (旋) 火0" 所以其余各行仍为
一 a ;i

“字典式”负向量. 问题一得证.
问题二 计算步骤(字)的第二阶段,
将在有限次运算后,
或者证明问题无最优解,或者求得最优解.
证 当每次转人步骤 2.1’后,或者证明间题无最优解,

者经过一次旋转运算使 R (xo) “字典式”严格上升. 若以 。 ;,
为旋转元,则根据旋转运算法则,则旋转后,表’ 3.2 左方的 xi
即换为xm+i. 若无限次地转入步骤 2.1',则在过程中, 至少有
某一个表重复出现, 但 R (xo) “字典式”
严格上升,从而导致矛
盾. 问题二得证.
问题三 在计算步骤(字)的第一阶段中,必在有限次运
算后, 或者证明问题无可行解, 或者求得一个可行解.
证 显然步骤 1.1’将在有限次运算后结束,而步骤 1.3'
的运算与步骤 2.1‘实质上相同. 故问题三得证.
综合问题二和问题三便得计算步骤(字)将在有限次运算
后结束.
现在仍用例 1 对计算步骤 (字) 略加说明. 例如在表 3.6
中,
根据原计算步骤, 对应于 x;的一列中的 一1/3 和 一2,均
可被选为旋转元; 但根据计算步骤 (字),由于 3R (x7) 二 (0,
3 _ 二 _ _ _ 、二 1 _ , 、 了、
0 . 一 16 . - , 0 . 一 1 . 2 . 0 。一 3 1 h 竺- R (x z ) 二 ! 0 . 0 ,一 2 8 ,
4 - - 一 / 2 _ \
5 1 、 , . 八\ 份,
、. ‘,, 、、
‘1 ,/ 、 ;‘

‘、,
、,
贡一言一‘
・3,0,。
)・T以3R(x,)r 言R(x,),故Fa
一1/3 为旋转元.
虽然原计算步骤从理论上不能保证过程在有限次运算后
结束, 但是实际计算经验却发现,
“蜕化”
现象经常出现,
“兜圈
子”除专为研究这种蜕化现象而特殊设计的问题以外, 还从未
发现 . 上述例 1 就是这样特殊设计的很少数几个问题之一
因此在实际应用时,我们仍可采用原计算步骤.

' 4. 对偶单纯 形算法

给定一个线性规划间题,我们可以构造另一个线性规划
问题,称为原给定问题的对偶规划,
同时并称原给定的问题为
原始规划. 在线性规划的哩论中,对偶理论是一个重要的组
成部分。在本书里不予讨论. 我们仅介绍基于 对偶规划的概
念而建立的另一种算法,称为对偶单纯形 算法.
给定一个线性规划问题,
由'3 中所给出的步骤 1.1,
恒可
将其化为下列形式:
m in xo ̄ bo + ‘
;株十,十。
2xm+2十… + cnx。
十, (4.1)
满足约束条件
x、二买十。
ilXm+1 + a沙m+2十二 十。
inx,十

(i 二 1,2, … ,n2), (4.2)
xi 》 0 (j 二 1,2, … ,m + ,). (4.3)
则我们可给出 (4.1)一(4.3) 的对偶规划如下:
m ax zo = bo+ biz,+1+ biz,+21 … + b;,zn+二 (4.4)
满足约束条件
一a1,
二,+1一aiiz,+2一・
・一 am%zn+m C ci
(1 二 1,2, … ,。), (4.5)
zn+i蕊 。 (i 二 1,2,… ,。). (4.6)
如果我们令 Y.+i= - z,+i (i二 1, 2, … ,m ),并加上
松弛变量 Y1:.Y2, ,
二,y,而将 (4.5) 化为等式, 则得
m ax y。二 ba一biyn+;一・
・一 b,nyn+m (4.7)
满足约束条件
Y i ̄ c i 一 a lly ,+ , 一 a 2iY n+ 2- . ’. 一 a m iy n+ m
(夕二 1,2,… ,,
), (4.8)
Yi) 0 (j二1, 2,一 ,,+ 。). (4.9)
于是原始规划 (4.1)一(4.3) 和对偶规划 (4.7)- (4.9) 就可以
表达如表 4.1.

表 4

xm +a … x ,,,+. 勺) 0

1 ba 成 C. 令 xo

一 Y .+ ,

一 Y.+n

一 y x+ 二

y ,) 0
现在利用' 3 中的例1 来说明对偶规划的构造方法及对
偶单纯形算法的基本思路.
从 ' 3 的表 3.5,亦即开始转人单纯形算法的第二阶段的
表,
得知例 1 可化为:
八 . 1
m in 尤。 ̄ u -r — x2 一 2 x; 十 3x ,一 3x,

满足约束条件
八 . 3 1 . 1 3
x1 一 u .十 — x 2 一 — x 4 寸目 — x5
6 4 16 8 16

1 3 2 1
xA  ̄ I + - x ,一 - x ,十 X ; 一
8 2 丁x7,
I . 3 21
xz 二 0 一 - x ,十 - xa 一 X; 十
8 2 2 x7,
xi) 0 (j = 1,2,… ,7).
按照表 4.1,则得其对偶规划如下:
m ax y。二 0 一 Y6
满足约束条件

Y1一专一634Y5一合,‘+音Y7,
Y2一2十鑫Y5十居 一
y‘一号Y7,
Y3一3一音y5一, 6+Y7,
。 . 3 . 21 21
Y+  ̄ 一j 卞 二
二 Y5 十 万 Y6 一 月
了 Y7,
i 0 2 2

Yi) o() 二 1,2,… ,7).


对于这个对偶规划,如果按照 ' 3 中所使用的方法,令 y5-
rt ,
「 1 、
y‘二 Y7,0, 贝U Y.“今,

Y2二

一2,

y。 ̄ 3,- y;二 一3 ; 此时

还不能得到一个对偶规划的可行解. 但如果从 ' 3 的表 3.8,


亦即给出最优解的表。
则例 1可化为:
5 . 0 . 3 ,5 . 21
111111 X 。一 一 — ,一 ‘x l -r — x 5 -r 一 x 6 -r — xl
4 2 4 2

满足约束条件
x2 = 1 + 24x, 一 2x5 一 X6 一 6 x7,
朴 “ 1 X 6,

3 . _ 一X 3 15
x4 — 十 2x1 十 2
4 一万x6 -2 x7,
xi ) 0 (j = 1,2,… ,7).
按照表 4.1,其对偶规划可写为:

m ax yo  ̄ 一 下 一 Y5 一 Y6 一 - Y7 (4.10)
斗 件

满足约束条件
Y1“ 2 一 24y5 一 2Y7,

一 — Y 7, (4.11)

5 二 , 3
Y3 十 Y5 十 Y6 十 - Y7,
什 斗

21
Y 4 一  ̄二. 十 。Y 5
艺 万Y7,
,,) 0(1 二 I,2,… ,7) .
此时,如在 (4.11) 中,令 Y,二Y‘二 Y,二0,则 Y1= 2, Y2=
互 ,
2 一
Y,
一三 ,Y、
4 一’
一热

从而得到对偶规划的一个可行解. 同
时由(4.10)可知这个可行解也是对偶规划的最优解. 这样,
单纯形算法的第二阶段可以概述为: 从原始规划的一个可行
解开始,经过迭次旋转运算,当一旦得到一个对偶规划的可行
解时,
则相应的原始规划的可行解即为最优解;而这个对偶规
划的可行解也是对偶规划的最优解. 这就启发我们去考虑另
一种算法: 即由对偶规划的一个可行解开始,经过迭次旋转
运算,当一旦得到原始规划的一个可行解时,这个可行解就是
原始规划的最优解. 这就是对偶单纯形 算法的基本思路.
对偶单纯形算法的出现不仅由于上述理论上的考虑,而
且由于实际需要. 我们知道单纯形算法的第一阶段,仅为求
得一可行解, 而所使用的技巧,
与第二阶段中求最优解所使用
的相同;因此有可能在某些问题中:,
为求一可行解就花费了相
当大的计算量. 我们也知道在单纯形算法的第二阶段中,每
经过一次旋转运算, 就得到目标函数的一个新的表达形式,并
且其系数仅依赖于约束条件,方程的系数而不依赖于其常数
项; 同时对偶规划的约束条件,亦仅由原始规划中的目标函
数的系数和约束条件的系数而确定. 因此,如果当我们已经
求解了一个规划问题后。 又需求解一个新的规划问题,而两个
问题的差别仅在于约束条件的常数项的不同;那末, 这时已求
得 的解答就 为新问题的对偶规划提供了一个可行解 ; 从而使
用对偶单纯形算法就能节省计算量 . 例如在汽油混 合 问 题
中,混合方案是要经常制订的. 如果标准汽油和飞机汽油的
种类和规格不变,只不过库存量和生产指标不同; 那末 ,所形
成的两个问题也仅在约束条件的常数项上有所不 同而 已.
现在来叙述对偶单纯形算法.
仍从原始规划的标准形式开始,
先将其化为 (4.1)一(4.3)
的形式,
然后为了计算上的要求,作下述处理.
(一) 将 (4.1) 改写为:
m ax(一xo)二一bo一:lxm+;一‘xrx+2一・・
一 Cnxm+n; (4.12)
并将 (4.2) 改写为:
x‘二 占:一 (一。il)xm+,一 (一ai>)x、十2 …
一(一airs)xm+n (Z 二 1, 2, … ,。). (4.13)
(二) 增加下列 刀个恒等式:
Xm+, ̄ Xm+j (1  ̄ 1,2,… ,,). (4.14)
(三) 增加下列方程式:
x 二 M 一Xm+;一xm+2- ・ 一 xm-Fnf (4.15)
此处M 是一个足够大的常数, 因此对最优解来说,x 就可为非
负. 这样,增加一个约束条件 (4.15) 就无碍于最优解的寻
求. 当然这个 M 究竟应该多大,事先并不能确定,但我们将
看到这在以下的算法中并无影响.
现在将 (4.12)一(4.15) 列如表4.2, 这个表称为对偶单纯
形算法表. 以后的计算将根据此表进行. 对于表 4.2,有下列
旋转运算法则.
旋转运算法则 当以 一心。为旋转元时,记表 4.2 中
一弓。所在之列为‘(旋), 其他各列分别记为‘ (1), c(- x,),
j * m + q,并将旋转元 一朴。标以* ,
以资识别.
(一) 将表 4.2 中 ‘(旋)的每一项都乘以 1 ,得到新
表的第 9 十 1 列.
(二)将表4.:中:(旋)的每一项都乘以车,
a 夕叮
并和‘
(1)
的相对应的项相加,得到新表的第 1 列. 将 ‘(旋)的每一项
都乘以 - api,并和:(一二
m+j) 的相对应的项相加,得到新表
a户9
的第 I + 1 列,j 铸 4.
(三) 将表4.2 的上方的 一‘+。改为 一xp,其余不变.
现在给出对偶单纯形算法的具体步骤 .
第一阶段. 从原始规划的标准形式开始,寻求对偶规划
的一个可行解,然后检查其是否为对偶规划的最优解。
步骤 1.1 考虑约束条件 臼.2) 中的第一个方程. 若
a,;二。
12- '**= a,,m-i-。二0,
而blk 0,则方程自相矛盾,原
始规划无可行解,
算法结束。
表 4 .2

一 X ,,, + 口 一 支m + n

一 x o= 一b几

x 二飞

一a,

一a p , 一aAq 一 a p甩

一 a 用I 一 a 州叨 一 口m 翔

尤m + ,今

刃m + a =

X m+ n=

若在 all,a12,,
""", a1.m+。中至少有一个不是 。
,不妨假设

,,件 。。则可将其化为:
x;一鱼一a1
-2X2- .一 a,,,,+.二
a ll a ll
,+,
. 口11
(4.16)
然后利用 (4.16) 以消去 (2.2) 中其余方程的 x,而得 m 一 1
个新的方程; 并将 (4.16) 移至最末一行而得一新的方程组.
对新方程组重复上述运算,则或者在过程中证明无可行
解,或者在m 次运算后,得
x,二 b; + aslxm+l+ as2xm+2,1 ・
一 卜asnxm十

(,二 1。2, … ,。). (4.17)
然后利用 (4.1为 以消去目标函数 (2.1) 中的 xl, x2, ..., xm
而得
xo ̄ 端+ ‘
;‘十,+ C2xm+2+ … 十‘xm+n.
将问题列如表 4.2,转人步骤 1.2.
步骤 1.2 检查表 4.2 中的 ‘ ;,‘
二,… ,‘二

若m in (ci, c?, … ,Cn ) 0,则转人步骤 1.4.
若 m in (c1, C2, … ,Cn) < 0,则转人步骤 1.3.
步骤 1.3 根据假设,表4.2 中的‘
;不全为非负,不失去
一般性,可设 ci) 0 。“ 13 2., .. .,q 一 1)而 ‘
;< 0(1 二q.,
q + 1, … ,n). 现有下列三种情况.
i) ‘< 。,但 一aiq 。 (i二1, 2, … ,。).
此时,
原始规划无可行解或无最优解,
算法结束.
ii) ‘< 0,且存在着一个 一心,> 0, 以致 一心,) 0
(i二 1, 2, ---., q 一 1).
此时以一心。为旋转元,
对表4.2进行旋转运算而得一新
表,
转人步骤 1.2.
iii) 心< 0,存在着 一aiq > 0;但对于所有这样的行,

有m in(一air,一a;2, … ,一ai,q-z) < 0.
此时设一apq 二m ax(一a,,,一。aq, … ,一amq). 考虑表
4.2 中一心。所在之行, 不失去一般性, 可设
max(一apl,一ap2, … ,一apt) < 0
簇m in(一ap,,
+;,一ap.,
t2, … ,一ap,。
一:).
现在令
Ck _ ̄ .in_ 了。 ; , 一户
Cy Cr\.
— m

i —
, ‘
,一 . .
, “
. . . —
, ,
(4.18)
a pk \a pt ap 2 a pt/

则以一。
p*为旋转元,
对表4.2 进行旋转运算而得一新表,转
入步骤 1.2. 当 (4.18) 中取极小值的项不唯一时,
例如

三k 二 . 。. 二  ̄三‘
a p左 apw
了。; ‘
; ‘; 、
一 m in 、- 7- ., 下一 , ” ’,-a 丁一 、
\ “六, “ 石, 卜 )
r 扩‘ f /

则在 一apk, … ,- ap。中任取一个为旋转元.
步骤 1.4 检查表 4.2 中的 鱿,暇,… ,b从
若 m in (bi, 暇,..., b劝 > 0,则已得最优解:
x,二 b二 (s 二 1,2, … ,na);
XS二 0 (,二 m + 1, 。+ 2, … ,in + ,).
否则转人第二阶段.
第二阶段. 从第一阶段所求得的对偶规划的可行解,经
过旋转运算,以求得一新的对偶规划的可行解 ,
以期对偶规划
的 目标函数值有所增大.
步骤2.1 在表4.2 中,b二二m in (bl, b2', … ,bm')< 0,
不失去一般性 ,
可设
max(一ap,,一ap21 … ,一apt) ・( 0
成 min(一a;,t+1,一ap,1+2,一 ,一ap,). (4.19)
此时有下列两种情况.
i) 在 。.19) 中,t= 0.
此时原始规划无可行解,算法结束. 这是因为
x。一弓十朴1xm+i+ … 1 a沁xm+q …
+ a二
nxm+.( b二< 0,
ii) 在 伪.1为 中,t > 0,
此时令
立 一min ‘
且 .丝 ..一 :立、. 自:。
a岭办石
P k \’油p
a 打1I a“P扔,
艺 a“p /

则以一朴、为旋转元, 对表4.2进行旋转运算而得一新表,转
人步骤 1.斗.,当(4.20) 中取极小值的项不唯一时,例如
以 , 鱼

, =. -一 啦

一min阵,
草,…,
一乒、
, \ ap l apt a pt /

则在 一apt, … ,- 心w 中任取一个作为旋转元.
对偶单纯形算法的具体步骤至此叙述完毕. 现在再演算
一个数值例. 我们将 ' 3 中的例 1 的约束条件的常数项改变
而得例 2.

例2 mi。二
。一。+ 20x;一立x2一生二
。+ 6x7 (4.21) 4 2

满足约束条件
- 8x,十一
14 x2- x3+ 二
; 十9x7一一1,
_ . 1 1 二 。 , / J 。。、
一 12 x , + - x ,一 -- x , 1 x , + 3 x , 二 I , ( 4 .2 2 )
2 2

x3 + x6
xi) 0 1,2,… ,7)
在 ' 3 的例 1 的演算中,表 3.8 给出最优解,此时例 1 可
化为:

minx。
一号+2x,十音x5+号x6+誓、
满足约束条件
x2 二 1 + 24x ;一 2 x5 一 x6 一 6x7,
一 x6, (4.23)
3 15
x4一母十2x,+ xs一-4 x‘
一 2 x7,
xi) 0 (j二 1,2,… 。7).
当利用对偶单纯形算法求解例2 时,(4.23) 给我们启示,从
而可节省第一阶段的计算量. 具体做法如下:
第一阶段.
步骤1.1.
将(4.22) 作为变量 X21 X3,x4的三元联立方程,求解后,

x2 二 3 十 24x1 一 2x,一 x‘一 6x7.
x3 “ 1 一 x 6, (4.24)
3 . _ 1 1弓
x4 - 一 — 十 2x1 十 一 x5 一
2 x6- -- x7.
利用 (4.24) 以消去 (4.21) 中的 x2, x3, X4,从而得
11 . 0 . 3 , 5 . 21
xo = 一 -一 ,. L x 1 ,一 — x 5 -r -一 x 6 - 1一 一 X7.
4 2 4 2

将问题列如表 4.3,转人步骤 1.2.

表 4 .3

11 、 3
一 r0幸 一犷.

艺 一
2 : 21

x 二二
二 M 1 I

X 2牛 3 一2 4 2

x 3一 1 0 0

x a= _三

_ 2* _生
2 ; 125
x ,今 0 一1 0

X 5令 0 0 一1

万6今 0 0 0

x l 弃 0 0 0 0 一 1

步骤 1.2. 检查表 4.3 的 ‘


:,均为非负,
故转人步骤 1.4.
步骤 1.斗. 检查表 4.3 中的 鲜.

此时b;一 34・
故转人
第二阶
段・
表 4 .4

一 x , 一 X 5 一 X , 一 尤,

一 x e 二二二 18

3 1 3 H 如
几r
健 一 一
8 一
2 一
、 一
8  ̄4

12 i2 一 8 一 84

X , 二二

3 1 1 3 15
澎1=
8 2 4 8 4

x 5= o u 一1 0 0

x ‘二 0 0 0 一1 0

xl_ 0 0 0 0 一1

第二阶段 .
3 _ _ 。
步骤 2.1. 在表4.3 中,从二 一 一 < 、U 列1


1 _ _ 夕0
一a41 _ 一2 < 0,
I I

一 a 45  ̄ 一 -一 < 又 U , 一 “46  ̄ 斗

15 _ 八
一 a 47 今 一 产夕 U .

lc ,

此时 -一, 一

蜘 二 1 < 5 二 3。故以 一2 为旋转元 而 得 表
a’
4.4 . 表 4 .4 已给出最优解如下:

一 音一 ‘
2一 ‘
・x4- x5-x6- 一 0.
算法结束.
对于对偶单纯形算法,
仍有蜕化从而导致 “兜圈子”的问
题 ;这也可以如同单纯形算法一样 ,利用 “字典序”来加以解
4 0
决. 在此不再重复. 现在论证下列问题.
问题 在步骤 1.3 中,当情况 1) 出现时,则原始规划无
可行解或无最优解.
证 步骤 1.3 的情况 i) 为 心< 〔 ,
,但 一aiq < 0 (i = 1
2, … ,” ;)。 此时,若将 ‘+i取某些固定值 (i 必,而将
‘+。无限增大,则目标函数 x。便将无限下降. 又若 成q > 0
(i 二 1, 2, … ,m ),则
xi 拭+ … 1 aigxm+q+ … + 蛛xm+n ) 0
(i二 1,2, … ,、),
当 x。十 。足够大时, 从而原始规划无最优解. 否则必有 ai。 二0,
不失去一般性,可设 ai;二0 (i= 1, 2, . ,t), a;q> 0
(,< i). 此时考虑方程组:
x‘二 鲜十ailxm+l+ … 十心q-lxm+。
一;
+ ai,q+1xm+q+1+ … + ai,x;.+n( t二 1,2,… ,t),
若此方程组无非负解,则原始规划亦无可行解. 若此方程组
有非负解,则原始规划无最优解. 从而问题得证.

' 5. 运输问题和分派问题的算法

我们已知运输问题有下列表达式:

mi。二
。一艺 艺 diix;i (5.1)
i= 1 i = 1

满足约束条件

艺 xi,
一a; (i一1,2,… ,m),

m‘ (5.2)
艺 x;,
一bi (j一1,2,… ,,
),
x{; ) 0 (a 二 1,2, … ,,
。; j = 1,2,… ,n), (5.3)
此处 a,和 b;都是正数,
且有

艺a,
一艺 b,.
我们也已知道,当 、二n, a;二句二1 (£二1, 2, … ,。;
j 二 1,2, … ,。
) 时,(5.1)一(5.3) 就表达了分派问题二 当
然,这两个问题,从原则上说, 都可以用单纯形算法或对偶单
纯形算法来求解;但由于它们具有特殊的形式, 因此就有着较
有效的特殊算法.
首先,我们证明下列运输问题的最优解判别准则.
最优解判别准则 (运) 给定运输问题的一个可行 解 略
(i 二1, 2, … ,。汀 二 1, 2, … ,n) 及 m 十n 个数 u0 i=
1, 2, … ,。),u罗
(1二1, 2, … ,,). 若满足下列条件:
i) d;,二d;;+ u0 一 衅 ) 0 (i二 1, 2, … ,m ; j二 1,
2, … ,n),
ii) djjx,,Q,二 0 (i 二 1, 2, … ,m ; j 二 1, 2, … ,n),
此处 d;,为目标函数 (5.1) 中的系数;则x0,为最优解.
证 令 Xi)为运输问题的任一可行解,则

0一艺 艺 diix0}一艺 艺 diix0i


i = 1 i = 1

+ 艺 u,
0"a,
一艺 v0bi

《艺艺 d;ix;,
一艺 艺d;ixti

+ .Y , a0a,
一艺 vibi,
从而得
42 .
艺艺 diix0i; 艺 艺 diixii.
i= 1 i= 1 i= 1 i= 1

判别准则得证.
显然上述判别准则对分派问题也适用. 下面介绍的运输
问题和分派问题的算法就是基于这个准则的启示.
现在先讨论运输问题.
在大跃进期间,我国运输工作者和运筹学工作者共同创
造了独具我国风格的图上作业法,这个方法将在第二章里加
以介绍.现在讨论另一个习知的方法,表上作业法.
运输问题,由于它的特殊形式,有着好几种简便易行的、
求可行解的方法. 我们将要介绍的方法,
称为最小元素法;它
的直观背景就是优先并尽量多地安排距离短的(或运费低的)
运输线的任务.
在下列运输问题的算法中,将采用如下的方法来处理蜕
化现象.将约束条件 (5.2) 的常数项 a,和 b,变换为 ai 和 歼;
此处 a; 二ai(i = 1, 2, … ,。一1), ,
氛二a,, + ne, b;二
bi+ 6(i二1, 2, … ,n),而“是一个任意小的正数. 显然,
a,"和bii 仍然是正数,
且仍有艺 a;二习 bi. 这种方法称
i= 1 i= 1

为摄动法,
经过处理的问题称为摄动问题. 我们将证明, 如果
已求得摄动问题的一个最优解。则当令 6  ̄ 0 时,
就相应地求
得原来问题的最优解. 因此以下的算法将以摄动问题为对
象.
在以下算法中, 我们还将采用一种技巧, 称为标号法. 在
第二章中,对标号法将有更多的讨论和应用.
先将问题 (5.1)一(5.3) 列如表 5.1. 这个表的意义很明
显,
表中的二
,,按行相加则等于右方的‘
;,按列相加则等于下
方的 bi,而 dii 0 dti+ u,一 ,
,(i  ̄ :l, 2, … ,。; 1 二 1,
2, … ,n)
表 5

丫三
左 x i介

d ,11 己k d ,, d in

x 力i x h k x h n /1,(- ah

d方 dk d kk d hk d en d hn U 几

尤,ni X , k x 从n a m (二。二+ ,
,。)

d ,R, dm d .,k d一
k J ,二 “屁

b ;( 二石: + e) b飞( = b k+ e ) … b蕊(二bn + ‘)

岁I

现在叙述运输问题表上作业法的具体步骤如下:
步骤 1 用最小元素法求一可行解.
将问题列如表 5.1. 令 dh* 二 m(:, ii)n d ,即取表 5.1 中的最
小元素dhk. 若ah < bk,则令Xhk 0 ah,及xh,一0(j 劝.
此时划去第 h 行,
并将 bk 变换为城 一 ah. 若 ah ) bk,则令
Xh*二bk,及xi,二O(i * h). 此时划去第k 列,
并将ah 变换
为 ah 一 bk.
这样,就得到少一行或少一列的一个新表. 对这个新表
重复上述运算,直至所有行和所有列都被划去. 从而得一可
行解. 转人步骤 2.
步骤 2 应用标号法以寻求 “ ,和 Vi.
i) 在表 5.1 中,
取任一非零的 xii,在 xi,的右上角标以* ,
并将第i行标以“
,二。
,将第1 列标以。
,二:d;;+ U,
ii) 检查所有新得标号的每一列,例如第j 列,将该列中
所有非零但未标的 xii标以* ,同时将每一新标的x1 所在之
行标以 “,二 ,,一 心.
iii) 检查所有新得标号的每一行,例如第 ‘行,
将该行中
所有非零但未标的 xi,标以* ,同时将每一新标的 x* 所在之
列标以 vi二 “
,十心.
已标号的行和列不再标号,ii) 和 1 ) 交替进行,直至标
号无法进行为止. 于是得 u1(i二 1, 2; … : 。) 及 v,(j 二 1,
2, … ,n). 转入步骤 3.
步骤 3 计算 d;i ̄ di; + “;一vi. 若 d;i) 0 (i 二 1,
2, ...,m ;j = 1, 2, ..., n),则已得最优解,否则转人步
骤 4.
步骤4 用标号法求一新的可行解xii, 以致目标函数值
能有所下降.
设d;oi.= m(I ,i)
in d;i< 0 及x;oi。二0
1) 将xioi。标以(+ ),并将第1。列标以(i,).
ii) 检查新得标号的每一列,例如第 i 列,将该列中非零
的但未标的xi, 标以(一)。
同时将每一新得标号的 xii’
所在之
行标以检查列的序号,即将第 1 行标以 。). 已标号的行不再
标号.
111) 检查新得标号的每一行,例如第 i 行,
将该行中非零
的但未标的 x;,标以(十),
同时将每一新得标号的X'I’所在之
列标以检查行的序号,
即将第 1 列标以 (i). 已标号的列不再
标号 .
ii) 和iu) 交替进行,当第i。行得标号时,
过程即告停止.
设第 i。行得标号((9t),则可得: 二
瑞,x 粼,xirfr-1,… ,xi',',
式窝,x 沉,其求法如下. a) 由第i。行开始,b) 由第 i行的标
号(1)求得式尸,c) 由式尸查得第1 列的标号,d) 由第q 列
的标号( p ) 求得x茹,
,(e) 由x结,
查得第p 行的标号; 重复
b)- e),直至求得xicot)
io,
现在令
0 一m in (x琦;,… ,x珍}_,
,xi
xco-)
it);
xi"。二xi11。一8, … ,xi:i:一,
= xiti‘
一:一0,
xioit ̄ xioi, 一 0,
xioio  ̄ xioio+ 0, xi,i:二xitil+ 0, … ,
xiti,二 xitit+ 0,
其余的xii= xii,
则得一可行解 xii,且使目标函数值下降 一8武io. 转人步
骤 2. 计算步骤的叙述到此结束.
按上述步骤求得最优解后,
令 ‘ ̄ 0,则得原给定问题的
最优解.
现按上述步骤就一数值例进行演算.
例 3 m in x。二 3x11十 3x12十 7x13十 8x,4+ 5x21+ 6x22
+ 12 x23 + 7x,; 十 2X31
+ 8x32 + 3x33 十 4X34
满足约束条件
x11 + X21 十 x31 , 4, x12 + x22 + X3;!‘ 3 ,
x13 十 x23 + x33  ̄ 4, x14 + x2; 十 x34 “ 5 ,
x11+ x12+ x13十 X14, 2, x21+ x22+ x23十 x24‘ 7,
x31+ x32 + x33+ x3;二 7, xii) O(i= 1,2, 3, 4;
j= 1,2,3).
先将上述问题经过摄动,
然后列如表 5.2,
步骤 1. 表 5.2 中最小的元素是 d3,一 2,因此令 x31= m in
(4 + 6, 7 + 4e)  ̄ 4 + 。,及 X1;二 x21“ 0,并将 7 + 4e 变
换为 3 十 36 (在表中记为 7 十 4 ‘、 3 + 36),同时划去第一
列,得一个三行三列的新表. 在新表中,最小元素为d,2= 3,
重复上述运算. 最后得一可行解如表 5.2 所示.

表 5 .2

x 曰 片 xl1 二 2* x l3 = 0 x 14 = 0

一 5 0 3 一 2 4 8 “,= 0

:1亡) = 01 x,,二 1+ ‘* 式护 X24 = 5 + 8* 7- * 6 一 E - }


一 2E* 1 一 2E

一 6 5 U2 = 一3

+( 七


3 +3 7 + 4e- *- 3 + 3e

(1){x‘
41-)+E
=*



“3 = 6

斗+ E 3 + e -- ) 4 + E- i 5 十 E
1 + 叮 1 一 2 E

V ,= 8 V 1 二二 V3 二 9 v; 二 4

步骤 2.
i) 在表 ,.2 中,将 X12二2 标以* , 并将第一行标以u1= 0,
第二列标以 V2 c d12 十“ :二 3 + 0  ̄ 3.
ii) 和 iii) 交替进行如下:
检查第二列,将 x22二 1 + if 标以* :.同时将第二行标以
U2 二 v2 一 d22 “ 3 一 6 “ 一 3.
检查第二行,将x23二 1 一 2。和x24:二5 + E 标以* ,

时将第三列和第四列分别标以 v3 - d23十 。2 = 12 一 3  ̄ 9,
v4 = d2; 十 U2 “ 7 一 3 = 4 .
检查第三列,将 x33二 3 十 36 标以 * ;同时将第三行标以
U3 “ V3 一 d33  ̄ 9 一 3 , 6 ,
检查第三行,将 x3,二4 十6 标以* ,同时将第一列标以
VI “ d3,+ U3 ̄ 2 十 6  ̄ 8,
, 斗夕
步骤3. 计算 又,二峨,十“
,一vi,将其列人表5.2 方格
中的左下角. 并得 m in 丙 二d21二 一6 < 0,从而转人步骤
4。

步骤 4. 仍可在表 5.2 中进行.


i) 将二
2,标以(+ ),并将第一列标以(2) (此时列标号标
在表 5.2 的上方.)
ii) 和 Hi) 交替进行如下:
检查第一列,
将 x3,标以(一),
同时将第三行标以 (1) (行
标号标在表 5.2 的左方).
检查第三行,
将 x33标以( + ),
同时将第三列标以 (3).
检查第三列,
将 x2,标以(一), 同时将第二行标以(3). 至
此标号停止。并得
x21
(+) 二 0 二 3 」 ̄ 3 6

x3(1-) 二4 + 。, 二 1 一 26

令0 二m in (4 + 。,1 一2e) 二1 一2e. 便得一新的可行解


如下:
元I二 X21+ 0  ̄ 1 一 26, x33= x33+ 0 = 4 + e,
x3; 二 x3,一 0 二 3 + 3e , x23 二 x2,一 0 = 0 ,
其余的xii= xii.
转入步骤 2,并列如表 5.3.
进行步骤 2 和 3,得 “,
,。,和 dii,列如表 5.3. 此时
d, ) 0,故得最优解如下:
x12 “ 2 , x21 , 1 一 2e , x22 = 1 十 6, x24 = 5 十 ‘,
x31二 3 + 36, x33二 4 + 6, 其余的 xii ̄ 0,
令‘二 0,便得原给定问题的最优解如下:
x12 二 2 , x2,二 1, x22 二 1 ,
x24  ̄ 5 , x31 , 3 , x33  ̄ 4 ,
其余的 x1i二0.
衬 翎
表 5 .3

x 12 = 2* x 13 = 0 X 14 = 0
0 3
4 “,= 0

X ,4 “ 5 + 6,.
x21 尤, 2 片
1 十 6*

0 6 6 12 “: = 一3

x 33 今 斗 + ‘* X ;4 = 0
3 + 3e*

0 2 "3 二 0

扩,= 2 岁2 = 3 v3 = 3 V4 二 4

算法结束,例 3 得解.
在上述步骤中,仍有下列问题须加以讨论. 现分别论证
如下:
问题一 在步骤 2 中,每行、每列均能得一标号,亦即能
求得u;(i 二 1, 2, … ,m ) 和 。
i(i = 1, 2, … ,,).
证 设若我们否认, 即第 i 行(或第 1 列)尚未得标号, 过
程即无法进行 . 如是则第 i 行(或第 1 列.)中必有一个非零的
但未标的 x=i. 从而第 1 列(或第 i 行)亦未得标号.这样,
在表
5.1 中既有未标的行,也有未标的列. 我们将表 5.1 重新排列
如表 5.4. 在表 5.4 中,设已标号的各列的序号为 1U 12, … ,
ill伪 < ,),已标各行的序号为il, Z2, ...dip,则由表 ,
.4 得:

艺bit+ 、
。一艺 ajt

艺bit+ qe一E a1‘


一“”
“,
由于 q < n 以及 6 是一个任意小的正数,所以上列两个等式
都不可能成立,
因而导致矛盾. 问题一得证.

表 5 .4

已标号的列 未标号的列
产 - 种甲叫 ̄ 气,- 目
、 一 、 ̄  ̄  ̄  ̄  ̄ 、

.少

已标 号 的 行 1
. x ii = 0





未标号的行 万

x ii = 0

利用同样方法,可证下列问题二.
问题二 在步骤 4 的标号过程中,
第 1。行必能得标号.
问题三 在上述计算过程所得的每一可行解中,均有且
仅有 二+ ,一 1 个非零的 xii,
证 i) 在步骤 2 的标号过程中,在开始时,由一个非零
的xi,
确定了一行及一列的标号. 在以后的过程中,
有一个非
零的 xii,方始能得到一行或一列的标号. 若非零的xi,少于
。+ n 一 1 个,则不能使每行、每列都得一标号,从而与问题
一矛盾. 故非零的xii不少于,。+ ,一1个.
ii) 在寻求步骤1 的可行解时,每求得一个非零的xii,即
划去一行或一列,而在求得最后一个非零的 xii时,同时划去
一行、一列,
因此非零的xi,不能多于m + ,一 1 个。由0 便
得此可行解有且仅有 。+ n 一 1 个非零的 xii,
iii) 在寻求步骤4 的可行解 几 时,易见其非零的凡不
能多于 二+ n 一 1 个,因而由i) 得有且仅有 m + 。一 1 个
非零的xii. 问题三得证.
问题四 在步骤 4 中,设第 so行得标号 (ir),则按方法
a)- e) 必能求得
xco->
xi ir,,xi
x(t+),
ir, xi
xcr-i{一
,,… ,x,
,xcI+>
II,,xi
xc1-)
io',xi
xc鑫;, (5.4)
且 ip :F ill ip r j; (o 《P < 9 ( t).
证 设当求得x徐1,x幼{,…,x之,
,,
卜,,…,x袋,
一;.it_,
一,
时第一次出现重复的行,即‘,二it-P--q. 则得下列各行、

列的标号:
行 it-P(11-。一;),1, 一。
-1(1,一。-2) , … ,1,
一。-a+l(1t-。
一。),
二. 一‘一 ’二.犷一 ’几’“ 一”二.扩一 ‘飞 一’.‘”’ ‘
二‘’“_’“ (5.5)
列 It-,一;(it-P-1), 1‘
一,-2(it-P-2)i … ,1t-P-q(i,一。
).
由步骤4 的标号过程,第it-,行必在第1t-P-;列之后得标,

第 1t-P-,
列又必在第 it-,
一;行之后得标:,如是等等,最后得第
1,
一,一
; 列必在第it-,行之后得标,从而导致矛盾. 故ip箫 Iq,
同样可证iP* 1q. 由于仅有有限列,故最终必得二 }沉,而过程
停止. 问题四得证.
问题五 上述计算过程必将在有限步后求得最优解.
证 设若否认, 即过程无穷地循环往复,
则将求得无穷多
个可行解. 但由问题三已知每一可行解有且仅有。+ ,一 1
个非零的 xii,因此在这无穷多个可行解中,必有两个可行解
元i和 街i,它们的非零元素是相同的. 但由计算步骤已知目
标函数值严格下降,
所以

艺 万 dti.},i 见 艺dtix'ii.
I = I 1 = 1

因此若能证明 xii ̄ Iii(i“ 1, 2, … ,。


,;j 二 1, 2,… ,n),
则将导致矛盾.
现在证明 xii“lii(i 二 1, 2,… ,m ; j  ̄ 1, 2,.. ,n).
由于仅有 。+ n 一 1 个非零元素,因此在表 5.1 中必有一行
(或一列)仅有一个非零元素,设其为第i,
行 (或第 i:列),并
设此非零元素为xi,t}- -fiit (或元j,J, ;esj‘
,,则xiIt= 沦
,,
,二ail
(或xsj,一.sj;二b;1). 划去第i;行(或第it3}U),
并将b二改为
bt 一ail (或将a, 改为as 一btl),重复上述考虑,便得证
xii = -}ij (1 = 1, 2, ..., m , i 二 1, 2, … ,。). 问题五得
证.
问题六 由“
摄动”
问题求得最优解xQ;后,当令 ‘= 0,
则得原给定问题的最优解.
证 令 xQ, 为所求得的摄动问题的最优解,则 xQ, 是 “的
函数,因此可记为 略(E). 我们将证明x0i(0 为原给定问题
的最优解. 根据上述运算过程,当xoi(6) 为最优解时。 我们必
求得“:和 衅满足: i) di,一dii+ uQ一vo,") 0 (i二1, 2,… ,
。; 1 二 1,2,… ,n), ii) diix0(e) = 0 (i = 1,2, … ,m ;
1 二 1, 2, … ,,). 因此仅需证明: a) xQi(0) 为一可行解,
b) diixQi(0) 二 0 (i 二 1, 2, … ,m ;7 二 1, 2, … ,。). 现分
别证明如下.
a) x0(0) (i 二 1, 2, 。二,。;1 二 1, 2, … ,n) 为一可
行解.
由步骤 1 可知,xii二w ii+ Epii,此处 w ii是由某些 a,

b,经过加、减运算而得,pii是一个整数. 在以后的过程中,

的可行解是 由旧的可行解经过加、减运算而得,因此最优解
xii(E) 亦可表达为 xii(E) 二w ii+ Epi0i. 从而由

艺 xii(E) 一艺 wii+ ‘艺 60,


i= 1 i = 1
一。 = 1

(i  ̄ 1,2,… ,。
,一 1)


『x0m}(e) 一艺 留:,
,+ ‘艺 :;,
一a,,,+ ne


间xgi(e) 一艺 wqi+ ‘艺 po,
1= 1
一b;+ ‘
i = 1

(1 二 1, 2, 。一,。)
以及B 为一任意数, 而得 玲(0) 满足 (5.2).
又 由 略(。 ) 二 w 0; -}- ep0i > 0,及 ‘为一任意数而得
x,0"i(0) = w 0i > 0. 这就证明了 xji(0) 为可行解.
b) diix0i(0) 二 0 (i = 1, 2, … ,。;1 二 1, 2,… ,n),
当dii铸0 时,由diix0;(e) 二0,得 xgi(E) 二0,从而得
玲(0) 一0. 问题六得证. 这就结束了运输问题的算法的讨
论。
现在再来研究下列分派问题.

min x。一艺 艺 diixii


= 1 i = 1
(5.6)

满足约束条件

见 xi,
二1 (1二 1,2,… ,。),
i= 1
( 5.7 )

艺 xi,
一1 (i 二1,2,… ,,
),
i = 1

xii ) 0 (i, i 二 1,2,… ,。)- (5.8)


我们已经指出,在本节开始时所给出的最优解判别准则
(运)同样适用于分派问题. 但由于分派问题的特性,这个准
则可改写如下:
最优解判别准则(分) 设有 2n 个数 u0及 衅(i, 1 二 1,
2, … ,。) 满足下列两个条件:
i) dii ̄ dii十u:一 。
{) 0 (i, i 二 1, 2, … ,,),此处
di,是目标函数 (5.6) 中的系数,
ii,) 在岛, 中,存在着 ”个等于零的元素, 它们两两不在同
一行,两两也不在同一列,亦即存在着 dli:二d212一 ・ ・一
dn;,二0,此处 (h} 12, … ,1n) 是 (,1, 2, … ,”) 的一个排
列.
则可行解: 月,
:二xai:二・
。一 x i。二 1,其余的瑞 = 0,

为最优解.
证 显然上述的 玲 和d;i满足最优解判别准则(运)的条
件 i) 和ii),故为最优解. 最优解判别准则(分)得证.
这样,分派问题的算法就可以归结为寻求满足上述条件
i) 和11) 的衅和衅(1,1二1, 2, … ,,
).
表 5 .5

d ,l = 1 d, = 0 d '3 = 0 d ,4 “ 0

d, = 0 d ,,二 1 d , 二 I

d 3,二 1

d 4, = 0 d 44 = 0

以后我们将称 p 个两两不在同一行,两两也不在同一列
的零元素为 p 个两两不相邻的零元素. 例如在表 5.5 中,风2
和 d2,就是两个两两不相邻的零元素. 此时, 如在剩余的五个
零元素 (风3, 又, ,几,凤1, 而) 中挑选任何一个,都不能与 孟2.1
d2: 共同构成三个两两不相邻的零元素,因为 d13, d14和 d12同
行,d32) d42和d1:同列,而 d4,则和d2,同列. 但是这并不排斥
在表 5.5 中存在着三个两两不相邻的零元素, 例如凤35,又,
,几
就是一例. 易见在表 5.5 中任何四个零元素都不能两两不相
邻. 以下的算法步骤主要解决两个问题: 1) 给定了di;,如何
从其中求得最多个两两不相邻的零元素. ii)当在dfi(ili= 1 l
2, """, n) 中不存在 ,个两两不相邻的零元素时,如何寻求
新的几, 以使其个数增加.
现在给出算法的具体步骤.
步骤 1 寻求u,和。
,,以致di,二d1i+ “
,一。
,李0 (i,
1 = 1, 2, … ,幻,且每行、
每列均至少有一个零元素. 方法
如下: 令
一“
,二 l(m,蕊n
in dii (i  ̄ 1, 2, … ,,
),


‘一,
min(di1+ ui) (1一1,2,…,
。),
di,二 d11 + “,一 ,i (i, 7 = 1, 2,… 。n).
将 dpi 一 1, 2, … ,n) 列如表5.6. 转人步骤 2.
步骤 2 将表 5.6 中的任一个零元素标以* , 然后划去该
元素所在之行和列. 重复上述方法, 直至无零元素一 可标.
若得 n 个标 * 的
表 5 ‘
元 素, dii,

d d
dzi,= “ 0,
d, d ,, … d
则已得最 优 解: x0:二
x20i:二 ・
・・二 xni
0 。二 1,
其余 哈 = 0. 否则转 a,,, a : … 武,
入步骤 3. — 一 一一—
步骤 3 寻求最多个两两不相邻的零元素. 仍用标号法
如下(在表 5.6 上标号).
i) 逐行检查. 若该行不存在标* 的元素,则将该行标以
(一).
ii) 检查新得标号的每一行,
例如第 £行,将该行中所有
未标 水的零元素所在之列,例如第 i 列。均标以检查行的序
号,即将第 1 列标以 (心. 已标的列不再标号.
iii) 检查新得标号的每一列,例如第 1 列,将该列中标有
* 的零元素所在之行。例如第 i 行,标以检查列的序号。即将
第 i 行标以 (1).
ii) 和 iii) 交替进行,
直至下列两情况之一出现.
A ) 在检查一列时,其中无标 * 的元素.
B ) 标号无法进行,情况 A ) 亦未出现.
当 A ) 出现时,转人步骤 斗.
当 B) 出现时,则已得最多个两两不相邻的零元素。
从而
转入步骤 ,.
步骤 4 设检查第 P,列时,其标号为 认),但此列中无标
* 的元素,
则可按下法求得:
J,,,、,di212 … ,
dit-11t-(, e dit (5.9)
1i112D歹1213,
一 ,dit_t1i, (。.10)
方法是: a) 由第 I,列开始,b) 由第 i 列的标号 (i) 求得 dii}-

) 由又i查得第 i 行的标号,d) 由第 ! 行的标号(, ) 求得君。
e) 由 d* 查得第 t 列的标号. b)- e) 重复进行. 当一旦求得
民,
,以致其所在之行的标号为(一)时,
便得 (5.9) 和 (5.10).
过程停止.
此时将 (5.10) 中元素的标号* 去掉,而将 (5.9) 中的元
素标以 * ,则所有标 * 的元素中,两两不相邻,且数目增多一
个. 若有n 个元素标以* 。
则已得最优解,否则转人步骤 3.
步骤 5 寻求新的无(i ,少一 1, 2, … ,n),
划去未标的行和已标的列, 令 夕为剩余下来的 a;,中最小
的元素,
则1 > 0. 令
沙 厅
“ }



‘ (第 1 行未标)
t 八

(第 i行已标)’
, _ r0 (第 i 列已标)
vi 一 i
t口 (第i 列未标)’

二d;i+ “;一 tvi (1,1 一 1, 2, … ,,);亦即
又,(第 i 行和第 i 列均已标,或第 i 行和第 1 列均
1l 未标),
风,一fl (第i行已标但第 1列未标),
又,+ fl (第 i 行未标但第 1 列已标).
此时,若di,曾标以* ,则相应的最,
亦标以* ,
然后转入步骤
2, 继续ai,
的标号。这就结束了具体计算步骤的叙述.
下面就一数值例进行演算.
例 4 m in x。一 7x11+ 5Ox :+ 16x + xis+ 2Ox21
十 13x22 + 4 0x2: 十 35x2; + 2 1x ,1
+ 16x32+ 2 5x33+ 42x3,十 48x41
+ 27x42 + 4 3x43 + 16x44
满足约束条件

xii妻 0 (i, j = 1,2 ,3,4).


步骤 1. 按照 一“;二 m in (d,1, d-2, di3, di4),求得:一“1=
1,一U2二 13,一“3= 16。一u、一 16. 又按照

,二m in (d1i + u1, d21 + U2:,d3i -f- u3j d4i+ uJ
求得: 。
,二5, 。 ,二。 ;二 0, 。 ;二9. 然后计算 di,二dii+

,一 。
i,将其列如表 5.7.
步骤 2. 将表 5.7
。 r,二 ,
一 、,_ 二、一 、
r、 表 5 .7
中的 d1;标以 * ,然后将 ’
d22 标以* ,最后将 a33 1 49 6 0* (4)
标以 * . 至此无零元素 2 0* 18 22
可标,转人步骤 3, 0 0 0* 26
步骤 3. 仍在表 5.7 27 11 18 。 (一)
中进行. (勺
i> 第 4 行 无 标 *
的元素 ,
故标以(一).
ii) 检查第4 行. 将第 4 列标以 (4)二
1 ) 检查第 4 列. 将第 1 行标以。).
情况 B) 出现,
转入步骤 5.
步骤 ,. 划去未标的行 (第 2 行和第 3 行) 和已标的列
(第 4 列)。
则剩余下来的元素为: 1, 49, 6, 27, 11, 18; 因而
召一1.计算最,
,并将其列如表5.8,将易4, d22,最。仍标以* .
转人步骤2.
步骤 2. 此时已无更多的零元素可标,
故转人步骤 3.
步骤 3 .
1) 第4 行中无标* 的元素,
故标以匕
一).
ii) 检查第4 行. 将第4 列标以 (4),
iii) 检查第 4 列. 将第 I 行标以 (4),
iv) 检查第 I 行. 将第一 1 列标以 (1).
情况A ) 出现,转入步骤 斗.
步骤 4, a) 由第 1
表 5.8 。,
二L/I ,、。 二。:‘
二,
认 一’一 列开始. b)第 1 列的标
0 48 5 0* (4) 号为(1),c)得dll一0,
2 0* 18 23 d) 第 1 行的标号为
0 0 0* 27 。),e)得J。二0*, b)
26 10 17 0 (-) 第4 列的标号为 。),
(1) ’ )
(’ 。
) 得d44一0. 于是得
d*l乙.1愁},d44.从而得
最优解:
x0l“x 022 ̄ x033 二x4; 二 1, 其余 X9,
二 0.
例 4 演算完毕.
关于上述计算步骤, 还有如下问题有待论证.
问题七 在步骤 3 中,设有、个元素 a;, 得标号* ,且情
况B) 出现,则在 礼(i, j 二 1, 2, " , n) 中最多只有m 个两
两不相邻的零元素.
证 根据计算步骤,
情况 B) 的出现意味着在新得标号的
各行中,所有未标* 的零元素均在已标的各列中,故可将表
5.6 的行和列重行排列而得表 5.9. 若将一行或一列均称为一
条线,则从表 5.9 可见,当划去未标的h 行及已标的 k 列,亦
即共划去 h + k 条线时,
便划去 a;,中所有的零元素.
已标的行可分为两类: 一类是用列的序号来标的; 这类
的行。当 (由于情况 B)) 且仅当每标一列时方始得标,故共有
k 行. 另一类是标有(一)的行,共有 n 一 h 一 友行. 从而得
标* 的零元素的个数: in 二。一((n 一h 一的 二h 十k.

已 标 的行 沪



d ;;> 0
(共 n -h 行) ‘
- 一 -
1 无 标 *
未 标 的行


的 元 素
(共 h 行) .

- - -一
一 分 、- 子一 - - 创

已标的列 未标的列
(共 友列 ) ‘共 。一左列 )

现在设在d;;中最多只有尸个两两不相邻的零元素,
因此
要划去这 尸个元素,
便需要且仅需要 P 条线. 从而得
h + k (划去所有零元素所需的线数)
> P (划去该尸个元素所需的线数)
= P (最多个两两不相邻的零元 素)
) m (已得的两两不相邻的零元素) = h + k. 故得
。= P. 问题七得证.
利用与证明问题四相同的方法,可一
证问题八.
问题八 在步骤 3 中,当情况A ) 出现时,
则按所述方法
a)- e) 可求得:
dr,i,, di.i.,一 ,djt_Iia-xl dttit,

d;
*,
liz,
:,J*z6, … ,J丸
d; _,,


此处 ip 钾 Zq, Jp }c Iq (1 C p < q ( t),
问题九 上述计算步骤必在有限步后, 求得最优解.
证 我们将证明步骤 5 在相继进行有限次后,必使两两
不相邻的零元素至少增加一个. 根据算法,当步骤 3 中的情
况 B) 出现时,方始转入步骤 5. 此时如同问题七的证明,得
如前所示的表5.9. 因此当求得最,
后,从表5.9 可知,若d;,
曾标以* ,
则仍有最,二0,故亦可标以* . 当转入步骤2 后,
若仍有零元素可继续标以 * ,则两两不相邻的零元素便至少
增加一个. 当转入步骤 3 时,
由表 5.9 可见,已标的行仍可得
标号,而已标的列至少增加一列. 但仅有 。列,故在有限次之
后,必在转人步骤 2 时多得一个标 * 的元素,或在转人步骤 3
时,情况 A ) 出现. 从而步骤 5 必在相继进行有限次之后,使
两两不相邻的零元素有所增加. 因而在有限次之后必得 n 个
两两不相邻的零元素,从而求得最优解. 间题九得证 . 这就
结束了分派问题的算法的讨论.

' 6. 整 数 规 划

1.什么叫整数规划? 一个规划问题,它的全部变量或者
是其中部分变量要求取整数值时,就称它为整数规划问题.这
种进一步的考虑,不是由于单纯理论上的兴趣而引起的,
而是
由于处理很多实际问题的需要而引起的. 下面让我们看几个
简单的例子.
例 1 某工厂要在长度为 1 米的圆钢上,截取长度为 at
或 “2,… 或 召,的单件,问怎样截取,才能使圆钢的残料最
少?
设 x,为截 a7米单件的根数 (1 二 1, 2, … ,心,y 为残
料的长度.
则问题的数学模型可写为: 求一组变量 x17 x27 … ,x,及 y ,
使满足:
m in Y .

a1x 1 + a2x2 + … + a,x,十 y = 1,


x1> 0, x2 ) 0, … ,x > 0, y > 0,
x17 x2, … ,x,为整数值.
例 2 有m 台同一类型的机床。有,种零件要在这类机
床上进行加工, 设各种零件所需的加工时间分别为:a1, a2," ',

,,问如何分配,
使各机床的总加工任务相等,或者说尽可能
均衡.
引进变量 xii(i 二 1, 2, … ,。; I 二 1, 2, … ,
。),
限制
它只能取 。或 1 的整数值 ,
规定:

一万‘若“ I分配在‘机床一 上加IL ;


印 若 a,不分配在 i 机床上加工.
则问题的数学模型可写为: 求一组变量 xii,使满足:

minImax}客一il
j=lx2iai,...,客一,
]}
艺 xi,
一1 (,一1,2, """,n),
xi,取 。或 1 (i 二1, 2, … ,。;:;二 1, 2, … ,,).
例 3 在线路设计中,特别是计算机的线路设计, 常常遇
到要把插件板中某些接点串连成一条线的问题. 例如有n 个
接点: A ll A,, ..., A n,已知连结A ;到A ,的线段 A万一的
长度为dii,现在要把这 ,个接点用n 一 1 条线段串连成一条
线,问该采取怎样的串连顺序,使连线总长最短?
对任意两点 A i, A i,引进变量 xii,限制其值 只能取 。或
1 . 若所求的串连顺序中,
含有线段 不不,
则取 ,
xi,一1,相
反,取xi,二0. 则问题的数学模型可写为: 求一组值为 。或
1 的 xii, 以及实数 ui, (i二 1, 2, … 。n ; 二 1, 2, -"",n),

使满足: min 艺 艺 diixii


i= 1 i= i

(即连线总长最短);

艺 。,
砚 (i 二 1,2,… ,,),

(即每一点最多连出一线段);
艺 xii< 1 (1一1,2, …,n),
(即每一点最多连进一线段);

艺 - xi,
一n一1
i= i i = 1

(即共连 n 一 1 条线段):
“,一 Ui+ nxii< ,一 1 (1 ( i 等 j( n).
(这组条件保证不出现迥路的情形. 例如若有一X1,二x23=
x3;二 1,则由
ul 一 U2 + n.x ;2 < n 一 1,
u:一 U3 + nx23< n 一 1,
U 3 一 ul 十 n x 31 毛 n 一 1
就可推得矛盾: 3n < 3(n 一 1),)
变量只能取整数 。或 1 的问题。有时也称其为 。
-1 规划
问题 .
2.割平面方法,我们用一个简单的数值例子来说明方法.
求 m ax x。二 3x,一 x2, (6.1)
满足条件:

3x1一 2x2燕 3,
一 5x ; 一 4x2 毛 一 10, ( 6.2 )
2x,+ x2( 5,
xl》0, x2 ) 0, (6.3)
( 6.4 )
x1,‘
2为整数.
假如没有整数要求 (6.4) ,这一问题便是一般的线性规划问
题.
现在。我们暂时不考虑条件 (6.4), 尝 试解线性规划
(6.1), (6.2), (6.3). 假如求得的解,碰巧正是整数解,那末
问题解决,它必然也是整数规划 (6.1), (6.2), (6.3), (6.均
的解 .
对我们的例子,
应用单纯形算法 (或对偶单纯形算法) 求
得规划 (6.1), (6.2), (6.3) 的解为:

表 ‘2 表 ‘.3

一 X , 一 XZ 一 x , 一 x , 一 x , 一 x ,


2 立 3
一3 1 xa 二
X 一份


7 7 一

3* 一 2 x3=

1 0
X 一

0 月 0
X 3 =

5 , 3 3 3 1
X 通 二二二 一10 一5 一4 x4= - 13 _ 7土 X 一
- ‘斗 一
7 一 一
7 一


二》
2 = 》
0 1
一 1

3 2止* 又

1 兰

1、 、 x I牛
6 1 2
7 7 7

2 2 3
-1 一 - 一 一
一l X2= X ,= 二 ? 7 7

2 , 6 , 2
xo 一 , 一一, xl  ̄ I -一 , x2 = I —
7 7 7

现在求得的不是整数解。因为 x1, X.,的值都不是整数. 下


面我们分析表达 X1.1 x2 的方程,将从这些方程出发,导出新的
条件,这就是所谓“割平面”.
先着重分析表达X2的方程(见表 6.3):
2 2 , 、 . 3 / 、
x2 0 I 一 一 一 戈一 朴 少十 一 .、一 介少。 (6.5)
7 7 7

对 xl的方程可完全类似的分析.
我们首先把方程 (6.5) 右边各系数(包括常数项)分成两
部份之和,使一部份是整数 (它为不大于此系数的最大的整
数),另一部份是分数. 例如:
1全一 1 + 2 _ 鱼一一1十旦
二, n 7

二0 十立

那末 (6.5) 式就变为:

x2一
(1+2)
7 +(一
‘+57(
)一 x3)
+(0+ 3)
7 (一
。,・
将上式展开,并且把系数为整数的项,以及常数项的整数部份
移到方程式的一边,其余的项移到另一边,上式可写为:
2 . 5 , 、. 3 , 、
x2 一 x3 一 I  ̄ — -1一 一一l 一 x 3少 -r. 一一戈一 x 5少。 (6 .6)
7 7 7

观察 (6.6) 的右边,因为要求变量x3j x。取非负数值,所以


(6.6) 式右边的值必定不会超过 2/7; 又因为当x2, x3取整数
值时,(6.6) 式左边的值必是整数,因此 ,右边的值也必须是
整数. 既要是整数,又不大于 2/7,这就只可能是0,一1,
- 2, …中的数. 现在引进新变量 Y2,使:
- Y2二 (6.6) 式的右边
2 . 5 , 、 . 3 , 、
 ̄ 一 十 一 l - X 3.) 十 一 l - X 5,).
7 7 7

那末,根据上面推理,Y2只能取非负整数. 现在,
我们就称条
件:
2 5 , 、 3 , 、、 。
Y2  ̄ 一 一
了 一 二一气一 X 3) 一 二- 戈一 X 5) i U (6 .7)
了 丫 丫

为 “割平面”; 而被用来导出条件 (6.7) 的方程 (6.劝 称作“诱


导方程”. 为什么称它为割平面呢? 从上面的推导过程中,我
们可以看出,凡是 (6.2) 的非负整数解,必定 也满 足 条 件
莎.7),且使 Y2的值也为整数;但是 (6.2) 的非负解中,却有一
部份不满足条件 (6.为. 例如原来求得的线性规划 (非整数)
最优解:

X 一
- 左‘ - 6 _ : 2
7 x l = I — , X .? 一 I —
7 7

x;一斗三 x3  ̄ x 5 = 0

代入 (6.力 后,得:
2 ,, 、
Y2 = 一 一
了 < 、U ,

不满足 Y:的非负性. 这就是说,条件 (6.7) 起了这样的作用:


对 (6.2), (6.3) 所确定的线性规划的可行解,
条件 (6.劝 保留
了其中所有的整数解,但割掉了一部份非整数解,因此称它为
“割平面”.
一般地说, 假如诱导方程的形式为:
x,二 。,
。+ all(一,
1) + … + al (一t )
(其中I,表示非基变量部份). 设 n1,为 。
,,的整数部份,即不
超过 a1,的最大整数,
设,・

,为 a1,的分数部份, 即:
,,‘“ a1;一 。,, 0 成 1'li< 1,
那末割平面的形式为:
Y l "- 一Y1。一 ;11(一ti) 一 ・・・一 ;la<一,
n) i U.
例如,
表达 x1的方程为:

一 )
+ 1 , 、 , 2 / 、
7 一 l 一 X 3夕 -i- 一一 l 一 x 5少。
7 7

我们可立即写出其对应的割平面为:
6 1 , 、 2 , 、、 ,
Y1 ̄ 一 一 一 一 k,一 X 3J 一 一 l 一 X 5) 乡 U . (6.8)
7 7 7

条件 (6.为 和 (6.8) 都是割平面,但是,仔细观察后,我们


会发现这些条件有强有弱. 例如 (6.8) 要比 (6.7) 强. 因为,
假如我们将 (6.7) 减 (6.8) 后,
就可得:
4 4 / 、 1 / 、、 。
Y2 一 Yi 0 二‘一 二 戈一 x 3) 一 - l 一 X ) - U .
丫 丫 丫

因此,Y2 > Y1. 这就是说,当满足 (6.8) 时,


必然也满足(6.7).
当然,我们总希望割平面条件愈强愈好.
现在, 我们把割平面 (6.8) 加到单纯形表6.3 中得表 6.4 .
这时表 6.4 已不满足线性规划最优解的条件,然后继续应用
对偶单纯形算法,以 Yi所在之行为行旋。进行旋转. 此时旋
转元为 一2户,旋转后得表 6.5.
表 ‘.4 表 6 .5
i 一X3 一xs 1 一X 3 一Y I

2 ,
, 3 1 3
丫 一 泥
, 一
7 一
7 一
7 xo 一 3

2 一

X 一
一 0 一1 0 八 一 0 一1 0
3 3 1
劣 一
一 d
一 一- 3
一 翔 一
一 一 1勺 一 2 1

7 7 7

X 一 0 0 一 1 1 7
冷 x5 =
2 2
6 1 2
常 一
一 一
7 一
7 一

2 2 3
一 一 一 一
7 7
32



一万
6 1 2 *

y1 一 - 】
7 一 一
7 一 一
7 0 ) 一 1

现在表 6.5 中,最后一行变为恒等式: Y,一Yi,已失去


原来割平面的作用,我们去掉这一行. 然后继续应用对偶单
纯形算法,求得线性规划最优解为:
3 1
XD  ̄ I — , x 1令 i x2  ̄ I — 。

它还不是整数解,再重复进行上述过程: 导出新的割平面,

它加到单纯形表中,继续应用对偶单纯形算法进行旋转变换,
过程就这样重复下去,直到求得整数解时为止,这就是割平
表 ‘.‘ 表 6 .7

一 x 3 一 y l 一 x 4 一 夕生

。 1
I 一 -4
x o

2 X .
4专
0 1
尤3 牛 0 一 l = 2工 一生 一5 一

2 2
1 二卜 X 一 0
x 4 = 一 5 一2* 一 0 一 1
7 3 1 3
1 -Z 尤 一
一 一
斗 一
4 一 一


we X 一 ! 0 -
X ,二 0
1 1 !
x , 二:二 0 一生 三 x 2 二二


i 一
4 一 一

2 2

面方法的基本思想. 下面继续看我们的例子. 因 x。的值也


不是整数,就取诱导方程为:
3 , I / 、 . 1 / 、
xo = i 一 十 一 l - x 4) 十 `+- l - Y l) .
斗 斗 斗

对应的割平面为:
3 1 / 、 1 / 、
Yo 一 一 一- 一 一 l 一 X 4) 一 -一 戈一 Y 1) .
斗 斗 牛

加到表 6.7 中得表 6.8,旋转后得表 6.9.


表 ‘.8 表 ‘.s
... . .... ..... ...

一 x4 一 Y i 一 Y o 一 Y i



3 1
了0 X 0 = 二
4 4

一5 生 4
x 9 二:二

合 丫3 = 一 2 一 5

_:


X 4 二二
二 0 n x 4 二二二 一 4
立 侣合
1 3 峨
.且
X 5 = 4 X 5 弃 一 1
4 4
1 ,

x ,二二二 X 1 =

X ,
{ 4
一 1生

X } 2 一 1 一 1

1 * I
夕0

令 4

. 67 .
至此,我们已求得整数最优解为:

为了使读者有直观的概念,我们再回过头来 ,
看看计算过
程的几何图形.
例子中的条件 (6.2), (6.3) 所确定的区域为图6.1 中的
斜线部份. 线性规划 (6.1) , (6.2) , (6.3) 的最优解为点①
整个过程加了两个割平面:

Yi一 令+专x3+号xs)0,
y。
一景+ 专x4+专Yi)“

用表6.1,将x3, x4, x5都用x1, x:表出,
代入以上两条件后可
得:

Y i = 1 一 xl ) 0 ,

Y o “ 一 3 + x 1 + x2 ) 0 .

加上第一个割平面Yl) 0 后,
区域为图6.2 所示. 图6.2
中斜线部份是被割平面割去的部份,这时线性规划最优解变
为点② .
加上第二个割平面 Yo 。后,区域为图 6.3 所示. 这时
线性规划最优解为点③,而它也是整数解.
3.遍数法. 考虑 0- 1 规划问题: 求 m in xo  ̄ Co+ C1x11
C2x2 + … + Cnxn,

1本②

分l 盆几

图 6 .1 图 6 .2

a ③

x ,

图 6 .3

满足条件:
a1xl + a 12x 2 + … + al,x n ) b1,
a 21x 1 + a 22x 2 + … + a2 x , 妻 b2,

amlxl + “m 2X 2 + … + a};ri rn 多 bm,


x l.. X 2 , ,x,取 0 或 1.
69
不妨假设: 第一,所有的 。
,>- O,j一1, 2, … ,。.因为不然
的话。
若有某 ci< 0,则只要作变换: x,二 1 一x,即成. 第
二,变量已排好次序,
使得 ‘1< C2< … < 。。

对于这样的问题,如果我们让某些变量取固定的值,例
如: x1一 1, x:一。,x3 = 1,而其余变量仍允许自由取值,
这样 就 构 成 了 一 个 子 问 题: 求
m in xo “ co 十 Cl + c3+ c4x4 + … 十 c x,,,
满足:
a14x4十 … + al,x 李 b1一 all一 a13,
a24x4 + … + a2 x ) b2 一 all一 a23,

am4x4+ … + am ,x,) b,一 aml一 “


m33
X4! … 。x,取 。或 1.
记这一子问题为{1,2,3}. 类似地,若固定 x1二 0, x2 = 1,
则记对应的子问题为{丁,2}等等,依次类推. 为了说话方便,
我们记原来的 。
- 1规划间题为 饰 }.
按 x1或者取 1,或者取 0, {q5} 可分解为 {1} 和 {习; 对
{1} (或 {1}),按 x2或者取 1,或者取 0,可分解为 {1,2} 和
{1,2}(或 {1,2} 和{1,2});依次类推,可得如下的树形分解
图:

麦1,2,3}
庄 乏3}

对于任一子问题,
假如我们己经求得了它的解,
或者已经
知道了它没有解;或者已经能够断定,
即使它有解也一定不是
所 要求的最优解. 那末,我们就称这一子问题已经探明,否则
称未探明.
显然。若 {1} 和 {i} 都已探明,则 {衬 也就探明; 若
{1,2} 和 {1,2} (或 仃,2} 和 仃,
2}) 昔
肠已探明,则 {1} (或
{了}) 也就探明;・

现在,我们列举一些最简单的探明的条件. 设我们正要
考虑的子问题为: {""", k} (或 {...,k}),其具体形 式如
下: 求 m in xo  ̄ Co+ Ck+1xk+1+ … + Cnxn,
满足:
a1, k+lxk+1+ … + alnx ) 石,

am.k+lxk+,十 … + amttxn ) 石
二,
Xk+1, … ,x。取 。或 1.
条件一 若所有的b;< 0,则显然x'o = Co.,Xk+1= ・

x,二0,便是这一子间题的解.
条件二. 若有某个约束条件,它的所有正系数的和小于
常数项 . 即有某 1,使得:


;一 艺 all< b;,
a.户0.1> k
则无论变量 xj(J > 初 取 。或 1,都不可能满足此第 ‘个条
件,因此这一子问题无解.
条件三,假设我们已经知道了有某一子间题的解,使 xo=
xo,同时设子问题 {… ,粉 (或 {… ,u ) 不满足条件一或条
件二,
但是它使:
Co + Ck+1> 岛,
则显然,即使它有解,也一定不是最优解.
卞面,
并始叙述遍数法.
首先,
我们粗略的观察一下,
看是否明显的有某一子问题
满足条件一 如果有的话,就以它的解作为初始的记录解 :
}xU} xi, .., xnJ. 如果没有 找 到,就 取 初 始 的 xO= C。

Cl + … 十 Cn + 1.
遍数法的基本思想是依次的对各子问题进行条件一、二、
三的判别. 开始时。首先判别 {衬 ,如果 1树 满足条件一或
条件二。则步骤终止. 我们已求得了最优解或断定了问题无
解. 如果不满足 ,则分解 {4)} 为 {1} 和 {I}. 然后接着判别
{1}. 一般的说,设进行到某一步: 问题 {… ,k} 未探明,因
而被分解为 {… ,左,友+ 1} 和 {… , 友,受+ 1},
然后接着先
判别 {… ,左,夜+ 1}. 若 {… ,夜,友+ 1} 满足条件 一,则
以它的解代替原来的记录解, 作为新的记录解: (矛。 。牙,
,… ,
夙). 这时, 不但子问题 {.. ,k I k + 1} 已经探明, 而且也显
然已探明了{...,k}, 因此,
下一步就可转到判别{… ,U .若
{一 。k, k 十 11 满足条件二或条件三, 则转到判别 {… ,k,
k + 1},若判别结果,{. 二,k,k-不丁} 也满足条件二或条件
三,
则我们已探明了 {. . , k },下一步转到判别 {… ,
科. 若
{… ,k, k + 1} 未探明,则继续分解. 步骤一直进行到探明
{o } 时为止. 到步骤终止时,如果还没有找到记录解([TIL 。的
值仍然保持为 ‘ 。+ ‘,十 … + c。十 1) 则问题无解. 否则,
终止时的记录解便是问题的最优解.
下面让我们看一个简单的数值例子. 求
、m in xo “ 2 + x l 十 x2 + 2 x3 + 4x4 + 6x3 + 7x6,
满足:
3x,一 2x2+ 3x3+ 6x4 十 2x5+ 4x6 李 4,
一 5x ,+ x; 一 5x3 + X4 + x 5 + 3x6 ) 2 ,
x1, x2, x35 x45 x5, x6 取 。或 1.
这问题有一明显的可行解: x‘二1,其他的 Xi= 0. 我
们就以它为初始记录解,
即置
牙。= 2 十 7 = 9, x6二 1, xl“ :e2 = ・・・= Xs= 0.
(1) 判别 {( }: 常数项 (b1, b2) :二(4, 2),不满足条件
一:各约束条件的正系数和(al, a2) 一(18, 6), al> 石
,,a2>
b2. 未探明.
(2) 判别 {1}: (b1, b2) = (1, 7)", (a1, a2) 二 (15, 6),
a2 < b2,满足条件二. 已探明无解。
臼) 判别 {升: (b1, 民) 二 (斗,2、 ); (瓦几) 二 (15, 6),
at> bl, a2> b2; 且 ‘。+ 。
:一 3 < x。一 9. 未探明.
(4) 判别 {1,2}: (b,, b2) 二(6, 1); (a1a2) 二(( 15, 约;
CU+ ‘
:+ C3一5< x。一9. 未探明.
(,) 判别仃,
2,3}:(bl, b2)二(3, 〔

) ;(a1, a2) 一(12,5),
a2< b2,满足条件二. 已探明无解.
莎) 判别 {1,2,3}: (b,, 民)二(6, 1) ; (a1, a2)二(12,约;
Co十‘
2+ ‘
、一7 < xo. 未探明.
(7) 判别{1,2,3,4}: (b1, b2) = :(0, 0),满足条件一
改进记录解,
让xo= ‘
。+ C2+ :4= 7.
几 = x4= 1, xl= x;二 x,二 xb = 。.
这时,不但探明了{丁, 2,互,
斗}:,而且也探明了{1,2,3,科,
因此,我们已探明{1,2,3}. 又由 (5) 可知,实际上我们已探
明了{1,2},
(8) 判别 {1,习:(bi, b2) 二 (4, 2), (i1, a,) 一(15, 5) ;
Co+ C3一4 < xo一7. 未探明.
(9) 判别 {1,2,3}: (bl, b2) 二( t, 劝,(al, a2) 一 (12,
5), a2 < b2, 满足条件二. 已探明.
(1的 判别仃,2,升:(b1,瓦) 二(、,2), (a1, a2) 一(12,
5); co+ C4一6 < x。
一7. 未探明.
(1 1) 判别 {1,2,3,4} :(b1, b,) 二 (一2, 1), (a1,a2) 二
(6, 4); ‘。+ ‘
;+ ‘ ,
 ̄ 12 > x。二7. 已探明.
(12) 判别{1,2,3,科: (b1, 几) = (4, 2), (a1,a2) 二(6,
4);‘
。+ ‘
,一8 > x。一7. 已探明.
至此。步骤终止. 我们已探明了 {4 }. 且这时的记录解 :
x。二7, x2二x4 = 1, x1二x3= x5 = x6= 0。便是最优解.
事实上,由(11) 和 (12) 可知, 已探明{1,2,升. 又由(9)
可知。已探明 {1,2},再根据 (劝,可知, 已探明{工};最后根据
(2),即得已探明了 {-p }.
第二章 图与网络的方法

' 1. 图与网络的基本.概念

1.引言 在人们从事各种生产活动及 日常生活时,经常


会遇到这样一类问题: 某一地区主要城镇间的公路 如 何 分
布,或者在某项任务中,各工序间的先后次序及衔接关系如
何,或者某地区各机场间的航空线如何分布. 诸如此类, 举不
胜举. 这些问题,尽管内容不同,但有 一个共 同点,
就是都要
求表达某些对象(如城镇、
工序、机场)之间的某种特定的关系
(如公路分布、
先后次序、航空线分布). 而“图”正是描述这类
现象的有力工具之一 譬如,人们以公路交通图反映全国或
某地区的公路分布情况 ; 以工序流线图表示某任务中各工序
的衔接关系等等. 其它如油田的输油输气管道网,有线或无
线通讯网等等,也都可以用图的形式反映 出来.
许许多多的图,不论名称和内容如何,都包含着两个基本
的东西: 对象及其关系. 人们在各种图中,常常用一个点表
示对象,用点之间的联线表示两个对象之间的特定关系. 例
如在公路交通图中,甲、乙两地间有公路 相通,就 记录成
之一一乌,这里,
点xI, x,
分别代表甲、
乙两地,
联线二
1x2代表这
两地间有公路相通这个特定的关系. 这样,譬如图 1.1 是四
个地点 x1, x2, x3, x4的公路分布状况.
我们现在撇开各种图的具体内容。来讨论这种由点及联
线所组成的抽象形式的图,从中找出一般规律及典型问题的
特殊算法,运用一般规律和方法于具体间题,
可以为解决某些
生产实际问题提供一个有效的途径.
由上所述,可以把图看成
是由一些点及点之间的联线组
成的. 我们用G 表示图,称点
是图的顶点. 所有顶点构成的
集合记为 N ; 称联 线 是 图 的
边,两个点 x, y 之间的联线写
成 (x, 力,(或 (Y, x)). 所有边构成的集合记为U . 于是一
个图G 可以简记为 G = [N , U ]. 如图 1.1, N 二 {x1, x2, x3,
:;}; U 二 {(x1, x2), (x2, x3), (x3, x4), (x4, x1), (x2, X4) .是
一个四个顶点和五条边的图.
在一些实际问题中,用 “边”还不足以说明对象之间的关
系. 譬如,
如果二
1,x2代表两个工序,
那么Xj一.X2形式的图
并不能反映这两个工序间的先后关系. 对这类问题,经常用
一个箭头线来代替联线 xl
尤lxx2Z;:xri ̄一 一公 这就把工序二
,在
工序 X2 之前的关系描述出来了. 又如公路图中的某些单行
段,比如汽车只能从 xl通向 x2,而不允许从 x:通向 xl,也要
用这种带箭头的线. 为了区别前面的 “
边”,把这种箭头线叫
做弧. 从 x 到 y 的箭头线 ,记为 (x, 力. 由顶点及弧所组成
的图,
称之为有向图. 前面所说的由顶点及边所组成的图。

称为无向图. 图 1.1 是无向图,图 1.2 是有向图. 图中包含八
个顶点及十条弧. U 二 {(xl, x2), (x2, x4), (x3,, x2), (x4,
x3), (x3, x4), (x3, x5), (x5, x8), (x5, x6), (x6, x7), (x7, x8)1.
在某些问题中,
不特别要求图是无向或有向的时候,我们
就通称为图.
在更多的生产实际问题中,仅给了一个图也还是不够的 .
比如要了解某地区的公路交通情况,不仅要了解公路的分布
状况。
还要了解每一条公路的长度.因此,
和图联系在一起的,
通常 还 有 与 点 或 边
(弧)有关的某些数量
指标. 在 图 1.1 所示
的公路分布图中,如
果 知 道 x1x2,
x3x4, x4x1, x2x; 各条
公路 的 长 度 分 别 是
15, 2 0, 2 5, 10 , 20 图 1 .2

(公里),我们就可以
用图 1.3 来表示. 这就更全面地反映了这个公路网的状况.
根据生产实际及讨论间题
的需要,可以提出不同含义的
各种数量指标. 例如在交通图
中,通常会遇到距离、运输费
用、通过能力等这样的数量指
标. 在通讯问题中,两个可以
直接收发讯的台站之间,信息
传递工作正常的可能性有多大 。是一种与边(弧)有关的数量
指标,而一个台站,
在某个时间区间内所能传递的信息量就是
一个与顶点有关的数量指标.
这种带有某种数量指标的图,通常称之为网络. 有时,
也不加区别地称为图. 和图一样,网络也有有向与 无 向 之
分.
本章只涉及与边、弧有关的数量指标. 主要有: 长度指
标 ,以 l(x, 力 代表边(弧) (x, y) 的 “长度,
; 费用指标,以

武x, 力 表示边(弧) (x, 力 上的单位输送费用;容量指标。以
c(x, 力 表示边(弧) (x, 力 上的最大输送能力.
既然,我们所说的图,是描述对象之间某种关系的, 所以,
与通常几何学中所说的图不一样. 这里,
点的准确位置、
点之
间联线的长短曲直都是无关紧要的,重要的是点之间的相互
联结的情况. 同样,网络中所谓边的“长度”,
只是与边有关的
一种数量指标 ,并不一定是平面上两个点之间的实际距离 .这
是需要注意的.
2.图的一些术语和概念 现在,我们以图 1.2 为例,介绍
图的 一些常用术语和概念,先从有向图说起.
(1) 给图中一条弧 (x, 力,我们把x 叫作这条弧的起点,
y 是终点,并说这条弧是从 x 指向 y 的. 所谓与顶点 x 关联
的弧 ,是指以 x 为起点和以 x 为终点的所有弧. 如 x3是弧
(x3, x5) 的起点,x,是弧 (x3, x5) 的终点. 与 x3关联的弧有
四条: (x3, x5), (x3, x4), (x4., x3) 及 (X3., x2).
两个顶点 x, y 叫做相邻的, 如果 x '-F y,并且有一条从 x
指向y 或者从y 指向二的弧, 如x,与x2, x4, x、
相邻,x3与x1,
x6j x2, x:不相邻.
(2) 如果图中的某些顶点可以排成如下的形式 {xi!,
x,=, … ,x'k-!' x'k},使得或者 (x,t, x't+1) 是弧或者 (x't+1'
xit) 是弧(t二1, 2, … ,k 一1),我们就称点3TIf {x;,,
,x;z:,…,
X'k}是从xi,
到xi,的一条链. 若链中所含的弧均不相同,则
称为简单链. 如果点列{xi!, x;2, … ,X'k}中(x,t, xit+,) 都
是弧,就称之为从x;;到Xi*的一条路。类似定义简单路. 以
后除特别注明外, 凡说到链、 路都是指简单链、 路. 如 {x2, x3,
X5:1X6} 是从 x:到 x。的链,而 {x2, x4, x3, x5, x6} 是从 x2到 x6
的路 .
特别地,如果{x、

,xiz, … ,x;k, Xi}是一条从xi;到xi,

一条链,就称它是一个圈;如果{心, ,心:,…毛*。Xi,} 是一条
从二
,:到xi:的路,就称之为回路. 如 {x3, x2, X4, x3}是一个
回路,而 {x5, x6, x7, x8,x5} 是一个圈.
。) 在一个图中,如果任何两个顶点之间,至少有一条
链,就说这个图是连通的. 如图 1.2 是连通的, 但若把弧 ‘xt,
x2) 从图巾去掉,得图 1.4,这个图是不连通的. 囚为 xt到 xZ
就没有链.
任意一个图中的
每个连通的部分 ,称 卜

为这个图的一个连通
片. 如图 1.2 是一个
连通片; 而图 1.4 是
包含两个连通片的图
(一个顶点也 看 作是
xl
劣3
/ 公‘

一个连通片). {酬

(斗) 给了两个图
‘一 〔
N , U ] G '二 〔
N ', U ']. 我们说 G '是G 的部分图,如
果两个图的顶点相同。 而 G '的弧是G 的弧的一部分. 即 N =
N', U'C U . 例如图 1.4 是图1.2 的部分图.
现在设 G 二 〔
N , U l 是无向图,
给G 中一条边 (x, y) 我
们称 x , y 是这条边的端点. 所谓与 、关联的边,是指以 x 为
端点的所有边.
如果点 x 的关联边只有一条, 就称 x 是悬挂点,
而 与它关
联的那条边叫悬挂边.
如果 x * y,且 (x ,力 〔U , 就说x,.y 是相邻的。
至于路、
链、回路、圈,只要把前面对有向图的相应定义中
的“弧”改成“边”就行了. 要指出的是无向图中,路和链、回路
和圈是一致的.
如把图 1.2 看作无向图,即图 1.5,图中 x,是悬挂点,
(xl, x2) 是悬挂边. {x5, x6, x7} 是一条链(一
也是路),而 {x5,
x6, x7, x8, x5}是一个圈(也是回路).

上面介绍的有关图的术语和概念,是经常要用的. 读者
要熟悉和掌握它们.

; 2. 树和最小部分树

1. 树与树形图
(1) 这一节,我们要介绍一类特殊的图,它具有两个特
点,
一是连通的, 二是不含圈. 通常把这种图形象地称为树.
比如某生产大队有六个居民点,要在这个大队中架设有
线广播网,要求用最少根数的广播线, 使每个居民点都能听到
广播,那么这个广播线网就是一棵树(图 2.1),
“树”这种图具有许多简单
劣1 X2 x3
而有用的性质. 如树中任何两
X6 个顶点之间有一条链且仅有一
条链; 把树中的任何一条边从
树中丢掉 ,树变成两个且仅仅
两个连通片,每个连通片是一
图 2
棵树;树至少有两个悬挂点,等
等. 这里特别要介绍一下关于树的迭代的性质. 如果把树中
两个不相邻的顶点用一条边连起来,就出现一个且仅仅一个
圈,再把这个圈的另外任何一边丢掉,于是就得到另一棵树.
如图 2.1 中,若加一条边 (x3, x4), 就得到一个圈 {x2, x3, x4,
x2},如果丢掉边 (x2, x4), 就得到如图 2.2 所示的另一棵树.
这种从一棵树得到另一棵树的迭代方法常 常 称 为 “树 的 迭
代”. 可以用简单的 口诀来说明: “加一边,得一圈. 丢一边,
破 一 圈 .”
(2) 从树的定义中可以看 戈 .\
到 ,“方向”在树里是不起作用
的. 所以一般都是在无向图的 \
假定下来研究树的性质. 对某
些问题,一种带 “方向”的树
— 树形图,有时是有用的.
图 2 .2
给了一个有向图 ‘一〔
N,
U ],如果满足下面的三个条件:
1) 图巾一个顶点 x。不是任何弧的终点;
2) 每一顶点 ( * xo) 是唯一一条弧的终点;
3) 图中不含回路.
我们就称它为(以 x。为根的)树形图.
图 2.3 就是一个树形图.
可以证明,树形图本身也是树。即是没有圈的连通图,

且从 x。到任何一点有一条且仅有一条路.
和树的迭代一样,树形图 也有类似的迭代 . 如果 x1, xi是
树形图中两个不相邻的顶点 ,xi : xa,并且在树形图中不存
在从 x,
到 x‘
的路,则加进弧 (x1, xi)。而把树形图中指向xi
的那一条弧丢掉,就得到另一个以 x。为根的树形图. 图 2.3
中从 x3到 X2没有路 ,于是加进弧 (x2, x3J。丢掉 (X1.1 x3),得
到如图2.4所示的树形图. 然而不能几弧(x7, x4J代替(xo,
x4), 因为图中从 x4到二7有一条路. 否则在新图中就有一个
回路 {x4, X5j X7, x4} 这不合树
形图定义中的第 3) 条.
这种树形图的迭 代 方 法,
下一节要用到.
2.最小部分树问题

/ (1) 给了一个连通 图 G ,
如果它的一个 部 分 图是 一 裸
树,就称这个树是 ‘的一个部
分树.
为 x6
例如,如果我们知道六个
居民点之间的道路图如 图2.5
所示. 现要求有线广播网的广
播线沿道路架设,那么这样的广播线网就是道路 图的一 个
部分树. 如图 2.1 是图 2.5 的
部分树 . 图 2.2 不 是 ,因 为边
(x3, X4)不在图 2.5 中,
求出连通图 G 的一个部分
树,有很多办法,
这里介绍其中
之一 从图中逐步地丢掉一些
边,每丢一条边,要至少破掉当
时图中的一个圈,直到没有圈
时为止‘ 简单说来就是 “丢边 7x 苦

破圈,
直到无圈”. 如图 2.5 中, 图
可先丢 (x2, x4),破掉圈 {x1,
x4, x2,x1};然后丢(x2,X5),破圈{x5, x3, x2, x5}; 再丢 (X4,
:,
),破圈 {x5, x3, x2, x1, x4, x5},得到一个部分树. 要注意
的是丢边不破圈是不允许的. 如图 2.5 中,丢边 (x5, x6) 是
不行的. 针_人-
(2) 在架设有线广播网的例子中,如果还知道图一
2.5 中
每条道路的长度,要求找出
一个使广播线总长度最短的
架设方案. 图 2.5a 中每边
旁的数字表示这条道路的长
度.
现在的 间 题 是 要 求 图
2.5a 的一个部分树,使树中
图 2
边的长度总和最短.
图 2.1 所示的架设方案需要的广播线总长为 4 十 1+ 4 1
5 十 5 = 19.
这个问题就是通常所说
公皿 2 戈2 的最小部分树问题. 它的一
般形式是给了一个连 通图
G = [N , U ],已知 G 中每
一 边 (X, 力 有 一个长度
x4 斗 xs l(x, ),), 要求G 的一个部分
图 2 .5 a
树T 二 「 N , U '],使T 中边
的长度总和最小,即

min (x 艺 l(x,,
,).
.Y )E U '

对于一个给定的部分树 T ,我们把属于 了
’的 边 叫 树 内
边,把G 中不属于T 的边叫树外边. 从上节关于树的迭代性
质可知,如果加一条树外边 (x, 力 到7,中去,
得到一个圈. 然
后去掉这个圈上的任一条树内边,又得到一个部分树. 显然,
奴果l(x, y) 比相应的圈上某条树内边 (;,w ) 的长度 l(二,
,) 小的话,则以 (x, Y) 代替 (z, w ):卜就能得到一个总长度
较小的部分树.
例如对图2.1所示的部分树,(x1, x2), (x2, x5), (x4,x5),
是树外边.
把树外边(xl,x2) 放人图2.1 中,得到圈{X4, X2j X1, X4}
并且 I(x1, x2) 比该圈上的树内边 (x1, x4) 的长度小,所 以以
边 (XI, x2) 代替 (x1, x4),得另
x1 3'=
一个部分树 (图 2.6),总长为
17,比图2.1 的总长度小二
由此可见,一个最小部分
树 T * 具有这样的重要性质:
把每一条树外边 ( x, Y) 放入
T * 中,得到圈 {x, x;1, … ,
图 2 .6
xik,,
,x},则有:
l(a,,
)之m ax [l(x, x1) , 1(x;" xi,), … ,I(xik,,)] (2.1)
这里((x,二
‘,
),(二
‘,
,xi,), … ,(xik'力都是树内边.
‘ 反过来,若部分树具备上述性质,那么可以证明,
它必定
是最小部分树.
这样一来,我们只要逐个检查每个树外边 (2.1) 是否成
立.
xi x,
如图 2.6,树外边 (x2,
x5) 使 (2.1) 不满足,因为
1(x2, x5) < l(x2, x3). 以
(x2, X5) 代替 (X2.1 x3),得到
总长度为 1,的部分树 (图
图 2 .7
2.7).
再检查图 2.7 的每一树外边,可知式 (2.1) 成立,于是
它就是所要求的最小部分树,即使广播线总长度最短的架设
方案.
实际上,
根据上面所说的关于最小邹分树的性质,
可以用
极简单的操作方法,很快求出图G 的最小部分树.
[方法 1] 逐次地从图‘中没有被选的边中选最短的边,
并使每次选出的边与在这之前已选出的边构不成圈,直至得
到一棵树.
如图 2.5a 中,
依次选出(x?,二
;),(x1, x2), (x2, x5),这时
边 (xl, x4) 虽是未被选出的边中最短的,但因 它与 已选 边
(x2, x4), (xl, x2) 成一个圈,故不能选它. 类似地不选 (X41
x5). 再选 (x3, x5), (x5, x6). 这样得到最小部分树 (图
2.夕).
[方法 2] 逐次地从‘中还未丢掉的边中,
丢掉最长的边,
并使每次丢边后剩下的图仍是连通图.
图 2.5a 中,依次丢掉 (x2, x3), (x.F, x5), (xl, x4),得图
2 7.
最后指出,如果要求使总长度最大的部分树,
即最大部分
树的话,有如下结论:
一个最大部分树 T o具有如下性质: 如把每一条树外边
(x,力放人To中,得一个圈{x, x.,, … ,x.k, Y,二}那么必

l(x,,
)《m in [l(x, x;) ,l(xi,, xi,), … ,1(x‘
,,,
)](2.2)
这里(x,x.,),(xi,,xis), …,(xik,,
)是树内边.
反之,一个部分树若具此性质,则必.是最大部分树.
于是只要把方法 1 和方法 2 中的“最短”和“最长,
,分别换
成“最长”和“最短”,就成了求最大部分树的方法.

' 3. 最短路问题和主要矛盾线方法

给了一个图 ‘ ̄ [N , U ],如果每一弧 (x, 力 上有一个


长度l(x, y). 设 x, y 是N 中任意两个顶点. l't二 {x, … ,对
是G 中从 x 到 y 的一条路。我们定义这条路的长度是路上听
有弧的长度的总和, 记作1(那).
所谓最短路问题,就是要求从某一个固定点 (例如说 X0
到另一个固定点 (例如说 X,) 的路,使其长度是所有从 x。

x。的路 中最短的. 并称之为从 x。到 x。的最短路.
最短路问题可以直接应用于解决生产实际问题,诸如各
种管道的铺设,线路的安排等等. 它也是图与网络理论巾解
决其它问题的工具.
最短路问题和最小部分树是性质不同的两类问题. 最小
部分树是使每一对点都有链相连,而总的长度最小. 至于一
对固定点之间的链的长度,并没有提什么要求. 如上一节图
2'.5a 中,
最小部分树为图2.7. 在这个树里,
从x:到 x,的路的
长度是 l(x2, x5) 十 l(x5, x3)  ̄ 7. 但从 x2到 x,的最短路则
是 {x2, xs}, 氏度为 ,

1.最短路算法 这里介绍如何求最短路的方法,大家将
看到,最后求到的不仅是从 x。到 x,的最短路,而且求出了从
xo到其它所有顶点的最短路.
还要指出,我们对长度 l(x, 力 并不加非负的限制,以后
荟看到,
允许有负长度对于某些问题会有很大方便. 然而。

加另一个限制, 即假定图中不存在长度小于零的回路(简称负
回路). 这个限制对于无向图,就是要求每边的长度非负,因
为一条边可以看作是两个方向相反的弧的回路.
I (二,
夕)
I (二,y)
一 -  ̄ 门


二=) 《
( 二二二>
名 1 (二,
y) ,

回忆一下 托 中曾指出: 在以 x。为根的树形图中,从xo


到其它任何一点有一条且仅有一条路. 现在我们就借助于树
形图来刻画最短路问题的可行解,介绍求最短路的方法. 分
三个间题来说明.
第一,
如何求第一个树形图.
开始,总先在x。旁作一个记号“* ”. 一般地,如果点 Xi
有了记号“* 刀,而 x,
还没有记号“* ”。并且 (x;, x,) 是图‘
中的弧。那么就给 x, 也记上“* ”,并把弧 (二、
,二,
) 画成粗弧.
如此反复下去,直到进行不下去时为止. 这时,凡是从 x。有
一条路到达的点都有记号“* ”. 而没记号的点,就表示从 xo
到这些点没有路,从而也就不存在最短路. 因而可以把与这
些点关联的弧从图中去掉,对问题没有影响.
例 求下图中从 x。到各点的最短路.

朴 10 x, 3

图 3

首先找出第一个树形图. 开始在 xo旁作记号“* ”,检查未记


“* ”的点。比如 XI,因 (xo, XI) 是弧 ,所以在 xl旁记上“* ”,
并把弧 (xo, ::) 画成粗弧. 如此进行,
得图3.2.
卜月
皿洲
区创

图 3 .2
这时除 x1o, xll 外,
其它点都有记号“* ”. 从 x。到x1o, Yu
没有路,
于是我们把弧(x10, x5), (x10, x9)及(x11,x8),(x11,:,

从图中去掉.
上述过程终结时,所有粗弧构成一个以 x。为根的 树 形
图. 从 x。到其它各点有一条且仅有一条(由粗弧组成的)路.
我们计算出每一条路的长度, 写在相应顶点的旁边, 称为这一
点的标号(点x‘ 的标号, 以后表示为 否) 特别地 ;Lo ̄ 0.
图 3.2 中,从 x。到 x,的一条由粗弧构成的路是 {xo, x2,
:,
},长度为 t(xo, x2) + l(x2, x5) 二 11,故点 x5的标号 )',二
11. 如此得图 3.3,

这样就找到了从 x。到各点的一条路,而每点的标号就表
示相应路的长度. 现在的问题是这些路是不 是 都 是 最 短 的
呢.
第二,如何利用树形图的迭代,使路的长度下降.
把树形图外的弧放进树形图,替换其中的某一弧, 能从一
个树形图迭代到另一个树形图. 但什么样的弧放进去后,能
使路的长度下降呢?
取一条树形m 外的弧, 比如说(xr, x1) 来分析一下.设点
x;, x1的标号分别为 xil 匆,表示这个树形图里从 x。到这一点
的路的长度. 假设从 x。 到 x,
的路上最后一条弧是 (Xk, xi)
:*k x;. 即从x。
到xi的路是通过xk到达xi的.现在设想一
‘F,如果让这条路不通过 Xk而通过 二 ‘,沿弧 介‘,xi) 到达 xi,
则 x,的标号就变成 形 二又
‘十l(x;, xi).显然,
如果又 ‘十I(xi,
:,)< 又
,,我们这样做的结果,就至少使从 x。到 、 ,的路的长
度下降了. 厂参考示意图)
才几

_/ ”. ̄/了,身 so了
”‘
,… … _


一’‘
”卜
.. . 一
.)/ 。

例 图 3.3 中,(x4, x3) 是树形图外的弧 ,-Zq = 3, h3=


6, l(xq, x3) = 2,故 .}q+ l(xq, x3) < .}3,可见从 x。通过 x4
到 x,比从 x。直接到 x3要好.
这样 。
对一个给定的树形图,我们检查每一个树形 图外的
弧 (xi, Xi),如果 又
、+ l(x;, x1) < 礼,则把 (xi, x1) 变成粗
弧,而把原来指向x,的粗弧变成细弧(即从树形图中去掉)得
到新的树形图,相应地计算出这个新的树形图中各点的标号
从. 由上可见石 < l;.
图 3.3 中,把 (x4, x3) 变为粗弧,(x0, x3) 变为细弧得:


乏\
C夕夕”
图 ‘3 .斗

可见 、3, x;的标号减小了,即找到了一条从 ,。到 x3, x7的路,


其长度比原来下降了.
到此,读者也许会提出一个问题,就是在树形图迭代中,
以树形图外的弧 (xr, :,
) 替换树形图中指向xi的弧时,要求
在树形图中不存在从、
,到x‘
的路,
才能保证新的图仍然是树
形图. 这里我们指出,
在图中不含负回路的假定下,
这个要求
自然满足. 事实上,如果弧 (x;, x,) 是使 I、十l(x x1) < 21
的树形图外的弧. 假设树形图中从 x,有一条 路 it 二{xii

‘:,… ,x`k,二
‘}通向‘
,,由于路产上的每一个弧 (Xit., x't+)
都使fit+ I(x;t, x=kt+t) 二;i;,+,. (t - 0, 1, … ,k, x;。二Xi,

x;k+:一X;)于是艺 [‘
,‘
+ l(x;t,x;t+t)]一艺 ‘
;,
十;,
但“,

1(x;, x1) < 又
,从而
l(x1, x;,)+ l(x;t, x12) + … + l(x;k, x;)
+ 汉x;, x1) < 0
左边正是回路 {x,, x,1, … ,X'k-'xi, xi} 的长度. 这与不含
负回路的假定矛盾.
第三,怎么知道找到了最短路呢?
可以证明,如果对一个树形图及相应的点标号 对 ,每一
条树形图外的弧 (Xi, xi) 都使 对 十l(x;, x1)} }* ,那么就得
到了从 x。到各点的最短路,标号 对 就表示从 x。到 x,的最短
路长度.
事实上,设p 一{x0, x;,, … ,x;k, x;}是从x。
到x*的任
意一条路,由于图中任一条弧(( xr, xt) 上有 对 十l(xr, xt)-2 !
对,故
吠 一片, l(xo, x;,),
12一.l*呈2(二,
刀,二2),

对一峨呈l(xik,xi).
把这些不等式相加起来,得:
甘一暗呈l(xo, xi) + 1(x;1, xi2) + … + 1(xik, xi).
由于 对 二0,于是得 Z!C 1(y),
、 一例 图3.4 中: 弧(x3, x2)上 又
,十1(x3, x2) < Z2,故以
(x3, x2) 代替 (x0, x2),得新的树形图和标号(图 3.5),


泛入
卜 ”
。 O

图 3 .5

再检查每一个树形图外的弧,
可见均使a,;+ 1(二
;,xi)> Zi,
所以图 3.5 中的粗弧就表明了所要求的从 x。到各点的最短
路. 如从 x。
到 x,的最短路是 {x0, x4, x3, x5, x6, x9},长度为
14 .

当所有弧的长度l(x, 力鑫。时,可以用一个简单的方法
来确定每一点的标号 对,并且一经确定后, 不再改变,
就是从
x。到这一点的最短路长度.
方法的具体步骤是:
首先令10 一0。则护 在A l ̄ {二
。}上被确定;
设z* 在A *一{{x0, x;,, … ,x;*一
,} 上被确定,对A* 中
每一点 Xi,找出以x,
为起点而终点不在 A * 中的弧中长度最
小的一条,
譬如说是(x,, xi;),即:
m in 1(x;,x,
).
1(x;, x;;) “ xii=A k
(xi,x;)EU

然后,对 A * 的所有点,比较 A,* + l(x;,二


,,),找出最小的一
个,譬如说是}p + l(xp,xip). 于是令Xi,的标号“ 态一;p十
l( 二*,xip).并把弧(}xr, 二,
。)用粗弧画出,
这样又
*在A 好1二{xo,
xi', “’,‘ ,
,一,
,xir} 上被确定.
如此反复,
直到进行不下去时为止.
方法终结时,一
粗弧所成的图就表示了从 xo到各点的最短
路.
以图3.1 为例,
开始 甘 二0, 护 在 {xo} 上被确定.
以二
。为起点的弧为 (x0, x1),(x0,x2), (x0, xs), (x0,x4).
找出其中最短的, 是 (x0, x1),于是令 71* 二210 + I(xo, xt)二1,
把弧 (xo, XI) 画成粗弧,2.* 在 {xo, x1} 上被确定.
第三步, 先检查起点为x。而终点不在 {xo, x1} 中的弧, 为
(x0, x2), (x0,x3) 和 (x0, x4). 找出最短的, 是 (x0, x4). 再检
查起点为x;而终点不在 {xo, x1} 中的弧,为 (XI, x2) 和 (x1,
X5). 长度相等,故任取一条,比如 (x1, x2). 比较 C0 + 1(x,,,
x4) 与 片 + l(xl, x2). 易见 }o 十《xo, x4) 较小, 于是令'q二
蜡十Z(xo,x4) 二3,把弧(X03X4) 画成粗弧,2.* 在{xo,x1,X41
上被确定.
依此做下去,
当;*在{,
。,x!,x4,x3,x7,X2,x5,x8,x6,x91
先后被确定以后,
方法进行不下去了,因为以上述这些点为起
点而终点不属于这些点中的弧在图中不存在了. 故从 x。到
x1o, x1,没有路,从而也就没有最短路. 用这个方法求出的最
短路也如图 3.,所示.
要注意的是这个方法对于
有负长度的弧的图行不通. 举
一个最简单的例子,在左图中
从二
。到 X2的最短路是 {xo, x1,
x2} 而不是 {x0, x2},虽然 对 +
l(xo, x2) < 2.才+ l(xo, x1).
2.主要矛盾线方法 在许多实际活动中,诸如建设一个
大型厂矿、
庞大机器的制造和维修、研制某种复杂的武器装备
或其它产品等等,都包含种类繁多的部门、工序,各工序部门
之间,
根据生产技术的要求,有一个先后的次序关系,如一个
零件浇铸后才能进行车床加工; 建筑房屋总得先从打地基开
始;粮食收割之后,
才能由汽车从田间运往干燥场所・…… 为
了有效地进行生产管理,按照生产工艺要求及现有的人力物
力,往往事先安排一个计划,这样的计划,可以用一个图把它
反映出来.譬如以一个弧代表一个工序 ,
弧的起点和终点就表
示这个工序的开工和完工,而各弧之间的衔接关系就反映了
各工序之间的先后次序. 这样的图通常称为工序流线图.
例如, 某厂要对锉床进行一次检修,大体上可以分为十道
工序: 拆卸、清洗……,一直到装配试车. 图3.6 就反映了一
个检修铿床的计划.如拆卸之后, 进行电器检修和安装、 清洗,
而电器安装、部件组装、变速箱组装全都完成之后, 进行装配
试车.
对每个工序。可以根据经验和现有条件,估计一个工作时
间. 这就是在工序流线图的每一个弧 (,Xi, Xi) 上给了一个数
t;;(图 3.6).
从工序流线图上 ,我们可以计算出每个工序的最早可能
开工时间. 比如,我们分析一下装配试车这道工序最早什么
时间可以开工呢? 从图 3.6 可见,它必须在各项器件组装完
毕之后才能进行,而电器安装的完工必须经过“拆卸一检修安
装”的过程 ,要 斗天才能完成. 部件组装要经过“拆卸一清洗
一检查一零件修理一床身与工作台研合一部件组装”,要 19
天完成;变速箱组装要经过“拆卸一清洗一检查一零件加工一
变速箱组装”,要18天完成. 这样,装配试车最早在 19 天后才
能开始. 因此,如果把工作时间 t;、作为弧 (xi, xi) 的长度,从
x。
到 x:的最长路的长度就是弧 (xs, x9) (r .序“
装配试车勺的
最早可能开工时间. 类似地可以算出其他各道工序的最早可
能开工时间,
而从 x。到 x9的最长路长度.就是整个检修工作的
完工时间(工期).


电器检修与安装

R黔 x's

图 3.6

O il)
L立达 / 2 3,,

图 3.7
最早可能开工时间,
1的求法: 把工作时间,
,,作为弧长
度,
求出从 x。到点x,的最长路长度 对,则t0就是工序 (x;,x;)
的最早可能开工时间(图 3.7). 可见按照这样的计划,
检修工
作要 23 天完成.
我们把从 x。到 x,的最长路叫主要矛盾线,用粗弧标出
来. 因为这条路上的工序 (称关键工序) 是影响工 期 的 关
键。这些工序提前完工或拖延完工将直接影响到整个工作的
工期.
相反,在非主要矛盾线上的工序。如果拖延完工的话 , 有
可能不影响工期. 如电器检修与安装 ,最早在 2 天后开工,4
天后即完工,
但还必须等待其它部件组装完毕后,
才能进行装
配试车. 所 以它可以拖延 巧 天完工,但不能再多了,否则就
使整个工期延迟. 因此,我们还可以算出每道工序的最迟必
须完工时间 T ;0,
最迟必须完工时间 T 0的求法: :吧工序流线图上的弧反
向, 长度不变, 求出从x9到各点的最长路长度 t; .令T0 二 q
t; 则 衅 是工序 (x;, x;) 的最迟必须完工时间 (图 3.8,图
3 .9) .

(Si)

图 3 .8

(T;0) 一4一 Xs

图 3 .9
这样,
对每道工序(X;,xi)可以掌握这样几个数据:
最早可能开工时间 4 ,
最早可能完工时间 对+ Iii,
最迟必须完工时间 T 0i,
最迟必须开工时间 T 0一,iii
最大可利用时间 T 0一⑦ + t,i).
最大可利用时间反映了在不影响工期的条件下,谷工序工作
时间上的潜力. 比如电器检修与安装工序有 19 一 (2十2) =
巧 天的潜力; 零件加工工序有 16 一 (7 十 8) 二 I 天的潜力.
自然,主要矛盾线上的工序的可利用时间为 0,
有了工序流线图及这一些数据,可以帮助我们更好地掌
握生产进度,做到心中有数,加强生产管理,
争取提前完成任
务.
比如,领导应重点抓主要矛盾线上的工序(关键工序),因
为非关键工序从时间上看一般是有潜力可挖的. 可以从全局
出发,从非关键工序上抽调适当人力物力支援关键工序. 如
电器安装有巧天的富裕时间,
大可先放一放,
集中力量突击一
下清洗、检查等关键工序.
需要注意的是主要矛盾线并不会是一成不变的. 在实施
过程中,由于领导和广大工人群众的主观努力和各种措施,

能使关键工序提前完成,
或者由于客观条件的变化,
或者由于
事先未能预见的原因,使非关键工序在最迟必须完工之 日不
能完工,
都会使主要矛盾线发生变化. 因此,
在计划执行过程
中,必须随时注意主要矛盾的变化,经常检查和修改工序流线
图.
主要矛盾线方法是统筹方法的一部分. 希望对这个方法
作更深人了解的读者可阅读 “
统筹方法平话及补充”(华罗庚
著. 中国工业出版社).
' 4. 一笔画和奇偶点图上作业法

一个邮递员在他所负责的投递范围内投递信报,每次都
必须走遍所有的街道,
任务完成后回到邮局,
那么他按什么样
的路线走,使路程最短呢?
类似的问题,在其他实际
lx
部门中也会出现. 这类问题是 L


在 1959 年我国推广运用运筹 l
we

学的群众运动中提出来的. 通 t


常称为最短邮递路线问题.
举一个简单的例子,如果
街道图如图4.1. 其中x,
是邮
局. 邮递员可以按如下的路线走:
x 1 一 x 2 一 x 5 一 x 4 一 x 3 .* x 2 一) x 5 一 x 6 一 x 1,

也可以按另一条路线走:
X I -* x2一 x 3 --* x 4 一 x 5 一 X 4 -) x 3 --* x 2 - b x 5 - * X 6 一 x 1.

易见,按第一条路线走,总路程为 8。而第二条路线,总路程为
10.

把这个问题抽象成图的语言,就是给了一个连通的无向
图,每个边 (x , 力 上有一个长度 l(x, 力,要在图中找一个
圈,使每边在圈中至少出现一次 (允许重复),而圈的 长度最
短.
可以想见,既然要使每边至少出现一次 ,
那么如果图中有
一个圈,
能使每边恰好出现一次。岂不是二最短了吗? 可惜并不
是所有的图都能这样的。譬如图 4.1 就是一个例子.
因此,首先考虑什么样的图中, 存在一个圈使每一边在圈
中出现一次且仅仅一次. 这就是大家所熟悉的 “一笔画”间
题。
1一 笔画问题 给了一个连通的无向的多重图 (所谓多
重图,是指两顶点之间可以有几条边的图) ‘,若‘中有一个
圈,使每边在圈中出现一次且仅仅一次,则称图‘是一笔圈
图. 若G 中有一条链,使每边在链 中出现一次且仅仅一次,则
称图 ‘是一笔链图.
显然,若‘是一笔圈图,那么每一点关联的边数必是偶数
条; 若‘是一笔链图,则除了链的两个端点外。
每一点关联的
边数是偶数条,而端点关联的边数是奇数条.
为了方便起见,把‘中的点叫偶点 ,
如果它所关联的边数
是偶数条. 否则称为奇点. 如图 4.1 中,x1, x3, x4, x6是偶
点,x2, x5是奇点.
于是,G 若是一笔圈图,则‘中无奇点 ;‘若是一笔链图,
则G 中有两个奇点.
反之,可以证明,‘若无奇点,
则必是一笔圈图;若有两个
奇点,则必是一笔链图. 就是说,若G 中的奇点数为 。或 2,
则可以让笔不离开纸,一笔把这个图画出来. 奇点数为 。时,
可以从任一点开始,
画完图后,
再回到开始点;奇点数为2 时,
可以从一个奇点出发, 画完图后,到达另一个奇点.
这就为我们提供了一个识别一个图能否一笔画出的极为
简单的办法. 如图 4.1 中有 2 个奇点,故它是一笔链图.从 x2
出发,一笔画完图后到达 x5. “田”字形的图中有 4 个奇点,故
不能一笔画出来.
2.奇偶点图上作业法 根据上面的讨论,如果某邮递员
所负责的范围内,街道图中没有奇点,那么他就可以从邮局出
发,走过每条街道一次且仅仅一次,最后回到邮局. 这样,他
所走的路程也就是最短的了.
对于有奇点的街道图,如图 4.1, 就必须在某些街道上,
重复走一次或多次. 如按第一条路线走,在边 (x2, x5) 上重
复走了一次. 按第二条路线走,
在边 (x2,x3), (x3,x4),(x4,x5)
上各重复走了一次.
如果在某条路线中, 边 (Xi, x;) 上重复走了几次,我们在
图中x;, x;之间增加几次边,令每边的长度和原来的长度相
等,并把增加的边称为重复边. 于是这条路线就是相应的新
图中的一笔画圈. 如图 4.1 中,上述两条路线就分别 是 图
4.1a, 4.1b 的一笔画圈. 并且两个图中重复边总长的差距就
是两个路线所走路程的差距.



. 为 勺





图 4 .la 图 4 .lb

因而,原来的问题可以叙述成: 在一个有奇点的图中,

加一些重复边,使新图不含奇点,并且重复边的长度总和最
刁、

我们把使新图不含奇点而增加的重复边,
简称为可行(重
复边)方案. 使总长最小的可行方案称为最优方案.
(1) 第一个可行方案如何给? 可以证明,任何图中奇点
的个数总是偶数个. 所以如果图中有奇点,就可以把它们配
成对. 又因为图是连通的,
故每一对奇点间必有一条链,我们
把这条链上的所有边作为重复边加到图中去. 在新图中 ,没
有奇点. 这就给出了第一个可行方案.
例 图4.2是街道图,其中有四个奇点: x2, x4, x5, x3,
我们分成两对,
比如说x,
与X4,X6一
与Xg. 图4.2 巾连接X2,X4
的链有好几条,随便取一条如 {x2, xl, X8,X7, X6, X5, X4}. 把
边 (X2, x1), (x1, x8), (x8, x7), (x7, x6), (x6, x5), (x5, x4) 作
为重复边加到图中去.类似地,
,x, 2 xe 4 x) 取 x6, x。之间的一条链 (xg,x1,
X2, X3, X4, X5, X61,把边 (xg,

x, 4
XI ), (xl, x2), (x2, x3), (x3,
X4), (X4, X5), (x5, x6) 也作

为重复边加到图中去,于是得

朴 9 x4 介
图4.3. 在这个图中,没有奇
点,故它是一笔圈图. 对应于
图 4
这个可行方案,重复边总长为
21(x1, x2) + 1(x2, x3) + l(x3jx4) + 21(x4, x5) + 21(x5, X6)+
1(x6, x7) + 1(x7, x8) + 21(x1, x8) 二 51.
(2) 如何调整可行 方案,
使重复边总长下降呢? 了1 x咨

首先,从图 4.3 上可见,在


(X1, x2) 上有两条重复边. 如
果把它们都从图上去掉,图仍
然没有奇点,即剩下的重复边
还是一个可行方案,而总长度 x,
下降了. 类似地 (X1.1 x8), (x4, 图 4 .3

x5), (x5, x6) 上的重复边也是


如此.
一般说来,如果边 (x;, x1) 上有两条或两条以上的重复
边为话,我们从中去掉偶数条, 得到一个总长度较小的可行方
案. 换句话说 ,

1) 在最优方案中,
图的每一边上最多有一条重复边.
. 1 00 ,
依此,
图4.3可以调整为图4.4,总长度下降为21,
其中,我们还可见,
如果把
图中某个圈上的重复边 去掉,
而给原来没有重复边的边上加
上重复边,图中仍没有奇点,因
而如果在某个圈上,重复边的
长度大于这个圈的总长度的一
半,作上面说的一次调整,也 .

冬‘一里一

,、旧、- 一 一
诗舀

得到一个总长度下降的可行方 图 斗.4
案. 因而又有
2) 在最优方案中,
图中每个圈上重复边的总长不大于该
圈总长的一半.
如图 4.4 中,圈 {x2, x37 x4, x9, x2} 的总长为 24,但圈上
重复边的长度为 14,因此可以作一次调整。以 (x2, x9), (x9,
x4) 上的重复边代替 (x2, x3), (x3, x4) 上的重复边,使重复边
总长下降为17(图 4.力.
(3) 怎么知道求得最优方
X1 2 x4 4 X7
案?
从上面的分析中可知,一
5/ 个最优方案一定是满足 1) 2)
X2/ 6 ! x,
的可行方案,我们可进一步证
明,满足 D 2)的可行方案一定
xa 9 X4 4 x, 是最优方案. 这样,对给定的
可行方案,只要检查它是否满
图 4 .5
足条件 1) 2). 如不满足,
就对
它进行调整,
得到新的可行方案;如满足,则得到了最优方案.
检查图4.5, 圈 {x1, x2, x2, x6, x7, x8, x1} 上,条件 2) 不
满足. 调整得图4.6 总长度为 15.
. 10 1 .
检查图 4.6,条件 1) 2) 均满足. 于是它就是最优方案,
图 4.6 的一笔画圈就是邮递员的最短邮递路线.
以上所说的求最短邮递路
"x , XI 线的方法,通常称为奇偶点图
上作业法.
要注意的是,方法的主要
困难在检查条件 2),它要求检
查每一个圈. 当图中点、边数
x4 xi 较多时,圈的个数将会是很大
的. 如日字形的图有三个圈,
而田字形 的图就有 13 个圈.

' 5. 网络最大流问题

为了说明问题,先从一个简单的例子说起. 图 5.1 是一
个连接某原料产地 x。和某工厂 x。的交通FA . 每一弧 (xi, xi)
代表从 x,到x,
的运输线,
原料可以从 xi沿这条弧运到 xi. 每
弧旁的数字表示这条运输线的最大通过能力,称为 弧 容 量.
现在要求制订一个原料输送方案,
使从 x。输送到 x。的原料数
量 最 多.

公; 4

3T ) X9

. 10 2 .
图 5 .2

如图 5.2 上就给出了一个输送方案. 每弧旁圆圈内的数


就表示方案中在这一条运输线上的原料输送数量. 比如,3
单位原料沿 (x0, x2) 送到 x2i I 单位原料沿 (xo, xi) 送到 x1
等等. 可见这个方案使 斗单位原料从 x。输送到 x5. 输送量
还可以提高吗? 或者说,在这个运输网中, 最大的输送量(从
x(,
到 x5) 是多少? 本节就是要解决这个问题.
I.问题的形式 在图 5.1 的运输Jl中,x。是原料产地,我
们称之为发点. x、是需要原料的工厂 ,称之为收点. 其它点
就叫中间点.
给了一个输送方案,我们把每个弧上的运输量叫这个弧
上的流量. 对图 5.2 的方案,弧 (x0, x1) 上的流量为 1, 以后
记为fo;二 I. 弧 (xl, X3) 上的流量 f13 二2. 类似地 f02 ̄ 3,
/24一 3 等等.
对每个点,运进这一点的原料总量与从这一点运出的总
量的差, 是这一点的净流人量. 我 们 简 称 为 这 一 点 的流
量.
由于这时要求中间点只起转运的作用,所以中间点的流
量必为 。
,收点的净流人量和发点的净流出量相等,
是这个方
案的总输送量.
图 5.2 中,点 x2 的流量是 (f02+ 132) 一 (121+ 179) 二 0;
. 103 .
收点 、
,的流量为f45+ 九5 二4. 发点的流量为 一4
要求每个中间点的流量为 。 ,这个条件常称为平衡条件.
其次,由于每个弧上有通过能力的限制,
所以每弧的流量
不能超过这个弧的容量,这个条件称之为容量限制条件.
因此,一个输送方案必须满足平衡条件 及 容 量 限 制 条
件.
一般情况下,若给了一个RAJ络 G = [N , U , ‘
〕,其中 ‘
表示每个弧 (x,力 上有一个非负的容量 成x, 力. N 中有一 两
点,
一个是发点,记为 X,; 一个是收点,
记为 xt.
若对每个弧 (xi, xi),给一个数 人, ,满足:
1) 容量限制条件: OC fijC C(xi, xi); (5.1)
2) 平衡条件: 对N 中每个点 Xi( 铸 xs, xt),

艺 艺 (5.2)
(xj,xi)EUt1, (xi,xj)印
那么这一组数 {fijl 就代表了这个网络上的一个输送方案. 我
们把这组数 lfij} 称为网络的一个可行流,以后也简记为 f. fij
称为弧 (x;, xj) 上的弧流量,
有时也记为代xi, x1). 发点的净
流出量 (收点的净流人量) 就称为这个可行流的流量,记为
v(f) 或 。,即

(x;,xs)EU '了

一(xy,xj)EU,,

一。 (,
), (5.3)

E fit
(xi,xt)EU 一(xY,
t,xj)EfU一
a (f).
我们的目的是求一个可行流,使其流量 。
(灼达到最大.
称这个可行流为最大流. 其流量称为最大流量.
这个问题自然也是线性规划间题. 即求一组 {fiil,在条
件 (5.1)一(5.3) 下,
使。(f) 极大. 然而利用图的特点,解决
这个问题的方法较之线性规划的一般方 法 要 方 便 ,直 观 得
. 10 4 .
多.
可行流总是存在的,比如令所有的弧流量 fii二0 (称为
零流)就是一个可行流, 其流量 。 Ct) 二 0
2.如何求网络最大流? 设给了一个可行 流f 一 {h il7
我们把网络中使 t,;= c介,, xi) 的弧叫饱和弧, 使 人,
< c介;,
xi) 的弧叫非饱和弧. 把使fi,二 0 的弧叫零流量弧, 而 ts;> 0
的弧口
目非零流量弧.
如图 5.2 中,弧 (x07 x2), (x17 x3), (x27 xt)7 (x37 x2) 是
饱和弧,其它都是非饱和弧;弧 (x37 X4) 是零流量弧,其它都
是非零流量弧.
若FL是网络中从发点 x: 到收点 ,
:,的一条链,
我们从 x,
出发,沿着这条链前进,链上的弧就被分成两类: 一类是弧方
向和前进方向一致的,叫它是前向弧,把 IL上所有前向弧记作
IL+,另一类是不一致的, 称为后向弧, 记作IL}.
在图 5.1 中, 若, ‘二 {x07 x27 x47 x37 x5},则 ,

+  ̄ {(xo.,
x2) , (x27 X4) , (x37 X0 1,IL- 二 {(x1, x4)}.
对一个可行流 f,若从 x, 到 x,的链 IL满足如下条件: FL+
中的每一弧是非饱和弧,产一中的每一弧是非零流量弧,则称
产是一条(关于可行流 f 的)非饱和链 .
如图5.2 中,链 {x0, xi, x2, x3, x5} 就是一条非饱和链.
因为前向弧 介。 ,X1), 介37 X5) 都是非饱和弧, 后向弧 (x27x1)7
(x3, x2) 都是非零流量弧.
如果存在关于可行流 f 的一条非饱和链 EL,我们对 f 作
一次调整: it十
中每一个弧的流量增加数量 0, ,eL一中每一弧的
流量减小 0,其它各弧的流量不变. 即令:
l 不 十八

当 产
‘X
es 才
se
. 、 ,
,xi)〔it+


j ‘ 子
- 日 当 尹
‘X
、矛
we J

、 ,
,xi) ‘IL (5.4)
we J于
‘才
其它弧.
・1 0 5 .
首先说明 厂‘ {f;1} 满足平衡条件. 为此只要注意链上
中间点的情况. 设 x‘ 是中间点,可以有两种情况,如下面示
意图(粗弧表示链上的弧):

情况1: 1k,二fki+ e, f;;= fi;+ e,与 x,关联的其它弧


的流量不变. (或 fk,二 fk,一 6, f;,一 f ,一 e,其它不变)
情况2: 1k,一Iki+ 0,f;,一fi;一0,与二、关联的其它弧
的流量不变. (或f又
,= fk,一0, f;,二f;i + e,其它不变)
可见不管哪种情况,平衡条件均满足,而发点的净输出量
增大 e
其次。为了使 厂满足容量限制条件,又使 B 尽可能地大,
则令

e 一m in f _M ill +[c(xi, xi) 一fti), min _fi,l (5.5)


t(xi'xi,
E5’ (xi,xp)E”
一了
易见e > 0. 这样我们就可以从一个可行流 f 调整到另一个
可行流 I'. 并且 。
(1') 二 。 (f) + e,
如图 5.2 中,11 - (x0, x1, x2, x3, x5} 是非饱和链. 取


e 二 m in [c(xo, xi) 一1oi1 c(x3) x5) 一1351,




m in


,/321} 二 1
调整的结果得到如图 5.3 所示的可行流. 总输送量增加 1 个
单位.
由此,对一个可行流,如果存在关于它的非饱和链,
则可
以调整得到一个流量增大的可行流. 即网络中不存在关于最
. 1 06 -
大流的非饱和链.
现在的问题是如何找非饱和链呢?
3.寻求非饱和链的标号方法 方法的基本思想是从发点
出发,一步一步地向
前探索 ,把能从发点
用一条非饱和链达到
的点标一个记号. 最
后,如果收点也被标 xo
上了记号,那么要找
的非 饱 和 链 就 得 到
了.
具体步骤如下:
开始,
总给发点二
,标上记号“十气
现若点 x,已标上号,则把满足下面条件 的点 x,标上
( + x ) : (1) 介,
。xi) 是非饱和弧;(2) 点 xi还未标上号. 又
把满足下面条件的点 Xk标上 (一二t) : (1) (xk, xi) 是非零流
量弧; (2) 点xk还未标上号.
反复进行下去,最终或者收点 x,被标上号或者再也标不
下去而收点 x,未标上号.
前一种情况出现时,我们利用各点的标号可以找出所需
要的非饱和链. 譬如收点 x, 的标号为 (+ x k),则把弧 (Xk,
x,) 用粗弧画出. 再检查 Xk,它必有一个标号,比如说是
(- xi),则把弧 介*,xi) 用粗弧画出. 再检查 xi,依此类推,
直到发点时停止. 这时由粗弧组成的链就是一条非饱和链 .
以图 5.2 为例,说明标号过程(参见图 5.4). 开始给 x。标
上“+ ”,现在 x。是标号的点. 检查弧 (xo, xi) , (xo, x2). 弧
(xo, xt) 是非饱和弧而 x,还未标上号,故在 xl旁标上 (1 xo) .
(x0, x2) 是饱和弧,所以这时不能给 x:标号.
107
(一_,) (t x,)
公:
4④ x 4


(+)5

(+ xo) ( 一x=)

图 ,.4

现在 x;也是已标号点,检查与它关联的弧,弧 (xI, x3) 是


饱和弧, 弧 (xo, xt) 的起点 x。是已被标号的点,故不予考虑.
仅有 (x2, xt) 是非零流量弧且 x: 还未标 号,故在 x2 旁 标
上 (一xt).
检查新标号点 X2,给 x;标上 (+ x户,点 x3标上 (- x2).
再检查 x4, x3,如先检查 X3,则收点 X5被标上 (+ x3),标
号停止.得到一条从 x。到 x:的非饱和链,
即{xo, x-t, x2, x3,x5}
在该链上对流进行调整,得图 5.3.
也可先 检查 x4,
名: (4 得到非 饱 和 链 {xo,
X1,X2.1 x4, x5}。调 整
① ④ 得如图 5.5 所示的可

Xo {④ 行流.

⑦ 对新的 可 行 流,
重新开始标 号 过 程 .
XI 叮 “
图 5 .5
如果 收 点 又 被 标 上
号,则对这个可行流
进行调整. 如此反复,当对某一个可行流标号时,若标号进行
. 1 08 ,
不下去而收点未标上号,即若不存在从发点到收点的非饱和
链,我们将说明这个可行流必是最大流.
4.截集与最大流 首先介绍网络中的一个重要概念—
截 集.
把网络的所有点N ,分成两部分 X , X . 使发点x;E X ,
收点 xtE X . 我们把从X 中点指向 X 中点的所有弧记为 (X ,
X ). 称 (X , x ) 是网络中(分隔 x:与xt) 的一个截集.
在图 5.1 中,若令 X ;二 {xo, xl, x2}, X ; 一 {x3, x4, x5},
则 (X 风) 二 {介2, X4)-, 介;,x3刀 是一个截集. 若令 X 2=
{xo},X 2 ̄ txl, x2:}x3.1 x4, X5} 则 (X 2, X 2) 二 {(xo, xl), (xo,
X2)} 也是一个截集.
截集的直观意义就是这些弧是从发点到 收 点 的 必 经 之
道. 如果把截集从网络中删掉的话,
在剩下的图中,从 发点到
收点就没有路相通. 要注意的是我们所说的是没有路相 通,
然而可以有链相通. 如把上面的截集 (x l, X l) 从图 5.1 中去
掉,
余下的图仍是连通的.
对于一个截集 (X , X ) ,记其中所有弧的 容量的和为
c(X , X ). 称为这个截集的容量, 简称截量.
如图5.1 的例子,(X l, 风) 的截量 。
(X l, X l) 二6, 。
(凡,
X 2) 二 8.
既然截集是从 x,到 x,的必经之道:,不难想见,任何一个
可 行流 f 的流量 《f) ,不会超过任何一个截集 (X , X ) 的截
量。
(X , X ). 即。(月呈c(X , k ) . 这个结论也可以从可行流
的条件 (5.1)一(5.3) 推出来.
设 f 是任一个可行流,(X , X ) 是任 一个截奥,由条件
(5.2), (5.3)
v(f) 一 艺 f5,
一 艺 f;r
(xs,xj)EU (xi,x,)E口

. 10 9 .




艺[(〔
x、
k篇
,xi)E〔
U。
fki一
(二

Y,
,xk)E〔
U。
fik]
{1(x二
k属
.xi)E。
U。
fki+((xrk属
,xi)E*U。
f‘
k友
i,




xiE X xiE叉


(xi,x k)EU
.xi〔X
fik十一
耳二,
}} xiEX

一艺{ 艺fk,
一Y,fik}
xk E X 一
(xk ,.ri)e U (xi,xk)E U
x萝 EX xiEX

+ XEkEX{(x二
k月
,xi)E〔
Ufk一
U, (二

,粤
xk)E〔
U。
xiE%
fik} xiE又

右边第一个和数为 。,

V(f) 一 艺 fk,
一 艺 fik'
(xk,xi)E(X ,X) (xi,xk)E(X ,X)
式中 (叉,x ) 表示起点在 又中而终点在X 中的弧的全体. 又
根据条件 (5.1),有

v(f 见 c(xk,、) 一‘
(X 19), (5.6)
(xk,xi)E(X ,X )
因此, 如果能找到一个可行流f*= {f扮 及一个截集(X *,
X *) 使 ,
(f*) = c(X *, X *),则f* 就是最大流,
而 (X *, X *)
的截量也就是所有截集中截量最小的一个.
现在来证明 3.中最后所说的论断.
如果对可行流f*,标号进行不下去,而收点又未标上号.
这时,网络上的点必分为两部分: 一部分是已标号的点,令为
X *,另一部分是未标号的点,
记作 X *.易见 x,E X *, xjE X
. 11 0 .
即 (X *, X *) 是网络上的一个截集.
我们考察一下 X * 与 X * 之间弧上的流量情况如何(参见
示意图).这里有两类弧一 类是从 X * 中点指向X *中点的弧,
即 (X *, X *)。 这类弧必定都是饱和弧,即 琪一 二(Xi, xi)
因为若拱< c(x;, xi),则因xiE X ,根据标号规则,x,必可
标上 (+ x;) 而不会属于X *. 同样,另一类弧,即(X *, X *)
中的弧, 必定都是零流量弧, 即膝 二 0,
这样在前面推导 v(f)呈
c(X , X ) 过程中:,若把 f,
(X , X ) 分别换成 f*, (X *,
X *),则(5.6) 就成为等式,
x;
即。 (f*) 二 ‘
(X *, JX与. 从 ‘

而 f* 是最大流. 盆‘

现在把求最大流的方法
概述如下:
第一步,给出第一个可行流,例如零流;
第二步,对现有的可行流 f,利用标号方法求关于 f 的非
饱和链.
1) 若存在非饱和链 A,则按(5.5)式取e,在p 上调整
f (式( 5.4)),得新的可行流 厂. 进行第二步.
2) 若不存在非饱和链 ,则 f 为最大流.
继续本节的例子,对图 5.3 上的流进行第二步,当 xo, x,
被标上号后,标号进行不下去. 故即为最大流,最大流量为
,.

5.几点说明
(1) 对一个给定的网络,使截量达到最小的截集,称为最
小截集,它的截量称为最小截量.
从上面的分析可见,
在求得最大流ylj 同时,
也求得一个最
小截集,并有结论: 最大流量等于最小截量. 如图 5.3 上,根
据标号的结果可知 ( {x0j xl}, {x23 x3, x4, x5}) 是一个最小
截集,它的截量也是 5.
因此,网络最大流问题的解决,不仅给我们提供 了使两地
之间输送量达到最大的输送方案,
而且通过最小截集,
给我们
指出了网络中的薄弱环节,就是说最小截集中的线路的输送
能力(容量)是影响输送量提高的关键. 因此,必须首先考虑
整修、完善或扩充最小截集中的线路,以提高其容量,才有可
能使发收点间的输送量增加.
(2) 从求最大流的过程中还可以看到,如果每一弧的容
量是整数, 并且第一个可行流在每个弧上的流量也是整数(即
整数流). 那么,求得的最大流一定也是整数流,因为每一次
调整流的时候,
所做的只是对弧流量进行加减运算.
最大流问题的这个性质也是很重要的,利用这个性质,我
们可以把某些要求解是整数的实际问题或理论间题化为最大
流问题去解决. 比如说,当考虑输送量不是以吨为单位,而是
以汽车、飞机、船舶甚至人的数量计算时,
同样可以通过最大
流问题找到使输送量最大的方案.
(3) 对无向网络,每一边 (X, 力 有一个容量 c(x, 力 二

臼,劝. 要求边上从 x 到 Y 的流量 f介,力 满足 0--!} f(x,
力< c介,力,从 Y 到 x 的流量 f(Y, x)满足0: f(Y, x) : c(Y,
x),并且边上的总流量 f(x , Y) + f。,x)C c(x , Y).
_ 我们可以把一个边 (x, 力 看成两个方向相反的弧 (x, 力
及 (y, x),并令其容量都是 。 (:,力 (示意图). 这就把无向
网络化成有向网络.但要注意的是替换后的网络中的可行 流,
在某一对弧 仓,力 与 (Y,劝 上,条件f(x, 力 十f勿,劝呈
c(x, 力 可能不满足. 但这时,这一对弧上必出现对流现象,
即f(x, Y) > 0, f臼,x) > 0. 我们令
f'(x, Y)  ̄ M ax [0, K X, y) 一K y, x)j
f'(Y , x) 二m ax [0, f(y, x) 一f(x, Y) ].
这样f'(x ,户 + f,(Y, x): c(x, Y) , 而流量不变.
所以在替换后的有向网络上求 出
二 c (x, Y) ,
最大流,然后消灭它在某些边上的对
流现象,就得到原来无向网络上的最
大流.
4V
其次,当网络中顶点具容量,即在 c ( 二,
夕)
、 . ,. r ‘甲尸

点 Xi,有一个容量 。
(Xi) , 要求流进 x; c ( y,x )
的总量不超过 ‘(x;)。 例如码头的吞
吐能力、仓库的储藏能力等都是点容量限制. 点具容量的问
题可以化成弧具容量的问题解决. 具体做法如示意图,即把
点 x;变成两个点 x;
1,
, x;.
11 增加新弧 (x;, x; .令其容量 。(x;,
式今二 ‘(x;). 而指向 x,的弧变成指向 式的弧,从 x,发出的
弧变成从 对 发出的弧.
第三,当网络中有多个发
点或多个收点时,可以化为一
个发点一个 收 点 的 情 况 . 譬
如说有两个发点xst, XS,. 我
们在网络中增加一个总发点
xs,增加两条弧(xs, xs,), (xs,
、权、
粉 气) ,
令其容量都是 + 00 ,在新
网络中把 XSi, Xs:视为中间点,
x,是发点. 当有多个收点时,
则再增加另一新顶点 xt, 从每个收点加一条弧指向 xt,弧容
量 为 十oc .
6一 类特殊网络及其表上标号法 从一 个 简 单 例 子 说
起. 设有三个煤矿xI, X2, X3,分别产 2, 7, 7 单位煤. 有四
. 1 13 .
个城市Yi, Y2, Y3,
一Y4,各最多要煤4, 3, 4,5单位. 假定煤是
从煤矿直接运输到各城市去. 已知某些煤矿和城市之间没有
运输线. 在表 5.1 中,带圆圈的方格表示有运输线相通,
如煤
矿 XI的煤可以运到 Yi, Y:等等. 我们的 目的是制订一个运输
方案,使这三个煤矿发出的总量 (也是四个城市得到的总量)
最多.
若以 xi,
表示第 滚个煤矿运到第 1 个城市的煤的数量.问
3 斗

题是求{二,
},使艺 、,
最大,
并满足:

艺二
,iC bi (j* 1,
‘= i
2,,
,4),.

艺 xiiC ai (、一1,
i = i
2,3), (5.7)

xii里0 (i二 1,2,3; j = 1,2,3, 4),


xi,二 0 当 x;没有运输线通向 Y,时,

bi= 4, 3, 4, 5;
表 5
ai二 2,7, 7.
这个模型的问题称为限
制运输问题. 我们把它化为
网络最大流的形式 来 解 决.
以点 xi, x27 x3代表煤矿,以
点,
;,,
2,Y3, ,
,代表城市.
4 3 4 5
以弧 (xi, Yi) 表示从 x, 到 yi
的运输线(图 , 。6).
在图中增加一个总发点 x,及弧 (xf, xi) (i 二 1, 2,3 ),
增加一个总收点x,
及弧(Yi, x,) Ci二1, 2, 3, 4). 把弧(xj,
xi) 称为发点弧,
它的容量为 a1,弧 伪i., x:) 称为收点弧,
它的
. 11 弓・
容量为bi, 而弧Cx:,Y;) 称为中间弧,
它的容量为+ 00. 即得
如图 5.7 所示的网络. 这个网络上的 可行流 f 和限制运输问
题的可行解{x;i}是一一对应的. 只要令 f(xi, xi) 二 xii. 从
而 ,限制运输问题就化成在这
个网络上求最大流的问题. 图
5.8 和表 5.2 就是互相对应的
可行解(流).
注意到限制运输间题的这
种网络形式和表格形式之间有
这样的关系: 每个发点弧 (XS-1
X;) 和表中x;所在的行相对应 ;
图 5 .G
每个收点弧 (yi, x户和表中 Vi
所在的列相对应 ;每个 中间弧则与表中带圆圈的方格(以后称
为容许方格)相对应 .
+ 。0 一 Yi
利用这种关系,可以
r分 + oo \4 把标号方法移到表上
7 x, 来作,而不需要具体
+ co 4 " 7 '-T'
地画出网络.
Y3 / 5 对于一个给定的

, ̄ 叹迁了 可行解 {x;i},如表中

图 5 .7 某一行i,使艺 xi,
一 1二 i

a,则称该行为饱和行,否则称为非饱和行. 类似地. 若某列

1使艺 。,
一b,
i 二1
则称为饱和列,否则称非饱和列. 如表5.2
中第 2, 3, 4 列及第 1 行是饱和的,
其余行列非饱和.
表上标号方法的具体步骤如下,读者可对照在这类网络
上标号方法阅读.
设 {x;i}是一个可行解(开始,
总可取所有Xii二0作为第
. 1 15 ,
一个可行解).
表 5 .2

图 5 .8

第一步,检查每一行是否饱和. 在非饱和行的右边标上
记号( 十). 如全饱和,则得最优解 ;
第二步,检查每一个标号的行, 如第 i 行内的容许方格所
在的列还未标号,
则在该列的下面标上 (十心;
第三步, 检查每一个标号的列
1) 如某一列未饱和,进行第四步;
2) 如全饱和,
而标号列 1 中使 xii> 0 的 (容许 )方格所
在的行还未标号,则给该行标上 (- 7); 如在某一 步上,标号
过程进行不下去,
则得最优解.
第四步,改进现有的可行解. 对新的可行解,重新开始第
一步.
这里,
对可行解进行调整,是在表格中的一条折线上进行
的. 这条折线从某个未饱和行 i;的一个容许方格出发,沿垂
直线到达一个使 xii> 0 的容许方格,
又沿水平线到一个容许
方格,再沿垂直线…,直到某未饱和列了 * 的某容许方格为止.
这是相应网络中从发点 x,到收点 :,的一条非饱和链在表格
中的反映. 它所经过的方格可以从各行、 列的标号找出来.如
果把折线上的方格依次编上号码,则调整时,奇数方格内的
. 116 .
xi,
增加0,偶数方格内的 Xii减去 0,这儿

B=min{一

一客一

i,bik一L}J3J一”
1}
式中B,是折线土偶数方格中xi,
的最小者.
以表 5.2 为例说明一下这个过程.
标号 因第 2, 3 王
友 5 .3
行未饱和,故先标上
三 3 4 5
(十)( 表 ,.3). Y I

检查已标号 的 2 } x1 [ 0
行,第 2 行有两个容
许方格,其所在的第 (+ )
2,3列均未标号,
故分 夕I xs
(+ )
别标上 (十2). 同样
地。第 4 列标上(1 3)
(表 5.4).
检查已标号的列,首先三个列都是饱和列. 再检查各列

表 5 .4 中使 X,i> 0 的行,

有第 1 行未标号,故
梦盆
{ Y= Y s y礴
标上(一2) (表 5.5).
/ \ 1/ \
x 1 U iK 2 再检 查 标 号 的
\ / }\
一 /
行. 第 1 行 内的容许
r}\ ;\ / \

牛= 4 (+ )
/ 特 / 方格有两个,其中一
X3
{ / 5飞( + )
又 /
个所在的第 2 列已标
(+ 2) (+ 2) 丈+ 3) 号. 另一个所在的第
1 列未标号,故标上
(+ 1) (表 5.6).
现在第 1 列被标上号,
而它是未饱和列,
故进行第四步.
根据标号可以找出调整可行解的折线. 检查未饱和的标
号列第 1 列的标号, 为 (+ i). 故取出XI,
所在的方格. 然后
考察第 1 行,标号为 (- 2),故取出X12所在的方格. 再看第
2 列,
标号为 (+ 2),取出x22所在的方格.现在第 2 行的标号
表 5 .5 是 (十)。即 为 非 饱
和行. 表 5.6 中双圈

阅 标出的方格是折线经
过的方格. 这时 i:二
<+) 2,。:,一艺 xi,一2;
(+9
(+ 2) (+ 2) (+ 3) 1、
一1,
bi*一习 xii,
一 i 二1

4 而折线上偶数方格
只有一个,即x12所在的方格,
故 8,二x12 二2。所以 0 二 m in
[2 ,4 ,2 ]
表 5 .6
调整: 把奇数方
格中的 xii增大 0,即
令xu  ̄ x + B 二2, 砚了


2 、

式:‘x22 十e 二3,而 J 丫
r,

厂 ̄
偶数方格中的 xii 减 』

沙 、
小 e,即 x12 - X12- ‘
』, 了

0 二0,于是 得到新 (+ 1) (+ 2) (+ 2) (+ 3)
的可行解(表5.7).
对表 5.7 进行标
号可知已得最优解.
如果限制运输问题中,又已知每条运输线上有通过能力
的限制. 即除条件 (5.7) 外,
还要求x;i墓cii,这儿 :i,表示从
x,到 Yi的运输能力. 这时,只要把原来问题对应的网络中中
间弧的容量由十00改为 ,,但表上标号方法也要作某些修
. 118 ,
改. 这一点留给读者思考.
最后介绍两个应用限制运输问题的例子.
例I 已知有四 表 5.7
个零件和四 部 车 床,
第 t 部车床加工第 了
个零件的时 间 tii 如
表 5.8 所示. 希望制
订一个加工零件的计
(+ )
划。要求每个零件只
在一部车床 上 加 工, (+ 力

而每部车床只加工一个零件,并且全部零件加工完成的时间
最早(假定四部车床同时开始加工).
若以 xi,二 1 表示第 i 个车床加工第 i 个零件,
否则xii=
0. 于是一个可行的零件加工计划就是一组{xi乃,
满足条件:

艺 xii一’ (t ̄
少= i
1,2,3, 4),
(5.8)
艺 xii一’ (i  ̄ 1,2,3, 4),
xi,二 0 或 1(i  ̄ 1,2,3, 4; 1 ̄ 1,2,3,4).

可 .8 例如,令 二
,,二X22'
x33= x44 0 1,其 它
xii二 0, 就是一个可
行的零件加工计划.
按这个计划 ,全部零
件加工完成的时间是
m ax (t,l, t, , t33,t刃 二
15. 是否存在使加工
(单 位 : 小 时 ) 时间早于 5 小时的加
‘1 1 9 ‘
工计划呢? 我们将表 5.8 中小于 5 的方格视为容许方格 (表
表 5.9 5.9). 如果在容许方格中存在
一个可行的加工计划,那么加
工时间必小于 5 . 因 此 就 化
成如下问题: 是否存 在 一 组
{x;;} 满 足条 件 (5.8) 及 当
t;;? 5 时x;;一0. 这样一来,
可以解如下特殊的限制运输问
题:

艺 x;;c 1 (,一1,2,3,4),

艺 x;;< 1 (* ̄ 1,2, 3,、


),
:,
, ̄ 0 或 1 (i = 1,2,3, 4; 1 ̄ 1,2, 3, 4),

x ,; : ・0 当 t;;里5 时,

m a x
E 二
,,

4 4

如果该问题的最优解使艺 艺 。,
二4,则找到一个加工时
i= i i= 1

间小于 5 的加工计划. 要指出的是这里要求 x;i为整数 .根据


前面说过的网络最大流的性质, 这是办得到的.
表5.9 中列出这个问题的一个最优解, 即x13二:22= x31=
x4,二 1,其它 Xi,二0. 这是一个可行的加工计划,其加工时
间为m ax Lt13, 122, 131, t441“4. 还可以再提前吗? 类似地,
把表 5.8 中小于 4 的方格视为容许方格(表 5.10). 这时相应
的限制运输问题的最优解使艺 。,
二3,即不存在可行
. 12 0 -
的加工计划. 所以,使加工时间最早的加工计划是第 1, 2,
3, 4 部车床分别加工第 3, 2, 1, 4 个零件,加工时间为 4 小
时. 表 。
.10
例2 设有 。项 工 作 T I,
… ,T ,
,工作 T ,必须在时间
a,
开始,在时间 b, 完成 (ai<
bi入 已知做完工作 T ; 转到做
工作 T i 所需要的转移时间为
tii(i =c 户. 假定对任意的z
i r k 有 tiiC tik + tki。 要求
编制一个工作计划,以最少的
人数完成这 n 项工作(假设每项工作只要一个人去做).
若令 xii二 1 表示一个人做完工作 T ,后转去做工作 兀,
否则xii二0
由于完成工作 T ,
后,最多只能转移到某一项工作去,故

反之,
每项工作开始时,
最多是从某一项工作完成后转来
的 ,故

此外,
如果b,十幼> 。
,的话,
那么完成工作 T,
后,就不
可能转去做工作 乙,故 xii必为 0.
注意到对某项工作 T i,我们有
表示 T i和某项工作 T ,由一个人完成,
表示 T i由一个人单独完成.

. 121 。

以(l一
郭是“
mzT;X要
新增添
的人”
・我们
的目
的是寻求一组 {x,1} (x 二 0 或 1) ,满足上述条件,
且使

i=1‘
Y, 一i=1xi')一 iY=n1i=n1xii
最小,
即使艺 艺 。,
最大. 这就把该问题化成了限制运输
矛二 1 ; = 1

问题. 这时, 若构造一个,行 n 列的表, 第 ‘行和第 1 列表示


工作 T i,则使 b,十tii呈。
,的方格是容许方格.
表 5 .11 例 3 有五批货物,要 用
— 船只从 x1j x:分别运往 Y1, Y2}-
Y , i Y ,
” Y3. 规定的出发日期如表5.11
_ 所示. 如从x:到 y;的一批货
— 物要在第 5 天出发; 从 x2到 Y3
,8 有两批货物,一批在第 1 天出
— 发, 另一批在第 8 天出发等等.
又已知船只的航行时间如表 5.12 所示. 如从二,到 Y,要 2 天
等等. 不妨设每批货物只要一 表 5 .12
条船装运,且船只在空载和重
载时的航行时间相同.
把五项运 输任 务编 号为
T i, T 2, T3, T 4, T 5,于是 a,分
别为 5, 10, 12, 1, 8 ; b,分别
为 7, 13, 13, 3, 10, t.,可算
出列人表 5.13. 如 t1:二2,是船只完成任务 T 1(即xl* YJ
后去执行任务 几介;。 Y乡从 Y;航行到 x;所需要的时间. 如
前所述, 把使 bi+ tii-5 ai的方格视为容许方格 (表 5.14),
显然
. 12 2 .
表 5 .13

T, 几 了,
, T. T,
ai 5 10 I2 1 8

b. xxi冲
1- : Yylx:冲
ix }- + Yy:二z:闷
zx .y:卜
0'.y z}-扣3',{x :-扣
之x名 z-tyy ,

T, 7 x -: Y ,
只 2 1 1 1

T2 13 X I - I-夕: 3
只 1 1 1

T ,. 13 x z-'i Y z 3 3
扮:/ \
1 1

T4 3 x z- +Y , 2' 2 2{
只 2

Ts 10 x z -O'Y s 2 2 2 2

表 5 .14

max 艺 艺 Xi,
二3,于是用2条船即可完成任务. 具体的航
i= 1 i = 1

行计划可由最优解作出.例如一个最优解 为 X12一 1, X45 - 1,


X53- 1,其它X“二 0。 则一艘船依次执行任务 T I,及,另一
艘船依次执行任务 T4, 几,T 3. 若取另一个最优解为 X15二
・ 123 -
x4,二x5,二1,
’其它为0,则一艘船依次执行 T4, T,, T 5, T3,
另一艘船执行任务T 2.

'6. 网络最小费用流问题

上一节我们介绍了求一个网络上的最大流,而没有涉及
到流的费用. 实际上, 譬如在运输网络中,
往往希望总的运输
费用最小. 本节要讨论的就是这类最小费用流问题.
1.运输问题的网络解法 第一章介绍过运输问题的模型
是求一组 {x;i},满足:

艺 xi,
一bi
i= 1
(1 二 1,… ,V),

(6.1)
E 。,
二a;
了二 3
(i 二 1,… ,m ),
xii里 0 (i二 1, … ,m ;I 二 1, … 。n),

并使艺 艺 d:1ixi,
极小. 又叙述了如下结论:
i = I i = i

对一个可行解 {x0,"i},若存在一组 {U7, 40;},满足:


dii+ u0,"一 衅里0 (6.2)
x0i(dii+ “导一 衅) 二 0 (6.3)
则 {xqi} 是最优解.
运输问题的表上作业法,是从一个可行解选代到另一个
可行解. 对每一个可行解,总找出一组 {ui, 。 ,
} 使当xii> 0
时 d;i十“ ;一 vi二 0 即条件 (6.3) 被满足,再去检查条件
(6.2) 是否满足. 如满足, 则得到最优解.
现在介绍的网络解法, 其基本思想则是从一组 {“, ,。 ,
}迭
代到另一组 {“ ,,vj},
使之总满足条件(6.2). 对一组 {“,
,vi}I
当d;;+ “
,一,
,> 0 时,我们限定xii ̄ 0 (于是条件 (6.3)
. 124 .
被满足). 把运输间题化成解如下问题,
求一组 {xii},满足:

艺 :,

c b; (1 二 1,2,… ,n) ,



‘ 艺 xjiC ai
. 了二 1
(i  ̄ 1,2, … ,。),








xii璧0 (i 二 1, 2, … ,m ; 1二 1, 2, … ,。
),


xii , 0 当 d;i> 一“;+ vi 时.

并使艺 艺 。,
i= 1 j = 1
达m到最 n
大. 这正是上节的限制运输问题. 如
果它的最优解使艺 。,
一艺 a,
. 即为运输问题的可行
i= 1 j= 1 i= 1

解的话,则就是所要求的运输问题的最优解.
下面我们结合一个例子来说明解的步骤. 设已知运输问
题的数据如表 6.1 所示.
表 6

Yv l, 夕2 Y. 3 y4 叮i

Xx .且 3 3 7 8 2

义z 55 66 11 z2 7 夕

X 3 2 8 3 4 7

石i 4 3 4

第一步。
求第一组满足条件 (6.2) 的 {“,
,。,
}.
显然, 可以取 u"',二 0, 。
;,
,二 0 (j  ̄ 1, 2,...,n; i ̄ 1,
2, … ,m )作为第一组 {“ ‘,。,}. 然而按如下办法可取一组
比较好的 {u;, 。,
}: 令
“},
)= m ax (- di;) (,二 1, 2, … ,M ),

},
, ̄ min(dii+ UW ) (7二1,2,… ,n),
极易验证 {uciO,vc,)} 满足条件(6.2),进行第二步.
表 6.2 中列出了例子中的{岭,

表 6 .2

},
,}.
第二步,解限制运输问题.
设已知一组满足 (6.2) 的 {“‘

。,
},我们把使dii+ “
,一。
,一。的
方格作为容许方格 (即对使 di;1
u,一 vi > 0 的方格 限定 xi,二0,
直观上说,
即把使 内十“
,一v,> 0
的运输线 (xi, Yi) 关闭起来). 利用上节的表上标号法求出
最优解 {xiii.
1) 若 {xi1) 是原来运输问题的可行解,则也是所求的最
优解,计算停止. 表 6.3
2) 若不是,
则进行第三
步.
表 6.3 中带圆圈的方格
为容许方格. 其它方格中的
数 字 表示 (di;十“,一 v;)
值. 用标号方法求出限制运
输问题的最优解,可见 (+ 3) ( + 3) ( + 3 )

艺 艺 xi,
一’”

i= 1 ; = i

圆圈内的数字表示这个最优解的xii值. 表格外是得到最优
解时各行、列的标号.
第三步,改进 {“
;,。
,}.
一1 2 6 .
上一步的结果未能得到原运输问题的可行解,说明现有
的运输线(容许方格)不足以满足需要,必须考虑开放某些本
来关闭着的运输线.
我们把第二步结束时,标号的行和列分别记为 1, J,未
标号的行和列分别记为 I, 叉

取“
一/mi
EJrn,[dii+“
,一“

’并令新
的{一“

}为
「u ; t〔I ,
u;今 嘴一,。
`u t 门一 0 i〔I ,
‘一((vi
vi十 s ’ 〔乙 ,
i 〔J .
对这一组 {u;, v; ,回到第二步.
例子中,标号行 I 二 {2, 3},未标号行I 二 {1},又 J二
{1,3, 4},了 ̄ 丁
2}. 故
S 二 m in [d22+ u: 一 v2, d32 + U3一 。
21 = 1
新的 {“
,,。
,} 及相应的限制
表 6 .4
运输问题如表 6.4 所示.
由此可见,网络解法的
整个过程就是解一系列的限
制运输问题,直到得到原 问
题的可行解时为止.
在继续上例之前,我们
说明几点:
1) 第三步中,S 必为正
数.


为了简单 清 楚 地 说 明 问
题,我们把第二步结束时的标
I 号行、
列重排一下,
排成如左示
意图的形式. 表格中的方格被
划分成四个部分, 一部分是汉
1,1E J 的方格,
简记为IJ ;类似
地分别有叮,IJ,IJ. 注意到ij 部分中的方格内,内 + “

一。,必大于 0. 因为若某个 方格使 心 + “
,一 vi = 0 即
为容许方格的话, 则因iE I,
根据标号方法的规定 1 列必被标
上 (+ i),这与i〔J 矛盾. 由此,6> 0.
(由于这时第二步的结果未能得到原问题的可行解, 所以
If 不会是空集.)
2) 考察一下这四部分方格中的 (d;;+ u,一 vi) 在第三
步改进 {“;,。,} 后的变化情况.

,; = ,, 。1= Li+ S

dii+ 城 一t'i dii + ,


‘;一,
;=
。; ” “,
= d i户+ “‘一 约 (d ii + u,一 ,,
) 一S

山,十川 一,
玉二 di;+ U .一,
;=
“; = 。‘+ 古
(dii + 。,一 vi) + dii + u ‘一 vi

不难得到如上的示意图. 可见,改进后的{“:,7vi}仍满
足条件(6.2). 并且If,万这两部分的方格的容许性 (容许
方格或非容许方格)不变.
刀 部分中,全都是非容许方格(可能本来是容许方格,后
来变成了非容许方格. 如表 6.4 的第一行、第一列的方格).
叮部分中,
必至少有一个方格,使d1 + “
:一,
;二0,即
变成了容许方格 (如表 6.4 中第二行第二列的方格). 直观上
说,至少开放一条关闭着的弧.
3) 解新的限制运输问题时,
能不能就用前一个限制运输
问题的最优解作为第一个可行解呢? 可以的. 为此只要说明
. 12 8 .
对{“:,。 ;},条件“当 d;i1 u: 一vi> 0 时: xi,
二0”没有被破坏.
如 1) 2) 中所说,前一个问题的容许方格只能在 IJ, 厅,方
三部分中,而对新的间题,IJ, 刃 中方格的容许性不变. 可
能会破坏上面条件的就是在 刀 部分中, 本来是容许方格, 但
在新问题中成了非容许方格. 但是在这样的方格中,xii必为
0, (因为若 xii> 0,由于 jE J ,则 i 行必被标上 (一户,这与
iE I矛盾. )如表 6.3 中,x1,二 0. 这样,除了第一个限制运
输问题外,每一个限制问题都可以以前一个限制运输问题的
最优解作为第一个可行解,
而无须都从所有xi,
为 。的可行解
出发. 表 6,

现在回到例子中
去. 把表 6.3 的 {xi乃
作为新限制运输问题
(表 6.4) 的第一个可 淤 洲,
卜一
‘,
行解 (表 6.5),标号 7}(+ )一
的结果. 改进了这个
可行解 (表 6.6). 它 (+ 3) (+ Z) (+ 3) (+ 3)

是原运输问题的可行
解,所以,也是要求的运输问题的最优解.

表 6 .6 2.最小费用流 这里是
朽 最大流问题的继续. 假定
给了一个网络 G 二[N , U ,
‘],发点为 xs,收点为二 ,
.每
一弧 以i,xi) 上,除具容量
,(xi, xi) 外,还有一个单位
流量的输送费用 d(xi, xi)墓
我们的 目的是求一个最
小费用最大流,即求一个流 f 。 {人,
}. 满 足 :
. 129 -
o: fii鉴c(xi, xi) (6.4)

二 !一“
(‘
)xi二

(xi,xi)E U
f“
一。二

L,x,)EU“
。f 一}” },
Cx, x, (6.5)
lv(f) xi
,(户 二 。* ,* 是最大流量, (6.6)

且使艺 d(xi,xi)fi,
达到最小.

易见运输问题也是求最小费用最大流. 只要在运输问题
对应的网络中(图5.7), 令中间弧 (xi, Yi) 上的单位费用d(二
,,
Yi) 二dii,而发点弧、
收点弧上的单位费用 d(x,, xi) 二d。i,
:,
) 二0,
为了明确起见,把网络中满足 (6.4) , (6.约 的流f 二 {fii)
称为可行流,它的流量记为 v(f),把满足(6.6) 的可行流称为
最大流. 使 Z d(xi, xi)fii达到最小的可行流,称为 (流量为
v(f) 的)最小费用流. 这样,最小费用最大流就是流量为 。

的最小费用流.
对最小费用流问题,有如下结论:
若 f* 是最大流,存在定义在每一点 二
‘上的数 I(xi),
xiE N . 满足:

I当I(xi)一I(xi)< d(xi,xi) 时・ f名二0, (6.7)


I当 ?,(x i) 一 I。‘ fii  ̄ c(xi, xi),
) > d(xixi) 时, j*
则f* 是流量为 。
* 的最小费用流(即最小费用最大流).
现在证明这个结论.
记 d(xi, xi) = d(xi, xi) 1 X(x,) - I(xi) ,则 由条 件
(6.7) 得

艺 d(xi,xi fii一 艺 d(xi,xi)fii


d(xj,xi)< 0

. 13 0 .
+ 艺 A x;, xi)fii
d(xi,xi)> 0

 ̄ 艺 4 xi,二
,)c(xi,二
,)
d(xi,xi)<0

若 f 是任一个最大流,
则由条件 (6.4)

z d(x;,xi)fi,
一 艺 d(x;,xi)fii
d(xi,xi)< 0

+ 艺 d(xi,xi)fii
d(xi,xi)> 0

里 艺 d(xi,xi)c(xi, xi).
d(xi,xi)<0

所以

艺了
(:,
,x,
)fIj 艺 d(.Ci,二
,)fii (6.8)

又由条件 (6.5)

艺 d(xi,xi)fi,
一艺 d(xi,xi)fii+ 艺 A(xi)fii

一艺 ),(xi)fii一艺 d(xi,x)fii

又 介
+ 艺 ) 艺 fii
x iE N (xi,xi)EU



一 艺 ) 见 fi;二乏二d(xi,xi)fii
x iE N (xi,xi)EU 口


+xiEN‘
(一
)[(二

},xi)iEU。
hi-



. .
」嘴舀 .
」 .

(xi,xi)EU

一艺 d(xi,xi)fii+ v(f)[2(x,) 一;(xr)l


13 1
于是 (6.8) 为
艺、
(二,
,xi)fii+ v(f)[)(x..)一;(xe)]

飞艺 ‘
(二,
,xi)fii+ v(f*)I'l(xs) 一‘
(二‘
)].
但 ,(f) = v(f*) 二 v* 故

艺 d(xi,xi)fii 艺 d(xi,xi)fii.
上述结论得证.
从证明中,我们可以看到:
1) 证明中并没有利用最大流的特殊性质,只用到 f* 是
可行流的条件,因此可以把结论改为: 若 fo是(流量为 。
(fo)
的) 可行流,存在一组数 {)(xi)} 使当d(xi, xi) > )(x;)-
z(xi) 时,I0ii ̄ 0,当d(xi, xi) < ;l(xi)一2,(xi) 时,f0i= c(xi,
xi),则 fo是流量为 。(fo) 的最小费用流.
2) 若把条件 (6.约 换成

艺 ti,
一 艺 fi,
二‘(xi) xiE N , (6.5)
(xi,xi)EU (xi,xi)EU


儿・(xi)是
给定的
数・表
示在确的
流量(补帅一
0).
显然,条件 (6.5) 是 (6.5)'的一个特例. 即 a(x,) 二 一。(f) ,
a(xt) 二 。(I) ,其它 a(x) 二 0
若把满足条件 (6.4),.( 6.5)' 的流称作可行流,
则 1) 中的
结论也是对的. 以后要用到这个结论.
最小费用流的网络解法.
方法的基本思想和运输问题的网络解法是类似的. 所不
同的是对给定的 {,l (x)},为了使条件 (6.为满足,要把网络
中的两类弧“关闭”起来. 一类是使 d(xi, xi) > 双xi)- )(xi)
. 132 -
的弧 介, ,xi) ,其上限定 九, ̄ 0,我们说它是零流关闭弧; 另
一类是使 d(x;, xi) < .l(xi) 一2 (xi) 的弧((xi, xi),其上限定
fi,二 ‘
(xi, xi),我们说它是饱和关闭弧. 称使 d(xi, xi) =

(:,
) 一I(xi) 的弧 (xi, xi) 为容许弧.
因之, 对给定的 {,l (x)}, 网络中的所有弧被分成两大类,
一是容许弧, 一是关闭弧 (非容许弧). 后者又有零流关闭和
饱和关闭之分. 我们称这样的网络为 (与 {又(x)} 相应的) 限
制网络. 限制网络上的最大流称为限制最大流.
网络解法就是从一个 (,l(x)} 出发,在与 仁(x)} 相应的
限制网络上求出限制最大流, 如果它也是原网络上的最大流,
则就是最小费用流. 否则,改进 {又(幻} 为新的 {.l'(X) }. 如
此 反复进行,直到求得原网络上的最大流时为止.
要注意的是在限制网络中用标号方法求限制最 大 流 时,
标号过程只能对容许弧进行. 即如果x,被标号,hi< C(xi,
xi),并且 介,
。xi) 是容许弧的话,xi才可标上 (十xi). 类似
地若x;被标号fki> 0,并且((xk, xi) 是容许弧的话,x*可标
上 (一:‘
).
方法的具体步骤如下:
第一步,求第一组 {,},(xi)}.
最简单的办法是令所有的 },(xi) 二二0. 以后我们将介绍
另一种比较好的办法.
第二步,
求限制最大流.
对 {X}(xi) },
由于 d(xi, xi) > 0, 故与其相应的限制FA 络
中没有饱和关闭弧,所以, 可以从零流f(O,二{fco)二0} 出发,
用标号方法在限制VA 络上求出限制最大流r t)({,l,仓i)}与f(o)
满足条件 (6.7)).
一般地,
对第 k 组{.lk(xi)},可以从与前一组 {凡
*一,
(x;)}
相应的限制m 络上的最大流 f(k-i)出发:.用标号法求出与 {从
・1 3 3 ・
(xi)}相对应的限制最大流f(k)(以后将说明{lk(xi)} 与f(k-1)
满足条件(6.7)).设这时的标号点集为X k,未标号点集为X k,
我们把满足x;E X k, x,E X * 及d(xi, xi)1 2k(xi)- 2k(xi)> 0
的所有弧 (即(X k, X 口 中的零流关闭弧) 记为U ,; 把满足
xi〔X k,x,〔X *及 d(x;, x,) + Ilk(xi)一2,*(xi) < 0 的所有弧
(即(X k, X 口中的饱和关闭弧)记为U 2.-
1) 如果 U U ,都是空集. 我们将证明这时的限制最大
流f(k,便是原网络上的最大流, 从而就是最小费用最大流.
2) 如果 U ,, u :中至少有一个不是空集,则进行第三步.
第三步, 改进 {;,k(Xi)l .
计算
S,  ̄
(二
;耀。
,[d(xi,x,卜 ).k(xi卜 )'k(xi)],
占2  ̄ m in [一臼(xi, xi) + 又
*介,
) 一lk(xi))].
(xi,xi)EU ,

取 s  ̄ m in [S,, o2],令第 k + 1 组 {4 +t(xi)} 为

'tk+i(xi)一I(1'4( xi)
k(xi) + a
XXi〔X
i‘Xkk,,
回到第二步.
和运输问题网络解法一样,我们说明几点:
1) 当U U :中至少有一个非空时,显然,a 总是正数.
2) 考察一下第三步中由{4 (-i))改进为{lk+t(x;)}后,
网络中弧的容许性会发生什么变化.
网络中的弧按其起点终点的位置可分为四类. 一类是起
点在 X k,终点也在 X *的弧,记为 (X k, X 口. 类似地还有
(X k, Xk), (无k, X k) 及(X k, X*).
显然,
从 {;Lk(xt)} 变化到 {A'k+t(x1)} 后,对 (X k, X k) 及
(2 k, X k) 中各弧的容许性(是容许弧、
或是零流关闭弧、
或是
饱和关闭弧)没有影响.
. 13 4 .
考虑(X k, X 户中的弧介;, x9). 对{又
*介i)},如果
(a) (xi, xi) 是容许弧,
即d(x;, xi) + Alk(xt) 一lk(xi) -
0,贝lJd(x;, xi) + lk+1(x;) 一4 +1(xi) ,
二d(x;,xi) + 又*(x、
)一
又*(二
, ) 一S < 0,即在与{4 +1(xi)}相应的限制网络中,(二 、,
二,
) 变成了饱和关闭弧.
(b) (xi, xi) 是零流关闭弧,则 d(x;xi) + 4 +1(x;)一4 +1
(x,) j 0,即在新的限制网络中,(x;, xi) 或者变成容许弧,或
者仍是零流关闭弧.
永) 如果任, ,xi) 是饱和关闭弧,
则d(x;,xi) + 从+1(x;)一
lk+1(x1) < 0,即仍是饱和关闭弧.
(X k, X k) 中各弧的容许性的这种变化情况可以用一 个
示意图表示 .

{。 杏 . 。 。 ‘ } .{
一!零流 fil弧}一一 }容许 弧卜)一匹ffl兰一

1巡尸
类似地讨论,
可见(Xk, X k) 中各弧的变化如下面示意图
所示.

阵耳 一一1 一 一习二 . I
'- 口空
卫型翌竺!一 — Ig 二1 匹」
一 一 1零流关闭弧IF S

注意到第三步中S 的取法,U; 是(X k, X 口中的零流关


闭弧,U,是 (X k, X 口中的饱和关闭弧. 所以, 从 {;Lk(xi) }变
到 {又
k+1(二
沙}时,至少“ 开放”(X k, 又乡或(X k, X 口中的某
一个弧.
为了说明 {又, 、
t(x,
)} 与 f(k) 满足条件(6.7),只要说明
(Xk, X k) 中的容许弧上必有潜) . 这是显然的.
因为若不然,则xi必属于 X k,这与xiE X *矛盾. 同样地,
(X k, X 口中的容许弧上必有 潜,二 0.
由此,{,7k+1(xi)} 与 f(k), 0 k+1(xi)} 与f(k+l’都满足条件
(6.7). 根据第 132 页的说明 1), f(k)是流量为 。 (f(k)) 的最小
费用流, 而 f(k+1,
是流量为 。 (f(k+1)) 的最小费用流. 所以整个
计算过程就是从一个 (流量为 。(f(k)) 的) 最小费用流过渡到
一个(流量为 。
(f(k+1)) 的)最小费用流,
直到(流量为 v* 的)最
小费用流为止.
3) 如果对第k 组 {)k(xi)l, U 1, U :都是空集,则在原RAJ
络中,(X k, X 口中只有容许弧和饱和关闭弧. (X k, X 口中
只有容许弧及零流关闭弧. 但不管哪类弧,在(X k, X口中
的弧上必有 潜)= f,
C(xi,Xi), (X k, X k)
中的弧上必有 f(k)=
0. 从而(X k, X 口是
原网络的最小截 集.
叹 所以 f(k) 就是原 网络
上的最大流,也就是
所求的最小费用最大
流.
例 求下面网络中从 x,到 x,的最小费用流(图 6.1). 图
中每一弧旁的第一个数表示 d(xi, xi),第二个数表示 ‘(xi,
xi).
在下面图例中,顶点圈内的数字表示这一点的 ,(xi) 值,
弧旁圈内的数字是弧流量.以一卡‘

”表示零流关闭弧,
“一一
)”
表示饱和关闭弧,以“一 ”表示容许弧 .
开始取第一组 2,1(xi) 全为 。 ,这时限制网络中仅有零流
关闭弧(图6.2). 从零流f(O,二 {您,二 0} 出发,求限制最大流
f(1),显然, 仍是零流.且标号点为X :一{x.},未标号点为 X , 二
{x1, x2, x3, x,} (在图中以粗虚线表示这种划分). 于是 U ;二
. 136 .
{(xs, x1), (xs ,x2)}, U 2是空集, 故 S 一S, ”m in [d(x,,x,) 1
1,(xs) 一又1(x1),d(x,, x2) 1 ?,1(x,)一?1('x2) ] 二m in [4,I] “ I
改进 {;1(xi)} 为
新 的一组 扭2(x,) },
得相 应 的限 制 网 络
(图 6.3). 可见,弧
(xs, X2) 被“
开放”为
容许弧. 在这个限制
网络中。从前一个限
制最大流 fci)(此处为 图 6 .2
零流)出发,再求新的
限制最大流 .
如此反复下去,整个计算过程列在图 6.4 中. 可以看到,
进行到第7组{戏x;)
时,U 1, U 2 都 是 空
集,于是计 算 停 止.
与 {27(x1)} 相应的限
制最大流就是最小费
用最大流 ,并且计算
过程中得到的每一个
图 6 .3
限制最大流也都是相
应的最小费用流. 如第 5 个限制最大流 (与 {;Ls(x;) } 相应)
是流量为7 的最小费用流,
现在请读者考虑一下, 如下的运输问题的网络解法:
m n
艺 Z dilxii,

万‘
」.
怡[ (i 二 1,2,… : n),

. 13 7 ,


曰 (i  ̄ I,2,… ,m ),

x;,基Co (i 二1,2,… ,。; 夕 ̄ 1, 2, … ,
心.
3.最短路方法与最小费用流 在最小费用流问题中,若
把每一个弧的长度 l(x1, x,) 看作是这个弧上单位流量的费用
武x;, x,),则易见,
流量为 1 的最小费用流就给出了一条从 xs
到 二,的最短路. 所以最短路问题可以看作是最小费用流问
题的一个特殊情况.
现在说明利用最短路方法可以为最小费用流的网络解法
提供比较好的第一组 {}:(x;)}. 从上面的例子可见,在得到

Xk X q U, S, U , S,


X ,= (x ,,x ,)

X ,= {x x x,,x,}I(x,,x,)

(X,,X,) 空
X ,二 {xs,x,}
(x x,) 2 集
X,= {x x3,x,}
(x,,
二3)

(x x ,) 空
X ,二 {x,,xx,
二、}
(xl,x ,) 1 集
叉,二 {x3,X ,}
(x,,x 3)

{.Z4(xi)} 之前,在限制网络中,没有从 x,
到 x:的、由容许弧
组成的路, 从而相应的限制最大流总是零流. 对于一个点、 弧
数相当大的网络来说,这个过程将是很长的. 所以取第一组
{;,(x;)} 全为 。,不是一个好办法. 我们希望取的 {A,;(x;) }
最好是具备这样两个条件: 第 , 一,
它与零流是满足条件 (6.7)
的,这样,可以在第一个限制网络中,
从零流出发求得第一个
限制最大流;第二,在第一个限制网络中, 从 x,到 x,
有一条由
容许弧组成的路。这样第一个限制最大流就可以不是零流.从
而减小计算工作量.
如果把每个弧上的费用 d介‘
,xi) 看作是长度,按最短路


x; 二{x x3,x3} (xi,x2)

见;= {x2,x,} (二3,
二,)

沂@


{xr,x2,x2,x3}I(x,,X,)

X ,二 {、,
} (x 3,x ,)

x 。二 {x x,} (x x3) 61(x,,x1) 1

③ 无‘= {x2,x3,
二,}






无, 二 {xs,x t,xz,x3)1 空 停

X ,= {x,} 止

. 13 9 .
方法给每一点 xi以一个标号 2'(xi),它是从 x,到:、
的最短路
长. 把这些标号取为第一组{又
1介i)}. 易见,正是具备上面
两个条件的. 顺便提一下,
用最短路方法求{几
工(xi)}时,可以
不要求d(xi, xi)> 0.
在前面例子中, 求出从 x,到 x,的最短路. 各点的标号如
图6.5 所示.取其为 {2,(xi) },就省去了图6.4 中前三步工作.
现在进一步分析一下网络解法的过程,可以看到利用最
短路方法去解最小费用流问题.
如前所述,网络
解法的过程是对一组
{2k(xi)} 在相应的第
k 个限制网络上,从
第k 一 1 个限制最大
流 f(k-i)出发,求出第
图 6 .5
k 个限制最大流 f(k).
这时流量增加了 [v(f(k)) 一 。
(f(k-1)) ],这部分流量是第 k 个
限制网络中,从 x,到 x,的非饱和链 (全是容许弧) 上输送的.
若 9 是其中某一条,则输送单位流量,将使总输送费用增加

d(u) 一艺 d(xi,xi) 一艺 d(xi,二


i)
 ̄ 艺 [lk(xi) 一;'k(xi)]

一艺 Ilk(xi) 一lk(xi)]
 ̄ )'k(xt) 一)"k(xs) 二)'k(xe).
而在原来m 络中,若沿一条关于 f(k-1)的非饱和链 声 输
送单位流量的话,则费用增加

d(It') 一艺 d(xi,。)一艺 d(xi,。).


但对声十上的每一弧。i, xi) 有 式xi,xi)里'Lk(xi) 一;Lk(xi),
对 声一上有 d(xi, xi) < ;Lk(xi) 一 4 (xi) 所以

d(,u )里I Ilk(xi) 一‘


k(ri)〕

一艺 [;k(xi) 一;k(xi)]一;*(x‘
).
由此, 第 k 个限制网络上,沿任一条(关于 f(k-1) 的)非饱
和链的单位输送费用是 }'k介c). 并且是原网络中所有(关于
f(k-,)的) 非饱和链的单位输送费用的最小者. 从而可以把算
法归结为在原网络中寻求关于 f(k-1) 为一条使单位输送费用
d(沁 最小的非饱和链,然后在这条链上对f(k-1)进行调整.
因此,对 f(k-1),我们构造一个新的RAJ络 L,(f(k-?)): 它的
顶点是原R 络G 的顶点,而‘的每一弧 (xi, xi) 变成两个相
反方向的弧 (xi, xi), (xi, xi). 定义弧的长度为:

沪 d(xi, xi) 若 f(
iiR-1) < ,(xi, xi) ,
lk-I(xi, xi) 二 、
.、
+ 00 若 f给一‘
,二c(xi,xi),



呢 一d(xi, xi) 若 f珍一‘
,> 0,
lk-i(xi, xi)  ̄ .

+ 00 若 潜-1)二 0
这就把在G 中寻求关于 f(k-1) 的最小单位输送费用的非饱和
链的问题化成了在 L (f(k-1)) 中求从 x,到 x‘的最 短 路 问 题.
于是 ,网络解法的过程就可化成解一系「 列最短路问题的过程。
仍以前面例子为例, 我们从 f(o) ̄ {招, ̄ 0} 开始,(对所
有d仓, ,xi)::- 0 的情况,零流是流量为 。的最小费用流.) 图
6.6 列出了解的过程. 左边是R 络 L (fck-1)) .其中粗弧表示从
x,到 x‘的最短路. 顶点圈内的数字是各点的标号 双xi )。
长度为 + 00 的弧可以省略不画. 右边是逐个求出的最小费
用流.
j(4)已是原网络上的最大流,
故计算停止. 请读者说明这
. 14 1 .
L (尹。): f0e

- I

L 伴,
)):
户、

L (1(”
):
l(3)

一 2
工(fc,
今:

L (产。)

图 6 .6

. 14 2 ,
样一个结论: 若在某一步上, 对流 f(k): 相应的网络 L (f(k)) 中
不存在从 x,到x‘的最短路 (或者说最短路长度为 + 00),则
f(k)便是最小费用最大流.
如上例中,
f(4,
相应的L (f(4))中从 ‘
X,到x,
不存在最短路.
读者也许要问: 最短路方法中曾要求网络中不含长度小
于 。的回路,那么现在每一个 L (f(k)) 中会出现负回路吗? 不
会的,其道理在下面可以见到.
4.一般网络上的运输问题 设给了一个 网络 G = IN ,
U , Cl,每个弧 (二
‘,xi) 上有一个单位费用 d(xi, xi). 对每个
顶点 x‘给一个流量(即净流人量) “介i.). 网络中的点按 a(xi)
被分为三类: 一类是发点 。(xi) < 0),记为S,一类是收点
(a (xi) > 0) ,记为 T ,另一类是中间点 (a(xi) 二 0) ,记为
R. 不妨设艺 a(xi) 二0. 现要求一个流 I一认,

} 满足如
下条件1):
OC fi1C c(xi, xi) (xi, xi.) ‘U

{ 艺 fi‘

使总的输送费用艺 d(二
*,二

一 艺
(xi,xi)EU

)人

(xi,xi)EU

。达到最小.
fii ̄ a(xi) xi〔N (6.9)

这个问题和 (2) 中介绍的形式没有本质差异. 和运输问


题一样,
可以用增加总发点、总收点及发点弧、收点弧的办法,
化成最小费用最大流的问题. 但是,当收发点数相当多时,

样做是不方便的.
下面我们介绍一种算法,它是通过从一个可行流迭代到
另一个可行流,
使总输送费用逐步下降:.最后求得最小费用流.
首先看看如何从一个可行流迭代到另一个可行流.
' 5 中求最大流时,对一个流 f. 我们曾让数量为 0 的流

1) 应指出,满足条件 (6 .9) 的流可能不存在.

. 1 43 .
量,通过一条关于 f 的非饱和链从发点 x,
输送到收点 xt,得
到一个新的流ft. 除了发收点外,网络中各点的流量保持不
变. 由此可以给我们一个启发: 如果让数量。的流量不是沿
链输送, 而是沿某一个圈输送的话,则网络中所有点的流量也
就保持不变. 这岂不是得到另一个在各点流量保持不变的流
吗? 现在来具体实现这个想法.
设f 是一个可行流 (即满足条件 (6. 9)),那二{xil,
xiz, … ,x;k,:‘

}是网络中的一个圈. 如果我们按顺时针方
向(或逆时针方向)沿 产前进, 就把 11的弧分为两类,
一类是弧
方向和前进方向一致的弧, 记为 矿,另一类是不一致的弧,记
为 产一 如果 it+ 中每个弧都是未饱和弧,Fi 中每个弧都是非
零流量弧 ,我们称VC样的圈叫C关干 f 的)非饱和圈. 要注意
的是,一个圈是不是
非饱和圈,不仅与 f
有关,而且与沿圈前
进的方向有关. 所以
更确切一点,应是关
于 f 的某方向的非饱
图 6 和圈.
以图6.1 为例, 若令a (x,) 二 一1.0 , a(xt) 二 10, a(xt) =
a(x2)  ̄ a(x3)一0,则图 6.7 就是一个可行流.
检查圈 Fi- lx1, x2, 'x33 xl},按逆时针方向前进,则 矿
 ̄ {(x2, x3)I,IL- 二 {介:,X3)., (x2, x1)I.
易见这个圈是逆时针方向的非饱和圈. 但不是顺时针方
向的非饱和圈.
若 产是关于 f 的某方向 (譬如说顺时针方向) 的非饱和
圈,

0< B呈min [min [c(x;,x1)一f=i)・
黔[fill]・
. 144 .
让数量为0 的流量沿 产的顺时针方向输送. 即把 矿 的每个
弧的流量增大0, 厂 的每个弧的流量减小0,得到一个新的
可行流 f
如图6.7 中y 二{::,x2, x3, x1}是逆时针方向非饱和圈,
取0呈min [c(x2,
x3)一f23,min[f13,/2,11认2,比如令。

I 的流量沿it的逆时针方向输送,得新的可行流(图6.8).
现在解决第二个问题, 如何利用可行流的迭代,使总输送
费用逐步下降?
显然,
若让单位流量沿某个非饱和圈产输送,
总费用将增

大‘
(IL)一粤d(x;,x1)一买d(xi,动・因
1,如
果某个
非饱和圈拜上 d伽) < 0,则沿升输送。数量的流量使总费
用下降 」
ed(u) I. 为了使总费用下降尽可能地多,我们令0
尽可能大 ,即令

0一min [min [c(x;,x;)一f,


]・i n [f‘

]]・
如图 6.7 中 A 二
{xi,x2, x3, xi} 的逆
时针方向输送费 用
式刃 二5. 若取e=
2,则得图 6.9 的可行
了。
流,总费用比图 6.7
的可行流减小 10.
于是对一个可行流 f,可逐个检查关于 f 的非饱和 圈 f4,
如果 产的输送费用式4) < 0,则沿 科输送0 数量的流量, 得
到一个总费用减小的可行流. 反复进行下去,直到某一个可
行流,网络中不存在关于这个流的、 输送费用小于 。的非饱和
圈时为止. 可以证明,
这时的可行流便是最小费用流.
继续前面的例子,检查图6.9, 圈A  ̄ {XS3 X13 X23 Xs} 是
逆时针方向非饱和圈,且输送费用武Y)  ̄ 一1,故取O= m in
[m in [c(x2, x,) 一f2t, C(xs, x2) 一 fs2I, fts] 二,. 于是沿IZ
的逆时针方向输送 5
单位流量,得图6.10
o 费用又下降 5.
检查图 6.10. 可
知不存在费用小于 。
的非饱和圈,故得最
图 6 .9
小费用流.
最后剩下的问题是第一个可行流如何给?一般说来,我们
可以如本段开始时所
说的那样 ,
增加总发、 ⑦
收点和若干发 、收点
弧,然后在新网络中
求流量为 E a(xi)
x1 E T

的最大流 (如果存在
图 6 .10
的话). 然后从新网
络中去掉加上去的发 、收点弧及其上的流量。余下的部分便是
一个可行流. 这对于发点、收点很多的网络,未必简便. 从下
面可见,在某些特定情况下,第一个可行流可以很快地给出.
在实际应用(诸如物资调运等)中,工人、计划工作人员,
根据
他们长期的丰富经验可以很快拿出一个可行方案. 或者对于
某些经常性的调运工作,也可以在原有方案的基础上制订出
一个可行方案. 这都可以作为第一个可行流的依据.
读者不难看出,关于最小费用流的网络解法和本段的算
法是基于同一个准则,即如果对可行流f, 网络‘中不存在输
送费用小于 。的非饱和圈的话 ,则 f 是最小费用流(反之 ,对
. 14 6 .
最小费用流 了*,‘中不存在关于 f* 的输送费用小于 。的非饱
和圈). 但是,是从不同的途径去处理问题的. 在上述准则
中,包含两个条件. 一是可行性 (即为可行流),二是最优性
(即不存在负费用的非饱和圈). 网络解法是使流总保持满足
最优性, 而逐步向可行性过渡,只不过有时最优性是通过其他
条件 (如条件 (6.7)) 去实现. 而本段的算法是使流总保持满
足可行性,而逐步向最优性过渡. 这种算法的原则是大家从
线性规划以及 ' 2- ' 5 中所熟悉的.
附带说一句,如果利用上段定义的ICJ络 L (f),则最优性
条件“网络‘中不存在关于 f 的负费用的非饱和圈” 就等价于
“网络 L (f) 中不存在负回路” .
5.物资调运中的图上作业法 在制订某种物资(如粮食、
化肥等)的调运方案时。 我们往往掌握这样三个基本资料: 一
是收发点,
二是各收发点的收发量(单位: 吨),
三是联贯这些
收发点的交通线路图。包括各条线路的长度(单位: 公里) .把
这三种资料反映到线路图上, 以" 0 ”表示发点, "x ”表示收点,
点旁的数字表示发量或收量. 而交通线旁的数字表示长度.
例 图 6.11 就是一个简
X4 , 15
单的例子. x1, x3是发点,
发量
分别是 7, 9, x2, x4, x5 是收
点,
收量分别是 9, 5, 2. (单
(’
{’
常,

位: 万吨) 2

我们的目的是制订一个物
x1 7
资调运方案, 使 总的运输量(吨
图 6 .11
公里)最小.
一个物资调运方案,称为可行方案. 使运输量最小的可
行方案,
称为最优方案.
如让x;的2单位沿 ::二
,送到 x5,2单位物资沿 x1x2运到xi,

余下的3 单位运到石去. :,的2 单位沿二
。二、运到x4,余卞
的 7 单位运到 x: 去. 这样各发点的物资全调运出去而各收
点所需要的物资都得到满足. 这就是一个可行方案. 我们也
可以把它反映到交通线路上. 如 x;的 2 单位沿 x1x,运到 Xs
去,我们就在 x1x5旁边画一个箭头(从 x;指向x5) 表示物资调
运的方向, 称之为流向. 调运的物资数量写在流向上, 称为流
量.我们规定流向总画在线路的右侧(相对于物资调运的方向
而言). 由流向构成的图就称为这个可行方案的流向图.上述
可行方案反映到交通图上得图 6.12,其流向图如图6.13. 这
个可行方案的总运输量是 335 (万吨公里).
T4 , ② . 艺

"一



, X 用


图 6 .12 图 6 .13

显然,
若令各点的流量 a(x,) 二 一7, 9,- 9, 5, 2. 把线
路长度看作是该线路上的单位流量费用,就可把求最优方案
的问题化成在一个没有容量限制 (即所有 :(xi., xi) 二 十co)
的无向网络上的最小费用流.
现在我们介绍解决这类问题的图上作业法,这是我国物
资调运部门广大工人、干部在总结长期实践经验基础上创造
出来的一套行之有效的方法. 不仅方法本身简便,而且比较
早地提出从一个可行解迭代到另一个可行解。每一步检查最
优性条件的办法处理网络输送问题的基本思想. 经过不断地
实践、提高,图上作业法较之上面介绍过的方法更是前进了
. 1 住8 .
一大步.
(1) 第一个可行方案如何给?
先从线路图是一棵树的情况谈起。 我们结合一 个 例 子
(图 6.14) 来说明.
取树中的某一个悬挂点,比如 x1,它是发点,于是 x,的
物资只能沿悬挂边 (xi, x2) 运到 x2. 所以在边 (x1, x2) 旁画
一个流向,从 x,指向 x2,流量为5(图 6.14a).
从图中去掉这个悬挂点及悬挂边, 余下的图仍是一棵树.
在这棵树中,x2变成一个收量为 。的收点 (也可看成是一个
发量为 。的发点)(图 6.14b).
在这棵树中,
再任取一个悬挂点,比如x4,它是收点,
它所
需要的物资只能通过与它相邻的一点 即 x3运来,故从 X3到 x4
画一个流向,流量为 5 (图 6.14b) .再去掉x;及 (x3, x4),在余
下的树中,x3成了一个收量为 5 一 3 = 2 的收点 (图 6.140 .
如此反复进行,取悬挂点 x2,收量为。,于是从 x3到 x2
画一个流量为 。的流向. 我们把流量为。的流向称为虚流
向. 以后凡说到流向,总包括这种虚流向在内. 我们将会看
到,有了这种虚流向,会使整个算法大为简化.
再去掉 X2及 (X23 X3) 得图 (6.14妇 于是从 x5到 :S画一
条流量为 2 的流向.
最后把每一步得到的流向汇总到线路图上,就得到一个
可行方案(也是最优方案) (图 6.15) ,其流向图是一棵树.
上述作法可以用一句口诀来说明,
即“各点供需归邻点”.
现在讨论一般线路图的情况.
对一般线路图,可先利用 ' 2 中介绍的“丢边破圈,直到
无圈”的办法,
取它的一个部分树, 然后对这个树, 按前面的办
法,求出可行方案.
例如图 6.11, 若丢 (xi, x4), (x4, x5),得如图6.16的部分
. 149 .

O se 一
劣I

一面
2 xs 苦A

图 6 .14 图 6 .14a

弓 X4

x・
o尹X
}02X3\、

图 6 .14b 图 6 .14c 图 6 .14d


二共豪二-
xi V XI

图 6 .15

树,于是得图 6.16a 所示的可行方案. 总运输量为 350 (万吨


公里).
自然,
不同的部分树,就有不同的可行方案. 如图6.11
中,若丢边 (X15 x4),`xi, x2), 就得图 6.17 所示的可行方
案.
总之,
我们可以很快地得到第一个可行方案,
并且它的流
向图是一棵树.
(2) 最优性条件: 首先介绍一些术语. 给了一个可行方
了‘

5 x-

2 丫

止一 X29
图 6 .16 图 6 .16a

图 6 .17

案,则线路图的每一个圈上,有的流向是在圈的外部,
有的在
圈的内部,我们分别称之为外圈流向、内圈流向. 没有流向的
边称为空边. 如图6.16: 中,
在圈 {二
,,x2, x3, x4, x1} 上,(x,,
x2), (x3j X4) 上的流向是外圈流向,(x3, x2) 上的流向是内圈
流向,(XI.1 x4) 是空边,要注意的是,一个流向是外圈流向还
是内圈流向,
都是相对某一个圈而言的. 如图6.18 中(x1, x4)
上的流向,对 “ 三角”圈 {xt, 、 ;,x5, x1} 来说是外圈流向,而
对“四方”圈 {XI, x2, x3, x4,二
,} 来说则是内圈流向. 所谓流
向的长度是指与该流向相应的边长.
如前所述,一个可行流,
如果网络中不存在负费用的非饱
和圈的话,则是最小费用流. 由此有下面结论: 一个可行方
案,
如果线路图的每一个圈上, 外圈流向的总长及内圈流向的
不5 不
总长都不大于该圈总长的一半,
则为最优方案.
这样,对一个可行方案,


‘ 一

- ‘二巴奋一-  ̄ 曰
__
舀 3 要检查上面的这个最优性条件
是否满足. 这里是说要检查每
一个圈. 如 ' 4 最后指出的,

一个点边数比较大的线路图来
说,
这种检查是相当麻烦的.但
在图上作业法中,我们总使每

图 6.18
一个可行方案的流向图是一棵
树,于是对应于每个空边, 流向
图中有唯一的一个圈,可以证明,只要去检查这样 的 圈 上,
最优性条件是否满足就够了. 这就 大大地 节省计 算工作
量.
如图 6.16a 中,
只要检查圈 {x1, x2, x3, x4, xl} (对应于空
边 (x1, x4)) 及圈 {X1.1 x2, x3, x4, x5, x1} (对应于空边 (x4,
x5)) . 在前一个圈上, 圈的总长为75,而外圈流向总长为 40,
可见不满足最优性条件,就是说,这个可行方案是可以改进,
而使总运输量下降的.
如何从一个可行方案改进到另一个可行方案,并使流向
图总是一棵树呢?
(3) 调整. 若对一个可行方案,检查到某一个圈不满足
最优性条件,即其内圈流向总长(或外圈流向总长)大于圈长
的一半,
则从内圈(相应地外圈)流向的流量中选最小者,
记为
0. 而后把每一个外圈(内圈)流向的流量都增大0. 空边上
增加一个流量为0 的外圈(内圈)流向. 把每一个内圈(外圈)
流向的流量都减小 0,并把这时内圈(外圈) 上的一个流量为
0 的流向去掉,即变成空边(如果有几个流量为 。的流向,则
任取其中一个变成空边,其余的作为虚流向保留). 这样,得
到一个新的可行方案,其流向图仍是 一裸树,总运输量下降
0 x [2 x 内圈流向总长一圈的总长」(相应地 0 x 汇
2 X 外圈
流向总长一圈的总长J).
继续上例,取圈 {xl, x2, x4, x4, xl} 上外圈流向流量中最
小者6 二5,调整时,出现两条流量为。的流向 ((xI, x,) 及
(x1, x4)). 我们把 (xl, x2) 变成空边,(x3, x4) 保留为虚流向
(图 6.18). 总运输量下降 5 X [2 X 40- 75」二 25 (万 吨 公
里).
检查图 6.18. 空边 (x4, ”一 迹一
x5) 对应的圈 {xi, x4, x5, xi}.


内圈流向总长 大 于 总 长 的 一
半,这时 0 = 2, 调 整 得 图
6.19,总运输量 又 下 降 了 10 _.x

(万吨公里). 汀主

继续检查可知,图6.19 中 图 6 .19
空边 (x1, x2), (x1, x5) 对应的
两个圈均 已满足最优性条件 ,
故为最优方案.
最后指出,在某一步调整
时,
可能会出现 0 = 0 的情况 .
如图6.17 中,检查圈 {二
,,X23
x3,x4, x53x1},内圈流向总长
大于圈长的一半,这时 。 ̄ 0.
- -x 二

调整时,我们在 (x1, xz) 上增

加一个虚流向,把 (x3, x4) 变
成空边(图 6.20).

'7 . 网络的分析与合成
在 ' 5 中,介绍了在一个网络中求从一点到 另一点的最
大流的问题. 在某些实际问题中,往往提出要知道网络中任
一对点之间的最大流量的问题. 在图与网络理论中,把这种
已知网络,研究其中某种数量指标性质的问题,一般地称为
分析问题. 反过来,如果已知某种指标的数量界限,要求构
造一个网络,使事先给定的数量界限的要求得到满足. 这类
问题就叫合成问题. 合成问题在一些工程设计中可 能 会 出
现. 本节将简单介绍关于流量指标的分析与合成问题.
1. 最大流2 的分析问题 设 G - [N , U , c] 是一个 。
个顶点的弧具容量的网络. 若 N 一 {x1, x2, … ,x },我们
把从 xi到 xi的最大流量记为 v;,. 最大流量的分析问题就是
要求如下的矩阵:


x 气 约


. 物 X 为
V ‘、 .

几 ,
7 』 .






吸 与
夕n2 岁n3

称 V (G ) 是‘的流量矩阵. vii是与顶点有关的. 有时称它


是流量函数.
我们已经知道,求‘中从一点 x‘
到另一点 x,的最大流量
Vii,可以用标号的方法. 自然,
要求从任一点到另一个点时最
大流量,
总可以一次一次地用标号方法去做,总共做 n(n- 1)
次.
在某些特殊情况下,可以用较为简单的办法. 比如,若G
是一棵(无向)树(称之为树网络),
则流量函数 。
‘,可由下式求
得:

‘,
一min [c(x;,“:),c(x;,,x;2)…c(x;k,x,)]
式中{xi, x,1,x,,, … ,x;k, x,}是树网络中连接Xi, x,
的唯一
一条链. 易见 v,,二vii,即流量矩阵 V (G ) 是对称的.
一 下面将会看到, 如果G 的流量矩阵是对称的, 那么就可以
通过树网络求出流量矩阵.
C功 流量函数。
i,的一个重要性质 由S 弓可知,
与最大
流量 vii 相对应,在网络中存在一个分隔xi, xi的最小截集
(X ii, Xii),并且 , ‘
, ̄ c(X ii, X i;).
现设x、是异于xi, xi的第三点,于是Xk或者在凡,中,
或者在风,中, 两者必居其一
若 XkE X ii,那么 (X ii, X ii) 也是分隔Xk, x,的一个截
集,
所以从 Xk到 xi的最大流量 vki必有

,,基c(X ii,又‘
,) -2vii.
若二
*‘X ii,类似地讨论得

,*里 。
、,

所以‘中的任意三个点xi, xi,xk间的最大流量。
‘,
,,‘
,,
vk,
必满足不等式:
vii里m in [vik, vkil. (7.1)
由此推知, 对任意k 个点二 ‘.,二 ‘
:,… ,xik,有
vi,ik鑫m in [,
‘;、
:,vi2i3, … ,。
‘、
一;、 ]. (7.2)
(2) 如果两个9 络 G G ,。相应的流 量矩阵 v (G , ),
V (G ,) 相等,则称 G ,, G ,是流量等价的. 或者说 G ,流量等
价于 ‘,

现在我们要说明, 若G 的流量矩阵是对称的, 则它流量等
价于一个树网络 T ,即 V (G ) 二V (T ),
我们先构造出一个树网络 T ,然后证明它与‘是流量等
价的.
取出G 的顶点x,, x2, ".", x ,在任两个点xi, xi之间连
一条边 (xi, xi),令其边长l(xi, xi) 0 vii. 在所得图中求其
最大部分树 T (' 2),令T 内边 ( xr, xi) 的容量 ‘ (xi, xi)二
Vii,则得树网络.
现在证明 V (G )  ̄ V (T ). 事实上,
设 x;, xi是‘中任意
两点,令It- {x X',, ...,x'k'xi}是T 中的(唯一)一条连
接xi, x,
的链. 因为T 是最大部分树,

l(x xi) < m in [i(x xi,), … ,l(x;k,xi)],


*,基m in [,
“,,。
‘:‘
:,… ,vrki].
根据流量函数的性质,

。;,里m in [,
“,,v;1;=, … ,v;ki],
故 v;,二m in [,
*‘
,,。 ‘;‘
:,… ,。 ‘*,],
从而 。‘,二min [,(x;, xi) , c(x;t, x;T), … ,
c(xik ,xi)].
上式右边正是树网络 T 中 Xi, xi 之 间的最 大流量,所以
V (G ) “V (T ),
由此可见, 一个具对称流量矩阵的网络(例如无向网络),
可以通过与其流量等价的某个树网络求出 V (G ). 现在的问
题是这样的树网络如何去构造呢? 按上面的办法显然是行不
通的. 因为它是利用 V (G ) 去构造的,而 V (G ) 恰恰又是我
们要去求的.
现在我们介绍对一个无向网络构造流量等价的树网络的
方法.
(3) 首先介绍一下关于“收缩”的概念. 设X 是 G 中的一
部分顶点. 所谓把X 收缩,
就是把X 看成一个点,
把以X 中顶
点为端点的边变成与这个新点关联的边. 这样,如果新网络
中,两点之间有两条以上的边的话,则换为一条边,令其容量
是这几条边的容量的和,其他容量不变. 我们把这样得到的
网络称为(关于 X 的)收缩网络.
如图7.1 的RAJ络中,
若 X  ̄ {x4j x5, x6}. 则收缩X 的结
果得到新的(1络如图7.2.
我们以图 7.1 为例,叙述对于无向网络,
构造流量等价的
. 15 6 ‘
图 7

x气
b户.is
图 7 .2

树网络的方法.
开始, 任取两点x*及 :, ,求出vii、 设相应的最小截集为
(X , X ) (二“ X , Xi‘X ),记下示意图:

⑦一 (D
例 例如取 xi = x2, xj = X3,用标号方法求出。 23= 31.
相应的最小截集为 ({x1, x2}, {x3, x4, :,
,X。
, x7}) 于是记下

然后在X 或 X 中,为了明确起见:譬如说在X 中任取两




个点Xk,xl (如果有的话),求出Vk). 这里要特别指出,
计算
ykt时,
可以把X 收缩(如在X 中取两点,
则可收缩X ),在收
缩FA 络中求 vkl. 这样,就是在一个点、边数较少的m 络中求
最大流,大大节省了计算量.
如果收缩网络中分隔 xk, X,的最小截集为(Y , Y ),收
缩点X 或在Y 中,
或在 Y 中. 若在Y 中,
则记下示意图

声二只三三三三三二二二一一一一一一一 门 1

.一一一一一一 气二 二
士三三七二二坦 .

若在 Y 中,
则记下示意图

r 一一一 ̄ 一一一一: 二二二几二二二三二二二二二二L 一 一 一 一 ,


! ! 一 ,
一甲- 一 ̄  ̄  ̄ 、 1 .

,{ ④二

乙 O 卜 I
L 一石二二二二 : 二二二口 一_ _ J

例 在 叉 ̄ {x3, x4, x5, x6, x7} 中任取两点 X3.1 x5. 我


们把x 二{xl, x2}收缩,
得收缩网络一
(图7.3). 求出L3,
二32,
最小截集为 ({x3, x4}, {x; 一 x2, x5, x6,x7}),于是记下

、,= 31 巧,= 32
X , 苦2 X s x 6 苦, 朴 X4

在任一步上,在前一步的示意图中, 从多于一个点的某一
部分任取两点,比如 xs, xt,计算 。,
,时,可以收缩那些部分
呢? 也可以从示意图上看出来. 如果把 x,,, x,所在部分的关
联边从示意图中去掉,
示意图可能会断成几个连通片,
则可把
丝一尸一

图 7 .3

每个连通片的点收缩,在收缩网络中求 vst. 譬如说,若在某


一步上,
示意图为

va eX,1卜Ys 0
X4
J4
而xs,二
,在Y 中,
则可把X l, X3, 1X 3, X 4, X5}分别收缩. 若
求得 vit,及最小截集 (Y 1, Y J . y 中的点被分为两部分 Y '
(属于 Y ,的点),Y ll (属于 Y ;的点). 则新的示意图中,Y '与
Y '‘
之间连一条边,其上记下 vs, 值, 而包含在 Y : 中的各收缩
点用原来的边与 Y '相连,包含在 Y : 中的各收缩点用原来的
边与 Y ',相连. 譬如,若收缩点X l, tX 3, X 4, X 5} 在 Y :中,
X,在Y,中,
则示意图为

古 . 15 9 ・
例 取x5,二
7两点,子是
收缩 {x "A l {x3, x4},求得
05,二33,最小截集为 ({x;一
x2, x3一X4, x5, x6}, {x7}) (图
7.4). {x5, x6, x7} 被分为两部
分 {x5, x6}, {x7}. 而两个收缩
图 7 .斗
点 x;一x23 x3一x;与 {x5i x6}
在截集的一边故示意图为

x1司 与 .,之 33 反

T3x342
反复进行下去, 直到示意图中每一部分都只含一点为止.
这时,令示意图的每边的 。 ‘
,值是这边的容量,即得所求的流
量等价于‘的树网络.
例 求,12,收缩 {X3,二
;3 x5, x6, x7} (图 7.5) ,易见 ,
;:一
19,最小截集为 (1X1}. {x2, x3一 x、一 x5一 x‘一 x7})记下

图 7 .5

. 160 .
再求。
56。分别收缩{、
,,x2}, {x3,:。
。},
(图7.6), v56- 36,
最小截集为 ({x,一 x2, x5, x7}, {x3一::;,x61) 记下:

万J x 4

图 7 6

最后求 。
34,收缩 {x1, x2, x5, x6, x;} (图 7.7) , V34二 39.
最小截集为({x3}, {x4j x; 一x:一 x。一x‘一x7}) 得图 7.8
把图 7.8 每边的数字 看作
该边的容量 ,即得所求之树网
络.由此树网络,可立即得网络 、
G 的流量矩阵.比如 v t4  ̄ m in
{c(x1,X2), c(x2, x5),c(x,, x3}
x6), c(x6, x4)} 二 19 等等.
图 7 .7
由此可见,对一个 n 个顶
点的无向网络,上述方法包含解 ,一 1 个最大流问题. 其中
许多问题所涉及的网络(收缩网络)比原 网络小得多.
我们还要指出,一般说来,流量等价于一个无向网络的树
网络,可以有许多. 但上述方法构造 出的树网络,不仅流量等
价于原网络,而且它的每一边就代表了原网络的一个截集.如
. 16 1 .
图7.8 中,边 (x2, X5) 代表原网络的截集 ({x1, x2}, {x3, x4:
:,
,x6, x7}) 等等(图7.9)

图 7 8

(x2, x5)

( x1, x

勇万 I /
(x,, x,)
I / ( ,x b少
(x3, X.)

图 7 .9

2.关于流量的最优合成问题几现在讨论网络最大流量的
合成问题. 若给了一个 n X n 的非负对称矩阵 R  ̄ (:砂、,

要求构造一个 n 个顶点的无向PJ络 G ,对G 中每一对顶点 i,
j(i 户,使流量函数 Vi,满足
vii鑫 ,‘
,.
我们称R 为需要矩阵,‘为(关于需要矩阵R 的)可行P1络.
显然,可行网络总是存在的. 例如给 n 个点,每对点xi,
x1(i铸I)之间连一条边(:,
,xi),令其容量 c(xi, xj) 二r;i,
这样得到的网络是可行的.
进一步的问题就是要求构造一个最节省的可行网络. 就
. 162 .
是说, 除了已知R 外。已知一个费用矩阵D 0 (心). 峨,表示
在Xi, xi之间,增加单位容量的费用. 问题是寻求一个可行

网络,
使总费用艺 艺 d;ic;,
最小. 这样的可行网络称为最
1= 1 i = 1
1 今i

优网络.
这是所谓最优合成问题. 一般说来,总可以化成线性规
划问题去解. 但是,
计算量是相当可观的. 下面对于心 是一
个常数的特殊情况,介绍一个极为简单的方法. 当d;i恒为常


时・
问题
是要
行网络.

造一个
使“总
“量合客客一最
小的可
(1) 对给定的需要矩 阵 R ,我们构造一个图 G R: 作 。个
顶点 x;(i 二 1, … ,n),每对顶点 xi, xi之间连一条边 (xi,
xi),令其长度 I(x;, x,) 二r1i,称 ‘* 为需要图. 在 G ; 中求
出一个最大部分树 T R,称为 R 的最大需要树.
例 已知
X 9 4 妇 弓


9 X l3 , 3

4 13
10 2 1 沐 找

, 3 8 L X

图 7.10 为相应的需要图, 图 7.11 为其最大需要树 TR.


现在我们说明: 给需要矩阵 R ,如果f 1络 G ,对R 的最
大需要树 T * 的边 (xi, xi),有 vii里 rii,则G 是可行的. 换
句话说,条件 vii: rii,只要对 T 二中的 ,一 1 条边 (xi, xi)
成立,就可以推出对 G ,中所有边都成立. 在上例中,只要网
络‘中使 , ::盈 9,。
:;婆 10, 。
;,鑫 12, :,
:,里 13,那么G 就是
可行的。

图 7 .10 图 7 .11

事实上,如果 (xi, xi) 是 T * 外的边,T; 中连接 Xi, x,



一条链是{xi, x;,, … ,
xik, xi},
首先利用流量函数 vii的性质,


‘,鑫m in [。
‘,
,,,‘
:‘
:,… ,“
‘*,
].
根据假设 。
“鑫;‘
1,对每一条 T * 内边成立,


‘、
,里 ri;,,。*;‘
:里rill,, … ,viki里, ・

,,.
于是 vii? m in [r;i,, rr,12,… ,riki].
现利用 T * 是最大部分树,树外边 (xi, xi) 的长度 ,
“必
满足
rii基m in [rii,, ri,i2, … 。riki
从而有
vii里 rii.
这样,构造关于 R 的可行M 络的问题就化为构造 T *的可
行网络问题.
(2) 设 ‘二 [N , U , ‘
] 是任一个I9 络,易见,其总容量

为・
(G,
一合馨馨・
(一,

这里・
对(一)‘
U令・
(一 i 寺i

xi) “ 0.
现在来估计一下关于 R 的可行 网络的总容量 的下界
CL(R ).
. 1 64 .
给 R ,对每一点 xi,令
Ui  ̄ m a x r i护
。 (7.3)

“‘的直观意义就是点 x‘的最大需要流出量.

对任一个可行网络‘,在 x‘的最大可能流出量为 艺
c(xi, xi). 显然,它应不小于这一点的最大需要流出量,即

艺 c(xi,xi) “
‘,
i=t
于是
又-1 又-1 ,.、> 又, 。
之山艺司c戈 xi, x') 三 名乙ui,
i= I )今 i i= 1
i = 1

12客客c(xi,xi)?12客“



边正是可
行网络“
的总容
量・故
其下界为一
(“)一合Eui.
在上例中,u;二 10, “
: ̄ 13, u3:二13, “
; ̄ 12, u5=

12・
所以任一
个可行网
络的总
容量必
不小于合艺
“‘一30,
由此,如果能构造出一个可 行网络 G *,使其总容量
C.(G*) 一生又 。
、,则‘*即为最优网络.
2 i- 1
(3) 我们指出,对给定的 R ,按 (7.3) 求 出的 “‘与在最
大需要树 T R 中求出的 “‘是一样的,

Ui  ̄ m ax r ii,
(xi介i)ETR

这一点留给读者去论证它.
由此,关于 T:的可行R 络的总容量下界也是
所以若构造出一个关于T; 的可行网络,如其总容量为 生

z u;,则即为关于R 的最优网络.
这样,我们只要考虑需要图是一棵树(简称需要树)时的
最优合成问题.
先来看一个特殊情况. 设某一个有 k 个点的需要树,其
需要是一个常数,即 r;i= r. 称为同一需要树. 易见,关于

同一需要树的可行网络总

容量的下界为李z

u‘
一粤kr.

对这样一个同一需要树,构造网络如下: 作一个圈经过

树的所有顶点,
令圈上每一边的容量为粤,
. 易见,这个网 Z

络是可行的・
且总容量为万kr. 从而也是最优的.
一般情况下,我们把需要树 TR“分解”成若干个同一需要
树的“ 和”.以图 7.11 为例,
把它分解成一个同一需要树(需要
rii ̄ /  ̄ 9) 和另一个树(断成两棵树) 的“ 和”
. “和”
的意义
是对相应边的“ 需要”而言的(图 7.12).
对不是同一需要的树继续分解: (图7.13)
上图右边每一个同一需要树的最优网络可用上述 方法求 出
(图 7.14).

会一
会・女 图 7 .12

. 1 66 .
9 xs) 。 C3 ‘ 。

会 _ 可
= 份\

xs万
9 x1
A x3 二叹
份 + 、\

@ 一一

。 冶
甘 +. ④

xs 2 x}

图 7 .13

9X295x9=x429x232rixs1会’
‘,
J 翻
x21}x;2xj 图 7 .14
二,

再把它们对应边的容量加和,得网络 ‘书(图 7.15) . 这就是


要求的最优网络.
易见,
它是可行的,因为其流量矩阵为
J了
1 9 9 、
1 10 10 、


1 X 13 9 几

. l
. es
V 尹
‘ ‘* 、
、 -一 .

13 X 9 es

、 了
. 口
. .
. 9 9 ‘ < 12 万

11 0 产

1 1


、10
9 9 ,



满足 。
弃里:‘
,,而总容量为 :(G ) 二 30, 故为最优的.
至于方法在一般情况下的正确性, 我们不予论证.
对给定的需要矩阵 R (如上例),把方法的具体步骤概述
如 下:

. 16 7 .
1) 作出它的需要图 ‘R (如图 7.10),
2) 求 G R 的最大部分树
T R (如图 7.11),
3) 把 T ; 分解成若 干个
同 一 需 要 树 的 “和 ”(如 图
7.13) ,
4) 构造出每个同一 需要
树 的 最 优 合 成 网 络 (如 图
7.1勺.
图 7 .15
5) 把 斗) 中的所有网络的
各相应边的容量相加,得关于 R 的最优合 成 网络 G * 〔如图
7.15).
(附注)上面说过,一个 左-
个点的同一需要树的最优网络
是过这k 个点的一个圈.显然,
这样的圈不是唯一的,所以最
优合成网络也不是唯一的. 比
如上例 中,若把分解 中 (图
7.13) 第一个同一需要树合成 芝

为另一个圈 {X17 x2, x4, x5> x3.}
x1} (图 7.16),于是得另一个
最优合成11 i络 G ** (图 7.17).
其流量矩阵为 2

于X 10 10 10 10


. X 13
.10 10 10

V 2
‘ G * * 、
j 』 .

招 X
、 ,10 10 10



10 10
r 10 X 12


、10 10 10 12 X

. 1 68 .
比较一下图 7.1,和图7.17 的两个最优合成VA 络的流量
矩阵,即见对任意一对点 xi,
xi, G ** 中的流量函数嵘* 总
不小于 G * 中的流量函数 嵘, 乒
于是我们 自然要问: 是否 不
存在一个最优网络 G *, 使对每 三
一对 i, j。其流量函数 磷 不小 2
于任一个最优网络 G * 中相应
的流量函数 峙? 我们讨论一下
图 7 .17
这个问题. 给 了需要矩阵 R ,

那么关于R 的最优网络总容量为土艺

“、
,即总容量只与各点
的“ ‘值有关. 显然。如果每一对点Xi, Xi的需要 ;, ,增大,只
要不超过 m in (ui, uj),那么各点的“、
值将不改变, 从而最优
RAJ络的总容量也不改变. 故若令 rtj ̄ m in (u;, uj)。
则得一个
需要矩阵 R 二 (r;j),它的最优网络记为 G *,可以证明 G *
就是我们所要求的那样的最优网络.
例 如上例中的 R 。求出


十X 10 10 10 10
10 X 13 12 12

- 10 13 X 12 12
. l2
10


12 12 )(



10 12 12 12

它的一个最优合成网络 G * 如图 7 1 8 _ 易见,其流量矩阵
V (G *) 二R ,即对任一对:、等xi, 云* 中的流量函数磷恰好
满足需要 rrj.
由此可见, 关于R 的最优网络中,网络 G * 在某种意义下
是最好的了— 它是所有最优网络中,使任一对点之间的最
. 16 9 .
大流量达到最高水平的一个,
不可能再提高了. 否则,
只有增
加总容量才有可能.

参 考 文 献
[I] L. R. Ford, Jr,. D. R. Fulkerson, Flows in N etworks, Princeton
U n iv ersity Press, 1962 .
[2 ] C ・贝尔热,
图的理论及其应用,
上海科学技术出版社,1963 ・

. 170 .
第三章 非线性规划

' 1. 引 言

在第一章中, 已通过几个典型的实例,
阐明了线性规划问
题是在线性约束条件下, 求出线性目标函数的最小 (或最大)
值及其最优解. 在生产实践中,有些现象必须用非线性函数
来描述. 如在约束条件或者目标函数中出现非线性函数时,
就称之为非线性规划问题. 现举几个实例来说明.
1.最大容皿问题 从一块边长为6 尺的正方形铅皮的四
个角上截去相等的方块,
将各边折转做成一个无盖的箱子.问
怎么截可以得出最大容量的箱子? 这是最简单的一个变量的
问题. 若以 x 表示截去方块的边长,则 目标函数 (箱子容量)
f(x) 二x(6 一 2x)2. 约束条件为 0 < x < 3. 易证最优解
x  ̄ 1 尺. 最大容量代劝  ̄ 16 (立方尺).
2.变压器设计问题 变压器的电压容量、电流容量、热
损耗等情况与变压器的芯硅钢片尺寸有关. 如何确定芯硅钢
片尺寸,在满足容量、散热等规格要求 (约束条件) 下,使
得变压器所用的芯硅钢片最轻或材料费用最少 (目标函数值
最小). 问题的变量是芯硅钢片的边长、电流密度和磁通密
度。容量和散热等约束条件以及目标函数都可以表成这些变
量的非线性函数. 这就形成了非线性规划问题.
3.动力系统最佳运行问题 在一个动力系统中,如何在
给定的运行方式下, 合理地分配各电站的(或机组的)负荷,
使
得系统达到最大经济性, 是系统运行调度中的任务. 具体地,
. 17 1 .
在保证整个系统经济上合理的可靠水平和电能质量前提下,
使在电能的产生和分配上所需的直接燃料消耗为最小. 这个
问题可以归纳为非线性规划问题. 举一个最简单的例子. 当
多个机组分布在相距不远的几个电站里,而电站与负荷间相
距也不远. 这时,系统网络损耗不大 ,
可以忽略不计. 问题的
变量是
:‘二 电站 ‘的有功功率输出;
”二 用户 i 的有功功率消耗.
电站‘的燃料输入 F‘为 xi, ”的函数; 总燃料消耗 F =
艺 F‘
为xi,y,
的线性或非线性函数(目标函数). 问题是在

萦统平“C补‘ 一 Y如及 用 户 对 电能质量要求等的 约


束条件下,求最优方案 (最优解) xi, Yi,使得总燃料消耗 (目
标函数) F 达到最小值。
4.注水采油方案 石油是储藏在地层的岩石孔隙或裂缝
中的. 含有石油的地层称之为油层. 油田就是由若干个油层
所组成. 油层内部有很高的地层压力,当油井钻成后,
石油能
自喷而出. 但地层压力随着油的不断采出,会逐渐消耗,自喷
能力逐渐减弱,以致大量石油无法采出. 为了使油层能长期
保持自喷能力,可以在油井周围开些注水井,用注水的办法来
维持地层压力. 由于各油层的渗透性能 (渗透率) 不 同,
决定
其吸水程度也不相同. 因此,水在各油层内推进的速度是不
均匀的. 一般认为,在每口油井周围的水线推进的均匀性,可
以保证,
在一定的开采原则之下,
有可能实现油田较高的无水
采收率、低含水期采收率和最终采收率. 记
此,
“注水井 i 的水沿第I地层向油井 i的推进速度,
对,= 注水井 i 的第 1 地层向油井 i 方向每天的注水量,
v=i ̄ Y iixii (Q i,是已知参数),
. 172 .
艺心

其中。
,表示对油井l水线推进的平均速度,E 表示对注水 U1 1)

井 ‘与油井 1 的主要油层相连通的小层 1 相加起来; ni表示


这些小层 1 的个数. 我们可以用方差 函数

Y (。
:,
一“,

来衡量水线推进的均匀性. 求一注水方案 {对,} 使得方差函
数达到最小值, 就成了一个非线性规划问题. 一些开采原则,
可以通过对 玲 加某种限制,化成约束条件,这里就不详细叙
述了.
从上述例子中可以看出,生产实践中有些问题可以归纳
为非线性规划问题: 在约束条件
gi(x" … ,xa) ) 0 (i ̄ I,… ,。)
之下,求最优解 (X-l' .. ., xn),使目标函数
f(xl. … ,xn)
达到最小(或最大)值I(x; … ,xn). 这问题可简写成
m in

(x1, … ,x n)
gi(x1, … ,xn) 李。 (i二 1, m ),
在 f(x1, … ,xn), gi(xl, … ,x+,) (9 二;1,’
一,,) 中有非
线性函数.若问题对 (xi …,‘) 没有约束条件, 即求 (xl}...}
xj ,使 f(xi. … ,X,) 达到最小值 f。1, … ,xn),我们称之
为无条件极值问题,简写成
m in f(x17 … ,:,
).
当然,我们也可称有约束条件的非线性规划问题为条件极值
问 题.
在这一章中,我们将扼要地介绍有关非线性规划的一个
特殊的重要类型, 即凸规划问题 (凸的概念在以后介绍) 的解
法. 我们准备分二大类来介绍. 一类是把条件极值问题简化
为无条件极值问题. 这就可以应用已有的无条件极值问题的
有效解法. 另一类是把条件极值问题化成一系列线性规划问
题,或者投影矩阵迭代问题, 或者线性方程组的特殊解求法问
题. 在这二大类方法中,常要用到一个变量的条件极值问题
的解法. 我们在此作部分介绍.
关于一个变量(单因素)的极值问题以及多变量(多因素)
无条件极值问题解法,在优选法一书的章节中已介绍的内容,
在这里不再重复,
我们主要是介绍计算方法,对于有关方法的收敛性等理
论结果,
只是给以一般罗列,
不作证明叙述.
这里介绍的方法,
也可用来解非凸规划问题, 但在这种情
形只能得到局部极小解 (或者局部极大解). 所谓局部极小
(大)解 x,是指存在充分小的 6 > 0,在约束条件
gi(xi, … ,x ) ) 0 (1 二 1,… ,,),
一6 成 Xi一 xi( 6 (i 二 1,… ,。)
之下,x 使 f(xl., … ,x ) 取最小(大)值.

'2. 一个变量的极值问题

1.引言 一个变量二(单因素)的极值间题,
是求
f(二),

x 提 b

的最优解 xmin. 若才
(幻 。《 x 《 b 中不一定存在导数
f'(x)一df(x),
可以用优选法求最优解.若f(x)在a<x
dx __ ___ ._ …卜
_ 一
,一、
,一,、 d2f(x)
中存在一阶导数f’(‘
),或者甚生二阶导数 厂L“
) 二一da不-
. 17 4 ・
时,我们可以提供另外一些解法. 这些解法具有较高的精确
度和较快的收敛性.
t(二)
f'(x) 二 0 f (d ) > 0

f'(c) < 0
了 川


 ̄U 川




一d


Q a x 0 ia

图 2

当连续函数 f(幻 在 a < x < b 中有连续导数 厂(幻 时,


xmi。只可能从 厂(幻 = 0 的根或端点 a, b 上达到. 例如图2.1
所示. 厂(x)  ̄ 0 的根是局部极小解或局部极大解. 因此,若
能求出厂(劝 二 0 在 a 《 x 成 b 中一切根来,比较 了
(劝 在这
些根和端点 ‘,b 上的函数值大小,择其最小者 ,其对应的点
即为 xmin.
从图 2.1 上可见,
在“峰”和“谷”处,f'(幻 二 0. 因此,如
能确定出“峰”
和“谷”的所在刁、
区间,
即用小区间把各 “峰”和
“谷”
分割开来,在每个小区间中只有一个 “
峰”或 “谷”,就可
分别在每个小区间来搜索“峰”或“谷”的位置. 问题是如何确
定出这样的小区间? 若 f'(a)f'(b) < 0:,即 f'(a) 与f'(b) 异
号,由于 f'(x) 连续,则在 a < x < b 中必有 f'(x) 二 0 的根,
当然,这种根可能不止一个 (如图 2.1,有三个) . 我们取定
一个适 当小 的 h > 0,逐个检查 f'(a), f (a 1 h), f'(a 1
2h), … ,f'(a + sh),其中f'(a + h),… ,f'(a + (,一 1)h)
一175 .
都与f'(a) 同号,
而f'(a + sh) 与f'(a + (,一 1)h) 异号. 如
h 大小适当,则可望在 a 十((s 一 1)h < x < a 1 sh 中有
f'(x) 二 0 的一个根. 如f'(a + h) 与 f'(a) 异号,
说明‘取得
太大,
要改小(例如改成生h)后

,再同法搜索. 这样就可大
致确定各“峰” 和“ 谷”的位置. 如在小区间 ‘簇 x < d 的端点
fl(c) < 0, f'(d) > 。,则其中必有一个 “ 谷”,即使 f(x) 在
‘< x ( d 中取最小值的点; 如 fl(c) > 0, f(d) < 0,则其
中必有使f(幻 在 ‘< x < d 中取最大值的点.
若已知了 (劝 在 a 成 x 成 b 中只有一个“谷”时 (见图 2.2,
即 f(劝 为凸函数) ,我们有较好的搜索 f'(x) “ 。的根的办
法, 将在下文中介绍.
i(二)

}.tCx


! f(}x0+ (I 一})y0)





1一 一 一 .日
又10 + ( 1 一 A )Y0
口 x0 y0 1'

图 2 .2

所谓 f(幻 在区间 〔
a, 月 内为凸函数(见图 2.2),是指对
任意x0 ,
。,a < x0< b,a< y0< b,不等式
f<;Lx0+ (1 一;),
。) 蕊;f以。
) + (1 一;)f(v0)
对一切 。簇又( 1成立,即在曲线上任意两点相连所得直线
上的点总不会落在这两点间的曲线弧的下方. 这时,在区间
[a, b] 内,
若能求得厂(幻  ̄ 0 的一个根,
则此根必为 xmin
. 17 6 ,
如在 。成 x < b 中,f'(x) < 0 (或 f'(二) > 0), 说明
f(劝 单调下降(或上升),则x 二 b (或 。 ) 即为Xmin. 故我们
只讨论 f'(a)f'(b) < 0 的情形.
2.平分法 若 f'(x) 在 a < x < b 中连续,f'(a)f'(b)< 0.
我们设法逐步缩小区间的搜索范围,使之趋于一个点,这个点
即为 f'(x) 二 0 在 [a, b] 中的根.
我们事先给定一误差范围 6 > 0,当一个点 x(a ( x
b) 满足 If'(x) I < 。而 f'(x) 。
时,z:即为f'(x) 二 0 的近
似根. 当 f(劝 在 [。,b] 内为凸函数时,x 也就是问题
m in f(二)
a< x < b

的近似解了. (当然,若 厂(劝 二 0,则 x 即为问题的最优


解 .)
迭代程序:
(1) 先算 f'(a), f'(b). 若 lf'(a) 。(或 If'(b) I

),则 “(或 句 即为f。) 二 0 的近似根 (或真正的根). 迭
代停止.
(2) 若 If'(a) > 。,If (b) > s. 求出 [a, b] 的平
分点(见图 2.3)

c(l )一生(。十b

算出fl(cu)). 若 】f'(c")) I 。,则迭代停止.


(3) 若 l/'(c(')) I> 。,则必有
f'(a)f'(cu)) < 0

f'(c"))f'(b) < 0.
如 f'(a)f'(c}") < 0, 说明在区I司 [a, :(‘
)] 中有 f'(x) 二 0 的
根. 再将区间 [a, c(l)] 平分, 求出中点

,(‘
)> 0

图 2 .3

c(2)一生(。+ ‘
(,

);
如f'(c(0)f'(b) < 0,则将 [c(l),
b] 平分,
求出中点
c(2,
一工(c(

0+ ,
).
若 If'(c(z)) 】成 g, 则迭代停止.

(‘
,若,

(・
‘”
,,
>“・当・

”一合(・
+・‘

,时・

出f'(a)f'(c(2)) 和f-(ca>)f-(c(u) ,择其小于 。者,再平分其对
应区间;同样,当。

,,一生(c(1)+ ,
)时,

算出f'(c('))f'(c(2))
和厂(c (2))厂(b),择其小于 。者,
平分其对应区间.
用这样的步骤,每迭代一次,区间缩小一半. 当迭代到
第 k 步时,
所得平分点 c(k),有
】f'(c(k)) ( 。.
若 fu(c(k)) 钾 0 仅二 1, 2, 3, … ),则点列 {c(k)} 的极限点
c* 必为 厂(幻 二 0 的根.
例 已知 。= 0.3,求下列问题的根:
. 178 ・
二 4尸 一 12护 一 12x 十 4  ̄ 0 (1 《 x 簇 9).
a 二 1, b “ 9。
f'(a) 一一16, f(b)  ̄ 1840, f'(a)f'(b) < 0,
(2) 算出 [a, b ] 的平分点 CO):
1 / 。 . 、、
Ca) 二 二 (1 十 9) “

f'(c(`)) = 144 > “.
(3) f'(a)f'(c(i)) < 0. 算出 [a, c(')]  ̄ [1, 5] 的平分点

c(2,
一粤(1+


)一3. f'(c(2))一 32. 11'(c(2)) > 。

f}(C(2))f}(Cu>) < 0.
(‘
,算出「

(”
,Cu),
的平分
点・‘
3)一合(,
+ 5,
一‘・
f C(3)) 二 20 > S. f'(C(2))f'(C(3)) < 0.
(5) 算出 [c(2), c(3)] _ [3, 4] ftJ平分点 ‘
(‘,
二 3.5.
f-(c(4)) 二一13.5. If'(c(4)) ) E. f-(c(4))f'(c(3)) < 0. 算出
Ic(4),cC.')] 二 [3.5, 4]的平分点c(5)二 3.75. f'(c(5)) = 0.25<
。. 于是 c(5, 二 3.75 为近似根. 真正的根在区间 〔 3.5, 3.75]
中. 继续使用这样的步骤, 还可缩小这个区间, 逐步提高近似
解的精确度.
这个方法算起来较容易,但 当区IRI[“,b ]较长时,收敛
得很慢.
3.切线法 设凸函数 f(二) 及 f (二) ,f (二) 在 。< x < b
中连续,f'(a)f'(b) < 0. J"(二 ) 在 a :- x < b 中不为 0.
我们设法在曲线 Y 厂(幻 上作一系列切线, 使之与x 轴
的交点 x0, x(1), x(2), … ,x(k), … 逐渐趋于 f'(二)  ̄ 0 的根
xmin. 如图 2.4 所示. 任取初始点 x0(a ( x0 < 妇. 过 x0作
直线平行 y 轴, 此直线与曲线 Y= f'(二) 相交于点 (x0,f'(x0)).
过 (x0, f‘
(x0)) 作 Y 二f'(x) 的切线:
. 17 9 .
(x0,t'(x0,))

图 2 .4

Y 二f'(x0) + 1’
‘(x。
)(x 一x0)
与x 轴相交于点x(():

x(i)一二
。一f,(x( /


III( x 了

点 x(',
与 xmi。的距离缩短了. 这就给出了求 厂(劝 二 0 的根
的迭代程序的主要J思想.
我们事先给定一个误差范围 。> 0 (与 2.中所述相同).
迭代程序:
(1) 任取初始点 x0(a 《 x0( b) . 若 If'(x0) I( 8,则 x0
即为 厂(x)  ̄ 0 的近似根(或真正根).
(2) 若 }f'(x0) I > 。
,则算出

((,
一二二 f'(x0)
(x0)
若 If'(x(())! 簇 。,则迭代停止.
(3) 一般地,若x(k)已知. 当If'(x(k))I《。
,则x(k,即
为近似根(或真正根); 而当 If'(x(k)) I > 。时,
算出
. 18 0 .
x(k+i)一二
(*)一 ̄区些立_
f''(x("'))・
注 我们也可事先给定迭代点的允许误差范围 S> 0,当
!x(k+,,一X(k)I < g 时,x(k+l’
为近似根. 在上述迭代程序中,
可以 Ix(k,一x(“ 一‘
)I《 a 的判别条件代替 If’(x(k)) I 《 E,
例 已知

I(x) 一生二
;一兰x3一2x2一7x + 8,
4 3

求问题
m in f(x) , 。二
= 0.05
3< x 簇4

的近似解.
易见
f'(x) 二x3一2x2一 4x 一 7 (3 ( x ( 4),
f (二) 二3x2一 4x 一4 > 0 (3 < x < 4).
(1) 取 x。二4, f'(4)  ̄ 9 > 。,
(2) :(‘
)二; 一 兰二3.
2 8
7,
f'(3.7) 二 1.473> 。.
/ 。、 ,
,、 ,, 1 .4 7 3 ,, 八。,, ,,,,
气3 少 x 1-1  ̄ 3 ./ 一 —  ̄ 3 ./ 一 [U .0 0 0  ̄ 3 .0 3 Y ,
2 2 .2 7

('(3.634) 二 0.042 < E. 故 x(2) ̄ 3.634 即为近似解.


4.三次内插法 当f(二 ) 的形式很复杂时, 直接求 厂(劝一
0 的根是很困难的. 除前述方法外,也可考虑, 用简单的函数
甲沙) 来逼近 I(二). cp'(x)  ̄ 0 的根可认为是 f'(二 )  ̄ 0 的近
似根.
如在 a ( x < b 中,凸函数 f(x) 及 f'(x) 连续. f'(a)<
。,f'(为 > 0. 可以寻求一个三次函数
cp(幻 “ A x3+ B 护 十 (汤 十 D
在端点 a, b 的函数值以及切线方向与 f(x) 的一致,即
. 18 1 .
f(a)  ̄ } (a), f(b) 二 9P (b),
f'(a) 二 (p '(a), f'(b) 二qp'(b).
由这四个已知条件,
可以确定出A , B , C , D . 欲求厂(幻一。
的近似根,我们可求
<p'(x) 二 3A x2+ 2B x + C 二 0
的根 xo. 通过较为复杂的计算(见参考资料 【
1] 第 15 页),

以求出
x。
一。十(b ̄- a)(w 于 二
其中
二f (a)
= f (b)
二_ 一
3[f(a) - f(b)] _ v 一 “,
a 一 b

。二 v 二
,一,
“.
如区间 〔
a, b] 较短(即 b 一 。很小)时 ,这样定出的曲线
甲(二) 与 f(二
) 往往很近似,
因此,cp'(x) - 0 的根 x。与xm;。

往很近似. 如原问题中区间 [“,b] 较长时,应尽可能缩小搜
索区1i7 .
我们事先给定误差范围 E > 0 (与前相同).
迭代程序:
(1) 先设法缩小搜索区间. 取一个步长人> 0. 检查是
否有 f,(a + h) < 0, f'(a + 2h) < 0,一 ,f( a + sh) < 0?
如确是如此, 可缩小搜索区间为 【 a + sh, b]. 当然也可同样
将 b 端往里缩小, 例如当f'(b 一h) > 0,f'(b 一2h) > 0, 一,
f'(b 一 th) > 0 成立时, 搜索区间可缩小为 【 a + sh, b- th ],
总之,先粗略地缩小区间,定出搜索区间 [a bi] (a < al,
b,( b).
. 182 .
如f'(a+ 人
)> 0,则要改小步长h(例如奥丫 \ 10/

(2) 算出了(幻 一 。在 a1《 x E; b:中的根


(b ,一 a,)(。 一 ,一 Z)
x o 一 a, 宁 = 一 ,
“ - 沙 气- 乙 忿刀

其中
,二f'(a,),
“ ̄ f'(b,),
。一 3[f(a,) -  ̄f(b,)] 一,一 “,
a, 一 bl

。一v 二
,一,
“’.
若 If'(xo) I G 。
,则x。为近似解.
(3) 若 If'(二 。
) } > E,而 f,(X") --- o,说明根在 [xo, b,]
中. 算出

X1一二
。+ (b,-uxo一)(vw+-2v- ̄

z.
其中
 ̄ t'(xo)
二 f'(b,)
二一 3[f(xo) - -f(b,)] 一,一“

x o — o ,

w 二v 二
,一,
vu ’
若 fl(X0 > 8 > 0,说明根在 [。
,,xo] 中,
算出
_ . (x。一 a,)( w 一 ,一 二)
工1 一 “i -7 - —
“一 v 十 2 w

其中
,二 f'(at),
u  ̄ f,(xo) ,
. 183 .
二一 3[f(a,) - f(xo)l一,一“

4i 一 r0

w 二v 二
,一。

若 1f'(x}) ( 。,则x,为近似解.
(4) 若 {f' (x}) I > 。
. 与 (3) 中一样,将x。
改成x 继
续缩小搜索区间为 [x,, bj , [xo,xJ 或者 [al,:;],[xi, xo]
中的一个. 在公式 x。中将 at, b,换成其中一个区间的端点
(例如x0, x0 ,算出x2.
由于搜索区间逐渐缩小,迭代若干次后,可以得到满足误
差要求 6 的近似解 xk. 在迭代过程中也可能恰好有 Xk 满足
f'(xk) 二0.
例 已知
f(x) 二 x.4一4x3一6x'一 16x + 4,
求下列间题的近似解:
m in f(x), 8 二 0.5.
o < 公‘ 夕

(1) a 二 0, b 二 7.
f (a)  ̄ 一16, f (b)  ̄ 684.
取 h “ 1,
f,(a + h) 二 一36, f'(a + 3h) = - 52,
取缩小区间 [a bl] 二 [3, 7 1.
(2) f(a}) 二 一125, f(1,) 二 627,
f(a}) 二一52, /'(b,) = 684,
xo 一 4.145 ,
f'(xo) = 13 > S.
(3) 根在 [3, 4.145] 中. 设法缩小区间[3, 4.115]. 取
h 二 0 .4.
f'(二
。一h) 二/'(3.745) 二 一18.38 < 0 ,
. 18 4 .
根在 [3.745, 4.145] 中,
a1, 3.745, xo = 4.145,
f(a,) 二 一153, f(xo) 二 一155,
f'(a,) 二 一18.38, f'(xo) = 13,
代人迭代程序 (3) 中第二种情形的 x,公式,得
x1 , 3.995.
If'(xi) < 。. x,二 3.995 即为近似解.
实际上,xml。二4.

' 3. 多变量无条件极值问题

1.引言 关于对多变量 (多因素) 的函数 f介1, ....I xn)


(,》 2) 求最小 (或最大) 值的问题 ,当f(x … ,xn) 可以
求导数时,本章给出的切线法和共扼方向法等,逐次迭代逼
近最优解的速度较快,适用于精确度要求较高的实 际问题,
但因计算量很大,在计算时,一般须借助于电子计算机来进
行.
在微积分学中,我们知道,找x1,一 ,xn) 的最大值在“山
峰”
上达到,而最小值在“山谷”中达到, 当f(x1, … ,‘) 对 Xi
的偏导数李 、
一1,…,
,)存在且连续时,
0 劣;
在“山峰”
和“山
谷”处必有
of _ n /:_ , __ __、
二万一 一 v is 一 I , ’. ’, R 夕。 (3.1)
ox ;

(3.1) 的解中有局部极小解或局部极大解.如能将其解的全体
求出来,
比较这些解上的函数值大小,
就可能找出最优解. 但
在一般情况下, 要找出全部解是很困难的. 在这里, 我们只考
虑 /(XI, ...,xn)只有一个山谷(或一个山峰),即 f(xl,"" 3xn)
. 1 85 .
为凸函数(或凹函数)时的情形.
我们称 1(X1,. .., X.) 为(定义域D 上的)凸函数,如果
对任意二点(x1} … ,xn) 〔D , (Y, … ,Yn) 〔D ,有
f(.}X,+ (1一2为, ,… ,;,xn + (1一2,)Yn)
提 'f(x … ,xn) + (1 一))f(Y-, … ,Yn)
对一切 。成 I < I 都成立. 当 n  ̄ 2 时 ,
如图 3.1 所示.

。,

图 3 .1

当 f(xl: """, X.) 为凸函数时,称 一I(二


:,..., xn)为m
函数.
当f(xt, … ,xn) 为凸函数时,方程组 (3.1) 的任何解必
为最优解(使f(x l, … ,xn) 达到最小值).
为方便起见,记
‘二((x1! …,Xn (“
,表示行列转置),
.通 86 .
f(x)  ̄ f(xj, … ,x )
Ix(x)一(Of(X) …,鱼鱼里 、’_
\ dxI - 一 口X / -
在此记号之下,
方程组 (3.1) 可记作
f.Y(x) 二 0, (3.1)
问题归结为如 何求出 (3.1) 的一个解 x,
我们现在以任意一点 x0为出发点. 如 了 二
(x0) 等 0,我们
希望确定一个方向 zo = (z兮
I, … ,Z0), 和一个步长 10> 0,
使得点
x(1) ̄ x0+ ,l0z"
满足关系
f(x(1)) < f(x0):;
若/.(X0)) 。
,则再找 2“
,和 Zt> 0,点
x(2)二 X(l)+ .,Z(t)
使
f(x(2)) < f(二
(‘’
).
也就是说,我们希望能给出一个逐次迭代程序来求出方向z(k)
和步长 从> 0,点
x(k+I)二二
(‘)+ ;,kz(k) (k 二0, 1, 2,一 ),
使得 目标函数值逐次下降:
f(x0) > f(x(I)) > … > f(x(k)) > f(x(k+I)) > … ,
且在迭代若干次( k 适当大)后,或者 x(k)为 (3.1) 的解;或者
对给定的误差允许范围 。> 0, 有
Ilfx(x(k))II2 。,

{这
里符、,

!,
一丫
酥}且,
(x(k))-LJ,
、的最
小值也
相差很小,
这时就得到了够精确度要求的近似解 x(k).
下面介绍的最速下降法、切线法和共扼方向法实际上都
. 18夕・
是求 z( 妇和 Xk 的方法. 方法各有利弊之处,后面我们将适当
说明.
2.最速下降法 我们先来阐明 f.(X) 的几何意义. 过任
意点x0作等高线f伽) 二f(x0). 过曲线f伽) 二f(x0) 上任意
点 x* 作切线,非 。方向 fx(X*) 即为与切线垂直的法方向.
(当 n 二 2 时,见图 3.2)

fx(x* )

图 3.2

函数 f(x) 在x* 沿着法方向 fx(x,*) 的函数值一定增加,


或者说沿负法方向 一fx(x*) 的函数值一定减少. 事实上,由

兽 f(二
d元
*+ ;Lfx(二
*))二fx(x*+ ;Lt"(二
*))’
fx(x*)
知](二
) 在 x* 沿fx(x*) 的变化率

d f(x*+ lfx(x*))I_ 一}ifx(x*)IIZ> 0,


d 1 I AU

即沿 fx(x*),当I > 0 甚小时,有f(x* + .lfx(x*)) > f(x*)i


同理
牛 I(二
d A
*一;fx(x*)),

一。一一}Ifx(二
‘)II < 0,

. 1 88 ・
即沿 一fx(x*),当I > 0 甚小时,
有f(x*一灯二
(x*))< f(x*).
自然要问: I(x) 在x* 沿什么方向减少 (或增加) 最快?
对任意方向 z (见图 3.2) f(幻 在 x* 沿方向 。的变化率为

dd).‘
(・
‘+‘
・)’

一‘・
(・

二。


一 Ilfx(x*)!卜!!二[Icos0
( 0 为 z 与 fx(x*) 的夹角) .因为 一IE;cos 0 < 1,当0= 0 时
cos 0 = 1,当0 二 1800 时,cos 0 - 。
一1. 而当 0 二 0时 z=
fx(x*),当0 二 180。时,z 二 一fx(x**). 故 f(x) 在 x* 沿方
向 一fx(x*) (或fx(x*)) 减少 (或增加) 最快. 这就是最速下
降(或最速上升)法的主要出发点.
我们事先给定误差范围 8 > 0,当 Ilfx(x)ll2 < 6 时,x 为
(3.1) 的近似解.
迭代程序:
(1) 任取初始点 x0. 若 !Ifx(x1)112< 。,则 x0为近似解
(当fx(x0) 二 0 时,x0为真正解).
(2) 若 }Ifx(x0)IIZ > 。 . 则用单变量求极值的方法, 求
mx >ino f(x。一;Lfx(x0)) 二f(x。一2Ofx(XID .

x(1)二 x0一 几of二
(xo.).
若 !Ifx(x(1)) IF 。,则迭代停止 ,x(1’为近似解.
(3) 一般地,若x(k,
已知,llfx(x(k,)11'< 8,则x(k,
为近
似解;若 llfx(x(k)) ll2> 。,则求
m in f(x(k,一Afx(x(k))) 二f(x(k,一4 fx(x(k))).

x(k+l)二 x(k)一 )kfx(_,'(k)).


例 I 已知
. 1 89 .
f(x) “(x;一 1)2+ (,
: 一 1)Z,

m in f(二), 。 ̄ 0.1.
(1) 取初始点 x0二 (0, 0)'.
fx(x0) 0 (2(xi一 1),2(xz一 1))‘
二 (一2,一2)',
llfx(x0)112> “

(2) 求

孟》 0
in f(x。一24二
(x0))
. 二二 m in f(2),, 22,)
孟》 0

二m in 2(22,一 1)Z,

易见‘
。一含・
所以
x(,
) ̄ x”一lofx(x0) 一(I,1)'..
fx(x(i))  ̄ 0, vj] x(',
二Xmin.
由此例可见,对等高线为圆的函数 f(x),不管初始点位

f(x ) 二 f(x 0)

t o二 0

图 3.

置取在哪里,_ fx(x0) 的方向总是 直指 圆 心,而 圆心 即为


xmin. 因此只要迭代一次就得到最优解. 由此也可推想,当
. 190 .
f(二
) = K xc")

图 3 .啥

等高线类似圆形时,虽一次迭代不一定就能得到 Xmin,但可
盼望很快得到满足要求的近似解,或甚至最优解. 图 3.4 所
示,
迭代三次,
得到 x(s,二xmi。的情形.
例 2 已知

f(二
)一生x2

i+
求 m in f(二).
(1) 取初始点xo ̄ (一1,- 2)'.
fx(xo) 二 (一1, 一1)', lit二
〔x0)112 - 2.
f(xo一a,fx(x0))  ̄ K 一1 + 又:,一2 + 1)
一生(一1+ 劝,
+ 生(- 2 + *),
2 4

mi
z>on f(x,
一lfx(X,))一f(x。
一‘ofx(x,))I

儿。一 —

X‘
”一’
一“。

・(・

,一31(‘
:一,
)’

fx(x(l)一13(‘
,一‘
)’ 'Ifx(x('))II,
一典.
j ‘

(2) 可以推算出

xck’
一31k((-2
-i)k+i) ‘
“一“
・‘
,2,…,



(“


)一31k`r(--i一


‘’
),



・(・

’)”

一2X(9)k.
当 k 适当大时,总可使

}!,

(一)12一2Zx(
X 1合
9)k ・
(事先给定的 s > 0). 由图3.5 可见,xck)(k 二 0, 1, 2,...)

是按曲折的路线逐次逼近 xmi。二 0,但不能有限步达到 xmin.


在例2 中,
如初始点恰好取成xi 轴或x:一轴一
上的点,
例如
x0‘ (0,- 2Y ,则fx(x0) 二 (0,一1)‘
恰好指向Xmin “ 0,即
. 19 2 .
迭代一次就达到最优解. 可见,当f(x) 的等高线的形状类仪
狭长的椭圆形时,xo的取法很重要. 如取得不恰当时 (如图
3.劝,则迭代过程进展很慢,即 X(k)逼近xm,i。的速度很慢. 因
此, 对这种类型的函数用最速下降法求最优解, 有时不一定合
适.
可以证明(见参考资料 【
21),当 f伽) 是具有一阶连续偏
导数的凸函数时,若由最速下降法所得的点列 {X(k)} 是有界
点列时,则必有
(1) 数列 {找x(k))}单调下降;
(2) lira f(x(k)) 二m in f(二);
k 今口

(3) {x(k)} 的一切极限点为 m in f (劝 的最优解.


3.切线法 在上一节例2 中,我们可以看出 二 。,x(2),
(41,… ,(2k) … 这些点是在一条直线上,而 x(1), x(3),
x(5) … ,
x(2k+i),… 则在另一条直线上. 是否可以从xo出
发不沿 - fx(x0) 迭代,而径直沿 {x(2k)} 所在的直线方向迭代
呢? 如果一开始能从 xo处,把这个方向求出来,则一次迭代
就可到达 xmi。了.
我们先考虑,个变量的二次凸(椭球)函数

f(x)一合馨馨c
+=1i=1 ixixi+暮
i=1Pixi,
其中 ci,二cii (s, 1 二 1, … ,,
),即矩阵
了 ‘ " 、

了乙11
‘ 、
‘ ,
C } .




. l
、 l
、 j
、 ‘

是对称的 (C ' ̄ C ),且为正定的(即z`C z > 0 对一切 z '-F 0


成立). 记 f(x) 为
. 19 3 .
1 ,,
7 (X )  ̄ 一丁 x ‘x 宁 p x ,

p. ̄ (PC,一 ,Pn). 易见


fx(二
) 二C x + p  ̄ 0
为一线性方程组. 当x0选定后,沿方向 一C -'了
二(x0) 迭代就
可一次到达 xmin. 事实上,由

fx(x0 + z0) 二 C (x0 + z0) + p


二fx(x0)+ Cz。
二0,
即得 z0“ 一C -lfx(x0),故
xo1n。=一 x0 一 C 一
xmi ,fx(x0).
图 3.5 中 {x(zk)} 所在的直线方向即为 z0.

一一个变
・一一量
一 的
-切
- 线法('
’ - - 2.
一 3.)中
- ,
- 当f(
一 劝一粤。
2 :,
+ ;二
(C > 0) 时,
因f'(二
) 二 C x + p 为线性的,
即 Y 二f (二
) 为一
直线,Y 二f'(x) 过(xo,f'(xo)) 的切线与Y = f}(x) 重合,故
,二f'(x) 与x一轴的交点(x('), 0) 为
x(')一:。
一目f”'(x0) 一二
。一。-ifl(xo)一二
m,
n.
了 (x )

一.fI(x0) 即为,一1时上述的二
。方向. 故。
。一 。
-ifx/xp\
f',(x0) ”- -一’
一 -
的确定,实际是切线法思想的推广. 我们仍称本节的方法为
切线法.
当了 (二) 不是二次凸函数而是一般凸函数时,在任意点 x0
近旁 ,
可以用二次函数近似:

f(xo+ z0)=f<x0)+ fx(x0),z0+ 粤z0'f‘


二(xo)zo

其中
. 194 .

a2f(x0)


J a2f(x0)




o x; 口XI口X.


1,
fxx
x(x0
X)二 .




Ozf(x0). ,921(x0之



口X 口x 1 8 x;

(当f。) 是二次时,fxx
f二x(x0) 二 C ). 而
fx(x0+ 二
。)= fx(x0) + fxx(X0)z0f
因此 了x(x,0 + z0)  ̄ 0 的解(近似)为
z0‘ 一[fxx(x0) 一 ,
fx(x0)
(当f(二) 是二次时,z0 _ 一C 一 ,fx(x0)) ,这时, 沿 zo不一定一
次到达Xmin,但一般地能很快逼近Xmin.
我们事先给定一个误差范围 6 > 0 (同于前述).
迭代程序:
(1) 任取初始点 x0. 若 Ilfx(x0)112 。,则迭代停止,x0
为近似解.
(2) 若 !lfx(x0)ll2> 。,则求单变IFIL极值
m孟> in0 f(x0一;Lf二
二(x0)一
’f:r(X0))
设最优解为 又
。> 0. 令
X(I)= 二
。一又
0f二
二(二
。)一
‘fx(x0).
(3) 一般地,若 x(k,
已知,llfx(X(k")112 < ,则迭代停止;
若 !Ifx(x(k))IIZ> 。,则求
m孟> ino f(x(k,
一 ;Lf二
二(x(k))一
‘J‘
二(x(k)))
的最优解 从> 0. 令
x(k+i)= x(k,一,w xx(x(k))一‘
!x(xw ).
例 已知
了(x) 二 对+ 邓 + 对+ 2朽对 + 8对砖,
. 195 .
求下列问题的近似解:
m in f(x), 。二 0.1.
(1) 取 x0二( 1, 1)', f(x0) = 13.
fx(x0) = (26, 54)', 11fx(x0)112> 。,

fxx(x,一(34 104)
\ 10 4 246/

- f"X XI)一‘fx(xo) 二 一(0.3181,0.3540)',


m in f(x0 一}fxx(x0)一‘
fx(x9))
的最优解几
。二 1. 故
X(I)= x。一几 XO。
f:xx(x0
fx x )一
,fx(二
。) 二(0.6819, 0.646)',
11fx(x('))112> 。
. f(x(l)) 二1.738.
(2) x(2〕二x,(1,一,,f二
二(x(i))一
‘fx(x'(1))二(0.053,一0.054)',

fx(x(2))112< s,故x(2,
为近似解. f(x(2)) 一0.00575. 实际上,
xmin = 0 , fmin = 0 ,
可以证明 (见参考文献 【 习),当 f(x) 有二阶连续偏导
数,且 fxx(幻 对任意 x 为正定时,若由切线法所得的点列

x(k)} 为有界点列, 则
(1) 点列 {f(x(k))}单调下降;
(2) lim f(x(k)) = m in f(x);
左咔 目

臼) {x(k)} 的极限点为 xmin.


切线法收敛子最优解的速度是很快的, 但当n 较大时,逆
矩阵 人二
(x(k))-‘的计算量太大,用电子计算机运算时, 存储量
太大 ;对一般函数 了(x), f二二
(x) 的逆矩阵不一定存在; 又可能
出现
fx( x(k))'fxx(x(k))一‘
f.x (x(k)) 二 0
的现象,
这时,
f(x(k)一;Lfxx(x(k))一
‘fx(x(k)))= f(x(k)) ,
. 19 6 .
即(xk,
并非近似解,
但迭代进行不下去.
如何寻找计算量与存储量较小,收敛速度虽不比切线法
快,但比最速下降法要快得多的计算方法是下面要讨论的内
容.
4.共扼方向 我们从 ('3.2.) 例2 中,
可以看到: 若记


J. 0 、1 2



0 ‘

上 矛 、
1 口

. 1 C一 .



产 、
.、 万, - 一 X . X .

-2

2 -2 声
几 0 .
产 八
恤 曰 、 万
、 、 了
、 / 了
、 、

方向fx(x0)与方向x(3)一x('’
有如下关系:

{‘ “


(x0),C(x(3,
一“,

) 一(一1,一‘
)}。 1 }
\ 2/

x(几
‘)x827一“

而方向二
(3)一x(I,
是直指xmi。
的. 因此,
由xii 出发,
先沿方向
- fx(x0) 求最优解 x(I),再由x(i,出发, 沿满足
fx(x0)?C : 二0
的方向z 就可到达Xmin. 这是对 。= 2 时的一个例子而言的.
实际上, 当 n 二2,对二次凸函数 (C 为对称正定矩阵)
1 ,。
了又x 少  ̄ 气一x (,x 丫 尹 a:

若有二个方向p(I)和 p(2)满足
pW ,C p(2)二0 (3.2)
则从任意点 x(i〕出发, 沿 砂)求出最优点 X(2)s
一x(2)= xW + al 又,
pPW

f(x(2))一mi
Anf(x(1)+ 又
p‘
”)・
若 fx(x(2)) c 0,再从 x(2,出发,
沿 p(2,
求出最优点 x(3)
x(3)二xcz>+ 12P(2):0
. 19 7 ・
f(x(3)) = m in f(x(2)+ 2p(2)).
如此求出的 x(3)必为最优解 xmin. 事实上,
由 12的求法,知

。一牛f(x(2)+ 2p(2))
d 儿 孟= 孟:
二fx(x(3)) p(2). (3.3)

又由 (3.2) 和
fx(x(3)) = fx(x(2)) + ;,2C p(2)

fx(x(3))'p(i) = fx(x(2))lp(1)+ )12p(2)'C p(l)

dA,‘
(一+;,p(i)‘

;,
i一
。. (’

‘’


(‘
)二(1, 0)', e(2)二(0, 1)',
可以证 明



”一笋
提升pu)弓带 p(2)



)一李
pp)
(aI)'Cpe(2i),
(!)咪p(2Z)'Cpe(2)p,
(2)
因此,
由 (3.3) (3.4),
fx(x(3))'e(',二0,
fx(x(3))'e(2,一0,
以口
fx(x(3)) = 0, x(3)二xmin.
我们称满足 (3.2) 的任意方向砂)与产)对 C 为共扼方
向. 上述事实说明,当 。二 2 时,对二次凸函数,只要依次沿
共扼方向对‘ ),对2)迭代,最多迭代二次就可达到 xmin.
当 。> 2 时,设 C 为 。行。列的对称正定矩阵. 若向量
;(,
),;(,

,… ,。
(,
)(。簇”
)满足关系
p(r)lC p(t)一。 (i今j;i二1, … ,m ;j二1, … ,,).
. 1 98 .
则称此m 个向量关于 C 为共扼。
当 ,> 2 时,
同样可以证明: 对于函数f(幻一工二
!Cx+ 2

p'x,从任意点x(',
出发,依次沿共扼方向pcl),p(2) … ,p(a)
进行迭代,最多 n 次就可达到 xmin. 即由
x(k+')= x(a)+ 4 p(k) (k 一 1,2,… ,n),
几* 为
卿nf(x(k)+ 2,p(k))
的最优解, 若 fx(x(k)) 。仅 二 1, … ,n),则必有 x0+1)二
X m in .

问题是如何根据已知的 x(k), fx(x(i:)) 等信息来逐次确定


出p(v, ..., p(a)的计算公式. 为了回答这一问题,我们下面
介绍两种共扼方向法.
5.共扼方向法(一) 我们从任意初始点 x(1) 出发,先沿
_ fx(x(1)) 求最优解 x(2):

x(2)二x.(1)一 ;LJ.(X(1)),
f(x(1) 一2lfx(x(1))) 二m in f(x(1)一),fx(x(1))).


1)
兰 l)

、X

1 /
‘X





- 以

r X
、 一 .儿 声
‘X 、
,、少 一
、 矛 、 2 一
“ 0,

可以看出fx(x(2)) 与fx(x(1)) 是正交的. 我们若取


p(1)  ̄ _ fx(x('.),

p(2)一‘

(一,
+ Ilfx(x`12))1I2*(・
使
I,parC p(z)二(x(2)一x.(1))'C p(2;
. 19 9 .
 ̄ [fx(x(2)) 一f/.二
(x(1))))]’
Yp",
p(2)
升 0,
即衬2)与澎1)对C 共扼. 同理,
如令
。;+:、 一f二
p(k+1)二 :x/(xck+1))
‘,十.、、.
l+ }
}f终宁二东冷
共 x(x(k+1))112 p(k)
_。,、
Ilfx(x(k')IV ‘
认  ̄ 1,… ,,一 1),
可以证明 p(1) … ,p(n)对C 共扼.
迭代程序:
0 ) 取一初始点 X(I). 求出
p(x)二 一fx(x(Y)).
(2) 求二 (2)
m in I(x()+ a,p(1))  ̄ f(x(1)+ x1p(1)),

x(2)二x(1)+ I1p(1).
若 fx(x(2)) = 0,则 x(2)二:min.
(3) 若 fx(x(2)) : 0,求出
才/__。
2z、
p(2,二一fx(x( )、,I
)+ 兴lfx(x(
今气子 2))II2 _。
兴p( 。
1)
lifx(x(1))II2’
再求 x(3)
m in K x(2)+ )p(2)) 二f(x(2)+ h2p(2))}

x(3)二x(2)+ 12p(2).
(4) 一般地,若x(k)与 p(k-1)已知,而 fz(x(k)) ' 0,则求


(*)一‘

(一,
+ 1lfxf(x(xx(k(-k)1))1122p;(k-1)
再求 x(k+l):
min f(x(k)+ IPM ) 二f(x(k)+ 2'kp(k)),
x(k+l) 二x(k)+ 'kp(k)
例 已知
. 20 0 .
f(x) 一生二
卜 上xzZ!
2 4

求 m in f(二
) 的最优解.
(1) 取 X(I) ̄ (1,1),



(・
,二(一含X2)%
一”

”一‘

(・

”卜(‘
,含)
(2) 求 x(2):


(・

’+‘

‘”
,一‘
(‘
一‘, ‘一2-)
一扣一 J)2+14(
-卜I1

10
孟1  ̄ —


(2)一
二(:)十
;,
;(主
)一
(一含
・合)’

(3),

(x(2)-(- 91'29 ‘0,
p(2)一,

(x(2))+llfx(x(i2))I12)
2p(i二
(851一82011'

(二
(2)、Xp(2)。
一,(一
合+58)1,'・
4 201),'
9一
*2一普・
x(3) ̄ 二
(,
)+ 22p(2)二(0, 0)’二X min"
对于一般非二次函数,如 f二
二(劝 存在且连续,也可用上述
方法求近似解. 因为对取定的初始点 x(1), f(幻 在X(。近旁,
可近似地表成
f(x) 二 f(x(l)) + fx(x(i))'(x 一 xc>))
. 2 0 1 .
+ 合(‘一x(1))'fxx(x(1))(x一x(1)).
这是个二次函数, 视 fxx(xu)) 为 C ,用上述迭代程序求得使此
二次函数取最小值的最优解 瑞in,如不是原问题 m in i(幻 的
最优解,则以 瑞 。为初始点, 再用上法求使二次函数
f(x(m1)in) + fx(x(min)'(x 一x(
xmi
1)n
+ 工(二一x(Mlin)ifxx(x(mlin)(x 一xmi
(1)n)

取最小值的解,等等. 这样,提供了迭代程序,
但不一定有限
步达到最优解.
我们事先给定一个误差范围 6 > 0 (与前相同).
迭代程序:
(1) 任取初始点X(l). 若 !If.(x('))11'< 。
,则X(l)为近似
解.
(2) 若 Ilfx(x(1))II2 > 。,令
P(。二 一fx(x(1)),
求出
f(xw + ).1p(1)) 二m in f(x( )+ lp(1)).

x(2)二x(1)+ 1,对代
若 Ilfx(x(2))II2 < E,则 x(2)为近似解.
(3) 若 }Ifx(x(2)) II2 > 。,算出
p(z) ̄ 一lx(x(2)) + 丛兰丝上。
广
(l)
,,、、 ,,, 犷 .
Ix又考、
,夕1}.

求出
/(x(2)+ ,12p(2))一嗯nf(x(2)+ .1p(2)).

x(”二x(2)+ ).2p(2).
/ . 2 02 .

若 IIfx(x('))II'《。,设X(”为近似解.
(4) 一般地, x(k,
已知,Iifx(x(k))II'< E,则 x(k)为近
似解. 设二
(k), p(k-1,已知,
而 lfx(x(k))Ill > 8,算出
p(k)二一fx(x(k)) + Ilfx(x(k))IIZ .(k-1)
;二尸了代忿二共丁兀
丁 尸
11几 戈x 、
气‘2夕注

(2 《左( n),
求出
f(x(k)+ 4 PM ) ”m in f(x")+ lp(k)).

x(k+l)二x(k)+ 4 P(k) (2 < 左成 n).
(5) 若 Ilfx(x(n+l))IIZ> 。
,再以x(n+l,为初始点(视 x(ntl)
为 x (W ),重复 (1) 到 (D 的迭代步骤. 令
p(n+l)二一fz(x(n+1)),,
得 {x(n+k)} (1 < k 《 ,+ 1). 若 }Ifx(x(n+k))Il2< 。
,则x(n+k)
为近似解. 若 Ilfx(x(n+k)) Ill> s (2 ( k < n),则再按 (4),

p(n+k)一‘

(一,
+Il1fxfx((xx(n(n+k-k)1))1212,
(・
+及

f(x(”
十k)+ ),n+kp(n+k))一粤nf(x(n+k)+ ;,p(n+k))
x(n+k+l)  ̄ x(n+k)+ 又, +,P(”
+及).
(6) 若 llfx(x(2n+1))112 > E,再以 , ,(2n+1) 为初 始点,令
v(2nt1) ̄ _ tx(x(2n+1)),按 (1) 到 (4) 迭代下去, 等等.
可以证明 (见参考文献 【
31): 当 f(劝 有二阶连续偏导
数,
且存在 ttl> 0, U2 > 0 使
1,,112}!’成 z'fxx(x)z 《 P.21}二】
12
对一切 :,二成立时,
若由迭代程序所得点列 {X(k)} 为有界点
列 ,则
. 2 03
产. ‘、
‘.二 2
、 Lf(x(k))} 单调下降.

t ,、

、自

lim f(x(k)) 二 m in f(二).
无咔 。
产 、
r ,
j J
、 口 lim x(k)  ̄ xm in.
天今 .

还值得补充一点,当f(幻 为二次凸(正定)函数时,步长
从可由公式
;*一 ,
丛x(k))'p(k)
p(k)'C p(k)
求得. 事实上,由

0一共f(x(k)+ .lp(k))I‘
a 无
一*,一fx(x(k+i))'p(k)
 ̄ [fx(x(k)) + ;,kC p(k)Ifp(k)
就可得到此公式.
6.共扼方向法(二) 我们仍从 ('3.2.) 例 2 说起. 当取
定初始点 X(I) ̄ (一1,- 2)‘
时,令 p(i)二 一fxx(x(x)) 二 (一1,
一1)'. 我们现在要问: 对


J1 0


J 、
C }

. 1










与p(i)共99-的方向p(2)是否可以由方向fx(x(2)) 作一转动后得
到? 在 S3.4.中已见,
可取
p(2) ̄ (一1,2)'. p(I)'C p(2)二0. 由

x(2,
一:(1)+ 2,,p(2)二粤(1,
一2)p, j



(x(2),
一专(‘
一‘,

・如取转动矩阵
H2一(
. 20 4 .
作用于fx(二
(勺,则得一
-- H2fx(
- -二
(2)一)一冬
3 (一1,:)’,
其方向与
澎2)平行,
直指Xmin.
当,) :,
对二次凸‘
正定)函数/(,X)一粤二


C二十,
,二
,如
在迭代过程中,已知x(k), x(k+。和转动矩阵H k (k < 心,是
否能找出一个矩阵迭代公式,求出H k+1,使得 H k+lfx介(k十 勺
和 H lfx(x (1)) … ,H kfx(x(k)) 一起组成k + 1 个对c 共扼的
方向,且最多迭代到第 n 步后,得 H ;afx(x(fl)),其方向直指
xmin? 这时,除了H tfx(x("), … ,H月nf ,1x(x
:(x(n)) 组成对C 共扼的
方向外,还希望有 H +l ̄ C ...1. 这样一来,整个迭代过程实际
上就是求 C 一‘的过程.
下面叙述求H 、公式的主要思想. 先取定初始矩阵H 1为
任意一个对称正定矩阵,例如
1 0 … 0

0 “二 0 1

取初始点 X(l). 令
p(。二一H 1fx(x(1a).
沿 户)求单变量极值得 x(2). 欲求对称 E 定矩阵 从,使 p(2)二
- H 2fx(x(2)) 与对1)对C 共扼,
即求 从 满足
0 二p(2)'C p(1)二一fx(x〔
2))'H 2C p(1)"
如能求出对称正定矩阵H 2,使
从C p(l)二p(1) (3.5)
则由 I,的取法 ,

(二‘


)’,
“,一粤f<xw + ;,
‘,

)1;一
a 儿
;一 0,
. 205 .
即可得
p(2)'Cp(')二一fx(x(2))'p(1)二0,
如令
玩 = H :十 △H ,,
代入 (3.5),得
L H 1Cp(。二p(。一H ,Cp(l), (3.6)
易见

DH.=
H: ̄ 一p(})p 一H,
pa)C pcu
Cp(1)pa)'CH,
p()'C H ,Cp(I'
满足 (3.6),即

一H,+ 一
竺'C竺p(1
pW 生一
' H1
pkC p(lH)p,C(1)'pWCH,
1''C
满足 (3.5). 又由
x(2)一x(1)二x沪(1)
fx(x(2)) 一fx(x(1)) 二},Cpc1)

( r (2) 一 ,(1)) ( r (2) 一 ,(1)丫


打2 二 月; 十 一荞汾,一二六长尧吮-二,二一令二
(x ) 一 x }-'夕‘ C 又X " ) 一 x ,

_ H 1[fx(x(2)) 一fx(x(,))][fx(x (2)) 一fx(x(1)) ]'H 1


[fx(x(2)) 一 fx(x(')) ]'H 1[fx(x(2)) 一fx(x(1)) I .
可以证明 H 2是对称正定矩阵.
同理,
如H k(1< k < n) 为已知对称正定矩阵时,
H ‘二,_
= H77; 十,户(x(k+l,
共:,二 )一
, :(k))呼之
一‘一二 (x(
共 =k+l
,)一x( k)会
二一 二一二 )",
一K ’(x(k+1)一 x(k))'C (x(k+。一x(k))
_ H k[fx(x(k+1)) 一tx(x(k))][fx(x(k+1)) 一fx(x(k)) ]'H k
[tx(x(k+1)) 一fx(x(k)) I'H k[fx(x(k+1)) 一fx(x(k)) ]
也是对称正定矩阵. 可以证明H .+;二C一1"
我们事先给定一个误差范围E > 0, 、
迭代程序:
. 20 6 .
(1) 任取初始点 X(I). 若 Ilfx(xW )ll2< 。,则 x(1) 为近似

(2) 若 II/x(x(1))112> 。,令


p(1) = 一fx(x(1)) ,
求出
m in f(x(1)+ lpW )
的最优解 又:. 令
x(2)二X(I)+ I沪(D.
若 }lf二
x(x(2)训2 < 。,则 X(2)为近似解.
(3) 若 Ilfx(x(2)) 112> 。。求出
A x(1) ̄ x(2)一 x(1)
A g(1)二fx(x(2)) 一fx(x(1))'
A x(1) ・△XW I _ A g(1) ・} 户y
月2  ̄ , 十 一,一井二,-- 一一了戈
A x`}W. ・O g A g(1),・A g(1),
令p(2,二 一H 2fx(x(2)). 求出
m in J(X(2) + lp(2)一


的最优解 12. 令
x(3)二x(2)+ ;L2p(2)二
若 }Ifx(x(3') 112《 。,则x(3)为近似解.
(4) 若 !Ifx(x(3))112 > E,求出
0 x(2)二 x(3)一 x(2),
A g(2),fx(x(3)) 一fx(x(21) 1

H ,二 H 2 + A x全)・Ax(2)' _ 丛△;‘

,・A g(2),从
A x(2)"・A g(2) A g(2)'H 2A g(2)
令 p(3)” 一H 3fx(x(3)).
(5) 一般地, 若 x(k), x(k+。和 H * 已知,且 Ilfx(x(kt')) 112>
:,则求出
. 207 .
A x(k)。 x(k+i)一x仅),
A g(k,二fx(x(k+i)) 一 fx(x(k))
. △x (k) ・A x M ' H kA g(k)・L g(k)'H k
月‘
+,
一月“
十Ax(k)'.Ag(k)一 △9(走
〕,
月kAg(k)
(H ,二 I). 令 p(k+l,二一H k+lfx(x(k+u). 求出
m in f(x(k+A + A,p(k+l))
的最优解4 +1. 令
x(k+2)二x(k+A + ;Lk+lpck+I)
若 }Ifx(x(k+2))111 。,则 x(k+z)为近似解. 若 !Ifx(x(k+z))112> 6,
则重复 (5).
这样的步骤最多迭代 n 次,即最多到 H n, 即 对“ ̄
- H nfx(x(n)) 一定直指 xmin.
例 设


(・
)一含・
,+专・


求下列问题的近似解:
£二 0.0 1
m in f(二
),
(1) 取 x(1)二 (1, 1)'.

;。
。一 ,

(x(1))_ (,
,1丫, }},

(x(1)!12> S.
、 石 /

(2) 求出
min 众x(I)+ Apo,))

最优解*:一10. x(2)一:(1)、I,p(1)一(一粤,

4)'. \ v 9 /


:(一卜(一 含, 晋)’ ,, ‘ ・(一,

‘’
卜二
(3) 算出
Ax(I)一二
(2)一二
(1)一一互CZ,1)',
. 20 8 .
1 、、
一 .


“〔
”一‘

(・
(”
卜‘・
(・

”,一 鲁(,
, 2 尸/

△x (1)△x (1), _ .△g(1)Q }(1)}


H 2, I +
△xci)}O ga) A g(l)'A g(i)
/ 4

2 / 了


4 口
! .
--

)一I4,-

二 2 + 9 . 刁
、 2 1 1 1


153 \ (145
32
32 丫
17 8 /


‘,
,一一。2fx(x(2))一奥(;,
一4)', 1 丫

求出

minf(X(2)+ zp(2))一minf(一1 + ),4 一411


\ 9 17 9 17/

的最优解;,
一17 9

x(3)二x(2)+ ;L2p(2) ̄ 0 二
= xmin.
对于一般非二次函数,当初始点x(1)与函数的极值点接近
时,
我们可把函数在那部分地区的形状看作一个二次曲面,因
此也可用这个迭代程序求近似解,
但迭代次数不一定有限次.
迭代程序:
(1) 到 (分 与 f(x) 是二次函数的迭代程序相同.
(6) 若迭代到x (n+1)时,Ilfx(x(n+1)二
)!}’> 。,则令
H n+, , I ,
即以 x(”
十1)(代替 xa)) 为初始点,重复 (1) 到 (5). 若迭代到
x(2n+1),仍有 Ilfx(x(2n+1))112> 。,则复令
H 2n+,二 1,
以 x(2n+1)为初始点,重复 (1) 到 (,
) ,等等.
可以证明 (见参考文献 〔4]): 当 f(x) 有二阶连a 偏导
・2 0 9 .
数,
且存在拌> 。
,使
z'f二
二(x)z ) ,i Iiz112,
对一切 x, 万成立时,
若由上述迭代程序得到的点列 {x(^ 为
有界点列,则必有
(1) {f(x(k))} 单调下降.
(2) 悠 f(x(k))一minf(x)一fm,

(3) lim x(k)二二
及, 。
min.
(4) 存在 。和 < a < 1),使
f(x(k)) 一fmin < ak[f(x(u) 一fmin
(左 ̄ 1,2,3, … ).

; 4. 条件极值问题(一)

1.引言 条件极值间题(不失一般性)是求


min f(x),
(gi(x) ) 0 (j 二 1,… ,m )
的最优解xmi。的问题.
我们先介绍一些必要的几何概念,以便说明各方法的主
要思想.
(1) 满足 gi(x) > 0 (j 二 1, " , m ) 的点全体称为集
合 R ,记作
R  ̄ {x l¥i(二
) ) 0 (j  ̄ 1,… ,。)}.
R 也称为约束区域. 对属于R 的点 x06 己作 x0E R ),若至少
有一个 io (1 < to( m ),使

gi

o。
(x0) 一。

则称x0为R 的边界点.例 如,。 ̄ 2 时如图4.1所示.
(2) 若 x* 〔R ,,

. 2 10 -
93(二) ) 0

s=(x) 》 0 .
*x 、
gl 树列
一 一,
- ,, 九

图 4 .t

8i(x*) > 0 (j  ̄ 1,… ,m ),
称 x* 为内点. 若 y 不属于 R (记作 yER ),称 y 为外点.
臼) 若有 x0满足约束条件,即存在x0E R ,则称R 为非
空的,
否则称 R 为空集.

i(x)

口{一

(“




X * In

卜一一— 占一 —

 ̄一- 一 万

图 4 .2

我们知道,无条件极值问题 m inf(劝 的最优解xmi。不一


定是条件极值问题 m in 了
(幻 的最优解. 例如,,二 1 时,如

图 4.2 所示. m in f(x)的最优解 x0min,


但 m in f。) 的最优解却
x> a

是 a,且 f'(a) > 0,
当 n 二2 时, 如图 4.3 所示. x0
xmi。为 m in f以) 的解. xmin
为翼Rn f(x)的解,
在R的边界上,
fx(xmin)烤0"
一2 1 1 .
K x ) 二f(二. ,
。)


xein之
zof(()
x)=f(x0)
图 4 .3

当然,
如果 m in f(幻 的最优解 x备。〔R ,
那么:o,
m}。也就是
in f(二) 的最优解了.
mVER
为了避免处理约束区域 R 边界的复杂情况,我们设法将
条件极值问题化为无条件极值问题来求解. 这是本节的主要
目的.
当约束条件比较简单时,
可以用消去变量的方法. 例如:
. 2 12 .
(1) xi > 0 (j 二 1,… ,,〕.
令 x,二 Y,代入 f(二
) 二F 。). 问题化为求m in F (y) 的
无条件极值.
(2) 0 < xi< a,. 令 x,二 aicos2yi即可.
(3) 一ai《 xi< ai. 令 xi二 ai sin yi即可.
(4) 。
、毛二
;蕊b;_ 今 二
、二红土

兰泣+ bi-2 ai sin y,即
可.
(劝 设A 是,行,列矩阵 (,< n),记 A 二(M ATT),
A ,是m 行。列可逆矩阵. 于是方程组 4 x 二 b 可以记作
, . 月 , /x ,
/1Ix;一”uxt:一“
, x’
一( -
\工II

VP
xI= A iI(b 一A ux1I)
代人 f。) 二F (xu),求m in F (xn) 即可.
但是,消去变量的结果,往往使目标函数复杂化, 因而造
成计算无条件极值的困难. 当约束条件较复杂时,也难于消
去变量. 因此需要引人一些别的方法.
2.“外点”法 考虑问题
m in f(二),

R 二{x1gi(二
) ) 0 (j二1, … ,m )}.
作函数(一个变量 t) 小(t) :

ti (t) = 0, 当 t ) :0,
00,当 t< 0

易见,
当x E R 时,
有c(gi(x)) 二() (1二1, … ,m );

当xER 时,
艺4,(gi(幻)一00. 由此,如作函数
. 2 13 .
0(二
)一f(x)+ 艺 (K gi(x)),
则 m in c,(劝 的最优解 x* 〔R (否则,由x*ER 将得 o(x*)=
00,即二*非最优解了). 因此x* 也就是原问题的最优解了.
事实上,由

必(二
) 一f(x)+ 艺 '(gi(二
))) O(x*)

一Kx*) + 艺 4(gi(x*))一f(x*),

当x。* 时,习 ,A(gi(二


))一。
,即f(二
了= 1
)) f(x*) 二
*为原Ip1
题的最优解. 这样,
就把原问题化为无条件极值问题
m in % (x)
的求解.
但是,4.(t) 在 ,二0 处并不连续,
没有导数,即 (p (x) 在
R 的边界上不连续,不能用 '3 方法求解. 为此,修改 0 (t) .


(‘
,一I几 ・当‘ 》0,
It`, 当 t < 0,
这时cb (t) 不仅在t二0 连续,
且有连续导数,事实上,0 (t)
当t Av 0 时导数显然存在, 当t 二0 时,由导数的定义,
立刻可
得 0'(0) = 0. 币(t) ,4"(t)对任意 t 连续.

当xE* 时,
仍有艺 ,P(g;(二
))一。
,但当二
‘R 时,0<
i= 1


1= 1
4 (gi(x)) < 00 ,即 m in % (x) 的最优解不一定是原问题
的最优解了. 于是,
设想是否可以取一个充分大的数K > 0,
修改 必(幻 为
. 2 14 .
P(x,、) 一f(二
) + 、艺 [mir,(0,gi(x))]2,
希望 m in P(x, K ) 的最优解 x(K ) 是原问题的最优解或近似
解.
若 x(K ) E R ,则 x(K ) 必为原问题的最优解. 事实上,

f(x)+ K 艺 o(gi(二
)) 一P(x,K )) P(x(K),K)
= f(z(K )),
当x E R 时,
即有 f(二
) ) f(x(K )).
若不管K 取得多大,总有 x(K )EJ? (即 x(K ) 为R 的外
点),
设想是否可取一个K 的数列 {K i}.
q < K,< K 2< … < 价< ‘
”,
使吧nP(x,Ki)的最优解‘
(Ki)从R的外面,
随着i的增大,
而逐渐趋近于原问题的最优解?
例1 求下列问题最优解:
m in f(x)
f(x) 二X1+ x2,
R : g,(x) 二 一x21 + x2 二
) 0,
g2(劝 = XI 二
〕0.

P(x, K ) 二XI+ x2 + K {[m in (0,一x21 + XD ]2
+ [m in (0, x,)]2},
对 x 求导数:


‘1 + 2K m in (0,一 xZ+ XD ( 一 2x,)
P 厂 K 、
一 .
、 X J -
X 护 .


+ 2K m in (0, x,)

1 + 2K m in (0,一x资+ :,

. 2 i5 。
了:

才t
了0 =
fi
X m in

图 斗.4

由Px(x, K )  ̄ 0 可知
一 对+ x2< 0, x,< 0,
解方程组Px(x , K ) = 0,得 m in P(x, K ) 的最优解:
( 1 1 1 、
x t 建
、 , 二二二吸 — — , 一一丁-  ̄- 一 ̄ ̄ -了:. — — !
\ 2 ( 1 十 K ) 一4 ( 1 + K 夕‘ 2K /

对任何K > 0,二(K )ER . 若取K ,二i,算出:(K ;),可列表


如下:

x ,(K ) x ,(K )
1 7
K ,

二 一 一
4 一 -16

一 一

K z

‘ 一 一
6 9
1 竺
一 1
K 3

j 一 一
5 92
1 卫
一 2
K 4


一 一
10 0

x m in

. 2 16 .
由x(K 1) 的变化趋势, 知 x(K ;) 从R 外面逐渐逼近R 边界, 而
{x(K )} 的极限点 (K --b oo) 为 0,是原问题的最优解 xmin.
可以证明 (见参考文献 【 5]), 当 f(劝,一g1W , … ,
- gm(幻 为凸函数, 且存在常数 。,使集合
{x Ix 〔R ,f(二) 《 a}
为非空有界时, 若令

P(二
,K ) ̄ f(二
) + K 艺 [m.in (0,g;(二
))]’
(K > 0),

(1) m in P(x, K ) 必有最优解 x(K ).


(2) 若对某一 K > 0, x(K ) E R ,则x(K ) 为原问题的
最优解;若对任意大 K > 0,总有 x(K )ER ,则序列 {x(K )}
的极限点为原问题的最优解.
(3) 设原问题的最小值为几in,则
lim P(x(K ), K ) 二 lim f(x(KK )) 二fmin.

(‘
,Kli-mo‘馨[min(0,g,(x(K)))]’
一0.
(5) P(x(K ), K ) 和 f(x(K )) 对K 为单调增加.

(6) 艺 [min (0,gi(x(K))]’对;:为单调减少.


当 [m in (0, g1(x(K )))]2 (j 二1, … ,m ) 充分小时,点
x(K )充分接近约束区域边界,因此从某种意义上来看,x(K )
就可看成满足约束条件的点.而从上述结论可知, 当x(K ) E R
时,x(K ) 就是最优解,因此当 x(K ) 充分接近约束区域时,
x(K ) 可看成是原问题的近似解.
我们事先给定约束条件的允许误差范围8 > 0. 列出辅
. 2 17 .
助函数

;(二
,K) 一f(二
) + 、艺 [min (0,g'(x))]'
和检验条件
[m in (0, gi(x(K )))]'< 8 (j 二1,… ,,).
迭代程序:
(1) 取适当大K ,> 0. 求 m in P(x, K ) 的最优解 x( K 1) .
若x(K ,) E R ,则x (K ,) 为最优解;若 K 二K ,, x(K ,) 满足检
验条件. 则 x(K ,) 为近似解.
(2) 若K 二K ,, x(K ,) 不满足检验条件,则取 K ,> K ,,
求出 m in P(x, K z) 的最优解x(K 2).

(力 一般地,若K 二K k, x(K 户不满足检验条件,则取


K k+i> K k. 求出 m in P(x, K k+i) 的最优解 x(K k+i). 若
式K k+t) 满足检验条件,则为近似解,否则再重复上述步
骤.
随着 K ,的逐渐增大,外点x(K 口也逐渐由R 外面接近
R 边界,
而f(x(K k)) 逐渐趋于 /min. 由此,
称这方法为“
外点”
法.
在例 1 中的列表就说明迭代程序的中间结果 . 当取定
£一0.2 时,x(K ,) (护二1, 2, 3, 4) 并不满足检验条件. 但
当K 5 二5 时,8 = s/(2m K ) 一 0.01,
,,
,、 /
戮八,夕一、一112 一76720、
g,(x(K5),
一 33610< 。

g2(x(K5))一 畏< 0, I 乙

. 2J 8 .
而 (m = 2)
2m K 5[m in (0, g,(x(K 5)))]2 := 0.15 < 。,
2m K 5[m in (0, g2(x(K 5)))]2 :二0.14 < 。.
故 x(K 5) 为近似解.
值得特别指出的是,
当f(劝 或 一gi(x) 没有凸性时,
也可
用“外点”法来求局部最优解.
例 2 求 m in f。),: “0.01,
f(二) = - xtx2 (非凸),
R : g,。) 二 一x;一 x22 + 1 ) 0,
92(二
) 二XI+ x2) 0.

P(x, K ) - 一x,x2+ K [m in (0,一XI一x2+ 1) ]2
+ K [m in (0, x,+ X2) ]2.
检验条件
6k = 4K [m in (0, gj(x(K )))]2< 0.01 (j = 1,2).
根据“外点”法程序计算结果列表如下:

x ,(K ) xz(K )


0 .89 0 .6 4 0 .3 6
K , 0
一:
0 .7 7 0 .6 2 0 .1 8
K ,
j 0 0. 61
0 .7 4
K J月 0 n 0. 58
1 . 0 . 67 0 .0 0 4

斌一


如果在实际问题中要求近似解x(F;k) 必须满足某些约束
条件,
且过程中的x(Ki), x(K2), … ,r(K k_,)为了利用来观
,. 2 1 9 .
察目标函数值的变化情况,
也要求始终满足某些约束条件,

时,“外点”法就失效. 其次,如果 f(x) 在约束区域 R 外的性
质较复杂或甚至没有定义时,也不能用这方法.

图 4.

3.“内点”
法 为了避免上述困难,提出“内点”法. 当约
束区域R 有内点时,求一个内点点列 {式rk)} 逐渐逼近最优
解 xmin.
假设 R 有内点 x0. 作辅助函数

P(二
,;)二f(二
)+ /艺 ( ; > 0)
gi(x)
或者

P(二
,;) = f(x)一;艺 loggi(二
)(r> 0).
易见,
在R 的边界上(至少有一g'i(x) = 0) P(x,,
) = + 00.
因此・
如果从R的内点x0出发,
用'3的方法对嗒“P(x,ri)
(;,> 0) 进行迭代,函数值 P (x, rl) 逐渐下降,所得的最优
. 22 0 .
解(或近似解) x(r,) 只可能是 R 的内点二 求
如果我们逐次选取 r1> r2> r3> … > 0, rk-* 0, 当
出 m in P (x,;口的最优解x(rk),则它们都是R 的内点.


;、0时,
;。又 一李,或者,
,又logg,(二
) 在P(二
,;*)
飞i=1 9,
(二) 一
‘一 “i= 1
中的影响越来越小. 如果 xmi,在 R 边界上,则是否可 望,
{二(rk)}逐渐向R 的边界逼近且趋于xmin,
而 P(x(rk), rk) 与
f(x(rk)) 逐渐趋于 fmin?
可以证明 (见参考资料 〔
5]),当 JQ 有内点时,若 f(x),
一 gi(二
) ,… ,一gm (x) 为凸函数, 且存在常数。,使集合
{x lx ‘R ,f(二
)成。:}
非空有界. 令

P (x, r) = f(x) + ,E 号下
: (; > 0)
i = 1 g ilx j

P(X,,
) 一f(x) 一 E logg;(x) (r> 0),

(1) m in P (x, ;) 必有最优解 x(r二


,为R 内点.
(2) 点列 {x(r)} 的极限点为xmin.
(3) lim P (x(r), ;) = lim f(x(r)) = fmin.
(4) f(x(r)) 对 r 单调减少.
) 取第一种形式时,l
(5) 当 P (x, , l- 共一 对,单
i = 1 g i( x ( r 夕夕

调增加;当P(二,;)取第二种形式时,二
弓 loggi(x(r)) 对 i 下
= 1

单调减少。
. 22 1 .
(6) 当 P (x , ;) 取第一种形式时,

f(x(r))) /min) f(x(r)) 一L ,一;今下


不"1 9 八x (. 厂少少

lim 丫 一一r
r-.p洲 .gf(x(r))
(7) 当 P (x, ;) 取第二种形式时,
f(x(r)) ) fmin ) f(x(r)) 一 rm .
由上述结论,可见当 N x, ,
) 取第一种形式时,可用

又 气4 一 .的大小衡量f(二
(r))与fmi。的误差大小. 当
洲 g'(x(r)) 一
“’‘尸
’一‘”丫“ 甲一“---、
一,-刁・ 一
P (x, ;) 取第二种形式时,则可用 rm 大小来衡量 f(x(r)) 与
fmi。的误差大小.
我们事先给定最小值的误差范围。> 0
迭代程序(一):
(1) 求出 R 的一个 内点 x0. (见 7,求内点方法)
(2) 作

P(二,,
)一f(x) + 又 -李,.

二i g 八x )
(3) 取 r1> 0. 以x0为初始点,

m in P(x, r1)

的最优解二
(;:). 若又 = 共牛二《。
,则x(ri) 为近似解.
}丁玉岛戈x 又r i夕夕

(4) 一般地,
若已知rk > 0 与x(r'k),而 又 ,少、

乡三1 9 j} X } r k夕夕
> 。,则取 ,

*,.‘(0 < rk+i< rk),以x(rk) 为初始点,求
m in P(x,,
、+;)

. 22 2 .
的最优解二
(;。;). 若又 气共李
1一,簇。
,则:(rk+t) 为近
似解,
否则再重复上述步骤。

‘、
’一

’一1=1gi(x(rk+t)) - ,
,,
,、、
一,,
、一
这方法的缺点是, 在Px(x};)中,对招舟 求偏导数后
、 一 ,一泛一’ .”‘--一 一、“
。__ gix(x) - 14"}* 二/__ 、‘、二_P--f.-*gi
“‘ (x)
-梦ii. 1._ 二-

, 一
得 一鱼牛羚,可能使 P x(x,;) 的形式较复杂。如 P (x,;)
gi(x) “‘’
- 一一‘
、一”/ 卜
、・“一件一 ・
、- 一州- 、
一,・

取第娜 形式,对;og gi(x) 求偏导数得鱼李孚,可能使
9,
(、) -
P ,(x, ;) 较为简单。
当 R x, ;) 取第二种形式时,
可见,
如给定误差范围 。>
0,则当 , M 。时, 有
If(二
(,)) 一L inI
即取;;一二时,二
(ri)就应该是原问题的近似解。但如果8
m 邢

太小时,
如此决定的Ti也太小,
即在P(x,;:)中,
项艺 r,log i = 1

gi(x) 所起的影响甚小,会因计算时,由于误差舍人等原因被
忽略不计, 也就是约束条件将不起作用,所得的解 式r,) 只是
无条件问题 m in f(劝 的近似解了。 因此,如 E 很小时,;,不

能取为二,要取较大的值,
刀2
逐步向二减少. 力2

我们事先给定最小值的误差范围。> 0.
迭代程序(二):
(1) 求出R 的内点xo.
(2) 作

P(x,r) 一f(二
) 一; 艺 log 。
,(,
) (r > 0).

(3) 若;一二在求min P(x,;)时; 艺 loggi(二


) 不致
会被忽略不计. 令,
:一二,求出

. 2 23 "
min P(x, r,)
的最优解x(rt),即为原问题的近似解;若 。太小,
以致当 ;二

m8时,
在求mi
xnP(x,r’
时二i=1’

‘g1(x,
有被忽
略不计
的可能时,
选定,
:> 二. 求
m in P (x, r,)
的最优解 x(rt). 再逐次选定 , 2< r,, r3< r2, … ,rk<
r*一
,,逐次求出 x(r2), … ,x(rk-t), x(rk),观察 x(r;)
(i= 1, … ,k) 变化的轨迹, 以求原问题的近似解.
例 1 求 m in f(二
),6 二0.0001.
f(x) = X1+ x2,
: gt(二) 二一xIx2 + x2) 0,
g2(二) = XI ) 0.
(要求在计算中取小数点后三位有效数字。 )

P (x ,r) = 二
;+ x2一 ,log ( 一x21 + x2) 一 ,log x,,
计算结果列表如下

x d r) x,(r)

> 8
1 .0 0 0 0 .5 0 0 1 .2 5 0
> 8
0 .5 0 0 0 .3 0 9 0 .5 9 5
> B
0 .2 5 0 0 .1 8 3 0 .2 8 3
> S
0 . 10 0 0 .0 8 5 0 .1 0 7

0 .0 00 1 0 .0 0 0 0 5

当t(二
) 或 一g,(x) 没有凸性时,这个计算程序也可用来
. 224 .
gZ, 》 0

(,


Ip 4.6

求局部极小值.
例 2 求 m i9 f(二),
需 七义

f(二) = xa,
R ; g(二
) 二 一sin 二
;一:x, + x2) 0.


log}一 ‘
户(x, ;) = X2一

一x2.
,1

0_ 丝 _
・!一, +含

口X1 x ,
x2 一 sin x ,

0 一鲤 _ 1 一 . . . . . . . . . . . . . .,. -

. ,. . . . . . . . . . . . .

口xz xi
xa 一 s in x ,

. 225 .
解出二组解:
(2ir . , . r2,r . 。 1 . 二 二 N,
从r)一诱 土‘
n7r,sin I了土‘
”勺一了工”
“个r)
(n = 0, 1,2,… )
(4a . , . 147r . 。 1 . 2, 二 V
戮刁一戈
丁 土乙
nar,“
m 13 工乙
nnj 个了 工air个勺
(n = 0, 1。2,… ).
一 g (劝 虽非凸函数,但可求得局部极小解的近似解,如


(一
,一(4?3r,0.423今’ (当 ,= 0),

(一
,一(一23, 1r 一0.576a)‘(当 ,= 一1).
计算结果列表如下:
” = 一 1

X (
x,(r) ’ x,(r) x,(r)
:4
八 』 一
3 1.027,r ’ 一三二 一 0 .0 2 8 n


八 』 一
3 0.7097t _  ̄2x 一 0 .2 9 0n


0.550,r _ 止:n

U . 一
3 一 0 .4 4 9n
: 3


1 一
3 0.423a - - 2n 一0.576n

4.联合算法 若问题中有某些形如 gi(二


) 一0 的约束条
件,“内点”法就不能用; 若问题要求在迭代过程中 x(K ) 始终
要满足某些约束条件时,“外点”法也不能用. 如何联合运用
这二种方法,使在迭代过程中,一部分约束条件始终满足,

另一部分约束条件虽一直不满足,但逐渐逼近约束区域边界,
最后得到近似解,这是我们在这一节要考虑的间题.
. 226 .
了 ̄ 2.4w
f ̄ 2 .22r

B 》0 .二
〔,:)
. x(r2)

... . -
2君

气少
一 42r 公

图 4 .7

考虑问题
m in K x)
R : gi(x) ) 0 (i 二 1,… ,。),
S : gi(x) ) 0 二in 一
卜1, … ,9),
R 有内点. (对S 不知其是否有内点.)
我们是否能对 R ,用“内点”法,使迭代始终在R 区域内
部进行, 而对S 用“外点”法,使迭代始终在 S 区域之外进行,
但逐渐逼近 S 的边界?
我们事先给定约束区域 S 的误差范围8 > 0. 又给定最
小值的误差范围 8 > 0.
迭代程序:
(1) 求一R 的内点:0: gi(x0) > (1(,= 1, … ,m ),
(2) 作

T(二,
;)一f(x) 一,
,艺 log gi(x)
・2 2 7 .
+1r,
鑫,
[min(0,‘

(・

)”

(3) 取定 ;1> 0,以x0为初始点,
求出

m in T (x,

的最优解 式,
;) (必为 R 的内点).
Igi(x(r1)) I《S (j = 。+ 1,… ,9),


:。一1-全[min(0,。
rl

(二
(rl)))]2、。
i= m + 1

则 x(r1) 为原问题的近似解;若
m ax 1gi(x(r1)) ! > S
m + 1< i‘9

或者



,一-2-宝[min:。
,。
,(二
(rl)))]2>。
r 1 i= m + l

则取 ;:< ,,
,以 x(r1) 为初始点,
求出
m in T (x, r2)
的最优解 x( r2).
(4) 若 x(rk) 已知,

盆n aX
m + 1< i< a
1gi(x(rk))I> S
或者


*。一二全[min(0,gi(x(rk)))]2>。
r走 i= m + l

则取 ,
杆:< ,
,,以 x(rk) 为初始点, 求出
m in T (x, rk}1)
的最优解 x(rk+1). 若
1gi(x(rk+i)) i <1 8 (j = m + 1,… ,9),
. 22 8 .

r k十tm 一 — 艺 [min(O,。
,(二
(rk+t)))l] “

rk +t j= m + 1

则二(;杆:)为近似解,
否则再重复上述步骤.
考虑问题
m in j(x)
R : gi(二
) 二 0 (j = 1, … ,m )
我们把 R 改写成

{一
:ij(x)>0(1一
对问题用“外点”法,则辅助函数为
‘・
・..,m).
P(x,K) = f(二
) + K 艺 [min (0,gi(二
))l]

+ 、艺 [min (0,一:i(x))l]

一,
(二
)十K 不几
夕fL gt(x),2 jgi(x)上
}’


/Y,[_1(x)_
2-gi(x)J1]
一f(二
) + K 艺 [。
,〔二
)l]"
i = 1

考虑问题
m in f(二)
R : gi(x) ) 0 (j 二二1, … ,。),
S : h,(x) “ 0 (1= :1,… ,9)}
其中R 有内点 xo.
对问题用联合法,则辅助函数为

T(二
,,
)一,
(二
)一,
分loggi(x)、1宝[h,(二
)〕
:.
. 22 9 .
考虑问题
m in f(二)
R : gi(二) ) 0
l. 。),
S: ht(二) 二 0 (l = 1,… ,叮),
其中 R 不一定有内点.
我们修改R 为 R r:
9,
(二) + ,) 0 (j 二 1,… ,。),
修改S 为Sr:
人,
(二) + ,) 0
(1 = 1,… ,9).
一 人,
(二) + r ) 0
易见,
当 ; > 0 时,
集合 R r, S,有内点. 对修改问题
m in f(x)
xXESRr

用“内点”法求解. 作辅助函数

P (X,;) 一f(二
) + ;,
又 ‘一1一一
i=1 gi(二
)+ ,
,今 1-
+ rA 》: 1—
1 .
+ —
1 1!
a=1 Lhi(二) + , 一 hl(二) + rJ

若x(r) 为修改问题的最优解,
当 / 、 0 时,牙
(犷) 趋于原问题
的最优解,即对适当小 ; > 0, 式r) 为原问题的近似解(在与
前二节类似的假设条件之下. 见参考文献 〔 5)),
5.参数 r 的迭择和修正程序 在 “内点”法中, 如何合理
选择初始内点x0和初始参数 ;;> 0, 以及如何简化 P (x, ;)
的取法, 使迭代程序的收敛速度加快和计算手续简化, 是个值
得进一步探讨的问题.
若初始点 x0取在最优解的近傍,则迭代过程可能很快收
敛于最优解. 为此。
先任取R 的一个内点 Y(O)为初始点,对无
. 23 0 .
亲件极值问题
m in f(二)

求最优解x. 若x E R ,则 x 也就是原问题的最优解;若 xER ,


则从迭代过程得到 伪(k)} (交二0, 1, … ,1,1+ 1),使
{f(y(k))}为单调下降, 而y(k)E R 为内点 仅 二0, 1, ,
二,1),
y(t+1)ER . 这时,y(t)可能在尺边界附近,如以内点y(t)为初始
点 x0,则 x0可能在原问题的最优解附近.
我们以尹,
= x0为初始点,
对 m in P (二,,
) 进行迭代,在
P (x, r) 中,有些离 x0 较远的边界 g,(x) 二 0,其对应项
一粤丫 对迭代的影响 很 小或甚至不起作 用,因此,可以考虑
gi(二) -一 ’””一 ’
‘’『
 ̄ 一、一一 ’一 ,
:・. 一 ̄ , 礴一 “一
在 P (x, ,) 中去掉这些对应项,这样就简化了 P (x, ;). 例
如,g1(y(t+`)) < 0 (如 yct+})不满足的gj(二
) 李0 不止一个时,
任择其一),
则可想像x0距xmi。比y(0)距xmi。为近,且xmi。可
能就在边界面 g1(幻 二 0 附近. 于是修改 P (x, ,
:) 为

;(:,
rl,))一I(二
)+ 一共,
g 1C x )

求 m in P 1(x, r11)) 的最优解 xW . 若 .:‘



)〔R ,则缩小 ,
:,取
r(2)< ri1),再求 m in P 1(x, rj2)); 若 x(1)ER ,例如 g2(xc1)) < 0
(注意x.(1)必使 g1\x(1)1 > 0),则取
r(2)
1 r2(1)
P 2\x, ,
,,r2) 二f(二
)+
9:(二) g2(二)
rp > r1(2)> 0, r?1)> 0,
;(2),r2)
rl (1 之大小视 g1(x), g2(二
) 之作用大小而定,作用大
的,/ 取得大些,
也可取,
(2),二,
2(1)
经过若干次这样的步骤,可以得到原间题的最优解或近
似解。
. 23 1 .
我们还可以设想,
“内点”法的迭代过程是从 x0 出发沿轨
迹二
(;) 进行,
即沿轨迹取,
,> ,
:> … > rk> 0。使x(rk)

渐近、
in.确取
值很重
要・若r,太
小・则菩击 对
P(x, ,
) 几乎不发生影响,由于舍入误差, 在运算过程中可能
已经略去, 若 ;;太大, 万一 x0就在 xmi。近旁,而 x(r,) 却反而
远离 xmi。了,这就减慢了收敛速度. 是否能选取 , ;> 。,使
x0恰好是 m in P (x, ,
,)的最优解 x(ri)? 或者,,;> 0恰好是
方程组
P二
(x0 ,
)= 0
的解? 虽然,
此方程组不一定有大于 。的解 八,但是
mr 》in0 (+P二
(x0, r)Jfa
的最优解总是存在的,
设为 r*. 若 ;* * 0,则取 ;,二 1r*1
较 为合理.
修正程序(一):
(1) 任取R 内点 x0为初始点.
(2) 以 x0为出发点, 对 m inf(二)用最速下降法,得 {yck),,
使 {f。(k))} 单调下降,yck>E R 仅 二 1, … ,1), y('-` )ER .
(3) 任择 尸十 。不满足的约束条件, 例如
g1(y(1+i)) < 0,

P,(二
,,)  ̄ f(二
) + 一r
g i( x )

(4) 求出
m in lIP;二
(y(1), r)II'
的最优解 ;*. 若 ;* 苦 0,则取 心。二 !产}; 若 产 二0,则任
取适当的;11)> 0.
. 23 2 .
(,
) 以 yu)为初始点, 求
m in P (x , r(1l)).
的最优解 X(I). 若x`1)E R ,则缩小 ,1),取 ;(2)(O< ri2)< Yil)),
以x(1)为初始点,求出
m in P (x, ri2))
的最优解 x(2); 若 xa)ER ,例如82(x(1)) < :0,作
Y(2) r(1
2)
户2(x , ;:,r2 f(x) + 二吕
长一+ 二多二
g ,C x ) g 2( x )
求出
m in P2(x, rj2), r21)

的最优解二
(2)
重复上述步骤若干次,得点列 {xQ)},使 {f(x(k)) } 单调
下降,在一定条件下,{x(k)} 的极限点为xmin,且 Jim f(x(k))二
互今 。

几in(见参考文献 【 5]),
修正程序(二):
在修正程序(一)中, 改 P ,(二,,) 为
P i(x, ;) 二f(二) 一 , log g1(x),
改 P2(x,;:,1'2) 为
P2(x ,
;;,r2) 二f(x) 一 r(l2)log g,(x) 一 r2(1)log g2(x)
等等. 其它相同.
在求 ;(1)时,若已知最小值误差范围 6 > 0 不太小,即

景不
致于使景logg,(x)在
计算:in,
,(x,劲时,
会忽略

计,
则也可取;w 一二.
用上述类似的思想,也可修正联合法程序,这里不再赘
述.
例 求 m in f(x)
. 23 3 .
I 二:

g7,

一 幻

/ 。1 。3 、
饭一 一 , 一 1 一 ,L二 二 .is
、 2 斗/

图 斗。

f(x) 二xi+ x2,


g1(x) 二一x21+ x2+ 2 ) 0,
92(二) 二 一4 一xZ+ 2 ) 0.,
g3(X)  ̄ - x,一x2+ 1 ) 0
(1) 取初始点 x0二 ( 0, 0)'.
(2) 求 m in (x, + x2). f(x) 沿 fx(x) 二 (一1,一1),

向 单 调 下 降. y(I) _ (- 0.9, - 0.9)'E R , 尸+1)一(- 2,
一2)健R .
(3) g1(yU+1)) < 0. 作
PI(x,;) 二x1+ x2一,
log (一对十x2+ 2).
1. . 2 r x.
(斗) P ;二
(二,,
) 二 气I t — ,
\ 一x宝十 x2 十 2

1 一
x;-hx,+2
云r
. 23 4 .
Pix(y(l" ;)一(,
一1.8r,1一-,,r-)
、 U .2 9 U .乙乡 /

二(1 一6.21r, 1 一 3.45r)',


in }!P ix(y('), r)IIZ
m.Zo
的最优解 ;* 二 0.34.
(5) 以 y(n 为初始点, 求
m in [xi+ x:一 0.34log (一xz
xi一十xz+ 2)]

的最优解为x(0.34) 二(- 0.50,一 1.41)'.x(0.34) E R ,离开


xmin一(一生,

一1立、
’、:近.这就比没有修正的“
2 4 /
内点。

的总计算量少.
6.中心法 考虑问题
m in K x)
R : gi(x) ) 0 (1 “ 1,… ,M ),
R 有内点二
”.
若 x0非最优解, 则集合
R 。二 {x Ix 〔R ,f(x) < f(x0)}
必有内点. 于是

Q0(x)一气 一1
tc x ") 一 从x )
+ lyi= 1,一华二
g i( x )
在 R 。中的局部极小值必然在 R 。内点上达到(因在 R 。边界上
Q 0(x) - 00),故在 x0的邻域内对 酬(幻 求出的无条件局部
极小值也就是 9 0(x) 在 R 。中的局部极小值. 设此局部极小
解为:(1),则 f(x(')) < f(x0)。且 x(l)E R'o. 这样就给出了: 使
f(x) 在R 。内部单调下降的程序. [x(l) 可以看作 R 。的中心,
故称为中心法 .] 若 X(l)不是最优解,
再作集合
R ; 二{x }x 〔R ,f(x) c f(x(,
))}.
R : 显然是包含在 R 。中. 再作
. 23 5 .



协0

乏分, 书t’),
g3》 0
g4》 0
〕 (x)一f(:0)
图 斗。

Q1(x)二下一 上下丫 + 又一1,


八 X ,, 一 八 x 少 不石 岛 又x 夕

则 m in Q '(x) 在 R ,内点上达到. 等等.
我们事先给定一最小值误差范围 。> 0.
迭代程序:
(1) 求出R 的内点 x0.
(2) 作
,qc -A 1
夕0(x)  ̄ 十 七匀 钾下 下厂。
f(x0) 一 f(x) i= i g il x )

以x0为初始点,
求m in Q 0(x) 的最优解 xa). 若

兮 Cf(xW)_ f(x0)]2、。

Lj=1
id 9,
gi
Cx(1))
则 x+ 为近似解;否则作

Q1(x)一二二华甲二一
t( x `, 一 A X )
+ 不二
I ,月斗.
g jC x )

以 x(I)为初始点,求 m in Q '(x) 的最优解 x(2).


(3) 一般地,若 x(k-。已知,且
. 2 36 .
艺 [f(x(k-1)) 一f(x终-a少卫
间 gi(x(k-1))
> #,

_二
_ ., 、 1 : 、, 1
v 气失戈)  ̄ 二厂 b-,.V 万,刃 个 匕 ,丁7 戈 ̄
八 x ,飞 .') 一 Tl x l j= 1 K 八 X .)

以 x(k-1,为初始点,
求出 m in 口k-1(X) 的最优解 :‘
“,. 若

艺 [f(x(k))gi(x(k))
- f(x(k-1))12 。

则x(k)为近似解, 否则再重复上述步骤. 另外, 若
R k-,二{xlx 〔R , f(x) :二f(x(“
一,,
)}
有内点,但
R 、一{x卜〔R ,f(x)《f(x(k))}
没有内点,
则x(k)为原问题的最优解.若R k (k 二0, 1,2,…)
总有内点,
则 {x(k)} 的极限点为最优解.
事实上,
可以证明(见参考文献 [,]),
当f(x),一g1(x),…,
- gJ x) 为凸函数时, 若R 。非空, 则
(1) 当R k-,有内点,而 R * 没有内点时,x(k,二xmin.
(2) 当 R k(k 二0, 1, 2, … ) 都有内点时,{x(k)} 的极
限点为:、n.
(3) {f(x(k))}单调下降・老
沈f(x(k))一fm,

/」
(4)、・,‘
f(xc・
k)、
\、
)> ,n)、, /__。

k、
)、
)一 令 [f(x(
一k))一f (}w二(k-i))12
,- fm,
,-11 - f(xc
,、一‘ 乞
洲 L‘、 /gi, 牛
(x(k))
值得提出的是,当中心法的 Q k(x) 改成
Qk(x) 一一log(f(x(k)) 一f(x),)一E log gi(x)
时,也有类似的结果.
例 求 m in K x),
f(x) 二 x,x=,
. 23 7 .
R :g}(x)  ̄ XI ) 0,
g2(x) = x2) 0.
(1) 取二
。一不
生,:、为R 内点 f(x0)一1.
\ 2 /

(2) Q 0(x) 二 一log (1 一 x,x2) 一 log x,一 logx2,


m in Q 0(x) 的最优解 x(。二 畏
又)
,/12,

V 2 /

(3) Q'(x)一 log(l 一:1x2)一logx,一 log x2,


\ Z

minQ'(x)的最
优解x(2)一俘})’.
(‘
,minQk(x,的
最优解・
‘“)一(责・ 责)’.
lim x (k) 二 0 二 Xm in.
走净 。

7.求内点方法 设R 二{x Ig,(x) > 0 (j二1, "" ,m )}


有内点.
先任取一个 x0,作指标集合
E 。二 {iIg,(x0) < 0, 1 < i 。},
F 0 ̄ {i】g,(x0) > 0, 1 ( j< m },
当然 E 。与 F 。一起是 {1, … ,m },
若 E 。是空集,则 x0为内点;若 E 。非空,且 F 。非空时,作
So(二
,,。
) ̄ 一艺 g:(x)+ ro艺 ro >
iE E o jE F o gj(二)
若 E 。非空,F 。为空集,

So(x,ro) ̄ 一艺 gi(x).
了‘石。

以 xo为初始点,

m in So(x, ro)

的最优解 xu>. 当 jE F 。时,必然有 gi(x(1)) > 0 (事实上,若


. 23 8 .
g式x(l)) < 0,说明在由xo开始迭代的过程中,必有点经过边
界面gi(x) 二0,将使So(x, ro) 二+ 00; 若gi(x" ) 二0,则
So(x(l), ro) 二 + 00).
对二
(1),与xo同样记
E ,  ̄ {i】 gi(x(l)) < 0, 1 < i< m },
F ;二{I Igi(x`,)) > 0, l < j< m },
显见 F :包含 F o (F 1Q Fo). 取 , ,(0 < ;:< ro),作

S,(x,动一X
iEE1gi(x,
十。jY,
EF,、
台 (当州卜
空,

S,(x,r,) ̄ 一艺 gi(x) (当F,
为空集).
以 x(l)为初始点,求
m in S,(x , r,)
的最优解 X(2).
当R 有内点时,
这样的步骤必为有限步,
即FoC F,C ...(=
F N 二{1, … ,m ),而xUN,为R 的内点.
若R 没有内点,则这样的步骤进行 到第 1 步后,F oc
F , C … C F i“F ,十
; 二F ,+z  ̄ … ,而 F ;只是 {1,…,m }
中的一部分. 因此,若事先不知道 R 是否有内点,这样的迭代
程序可以作为检验的方法.

'5. 条件极值问题(二)

1.引言 我们考虑约束区域
R 二 {x Igi(x) ) 0, (i 二 1, … ,。)},
其中一gi(二
) (j ̄ 1, … ,。)为凸函数. 任取二
。〔R ,方向
二称为在 xo的允许方向,
若存在正数 to,
当 。( 兄簇 21。
时,直
线段 xo + 2z E R ,即
gi(xo十 .l,z) ) 0 (j = 1,… ,。)
. 23 9 ,
对一切满足 。《 A 《 A.。的I 成立 (见图 5.1).
当R 有内点尹,且 gi(x)都是连续函数时,则任何方向
二都是 x* 的允许方向.但在R 的边界点 x0,只有与法 方向
gi二二g.x(xa) 的夹角成锐 角的方向二(即g:二 (x0)'z > 0)才可能
是允许方向,而与 go二正交的切方向 z0 (即 g1x(x0)'z = 0)
就不是允许方向了.
当R 由线性函数 gi(二)= A i二一bi> 0 组成时,法方向
gix(x)  ̄ A i,gx(x) “A . 易见,
当x0是边界点时,例如
盆之
1 g,》 0

、_ “ 乡 _厂

7 一R 4s x'7 ,二

. ,

x goy

图 5.1

g1(x0) “gz(x0) _ … 二g,(x0) 二 0,


gr+j(x0 > 0 (1 < j < m 一 r),
则对任何满足 A iz ) 0 (j  ̄ 1, … ,;) 的方向 z,有
gi(xo 十,z) ‘A ix0十AA iz 一 bi〕0
(A. > 0), (1 ( 1 , )
即与 街 正交或夹角为锐角的方向,都是在 x0 的允许方向
(见图5.2).
当 一gi(x) (1 二 1, … ,m ) 为可微凸函数时, 可以证明,
任何边界 点 x0, gi(x0) = 0 (1 = 1, ..., r), gr+i(x0) > 0
(E ̄ 1, … ,m 一 , ),对满足 g, 二(x0),
z > 0 (j 二 1, … ,r)
的方向x 必为在 x0 的允许方向,即与法方 向 gix(x0) (1=
. 2 40 .
乒”



7`\5
奋护


..州.‘‘一一-一..,盆‘

图 ,.2

1, … ,, ) 的夹角成锐角的方向x 必为允许方向.
在求无条件极值问题的解法中, 不管是哪种方法, 例如最
速下降法,对可微目标函数 f(x),当 x(1) 是R 的边界点时,
- f.k " )) 方向不一定是允许方向 (图 5.3),我们希望在 x(')
的所有允许方向z 中,找出一个 zu),使 K 习 沿 z(1)减少最
快.
由于当 几> 0 充分小时,


〕 I -f(=(")



R 0r(s)¥tu `f:(二

:,

挤沪 。

图 5.3

. 24 1 .
f(xa)+ 2z)= f(x")) + }fx(x(1))'z.
因此,如何在 x(1)的所有允许方向z 中确定一 方向 z(1)。使
f(x) 在 x(1>沿方向Z(I)下降最快的问题,可以看成在x(1〕 的所
有允许方向 z 中确定一方向z(1),使 fx(二‘ 1))fz 取最小值(或使
- fx(x(1)),z 取最大值). 设。为一fx(x(1)) 与z 的夹角,

一fx(x(1)),z 二 }I一fx(x(1))II・Ilzllcos 6

(。

镇。成兰、
, 2 /

在图,.3 中,Ilzllcos 0可看成z 在 一fx(x(1)) 上的投影长度,当


二取边界方向 z(1)时,cos 0取值最大, 也就是 f(x) 在:‘,
)沿边
界方向 z(1)下降最快.
图 5.3 提供了求
m in f(x)
R : g1(x) 二A ix 一 b;) 0 (j  ̄ 1, … ,m )
的迭代程序.
任取 x0E R . 若 fx(x0) ‘ 0,则 x0为最优解或局部最优
解 ; 若 fx(x0) 铸 0,而 x0为内点,则求
m in f(x。
孟> o
一Ifx(x0))
的最优解 几
。> 0. 令
x(I) = xo一 XofX xo),
xa)为边界点. 若 fx(x(1)) 二 0,则 x(1)为最优解或局部最优
解 ;若 fx(x(1)) }c 0,则求
m in f,,(x(1) )iz
A,
二) 0,12,
1成 1 (j 二 1, … ,,)
的最优解 z(i). 再求

n f(x") + .,z(i))
zao
mi
的最优解 又
:> 0. 令
敬242 .
x(z)二 x (1) + ;Liz(i)
若 x0为边界点,则与求 X(Z)的过程一样,求 出 x(1)_
若x(2)满足 fx(x(,))  ̄ 0,迭代停止;否则与求 x(z)一样地
求 出 x(3)" x(3)在边界面 g.(x) 二 0 与 gz(x) 二 0 的交集上 .
- fx(x(3))与gz(x) 二 0 正交,而与g3(x) 二 0 的夹角是钝角,
因此
m mn fx(x(3))'z
A ;z ) 0 (Z 二2, 3); IziI < 1 (1  ̄ 1,… ,。)
的最优解 z(3,使 fx(x(3)),z(3) ) 0,即沿方向z(3)函数值f(x)
无法再下降. 当f(x) 为凸函数时,可以证明 x(3)即为原问题
的最优解.
若 f(x) 非凸函数时,上述程序可能只求得局部最优解.
例如取初始点 y0E R , 沿允许方向一fx(尹)求得边界点必”,
然后 一jx
f (Y(1)) 在 ga(x) 二0 上的投影方向为u(i),沿u(i)得
边界点 必z). Y(2)只是局部极小解.
由上述图 5.3 的迭代程序可以推想出“允许方向法”的三
大步骤.
(1) 给出R 后,
对边界点要确定允许方向集合. 例如,当
g(x) = A x 一 b 时,若
A ix0二bi (1 = 1,… ,r),
r),之
'4rfi
+,xx0 > br+i
(i 二 1, … 。。一 r),
则集合
{z IA iz ) 0 (j  ̄ 1,・…,,
)}
就是允许方向全体. 又如当一g(x) 为可微凸函数时,
gi(xo) 二 0 (j 二 1, … ,,
),gr+i(x'0 > 0
(i = 1,… ,m 一 r),
则集合
{z {gi
9,
x(x。
x(xol\}z > 0 (1  ̄ 1,一 ,r)}
. 243 .
为部分允许方向.
(2) 确定边界点 x0后,要在允许方向中确定一方向 z0
使 fx(xo),z0< 0,即使f(x0 + lz) 沿方向z 二z0会下降. 如
能在全部允许方向中找出 z0,使 fx(x0)''z 取最小值,即使
f(xo十加) 沿方向:  ̄ z0下降最快.
(3) 方向za确定后,沿 z0,找一步长 1o > 0,使 f(x0+
2oz0) < f(x0),或者使 f(x0 + ),z0) 取最小值.
下面我们就 g(x) 是线性的或非线性的情况给出三种具
体迭代程序.
2.线性化方法(一) 考虑线性约束问题
m in f(x)
R : g(x) 二A x 一b ? 0,
其中f(x) 为具有二阶连续偏导数的凸函数,R 有界.
当R 由线性 g(x) 组成时, 任意二点x0 尹〔R ,方向 尹一
x0必为在 x0处的允许方向. 事实上 ,
g(xo+ ,X(yo一x0) ) ‘ ;Lg(y0) + (1 一 ))g(x0) ? ' 0
(0 镇 I ( 1).
迭代程序:
(1) 任取初始点 x0〔R ,求
m in fx(x0)‘

A x 一 b 之 0

的最优解 yo. 若fx\xo),yo 二 fr(xo),x0,则 yo 即为问题最优


解。
(2) 若fX x0),(yo一 x0) < 0,求出
so  ̄ (yo 一x0)'fxx(xo+ ;L(yo一x0))(y0一x0)
n la X
0 蕊 A 4 1

fX x0A x。一 yo) .. 任



,in , m in 1 」.

. 2 44 .
x(。二x0+ ;Lo(Yo一 x0).
(3) 一 般 地 ,设 x(k), y(k〕已 知. 若 九(x(k))'Y(k,二
fx(x(k))'x(k),则 x(k)为原问题的最优解.
(4) 若fx(x(k))'(Y(k)一 x(k)) < 0,则求出

0 s
(Y(k,一x(k))'/二
a x
x < 1
二(X(k)+ X(Y(k)一x(k)))(Y(k)

f. 4J 了(} .(k)丫
一x(k)), (k )l
(',-(k ) _ 1I
, ‘ - / 、 八 1 , ,

‘*= m in飞
— u 左
,1f・

x(k+1,二x(k)+ lk(Y(k,一,

‘灸,
).
我们可以证明 (见参考文献 〔
61)
(1) {f(x(k))} 单调下降.
(2) J无今
im 。 f(x(k)) 二fmin, {X(k)} 的极限点是最优解.
(3) 当 fx(X(k))'(Y(k,一x(k)) = 0 时,x(k,为最优解.
(4) f(x(k)) ) /min ) f(x(k)) + fx(a"(k))'(Y(k,一x(k))
J火,.
im fx(x(k))'(y(k)一 x(k)) 二0
由此,我们可以修改上述程序,以求满足要求的近似解:
若已知最小值的允许误差范围 。
> 0. 当fxx(x(k)),(二‘
k)- y(k))
< “时,二
(k)就是近似解.
3.线性化方法(二) 考虑问题
m in f(x)
R : gi(x) ) 0 (j二1, … ,m ),
其中f(X) 与 一gi(x) (1 ̄ 1, … ,。) 为有二阶连续偏导数
的凸函数;R 为有界集合,
且有内点.
当gi(x) (j 0 1, … ,m ) 中有非线性函数时,2.中方法
失效.
对R 的边界点 x(k),记集合
E * 二 {ilgi(x(k)) 二0, 1 ( i 、},
F * 二 {i]g,(x(k)) > 0, 1 ( i《 。}.
在引言中已说明过, 边界点x(k)若非最优解, 如能找到允许方
向z(k〕
满足:
gix(x(k))'z(k)> 0 (j‘E k),
fx(x(k))'z(k)< 0,
则f(x(k)+ ;,z (k)) 沿z(k)函数值将下降.
迭代程序:
(1) 估计一常数 ‘,使集合
S 二 {x l ixil< c(i二 1, … ,n)}
包含 R ,
(2) 估计一常数 L ,使
l(z 一y),fxx(x)(z 一y)】< L
对一切x , y , : 〔S 成立.
(3) 任取初始点x0E R . 若fx(x') 0 0,则x0为最优解;
若人(x0) 。
,二。
为内点,
则求射线二
。一;;燕华: 与R 边
一’
一‘ 一 ’
一’‘.’
界的交点,即求 出
一’--一 11fx(x0)ll - 一

9,
(一‘
lfx(x0)l)一“(‘
<j<m)
的最大根 li> 0,令
2; 二 m in 死,
, 1 哎 奋妊 那

I 。二 m in 丁,
, llfx(x0)ll飞
1“
。厂一了一f

x (1) 二 x 0 一

若 ¥i(x0) 二0 (j〔E 0), g,(x0) > 0 (iE F o), f.(xo) 铸 0,则


. 2 呼G .
求线性规划
m in 4
fx(x叮。 一x0) < `,
g,
二(xo)‘
(y 一 x0) 一} (i〔E 0)
}YiI ‘ _ (i二1,… ,,)
的最优解(护,尹). 若护= 0,则 x0即为最优解;若梦< 叭
则尹一x0为在x0的允许方向,

gi(x0+ 2(y。一x0)) 二0 (1 <1 j < 。)
的最大正根 2i. 令
二二 n lIn
I( i( m

一fx(x0)‘

(Y0一 x0)

。= min{;;,
x(1)二 x0 + 10(Y0一 x0).
(4) 一般地,
若 x(k)已知. 只要在 (3) 中把x0改成 x(k)
y。改成y(k), E0, F。改成 Ek, F k, x(1)改成 二(k+I)就行,不再
赘述.
我们可以证明 (参见参考文献 【 月)
(1) {f(x(k))} 单调下降.
(2) kli咔。
m f(x(k)) 二/min;
{x(k)} 的极限点为最优解.
(3) 若 x(k)为边界点,梦k)二 。,则 x(k)为最优解.
(4) Jim g(k,二 0, lim fx(x(k))'(yuz)一 二‘
k)) 一 0.

4.梯度投影法 考虑问题
m in f(x)
R : g(x) = A x 一 b > 0,
其中f(x) 是有一阶连续偏导数的凸函数;R 有界.
,2 47 ‘
在线性化方法中, 每次迭代要求一个线性规划的最优解,
计算量太大. 因为mm inn f了
:(xo ),z 可以看成 fX x0) 在边界面上
x(x0)
的投影,我们是否能根据 x0以及 x0所在的边界面的法方 向
A i来定出一个投影矩阵 P,使 一Pfx(x0) 平行于 一fx(x0)在
边界面上的投影方向?
设边界点x0E R ,
A ix。二bi (1二1, … ,。),
理。
Ag+;
、,
x0> bg+;(I二1, … ,。一,
).
记 4 行 ,列矩阵
尹 A 、
声 l 、
乎 、

N . … ,


- .



. 了

、 A /
、 q 口

假设N q中所有q 行4 列矩阵都是可逆的,


可以证明NgN q 是
可逆矩阵.
作 ,行 n 列矩阵
P,二I 一N q(N gN q犷‘9,
其中
, n

了 0 } 、
了 、

1 C 、
U ,


立 一
- es
… n
曰 .
、 1
、 1
, n , 萨
曰 .几

由于从凡= 0,故对任意Y,
从(x0+ ),PqY) 二N qx。二(b … ,bq)i,
即射线x0 + I凡Y 在 q 个平面
A ix 二bi (1 二 1, … ,9)
的交集上,
也就是P,将任意方向,投影到边界面
A ix 二 bi (1 二 1, … ,,)
. 2 48 .
的交集上. 因此我们称Pq 为投影矩阵.
迭代程序:
(1) 任取初始点 x0E R . 若fx(x(1) 二 0,则x0为最优解;
若fx(x0) -F 0, x0为内点,
则取

。 ̄ _ J x 之_
Ilfx(x0) I’
求出射线x0+ %z0与R 边界的交点x0十20z0:
A ,x0一b;
】刀 i n

A dz0< 0 一,
贫jzo
(16 尹( 阴 )

令夕
。= x0+ 又 。二。

(2) 若 fx(x0) * 0, x0为R 之一边界点,
从x0一(bl,…,bq)',
A。
Ag+i
+,x0> bq+i (1= 1,… ,m 一,).
求出
Pq ̄ I 一N (N N ,)_'N q.
1) 若 Pgfx(x0) : 0,则取

z0一一 Pgfx(x0)
IIPgfx(x0)Il‘
求出

I。二 m in A 7x0一 b;
Aiz0< 0 A ;z0
(1《少< m )

令y0= x0+ X0z0.若fx(y0),z0< 0,则令x(i)= y0;若f.。o)pzo>


0,解一个变量方程
fx(xo+ 2,zo)'z0= 0 (0 < 凡< 1o),
设根为Zo,则令x(1)二xo+ xoz0.
2) 若Pgfx(xo) 二 0,且
(N gN q)一,
N gfx(xo) ;i'- 0,
. 24 9 .
则x。
即为问题的最优解. 若Pgfx(x0) 一0,但在(NgN q犷'N q
fx(x0) 中有分量小于 0,设最小分量为第 1。个,则在N 。中除
去A j0,记
矛 A , 、


。 、
口 。 、


。 1
. .
, A .
昌 月 .
N -l 一 . .
- .
. l ,

. A es
. +t l
. l
. 。
恤 l
、 . 了
、 。 1

Aq
求出
P。
一,二I 一N q一
,(N。
一,N 'q-,)-'N ;一

(若q = 1,记 PO二 1). 取

、 一 Pg,fX x0)
IIP。
一;fx(x0) II
求出
A ix0一 bi
Aiz0< 0 一A iz0
(I< i< m )

令 y0 = x0+ .ozo. 若 fx。0)'z0 < 0,则令 xa)= yo; 若


fx(y0)rZ0> 0,解方程
fx(x0+ tz0)rz。二0 (0< 几< 1o),
设根为1o,则令二 (1)= x0十Xozo.
(3) 视 X(I)为x0,重复 (1), (2) 的各步骤‘不再重复叙
述.
在某些假设条件下可以证明:
(1) {f(x(k))} 单调下降.
(2) J及咔泊
im f(x(k)) 二fmin.
(3) {x(k)} 的极限点为最优解.
产 25 习 .
例 m in f(x)
f(x) 二一(x,一 3)2(x:一 4)
R : g,(x) = 2 一 x2妻 0,
¥a(x) 二 3 一 (XI+ x3) ) 0,
g3(x) 二 2 一 X1) 0
A ,二(0,一1), A 3= (一1,一1), A 3二 (一1 ,0),

(1) 取 x0 = (0.2, 1.8)‘为内点.


()


(・
卜一(’
(‘
2(-:
x,4-)(3x;,)》
2-”
)・
一芍l1fx(x0o)Il一(0.844,0.54)'・
in = m in A 1x0一 b;
dis0<O 一A ;z0
(i= 1J ,3)

二 m in {0.371,0.723, 2.24}
= 0.37 1。

yo= x0+ ).ozo= (0.512, 2.0)'.


(2) fx(y0) 二 (一9.95,一6.18)',
fX y0)'z0< 0, x(。二yo = (0.512, 2.0)',
(3) gl(x(i)) = 0, gZ(x" ) > 0, g3'二
x()) > 0,
N ,二 A

:;一(‘ 0卜 、
;(,
;,;)一
,:一(‘




\ 0 1 / \ 0

fx(x(,)) 二 一(9.95,6.18)',
二一 Pilx(x(0)
2 (Q
IIP1tx(x0l')II 二 (1,0)"
。2 51 .
I;二 m in (0.488, 1.488} 二 0.488,
y(l)二二
(1)+ Zlz(1)二(0.512,2.00)'
+ 0.488(1,0)'= (1,2 )'.
fx(Y(l)) 二 一(0,895,一0.446)',
fx(Y(}))'z(1) 二 一0.895 < 0,
声2
x (') X (2)



工 一

名(2)



二《
,)

二 20 15 8 5 3

图 5 .4

故取 x(2)二,
“)二(1, 2)'.
(4) gl(x(2)) 二 0, g2(x<2)) ‘ 0, g,(x(2)) > 0.

Pz一(; :)一
(AiAz)[(A2`)(AiAi)]一

(A)
一(; :)一
(_: 巾(_: 一

;) 、
了 、
X 扭 0 一 1 德 -一 0
、 声
、 7
、一 1 一 1

. / A 八

(、
;、
;)}一

(A),

(一,
. 了



、 ,
且 A
L \ 丫

. 25 2 .

一 1
丫一 。 .895、一(、一‘).446、 ,



、 -
/ \一 0 .4 4 6 / 0 .86 5 /

第一个分量小于 。
,故在P2中除去 A 1,
/ 1 0 \

P,一}0 1)一“
二(A214'2) 1A2
一(‘0、
一1 \ 0 1 / 2 \ 一生( ‘一,
、, 2 \一 1 1/

Plfz(x(2')  ̄ (一0.223, 0.223)'


z(2)二_ P,丛 x(2立 二(0.707,一0.707)'
IIP1fx(x(2))}}
又: “ 1.4 1,
y(2,二x(2)+ -ZZZ(2,二(2, 1)',
/ 0 7 n 7 、
fx 幻 )’ 2) 1 U 、


‘V
、护
Z l1 /

、 一ZO - 、








、 一0 州n
j U /

故取 x(”二y(2'.
9‘
(x‘
3)) > 0, g2(x(3)) 二0, g3(:x(3)) 二 0,


:一({ :)一
(,
;、
;)1(.A3)(AZA;)]-}
/A 2\
X 1 1 ̄ 0,
\A 3/

{(A) (AiA3,
}一

(AZ
A3)fx(x(3) (:)>。

故 x(3) ̄ (2, 1)'为最优解.
在迭代程序中, 当”和4 较大时,计算P;是很困难的, 因
为要计算 (N q瞬 )-,。 是否能给出(N gNTi)-‘与(N q_,N g_,)一,
的迭代公式, 只要知道两者之一, 就可很快算出另一个来? 如
能做到这点,
就可给出P,与Pg-;之间的迭代公式.
利用矩阵求逆公式,可以得 出
么2 5 3 .
其中
(NqNq)-'-(B,' B42/
B ,二 (N q_1N q一
:)一,+ IIPq_,A q II一,
(N q_,N q一
:)-I
X (N ;一 ,A q')(A gN q'一 ;)(N q-,Nq一 ;)一‘

B2,一1II!Pq_,
氏一 ,A q}
r }一,(N .,-,N q一;)一‘(N ,-,Aq),
B4一!】
P,-,Aq!}一‘ .
由此,若已知(N g-,瞬一 :)一,,则可算出(N q叽 犷‘ . 反之,
若已

/B , B八
(NgNq)一
‘一}B? B4)'
则可得出
(从一
:N q_, -I = B ,一 B a'B 2B2' .
我们还可进而证明

P“
一P一(Pg-1f,I4Pq'-)1(,4P9g-1i2Ag)'
Po “ I.
5.二次凸规划的单纯形法解法 考虑问题

min(12x'Cx+P'x)一‘

‘(・

R : A x “ b, x 璧 0,
其中C 是 。行 n 列对称 半正定矩阵 (即对任意 向量 z 有
z'C z ) 0), A 是”行 ”列矩阵 (。
,< n) 它的任意”行m 3il
子矩阵为可逆.
任取 x0E R ,不妨设为
(x=1 。一。
S 二(x兮
,… ,瑞,
\X I1/

于是 R 相应地可写成
. 25 4 。
,4 x1+ A IIxII, b, A 二(A IA H).
xI里0, xII鑫0.
因此
川 二 A 护b.
如果 记
Q = (D ',一II”一,))
(I)万
D 一Ai-IAII,
(WI二 A i`b, 。;,二 一Q (C x0+ P),
可以证明 (见参考文献 【9]) ,方程组

八 ./xI\
j!

I (m ) D

厂}.
气二










一Q C Q ' 一D '
:(一)(::‘
)一
(W(OiIl)
WW II,



;x:二0, tIIxII - 0,
XI里。,xli里。,VI婆0, VII里:0


解(‘
,v,
一!(:l),
x1I `vI刃中
一分量牙
即”原
规划问
题的最
优解. (I(m)为。行。列单位矩阵. )
迭代程序:
(1) 先找 x0E R ,不妨设为
1对\
`x II'

(2) 根据公式 (I),算出 D , Q , 。:,。:;.


若 。II鑫。,则
 ̄ 功r , xII ̄ (,
x0 ,
“ 0, v 0ii 二 “oil


足公A (II),
即x0一(节
)为最优解
(3) 若在 。II= (。。+,
,一 ,。。
),中有分量 。,< 0,列
,2 5 5 ,
出单纯形表

x I x l' 岁I v 1I

x l .. .x .,, x m + 1' “" x n 夕I 岁份 岁功+ I“一 沙,

1 (”) D 0 0

0 一Q C Q ' 一D 护 1(”一 )

在上表最后一列添上新变量广.
设在40,,中小于 0的分量为价,
,… ,W is.
.儿
在最后列的第 11, … , 行添上 一1,其他行则添上 0.
(实际上是构造了关于变量 x, “,广的新方程组. )

义I x 1I 夕I 扩II
基 常 夕*
x l‘二 X . xm+ x V ,- . .v 邢 刀价+ 夕.

xl 功
1(. ) D 0 0

约 勿
0 一Q C Q ' 一 D 尹 11”一加) 0


一 1 ・ ・
ii

一 1 。二 is

(斗) 求出
m in (Wi,, 。,

) ‘COir,
马s‘
<u
在上表中,将第 1,行每个数乘以 一1. 用消去法将最后一列
中第 11, … ,1,
一;,i,+1, … ,i,行消为 0, (即在 “基”中逐出
vir,换成,
*),得下表
. 25 6 .
X I...X'/r...I lm

lr 仍里
… …

与 臼幼

vm + I r 用+ 1 切. + I
. ..
。 .



扮一 .

v书矛
厂1 。ir-I
V * r*
护 y*o 一。* . ̄ 一 _ ・
。一 1,行

vi,+ “
vir
*+l 勿J,
i,I


LA

可以证明。* 铸。.
(5) 分二种情况.
I) 若 。* > 0、算出

口  ̄ m ln. fxo,". 。
、一 —产 广o1r _
。 —
, 、六 、八 呀 尹 二 ‘ __年 协・
. 1/ v,野2 . 'W i w i W ,


“一景・
则在上
表“基
,中逐出y’
・换入,
Jr(即
在对应
变量vi,的一列中,
用消去法将。* 位置变成1,其它位置变成

0),这
时位于
“常”
列的xoI变
成xI,牙
一(x0)即
I 为最优
解.
若。一尽,
则在“
基,中将。
,逐出,
切走
换入。

,(即在对应

,,的一列中,
用消去法将 Co,位置变成 I,其它位置变成0).
若。一生,
则在“
基。中逐出二
*,换人,
1r(即在对应,

切走
的一列中,
用消去法将。*位置变成1,其它位置变成0).
. 25 7 .
2) 若 。* < 0. 算出
fx0," v* v*01
m in 、— . — 。 - - l
ri>o,?i>o (ri一乙‘ 卢 J
(可证 丫* > 0).

若6一兴,
则在“
基。
中逐出,
・,
换人xir,
这时“
常。

中 x一分量即为最优解的非负分量 ;

若“
一策・
贝“
在“
基”
中逐出,*・
换人xir;
若一

一馥・
贝”
在“
基”
中逐出xk・
换入xir,
由1) 或2) 得一对变量(二
*,公
户与。** (即最后的表中
相应于“ 基”的Y* 行与,*列的交叉位置,也即与旧表中。* 是

基”的Y*行与vi,列的交叉位置意义一样).
(6) 以vk与。**代替原来的vi,与。*,按 (5) 同样运
算下去,
这样的步骤只可能有限次,即有限次迭代后,必可将 广


“基。
中逐出,
得、,
使x一(x0)为
i 最优解・
例 求
/1 。. 1 , _ 、
m in 气一 x 玉十 一 x 与一 x 3 一 ‘x 4 !
\ 2 2 /

X1 + 2x 3 + 3x4 “ 6 ,
十 x3 十 4x 4 “ 5 ,
xi) 0 (i ‘ 1,2,3, 4).
(1) 取 x0二(6, 5, 0, 0)',
x0i 一 (6, 5)'.

), All一(


声,

. 258 。
A 二 (A 1A 11),





C 一
- .






0 0 0 1

P ‘ (0, 0,一1,一2)', b = (6, 5)'.



,。、 /2 .

lZ) D “ A i'A r1 = ( ,

\ 1 4

一 1
。一(“ \ 3 4 0 一 1 )
。,= A I'b = (6, 5)',
。,
,二 一Q (C x0 + P) (一1,一2 )',

Q'C。一( )
(3) 列表按步骤 (3)一(5) 运算:

基 _常 X 1 x2 x3 x 4 V3 夕*

X 口

丫 2

粉.
J 一 1 一 1 一 2 一 1 一 1

粉4
一 2 一 1 一 3 ④1,行

基 常 X I 夕*

X .

X 弓

夕3
一 1 ① 一 1



} 一 1*

. 259 .
. * 二 一 1 < 0,
。 . 了6 5 1 2\ , v.4
a  ̄ m in t — , — , — , — ! = I  ̄ 一 ,
\3 4 1 1 / w3

逐 出 。。
,换人 x4.

基 常 X, x , x 3 x 4 V, V2 v3 夕*

常 .
5 一3 一9 一3
牛 2


⑥ 一 4 一 12 一4

X4 n

-l 一 1

V*
0 0
1 一1* 0

。* = 一1 < 0 (为方便起见,
仍用符号。*)
n . (3 1 1\ I x2
d = m in i一 , 一 , 一 1 = 一 今 一 ,
\5 5 1/ 5 r2

逐出X2.9 换入 x3.

基 常 X , 劣2 苦3 戈4 v, V2 夕*

x 止
2 刁 月 n

1 1 4-
x3
-5 一
5 生 _ 12 _ 生 5 n

5 了 5
6 1 1 1
常‘

5 一

0 ,
二 一
5 一 一

1 1 4
夕*
4 1 。 一 一

0 n
U 一
5 一 -,
了 !

Co一誓>0,

一‘・
(普・ 147/55)一147- Y*
36/5.', 。* ,
逐出广,换人 va.
. 2 60 .
基 常
广
-。
x3 岁'


才 山


17 一一
14
17 25 -片

17

X ,



17 』


-17
02

片 -打
81

17 n



17 ,


-17




-打 。 一奥 。 八

41
-17



1/

31 托

, )’
・最小值‘
min- -仲 -功
6 9

是得最
优解x一2172 “
3 斗’

注意,
在上例中,
若取:。
一(。
,0,粤,生丫,则迭代步 \ 5 5 /

骤可减少.

参 考 文 献
f , 1

L . C . W . D ixon , N onlin ear O p tim isation , T he E n g lish U n iv ersi-

月 J

r 2
ties P ress L im ited , 19 72.


W . I. Z ang w ill, N on lin ea r P rog ram m in g- 一 U n ified A p p roach ,


F no
C h ap ter 5 , P ren tice-H all, E n glew o od C liffo . N ew J ersey , 1969.
1.

E . P olak at G . R ib iere, N ote S u r L a C o nv erg en ce D e M eth od s
we
L J

D e D irection s C on ju gu ees, R evu e F ra nca ise d 'In form atiqu e et


de R ech erch e O p erationn,elle, 3e N o. 1 6, 19 69.
[ 4 ] M . J . D . P ow ell, O n th e C on verg ence of the U ariab le M etric
A lg orithm , J . In st. M a ths. A p p lies. vol. 7 , N o. 1 , 1971.
[‘5 」 A . V .F iacco, G . P .M cC orm ick, N onlinear P rogram m ing : Sequen-
tial U ncon strain ed M in in iza tion T ech niqu es, W iley , N ew Y ork,
19 68 .
〔6 ] 线性规划的理论及应用,附录,高等教育 出版 社, :[959 .
[7 ] 运筹学论文集 (I) , p . 42 ,科学 出版社 ,1964.
[8] J . B . R osen , T h e G ra dien t P rojection M eth od for N on lin ear
P rogram m ing , P a rt I , L in ear C on strain ts, J . S oc. Ind . A pp l.
M atl. V III, N o. 1, 1960 , p . 181- 217 .
[9 ] C . M . Sh etty , A S im p lified P roced ure for Q uad ra tic P rog ram -
m ing , O p er. R es. v ol. 11, N o . 2, 1963 .

. 261 .

You might also like