第01讲 组合优化及算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本课程的主要目的讲授这些问题的数学描述和相应 算法.
背包问题
给定 个容积分别为ai,价值分别为 的物 给定n个容积分别为 ,价值分别为ci的物 个容积分别为 设有一个容积为b的背包 品.设有一个容积为 的背包,如何以最大 设有一个容积为 的背包, 的价值装包? 的价值装包?
平行机排序问题
M个完全相同的机器,n个相互独立的工件, 个完全相同的机器, 个相互独立的工件 个相互独立的工件, 个完全相同的机器 加工时间互不相同, 加工时间互不相同,每个工件只需在任一 台机器上不中断建工一次, 台机器上不中断建工一次,如果安排加工 方案,才能使预定的加工时间最短? 方案,才能使预定的加工时间最短?
组合优化问题 – 定义 定义:组合优化问题 π 是一个极小化问题,或 者是一个极大化问题,它由下述三部分组成: (1)实例集合; (2)对每一个实例I,有一个有穷的可行解集合 S(I). (3)目标函数 f ,对每一个实例I和每一个可行解 δ ∈ S (I ) ,赋以一个有理数 f ( I , δ ) .如果 π 是极小化 (极大化)问题,则实例I 的最优解为这样一个 可行解 δ ∈ S ( I ) ,它使得对于所有δ ∈ S (I ) ,它都有
组合优化 – 定义
所 谓 组 合 ( 最 ) 优 化 (Combinatorial Optimization) 又 称 离 散 优 化 Optimization) (Discrete Optimization),它是通过数学方法去寻找离散事件的最 优编排,分组,次序或筛选等. 这类问题可用数学模型描述为: 优编排,分组,次序或筛选等. 这类问题可用数学模型描述为:
*
f ( I , δ * ) ≤ f ( I , δ )( f ( I , δ * ) ≥ f ( I , δ ))
算法 – 定义
定义:算法是指一步步求解问题的通用程序,它是 定义:算法是指一步步求解问题的通用程序, 解决问题的程序步骤的一个清晰描述. 解决问题的程序步骤的一个清晰描述 定型算法,即算法从前一步到后一步的运行是由当 定型算法, 时状态唯一确定的. 时状态唯一确定的 如果存在一个算法,他它对问题任意一个给定实例, 如果存在一个算法,他它对问题任意一个给定实例, 在有限步之后,一定能得到该实例的答案, 在有限步之后,一定能得到该实例的答案,那么我 们称算法能解决该问题. 们称算法能解决该问题
计算复杂性的概念
多项式时间算法
对于组合优化问题,我们关心的一般不是最优 对于组合优化问题, 解的存在性 唯一性,而是如何找到有效的算 存在性和 解的存在性和唯一性,而是如何找到有效的算 求得一个最优解. 那么如何衡量算法的优劣, 法求得一个最优解. 那么如何衡量算法的优劣, 有效与无效呢? 有效与无效呢? 完全枚举法可以求得最优解,但枚举时间有时不可能接受 (n-1)!枚举(TOUR,周游或环游) ATSP: ( -1)! 设计算机每秒进行100亿次枚举,需 30! / 10e+10 > 2.65e+22 (秒) 即 2.65e+22 / (365*24*60*60) > 8.4e+13 (年)
组合优化 – 例 例 0-1背包问题(knapsack problem) 背包问题( )
Leabharlann Baidu
价值分别为c 的物品.设有一个容积为b的背包 的背包, 给定n个容积分别为 给定 个容积分别为ai,价值分别为 i的物品. 设有一个容积为 的背包,如 个容积分别为 何以最大的价值装包?用数学规划模型表示为: 何以最大的价值装包?用数学规划模型表示为:
计算复杂性的概念
多项式问题
定义 对于给定的一个优化问题,若存在一个求解该问题 最优解的多项式时间算法,则称给定的优化问题是多项 式可解问题,或简称多项式问题,所有多项式问题集记 为P(Polynomial). 同样道理, 可以定义强多项式问题,伪多项式问题等. , , . TSP等许多问题至今没有找到多项式时间算法,但尚未证 明其不存在 TSP是否存在多项式时间算法? ---- 这是 21世纪数学和计算机科学的挑战性问题之一
组合优化
Combinatorial Optimization
组合优化是运筹学的后继课程,同时也是运筹学的 一个重要独立分支,是一类重要的优化问题
最优化 数学规划) 最优化(数学规划 数学规划
– 连续优化 数学规划 : 连续优化(数学规划 数学规划): – 数学规划(线性规划,非线性规划),非光 数学规划(线性规划,非线性规划),非光 ), 滑优化,全局优化, 滑优化,全局优化,锥优化等 – 离散优化:网络优化,组合优化,整数规划等 离散优化:网络优化,组合优化, – 不确定规划:随机规划,模糊规划等 不确定规划:随机规划,
计算复杂性的概念
多项式时间算法
构造算法的目的是能够解决问题 构造算法的目的是能够解决问题(或至少是问题某个 算法的目的是能够解决问题( 子类) 子类)的所有实例而不单单是某一个实例
问题(Problem)是需要回答的一般性提问,通常含有若干个满 足一定条件的参数. 问题通过下面的描述给定:(1)描述所有 参数的特性,(2)描述答案所满足的条件. 问题中的参数赋予了具体值的例子称为实例(instance).
C(I) = f(d(I)) : 该函数关系称为算法的计算复杂性(度) 计算复杂性( 计算复杂性
计算复杂性的概念
多项式时间算法 构造算法 算法将 个自然数从小到大排列起来 例 构造算法将n个自然数从小到大排列起来
算法 输入自然数 自然数a(1),a(2),…,a(n). 自然数 for (i=1;i<n;i++) for (j=i+1;j<=n;j++) if (a(i)>a(j)){ k=a(i);a(i)=a(j);a(j)=k; }
问题, 问题,实例与输入规模
问题 TSP 背包问题 整数线性规划 实例 问题中各参数:100个城市,城市间距离d ij 已知. 问题中各参数: 4个物品,大小分别为4,3,2,2. 价 值分别为8,7,5,7. 包的大小为6. 问题中的n,A,b,c已知.
评价一个算法的依据是该算法在 最坏实例下 的计算时间与 C or C ( I ) = O ( g ( d ( I ))) 实例输入规模的关系: 实例输入规模的关系: ( I ) ≤ αg ( d ( I )) 满足上式时, 存在多项式函数 g(x) 满足上式时,算法为多项式算法 存在多项式算法的问题集合:多项式问题类( ) 存在多项式算法的问题集合:多项式问题类(P) 比多项式问题类可能更广泛的一个问题类是非确定多项式 (Nondeterministic Polynomial,简记 NP ) 问题类 NP 类是通过判定问题引入的. 类是通过判定问题引入的. 判定问题引入的
用的箱子个数最少? 用的箱子个数最少 箱子个数最少
组合优化 – 例 整数线性规划(Integer 整数线性规划(Integer Linear Programming)
min c x
(IP)
.
T
s. t . Ax = b
x ≥ 0, x ∈ Z
n
我们假设线性整数规划的参数 ( 约束矩阵和右端项系数 ) 都是整数 我们假设线性整数规划的参数( 约束矩阵和右端项系数) 我们假设线性整数规划的参数 或有理数) (或有理数). 许多组合优化问题可以用整数规划模型表示, 但有时不如直接用自然 许多组合优化问题可以用整数规划模型表示, 许多组合优化问题可以用整数规划模型表示 语言描述简洁
衡量一个算法的好坏通常是用算法中的加,减,乘, 衡量一个算法的好坏通常是用算法中的加, 除和比较等基本运算的总次数(计算时间) ( ) 除和比较等基本运算的总次数(计算时间)C(I)同 实例I在计算机计算时的二进制输入数据 输入规模/长 在计算机计算时的二进制输入数据(输入规模 实例 在计算机计算时的二进制输入数据 输入规模 长 的大小关系来度量. 度d(I))的大小关系来度量 ( ) 的大小关系来度量 计算模型
输入规模增大时,多项式时间算法的基本计算总次 数的增加速度相对较慢.
1.4 计算复杂性的概念
近似值
1.4.2 多项式时间算法
n nlogn n2 n3 108n4 2n 10n nlogn n!
10 33 100 1000 1012 1024 1010 2079
3628800
100 664 104 106 1016 1.27e3 10100 1.93e1 10158
实际问题的输入规模/长度一定是m,n和logK的一个多项式函数. 所以: 多项式算法等价于其运行时间的上界是m,n和logK的多项式函数.
L ( I ) ≤ α 1 g1 ( m, n, log K ) C ( I ) ≤ α 2 g 2 ( L ( I ))
C ( I ) ≤ α 3 g 3 ( m, n, log K )
min f ( x) s.t. g ( x) ≥ 0, x ∈ D,
其中D表示 组成的集合(定义域) 为目标函数,F={x|x∈D, 其中 表示有限个点组成的集合(定义域) , f为目标函数 为目标函数 ∈ g(x)≥0}为可行域 ≥ 为可行域
优化问题三要素: 优化问题三要素 (Min,f,F)或(Max,f,F)
基本运算的总次数(最坏情形) 基本运算的总次数(最坏情形):2n(n-1)=O(n2) = (
即该算法的计算复杂性( 即该算法的计算复杂性(度)为O(n2) (
计算复杂性的概念
C ( I ) ≤ αg ( L ( I ))
多项式时间算法
假设问题和解决该问题的一个算法已经给定, 定义1.4 假设问题和解决该问题的一个算法已经给定,若存在g(x)为多项式 函数且对该问题任意的一个实例 函数且对该问题任意的一个实例I,使得计算时间
(其中 α为常数)
成立, 则称该算法为解决该问题的多项式( 时间) 成立 , 则称该算法为解决该问题的多项式 ( 时间 ) 算法 (Polynomial time algorithm). 当不存在多项式函数g(x)使得上式成立时,称相应的算法是非多项式时 使得上式成立时,称相应的算法是非 上式成立时 间算法, 或指数(时间)算法(Exponential time algorithm) 或指数(时间) 上面定义中, 注:上面定义中,要求对该问题的任意一个实例均成立 这种分析方法称为最坏性能分析 Worst最坏性能分析( Analysis) 这种分析方法称为最坏性能分析(Worst-Case Analysis) ,
近似算法,最优算法 近似算法:对于一个优化问题,如果给定任意一个 实例I,算法A总能找到一个可行解,那么这个算法 称为该问题的近似算法.
最优算法:如果进一步,如果这个可行解的目标值 总等于最优解值,则称A为最优算法.
典型组合优化问题
背包问题 装箱问题 平行机排序问题 图与网络优化问题 最小支撑树,最短路,最大流,最小费用流,最大基数匹 配问题 指派问题 旅行售货商问题 斯坦纳最小树问题
max ∑ ci xi
i =1
n
n
s. t .

i =1
ai xi ≤ b
D= {0,1}n
xi ∈ {0,1}, i = 1,..., n.
装箱问题(Bin 例 装箱问题(Bin Packing)
以尺寸为1 个尺寸不超过1的物品, 以尺寸为 1 的箱子装进给定的 n 个尺寸不超过 1 的物品 , 如何使所
特别地, 如果运行时间的上界是m,n的多项式函数(即该多项式函数不包 含logK), 则称相应的算法为强多项式(Strongly Polynomial)时间算法. 的多项式函数, 如果算法运行时间的上界是m,n和K的多项式函数,则称相应的算法为伪 多项式(Pseudopolynomial) 时间)算法,或拟多项式(时间)算法. 多项式(Pseudopolynomial)(时间)算法,或拟多项式(时间)算法. 一般来说,伪多项式算法并不是多项式算法. 一般来说,伪多项式算法并不是多项式算法.
1000 9966 106 109 1020 1.05e30 101000 7.89e29 4e2567
计算复杂性的概念
多项式时间算法
算法复杂性研究中: 算法复杂性研究中:常将算法的计算时间表示为: 问题中的简单而典型的参数(如网络优化中n,m), 以及 网络优化中 问题中出现的数值(如弧上的权)的最大值(按绝对值)K 等自变量的函数关系
相关文档
最新文档