两个组合优化问题的算法设计

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

第 12期
杨宏东等: 两个组合优化问题的算法设计
+ 19+
2. 3. 3 实例分析 例 1 一个软件专业的学生必须学习的一系
列课程, 如表 1. 假设学年为 3, 每学年的学分上限 均为 7, 修正值为 2, 请给出该专业的课程安排.
表 1 软件专业课程先序表
课程编号 学分
课程名称
C1
2
程序设计
C2
uk
=
m
j#
in
T
{
u
j
}.
置 S = S) { k }, T = T - { k }. 若 T = 终止; 否
则, 进行 Step 3;
S tep 3 (选择可用的点 )对其中每个 j, 置
uj = m in{ uj, uk + w kj }, 转 Step 2. k 算法经过 n - 1次循环后终止, 总的计算量为
C4. F irst= = 1, dist (C4 ) = 2, M = int( 1 /2* ( 6- 2) ), 2< = M, S + 3< 14+ 2
then C 4. Se lect= = 1; C 4. T erm = 2; SUM 2 = 3+ 3= 6; S = S + 3= 15; T = {C1, C9, C 2, C 4 }
算法 1 Step 1 W = W + L i; 查找 v. F irst= 1的点, 并求点在 图中的最长路径 dist ( v); Step 2 若 dist ( v) > 1 / 2* ( 2N - i), 置 P: ∗ P )
{ v }, v. Select= 1, v. T erm = i, SUM i = SUM i +
3
离散数学
C3
4
数据结构
C4
3
汇编语言
C5
2
语言的设计和分析
C6
3
计算机原理
C7
4
编译原理
C8
4
操作系统
C9
7
高等数学
C 10
5
线性代数
C 11
2
普通物理
C 12
3
数值分析
先决条件
无 C1 C1、C 2 C1 C3、C 4 C 11 C3、C 5 C3、C 6 无
C9 C9 C1、C 9、C10
then C 2. Se lect= = 1, C 2. T erm = 2, SUM 2 = 0+ 3= 3, S = S + 3= 12, T = {C 1, C9, C 2 }
教学计划的编排问题 和交通网络中路径规划问题的有效算法, 并通过实例 进行了算法分析.
关键词: 有向图; 最短有向 路; 教学计划编排; 交通网络; 路径规划
中图分类号: TP 311
文献标识码: A
文章编号: 1671- 6132( 2009) 12- 0017- 06
大学
在实际生活中存在着很多组合优化问题, 这些 问题中大多数是 NP 问题, 用通常的数学方法难以 解决, 或求解的过程过于繁琐, 于是人们尝试解决 这些问题的其他途径, 图论就是解决此类问题的一 种工具. 例如以有向图为工具来求解指定两点间的 最大流问题 [ 1] 、两点间的最小费用流问题 [ 1 ] 、货郎 担问题 [ 2] 等等. 教学计 划的编排问题 和交通网络 中的路径规划问题也属于组合优化问题. 对于前 一个问题, 已有研究都是讨论在同一个学期中如何 合理安排每门课程使得满足需要, 即为一个学期的 课表安排问题. 我们考虑了把某个专业要求的所 有课程安排在不同学期中 的一个教学计 划问题. 对于后一个问题多是讨论在一种条件约束下的路 径设计问题 [ 3- 10 ] , 我们对原有的算法进行了改进, 考虑了多种需求下的路径设计问题. 主要思想是以 有向赋权图作为辅助工具, 将教学计划的编排问题 和交通网络中的路径规划问题转化为赋权有向图 在特殊约束下的指定两点间的最短有向路问题, 设 计了问题的有效解法.
修课程, 则其 F irst的值为其所有先修课程的 Select 值的逻辑与的运算值;
( c) Select为标志, 初值为 0, 当课程被选择后, 赋值为 1;
( d)课程被选择当且仅当其 F irst 值为 1(或者 它无先修课程, 或者它的先修课程全部被选择 );
( e) T erm 的 初 值 为 0, 记 载 被 选 择 时 的 学 期数.
O ( n2 ).
2 教学计划的编制问题
2. 1 问题引入 大学的每个专业都要制订教学计划. 假设任何
专业都有固定的学习年限, 每个学年 含有两个学 期, 每个学期的时间长度和学分都是有上限的, 每 个专业开设的课程都是确定的, 而且课程在开设的 时间安排上满足先修关系, 每门课有哪些先修课程 是确定的, 每门课程恰好占一个学期. 我们研究的 问题是如何合理地制订教学计划. 2. 2 问题的数学模型
学期序号 , − . / 0 1
表 2 软件 专业课程安排
开设课程 C 1 、C 9 C 2 、C 4 C 10、C 11 C 3 、C 5 C6、C 12 C 7 、C 8
总学分 9 6 7 6 6 8
图2
求解如下: ( a) 将其转化为有向图 (图 2). ( b)按重新设计的顶点结构来解决软件专业 课程的安排问题: 所给条件知, 学期总数为 2N = 6, 每学期的学分限为 L1 = L2 = % = L6 = 7, 修正值为 = 2. ( c) 初始化图, 置图中所有的 点的 S elect = 1, T erm = 0. ( d)求解过程如下: i= 1: W = 0+ L1 = 7 C1. F irst= = 1, d ist( C1 ) = 3, M = int ( 1 / 2* ( 6- 1) ), 3> M, insert(P, C1 ), then C 1. Se lect= 1, C1. T erm = 1, SUM 1 = 0+ 2 = 2, S = 0+ v. Score= 2, T = {C1 } C9. F irst= = 1, dist(C9 ) = 3, M = int ( 1 / 2* ( 6- 1) ), 3> M, insert(P, C9 ), then C 9. Se lect= 1; C9. T erm = 1; SUM 1 = 2+ 7 = 9, S = 2+ 7= 9; T = {C1, C9 } i= 2: W = 7+ L2 = 14 C2. F irst= = 1, d ist( C2 ) = 2, M = int( 1 /2* ( 6- 2) ), 2< = M, S + 3< 14+ 2
+ 18+
南阳师范学院学报
第 8卷
中自点 1至其余各点的最短有向路的 D ijkstra算法
如下:
S tep 1 (开始 ) 置 u1 = 0, uj = w 1j, j = 2, 3, %, n,
S = { 1}, T = { 2, 3, %, n} ;
S tep 2 (确定选择的点 ) 在 T 中寻找一点 k 使得
设一个大学某专业共有 N 个学年, 即 2N 个学 期; 开设课程的总数为 m, 所有开设课程为: C1, C2, %, Cm; 每个学期 的学分 上限设 为 L i, 并 给以修 正值
( i= 1, 2, 3, %, 2N ). 以课程集合 V = { C1, C 2, %, Cm }为图的顶点
集, 两个顶点 Ci, Cj 之间存在 有向弧 ( C i, C j )当且 仅当 C i 表示的课程必须先修于 Cj. 其中也可能存 在着这样的课程: 它既没有先修课程, 又不是其他 任何课程的先修课程, 即图中的孤立点. 这些可作 机动的安排.
在具体的教学计划安排问题中对学分和先修 课程是有限制条件的. 为了构造算法的需要, 我们 在对应的图模型的每个顶点赋予图 1所示结构.
图1
说明: 在图 1中 ( a) 课程编号 N um ber 和学 分 S core 分别表示
课程的编号和学分; ( b)F irst为逻辑变量, 其初值为 0, 若课程有先
对所有顶点定义后, 由其固定的先后修关系建 立有向图. 对应的问题转化为: 在此有向图中, 将所 有的课程分配至 2N 个集合中, 每个集合中的元素 间没有先后修课程关系, 即这 2N 个集合为所在有 向图中的互不相交的点独立集, 则分配后的 2N 个 集合对应着 2N 个学期的课程安排. 2. 3 问题求解 2. 3. 1 模型求解
由前面假设, 每学期的 课程的总学 分上限为 L i + , 设 V 为所有课程的集合, T 是已经选择的点 的集合, P 是要优先选择的点的集合, 初始均为空 集; SUM i 累计第 i 学期被选择课程的学分 ( i = 1, 2, %, 2N ), S 为累计已经选过的课程的总学分, W 为累计学期的总学分, 初值均为 0.
( k, j), 而且该有向路上自点 1至 k 的一段也必为
最短有向路, 从而有方程
u1 = 0,
k, j= 2, 3, %, n. ( 2)
uj
=
m k
in {
uk
+
w
kj
},
因此, 自点 1至各点的最短有向路的长度必满足方
程 ( 2), 从而也说明方程 ( 2)是有解的, 即在图中最
短有向路是存在的. 1. 2 D ijkstra算法 [ 1, 11 ]
第 8卷第 12期 2009年 12月
南阳师范学院学报 Journal of N anyang Norm a l Un iversity
V o.l 8 No 12 Dec. 2009
两个组合优化问题的算法设计
杨宏东, 王骁力
( 南阳师范学院 数学与统计学院, 河南 南阳 473061)
摘 要: 以有向赋权图为工具, 通过对满足限制条件的最 短有向 路径问 题的讨 论, 给 出了两 个组合 优化问题
假设在有向网络 G = < N, A, W > 中, 点的集合
N = { 1, 2, %, n }, A 为边弧的集合, 边权非负, 求 G
收稿日期: 2008 - 06- 20 基金项目: 河南省教育厅自然科学基金资助项目 ( 2009B110017) ; 南阳师范学院高层次人才科研资助项目 作者简介: 杨宏东 ( 1985- ) , 河南商城人, 学士, 南阳师范学院 2003级学生.
v. Score, S = S + v. Score; 否则, T: ∗ P ) { v}.
若 S + v. Score∃ W + , 置 v. S elect = 1, v. T erm
= i, SUM i = SUM i + v. Score, S = S + v. S core; 否则, 置 T 剩余的点 v. T erm = i + 1. Step 3 循环执行 Step 1, Step 2至集合 V 为空集时 停止. Step 4 循 环结 束后, 将 T erm = i 点插 入到 链表 TAB i 中.
1 数学模型和基本结果
1. 1 数学模型 定义 1 一个有向图 [2] G 是一个有序的二元
组 < V, A > . 其中 V 是非空集合, 其元素称为顶点 或结点; A 称为有向边集或者弧集, 它是笛卡儿积 V V 的多重子集, 其元素称为有向边或弧.
定义 2 给定 (有向或无向 ) 图 G 为赋权 图 [ 2] , 若存 在边集合 E 到实数集 的映射 W, 记作 G = < V, E, W > . 这里, 对于 E 中任意的边 e= < vi, vj > , 称 W ( e) = w ij为边 e上的权; 对于 G 的子图 G !, G !
说明: 规定在 Step 2中集合 P 中的点是有限 的, 且总有 SUM i ∃ Li + 成立. 2. 3. 2 算法分析
在本程序中, 先计算点的 dist ( v), 并优先选择 集合 P 中的点, 这样处理对于实际问题是非常有 效的, 防止了后序的很多课程因为安排太靠后而导 致其无 法安排 的情 况发 生. 计算 点的 d ist ( v) 的 D ijkstra算法所需时间为 O (m 2 ); 第二步所需时间 为 O (Nm ), 所以总的算法时间复杂性为 O (Nm ), 这是一个好算法.
的权定义为 W ( G !) = ∀ w ( e) . e# E (G !) 定义 3 若 A, B, C 是欧氏空间 的任意三点,
L (A, B )表示 A 和 B 之间的距离, 则不等式 L (A, B )
∃ L (A, C ) + L (C, B ) 成立, 当且仅当 C 在 A, B 之
间的连 线 上时 等 式成 立, 称 此 不等 式为 三 角不 等式 [ 1 ] .
C10. F irst= = 1, d ist (C10 ) = 1, M = 1 /2* ( 8- 2), 1< M, S + 5= 20> 14+ 2
then C10. T erm = 2+ 1= 3; %% 按上述的步骤, 可以排 出软件专业 的课程安 排, 见表 2. 由表及求解过程可以看出: 设 置 S 和 W 来累 和是十分必要的, 它避免了因为课程安排靠前而导 致后面的学期没有课程可供安排的问题的出现.
我们在有向图中也引进距离的概念, 可得到类
似于上述三角不等式的性质.
设有向网络 G = < N, A, W > 中, 边权非负, 点
集合 N = { 1, 2, %, n}, A 为边弧的集合. 若用 ui 和
uj 分别表示自点 1至 i和自点 1至 j的最短有向路 的长度, 而 w kj表示弧 ( k, j)的长度 (若 ( k, j) & A, 则
wkj = + ∋ ), 则显然对一切 k ( j均有方程
ቤተ መጻሕፍቲ ባይዱu1 = 0,
k, j= 2, 3, %, n.
( 1)
uj ∃ uk + wkj,
并且第二式为等式, 当且仅当 ( k, j )在 自点 1至 j
的最短有向路上.
因为诸 uj 是 G 中自点 1至 j的最短有向路径 的长度, 因此这条最短有向路必有最后一个弧
相关文档
最新文档