收藏 分享(赏)

数学建模十大经典算法( 数学建模必备资料).doc

上传人:tangtianxu1 文档编号:3094887 上传时间:2018-10-03 格式:DOC 页数:36 大小:652.50KB
下载 相关 举报
数学建模十大经典算法(  数学建模必备资料).doc_第1页
第1页 / 共36页
数学建模十大经典算法(  数学建模必备资料).doc_第2页
第2页 / 共36页
数学建模十大经典算法(  数学建模必备资料).doc_第3页
第3页 / 共36页
数学建模十大经典算法(  数学建模必备资料).doc_第4页
第4页 / 共36页
数学建模十大经典算法(  数学建模必备资料).doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、From clown studio建模十大经典算法1、蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时通过模拟可以来检验自己模型的正确性。2、数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具。3、线性规划、整数规划、多元规划、二次规划等规划类问题。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用 Lindo、Lingo、MATLAB 软件实现。 4、图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用

2、这些方法解决,需要认真准备。 5、动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中。 6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法。这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7、网格算法和穷举法。网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8、一些连续离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将

3、其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9、数值分析算法。如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10、图象处理算法。From clown studio赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用 Matlab 进行处理。 历年全国数学建模试题及解法赛题 解法 93A 非线性交调的频率设计 拟合、规划 93B 足球队排名 图论、层次分析、整数规划 94A 逢山开路 图论、插值、动态规划 94B 锁

4、具装箱问题 图论、组合数学 95A 飞行管理问题 非线性规划、线性规划 95B 天车与冶炼炉的作业调度 动态规划、排队论、图论 96A 最优捕鱼策略 微分方程、优化 96B 节水洗衣机 非线性规划 97A 零件的参数设计 非线性规划 97B 截断切割的最优排列 随机模拟、图论 98A 一类投资组合问题 多目标优化、非线性规划 98B 灾情巡视的最佳路线 图论、组合优化 99A 自动化车床管理 随机优化、计算机模拟 99B 钻井布局 0-1 规划、图论 00A DNA 序列分类 模式识别、Fisher 判别、人工神经网络 00B 钢管订购和运输 组合优化、运输问题 01A 血管三维重建 曲线拟合

5、、曲面重建 01B 公交车调度问题 多目标规划 02A 车灯线光源的优化 非线性规划 02B 彩票问题 单目标决策 03A SARS 的传播 微分方程、差分方程 03B 露天矿生产的车辆安排 整数规划、运输问题 04A 奥运会临时超市网点设计 统计分析、数据处理、优化 04B 电力市场的输电阻塞管理 数据拟合、优化 05A 长江水质的评价和预测 预测评价、数据处理 From clown studio05B DVD 在线租赁 随机规划、整数规划 06A 出版资源配置 06B 艾滋病疗法的评价及疗效的预测07A 中国人口增长预测 07B 乘公交,看奥运 多目标规划 数据处理 图论 08A 数码相机

6、定位 08B 高等教育学费标准探讨09A 制动器试验台的控制方法分析 09B 眼科病床的合理安排 动态规划 10A10B赛题发展的特点: 1.对选手的计算机能力提出了更高的要求:赛题的解决依赖计算机,题目的数据较多,手工计算不能完成,如 03B,某些问题需要使用计算机软件,01A。问题的数据读取需要计算机技术,如 00A(大数据) ,01A (图象数据,图象处理的方法获得) ,04A(数据库数据,数据库方法,统计软件包) 。计算机模拟和以算法形式给出最终结果。 2.赛题的开放性增大 解法的多样性,一道赛题可用多种解法。开放性还表现在对模型假设和对数据处理上。 3.试题向大规模数据处理方向发展

7、4.求解算法和各类现代算法的融合 从历年竞赛题来看,常用的方法:线性规划 整数规划 非线性规划 动态规划 层次分析法图论方法 拟合方法 插值方法 随机方法 微分方程方法各种算法的详解一、蒙特卡洛算法1、含义的理解 以概率和统计理论方法为基础的一种计算方法。也称统计模拟方法,是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,它是将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。 2、算法实例(有很多相似的例题,包括平行线等)在数值积分法中,利用求单位圆的 1/4 的面积来求得 Pi/4 从而得到 Pi。单位圆的 1/4 面积是一个扇形,它是边长为

8、1 单位正方形的一部分。只要能求出扇形面积 S1 在正方形面积S 中占的比例 K=S1/S 就立即能得到 S1,从而得到 Pi 的值。怎样求出扇形面积在正方形面积中占的比例 K 呢?一个办法是 在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数 m 与所投点的总数 n 的比 m/n 作为 k 的近似值。P 落在扇形内的充要条件是 。21xyFrom clown studio已知:K= ,K ,s=1,s1= ,求 Pi。1smn4Pi由 ,知 s1 = ,*s而 s1= ,则 Pi=4Pi程序:(该算法可以修改后用 Mathema

9、tica 计算或者 Matlab)/* 利用蒙特卡洛算法近似求圆周率 Pi*/ /*程序使用:VC+6.0 */ #include #include #include #define COUNT 800 /*循环取样次数,每次取样范围依次变大*/ void main() double x,y; int num=0; int i; for(i=0;i 中*/y=rand()*1.0/RAND_MAX;if(x*x+y*y)Axis,Plota1,x,0,60结果:-3.68428+2.38529 x-0.0934637 x2+0.00132433 x3(2)参数估计(参考书:概率论与数理统计)参

10、数估计为统计推断的基本问题,分为点估计和区间估计。点估计:矩估计法X 连续型随机变量,概率密度 12(;,)nfxX 为离散型随机变量 分布律 12(;,)kPXp为待估参数, 是来自 X 的样本,假设总体 X 的前 阶矩存在,12,k 12,n kFrom clown studio为(X 连续型)12()(;,)lll nEXxfdx或 (X 离散型) (其中 是 X 可能取,Xlll kxRp 1,2lk R值的范围) 。一般来说,它们是 的函数。基于样本矩 依概率收敛12,k 1nlliiA于相应的总体矩 ,样本矩的连续函数依概率收敛于相应的总体矩的连续函(,)lk数,我们就用样本矩作为

11、相应的总体矩的估计量,而以样本矩的连续函数作为相应的总体矩的连续函数的估计量。这种估计方法成为矩估计法。最大似然估计法X 连续型随机变量 似然函数 其中121(),;)(;)nniiLxfx是来自 X 的样本 的联合密度。1(;)niifx12,nXX 为离散型随机变量 似然函数 其中121(),;)(;),nniiLxpx是来自 X 的样本 的联合分布律。1(;)niipx 12,nX若 1212,;)max(,;)n nLLx 则称 为 的最大似然估计值,称 为 的最大似然估计量。(,x 12(,)nX 这样,确定最大似然估计量的问题就归结为微分学中的求最大值的问题了。估计量的评选标准为:

12、(1)无偏性(2 )有效性(3)相合性区间估计:对于一个未知量,人们在测量或计算时,常不以得到近似值为满足,还需要估计误差,即要求知道近似值的精确程度(亦即所求真值所在的范围) 。这样的范围常以区间的形式给出,同时还给出此区间包含参数真值的可信度,这种形式的估计称为区间估计,这样的区间即所谓置信区间。正态总体均值、方差的置信区间与单侧置信限(置信水平为 1- )一个正态总体 未知参数 其他参数 枢轴量的分布 置信区间From clown studio已知2(0,1)/XZNn:/2()Xzn未知2 (1)/ttnS:/2(1)Szn2未知22()(1)n:22/1/()(),S另外还包括两个正

13、态总体的情况,其他区间估计:(0-1)分布参数的区间估计(3)插值1、含义的理解在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值(与拟合的不同点在于拟合的函数不需通过每一个离散点) 。插 值 问 题 的 提 法 是 : 假 定 区 间 a, b 上 的 实 值 函 数 f( x) 在 该 区 间 上 n 1 个 互 不相 同 点 x0, x1xn 处 的 值 是 f x0 , f( xn) , 要 求 估 算 f( x) 在 a, b 中 某 点 的值 。 其 做 法 是

14、 : 在 事 先 选 定 的 一 个 由 简 单 函 数 构 成 的 有 n 1 个 参 数 C0, C1, Cn的 函 数 类 (C0, C1, Cn)中 求 出 满 足 条 件 P( xi) f( xi) ( i 0, 1, n) 的 函数 P(x), 并 以 P()作 为 f()的 估 值 。 此 处 f( x) 称 为 被 插 值 函 数 , x0, x1, xn 称 为插 值 结 (节 )点 , (C0, C1, Cn)称 为 插 值 函 数 类 , 上 面 等 式 称 为 插 值 条 件 ,( C0, Cn) 中 满 足 上 式 的 函 数 称 为 插 值 函 数 , R( x)

15、f( x) P( x) 称 为 插值 余 项 。 当 估 算 点 属 于 包 含 x0, x1xn 的 最 小 闭 区 间 时 , 相 应 的 插 值 称 为 内 插 , 否则 称 为 外 插 。2、 基 本 类 型多 项 式 插 值在 一 般 插 值 问 题 中 , 若 选 取 为 n 次 多 项 式 类 , 由 插 值 条 件 可 以 唯 一 确 定 一 个 n 次插 值 多 项 式 满 足 上 述 条 件 。 拉 格 朗 日 插 值 和 牛 顿 插 值 都 属 于 多 项 式 插 值 。拉 格 朗 日 插 值 :设 连 续 函 数 y = f( x) 在 a, b上 对 给 定 n +

16、1 个 不 同 结 点 :分 别 取 函 数 值01,nx 01,y其 中 ( 1)()iif,试 构 造 一 个 次 数 不 超 过 n 的 插 值 多 项 式( 2)201()nPxaxaFrom clown studio使 之 满 足 条 件 ( 3)()niiPxy0,12,n构 造 n 次 多 项 式 使 kl= ( 4)()klx1,i0由 (5)1()()nnikiiPylx0,12,n即 满 足 插 值 条 件 , 于 是 问 题 归 结 为 具 体 求 出 基 本 插 值 多 项 式 。nx ()klx根 据 ( 4) 式 以 外 所 有 的 节 点 都 是 的 根 , 因

17、此 令()kl ()klx0111()()k knlxx 0()njjk又 由 =1, 得 :()lx0111()()()()kkkkknxxxx 所 以 有 0111)()()()()kkkkkknl 0njjkx代 入 ( 5) 得 拉 格 朗 日 插 值 多 项 式 为 :00()()nn jk kkjkxPxlyy牛 顿 插 值 :( 拉 格 朗 日 插 值 的 缺 点 ) 拉 格 朗 日 插 值 公 式 的 形 式 虽 然 有 一 定 的 规 律 , 但 是 当 增 加一 个 节 点 时 , 不 仅 要 增 加 项 数 , 而 且 以 前 各 项 也 必 须 重 新 全 部 计 算

18、, 不 能 利 用 已 有 的 结果 。 为 克 服 这 一 缺 点 , 我 们 取 用 另 一 种 形 式 牛 顿 插 值 公 式 。牛顿插值公式中用到了差商。一般称: 011201 0,nnnfxfxfx 为 在 处 的 n 阶 差 商 。()f01,From clown studio差 商 可 列 表 计 算 :xi yi 一 阶 差 商 二 阶 差 商 三 阶 差 商 四 阶 差 商 x0 f (x0)x1 f (x1) f x0, x1x2 f (x2) f x1, x2 f x0, x1, x2x3 f (x3) f x2, x3 f x1, x2, x3 f x0, x1, x2

19、, x3x4 f (x4) f x3, x4 f x2, x3, x4 f x1, x2, x3, x4 f x0, x4由 差 商 定 义 可 知2001001201P,(),()fff由 差 商 定 义 可 求 得001010121()(),(),nnfxxfxxfxf 记 0010101211()(),(),n nnNxfxfxxfxf 0 0()(),nR 则 nnfxRx其 中 称 为 n 次 牛 顿 插 值 多 项 式 , 是 截 断 误 差 。()nN()nx最 终 我 们 可 以 证 明 满 足 插 值 条 件()xninif0,12,i因 此 有 ()Nx牛 顿 插 值 公

20、式 的 优 点 是 : 当 增 加 一 个 节 点 时 , 只 要 再 增 加 一 项 就 行 了 , 即 有 递 推 式101011()()(),kk kkxxxfx 当 然 , 与 拉 格 朗 日 插 值 相 比 它 还 有 节 省 运 算 次 数 的 优 点 ( 尤 其 是 节 省 乘 法 运 算 次 数 ) 。分 段 插 值 与 样 条 插 值为 了 避 免 高 次 插 值 可 能 出 现 的 大 幅 度 波 动 现 象 , 在 实 际 应 用 中 通 常 采 用 分 段 低 次 插 值 来提 高 近 似 程 度埃 尔 米 特 插 值许 多 实 际 插 值 问 题 中 , 为 使 插

21、值 函 数 能 更 好 地 和 原 来 的 函 数 重 合 , 不 但 要 求 二 者 在 节 点上 函 数 值 相 等 , 而 且 还 要 求 相 切 , 对 应 的 导 数 值 也 相 等 , 甚 至 要 求 高 阶 导 数 也 相 等 。 这类 插 值 称 作 切 触 插 值 , 或 埃 尔 米 特 (Hermite)插 值 。 满 足 这 种 要 求 的 插 值 多 项 式 就 是 埃From clown studio尔 米 特 插 值 多 项 式 三 角 函 数 插 值当 被 插 函 数 是 以 2 为 周 期 的 函 数 时 , 通 常 用 n 阶 三 角 多 项 式 作 为 插

22、值 函 数 , 并 通 过高 斯 三 角 插 值 表 出 。三、线性规划、整数规划、多元规划、二次规划(1)线性规划1、含义的理解线性规划是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法.研究线性约束条件下线性目标函数的极值问题的数学理论和方法,英文缩写 LP。它是运筹学的一个重要分支。在经济管理、交通运输、工农业生产等经济活动中,提高经济效果是人们不可缺少的要求,而提高经济效果一般通过两种途径:一是技术方面的改进,例如改善生产工艺,使用新设备和新型原材料.二是生 产 组 织 与计划的改进,即合理安排人力物力资源.线性规划所研究的是:在一

23、定条件下,合理安排人力物力等资源,使经济效果达到最好.一般地,求线性目标函数在线性约 束 条 件 下的最大值或最小值的问题,统称为线性规划问题。满足线性约束条件的解叫做可 行 解 ,由所有可行解组成的集合叫做 可行域 。决 策 变 量 、约束条件、目标函数是线性规划的三要素。2、 线 性 规 划 问 题 的 数 学 模 型 的 一 般 形 式 和 模 型 建 立(1)列出约束条件及目标函数 (2)画出约束条件所表示的可行域 (3)在可行域内求目标函数的最优解及最优值(实际问题中建立数学模型一般有以下三个步骤:根据影响所要达到目的的因素找到决策变量;2.由决策变量和所在达到目的之间的函 数 关系

24、确定目标函数;3.由决策变量所受的限制条件确定决策变量所要满足的约束条件。 )所建立的数学模型具有以下特点:(1) 、每个模型都有若干个决策变量(x1,x2,x3,xn) ,其中 n 为决策变量个数。决策变量的一组值表示一种方案,同时决策变量一般是非负的。(2) 、目标函数是决策变量的线 性 函 数 ,根据具体问题可以是最大化(max)或最小化(min) ,二者统称为最优化(opt) 。(3) 、约束条件也是决策变量的线性函数。当我们得到的数学模型的目标函数为线性函数,约束条件为线性等式或不等式时称此数学模型为线性规划模型。3、实例生产计划问题问题:某企业要在计划期内安排生产甲、乙两种产品,这

25、个企业现有的生产资料是:设备 18 台时,原材料 A :4 吨,原材料 B: 12 吨;已知单位产品所需消耗生产资料及利润如下表。问应如何确定生产计划使企业获利最多?产品资源甲 乙 资源量设备/台时 3 2 18原料 A/吨 1 0 4原料 B/吨 0 2 12单位赢利/万元 3 5 From clown studio设 x1 为甲产品分配的设备台数,x2 为乙产品分配的台数。则条件限制为:3*x1+2*x2 181*x1+0*x2 40*x1+2*x2 12x1 0,x2 0求 max z=3*x1+5*x2用 lingo 编程,程序如下:max=3*x1+5*x2;3*x1+2*x2=0;

26、x2=0;结果为:Global optimal solution found.Objective value: 36.00000Total solver iterations: 1Variable Value Reduced CostX1 2.000000 0.000000X2 6.000000 0.000000Row Slack or Surplus Dual Price1 36.00000 1.0000002 0.000000 1.0000003 2.000000 0.0000004 0.000000 3.0000005 2.000000 0.0000006 6.000000 0.0000

27、00即在 x1=2,x2=6 时,企业获利最多,为 36 万元。4、 线 性 规 划 的 应 用在企业的各项管理活动中,例如计划、生产、运输、技术等问题,线性规划是指从各种限制条件的组合中,选择出最为合理的计算方法,建立线性规划模型从而求得最佳结果. 广泛应用于军事作战、经济分析、经营管理和工程技术等方面。为合理地利用有限的人力、物力、财力等资源作出的最优决策,提供科学的依据。(2)整数规划一类要求问题的解中的全部或一部分变量为整数的数学规划。从约束条件的构成又可细分为线性,二次和非线性的整数规划。 在线性规划问题中,有些最优解可能是分数或小数,但对于某些具体问题,常要求某些变量的解必须是整数

28、。例如,当变量代表的是机器的台数,工作的人数或装货的车数等。为了满足整数的要求,初看起来似乎只要把已得的非整数解舍入化整就可以了。实际上化整后的数不见得是可行解和最优解,所以应该有特殊的方法来求解整数规划。在整数规划中,如果所有变量都限制为整数,则称为纯整数规划;如果仅一部分变量限制为整数,则称为混合整数规划。整数规划的一种特殊情形是0-1 规划,它的变数仅限于 0 或 1。不同于线性规划问题,整数和 0-1 规划问题至今尚未找From clown studio到一般的多项式解法。组 合 最 优 化 通常都可表述为整数规划问题。两者都是在有限个可供选择的方案中,寻找满足一定约束的最好方案。有许

29、多典型的问题反映整数规划的广泛背景。例如,背袋(或装载)问题、固定费用问题、和睦探险队问题(组合学的对集问题) 、有效探险队问题(组合学的覆盖问题) 、旅行推销员问题, 车辆路径问题等。因此整数规划的应用范围也是极其广泛的。它不仅在工业和工程设计和科学研究方面有许多应用,而且在计算机设计、系统可靠性、编码和经济分析等方面也有新的应用。整数规划是从 1958 年由 R.E.戈莫里提出割平面法之后形成独立分支的 。解整数规划最典型的做法是逐步生成一个相关的问题,称它是原问题的衍生问题。对每个衍生问题又伴随一个比它更易于求解的松弛问题(衍生问题称为松弛问题的源问题) 。通过松弛问题的解来确定它的源问

30、题的归宿,即源问题应被舍弃,还是再生成一个或多个它本身的衍生问题来替代它。随即再选择一个尚未被舍弃的或替代的原问题的衍生问题,重复以上步骤直至不再剩有未解决的衍生问题为止。目前比较成功又流行的方法是分枝定界法和割平面法,它们都是在上述框架下形成的。0-1 规划在整数规划中占有重要地位,一方面因为许多实际问题,例如指派问题、选地问题、送货问题都可归结为此类规划,另一方面任何有界变量的整数规划都与 0-1 规划等价,用 0-1 规划方法还可以把多种非 线 性 规 划 问题表示成整数规划问题,所以不少人致力于这个方向的研究。求解 0-1 规划的常用方法是分枝定界法,对各种特殊问题还有一些特殊方法,例

31、如求解指派问题用匈牙利方法就比较方便。(4)二次规划二次规划是非线形规划中一类特殊的数学规划问题,它的解是可以通过求解得到的。通常通过解其库恩塔克条件(KT 条件),获取一个 KT 条件的解称为 KT 对,其中与原问题的变量对应的部分称为 KT 点。二次规划分为凸二次规划与非凸二次规划,前者的 KT 点便是其全局极小值点,而后者的KT 点可能连局部极小值点都不是。若它的目标函数是二次函数,则约束条件是线性的。由于求解二次规划的方法很多,所以较为复杂;其较简便易行的是沃尔夫法,它是依据库恩塔克条件,在线性规划单纯形法的基础上加以修正而成的。此外还有莱姆基法、毕尔法、凯勒法等。四、图论:(参考资料

32、:建模教程(图与网络) )(1)含义的理解图论是专门研究图的理论的一门数学分支,属于离散数学范畴,与运筹学有交叉。图论中常用点和点之间的线所构成的图,反映实际生产和生活中的某些特定对象之间的特定关系。一般来说,通常用点表示研究对象、用点与点之间的线表示研究对象之间的特定关系。在一般情况下,图中的相对位置如何,点与点之间线的长短曲直,对于反映研究对象之间的关系,显的并不重要。因此,图论中的图与几何图,工程图等本质上是不同的。(2)历史(包括应用范围)它有 200 多年历史,大体可划分为三个阶段:第一阶段是从十八世纪中叶到十九世纪中叶,处于萌芽阶段,多数问题围游戏而产生,最有代表性的工作是所谓的

33、Euler 七桥问题,即一笔画问题。第二阶段是从十九世纪中叶到二十世纪中叶,这时,图论问题大量出现,如 Hamilton 问题,地图染色的四色问题以及可平面性问题等,这时,也出现用图解决实际问题,如 Cayley 把From clown studio树应用于化学领域,Kirchhoff 用树去研究电网络等.第三阶段是二十世纪中叶以后,由生产管理、军事、交通、运输、计算机网络等方面提出实际问题,以及大型计算机使大规模问题的求解成为可能,特别是以 Ford 和 Fulkerson 建立的网络流理论,与线性规划、动态规划等优化理论和方法相互渗透,促进了图论对实际问题的应用。算法重要的算法 1、求有向

34、图的强连通分支 (Strongerst Connected Component)(1)Kosaraju 算法(2)Gabow 算法(3)Tarjan 算法2、求最小生成树 (Minimal Spanning Trees)(1)Kruskal 算法(2)Prim 算法3、最小树形图(1)朱永津刘振宏算法4、最短路径问题(1)SSSP(Single-source Shortest Paths)Dijkstra 算法Bellman-Ford 算法(SPFA 算法)(2)APSP(All-pairs Shortest Paths)Floyd-Warshall 算法Johnson 算法5、网络流问题(1

35、)最大网络流增广路算法Ford-Fulkerson 算法Edmonds-Karp 算法最短路径增殖 EK-2(MPLA)Dinic预流推进算法(2)最小费用流6、图匹配问题(1)匈牙利算法(2)Hopcroft Karp 算法(3)Kuhn-Munkres 算法(4)Edmonds blossom-contraction 算法(有关资料网址:http:/ graph) 是由一个非空有限集合 和 中某些元素G)(GVFrom clown studio的无序对集合 构成的二元组,记为 。其中)(GE)(,(GEV称为图 的顶点集(vertex set)或节点集(node set) , ,)(21n

36、vV中的每一个元素 称为该图的一个顶点( vertex)或节点(node) ;),21(ni称为图 的边集(edge set) , 中的每一个元素 (即,)(21meGE G)(GEke中某两个元素 的无序对) 记为 或 Vjiv),(jikveijjikve,被称为该图的一条从 到 的边(edge) 。),(kij当边 时,称 为边 的端点,并称 与 相邻(adjacent) ;边 称为jikvejiv,kejvi ke与顶点 关联(incident) 。如果某两条边至少有一个公共端点,则称这两条边在图ji,中相邻。G边上赋权的无向图称为赋权无向图或无向网络(undirected netwo

37、rk) 。我们对图和网络不作严格区分,因为任何图总是可以赋权的有向图一个有向图(directed graph 或 digraph) 是由一个非空有限集合 和 中某些元素的有GV序对集合 构成的二元组,记为 。其中 称为图 的顶点集A),(AV,21nvG或节点集, 中的每一个元素 称为该图的一个顶点或节点;),iv称为图 的弧集(arc set) , 中的每一个元素 (即 中某两个元素,21ma kaV的有序对) 记为 或 ,被称为该图的一条从 到jiv, ),(jikv),21(nkvajikiv的弧(arc) 。j当弧 时,称 为 的尾(tail) , 为 的头(head) ,并称弧 为

38、的出jikvaikjvkakaiv弧(outgoing arc) ,为 的入弧( incoming arc) 。j对应于每个有向图 ,可以在相同顶点集上作一个图 ,使得对于 的每条弧, 有一DGDG条有相同端点的边与之相对应。这个图称为 的基础图。反之,给定任意图 ,对于它的D每个边,给其端点指定一个顺序,从而确定一条弧,由此得到一个有向图,这样的有向图称为 的一个定向图。G完全图、二分图每一对不同的顶点都有一条边相连的简单图称为完全图(complete graph)。 个顶点的完全n图记为 。nK若 , , (这里 表示集合 中的元素个数) ,YXV)(0|YX|XFrom clown st

39、udio中无相邻顶点对, 中亦然,则称 为二分图(bipartite graph);特别地,若XYG,则 ,则称 为完全二分图,记成 。yx, )(Ex |,|YXK最短路、网络流、二分图1、 最短路问题(SPPshortest path problem)最短路径问题是图论中十分重要的最优化问题之一,它作为一个经常被用到的基本工具,可以解决生产实际中的许多问题,比如城市中的管道铺设,线路安排,工厂布局,设备更新等等。也可以用于解决其它的最优化问题。若 网 络 中 的 每 条 边 都 有 一 个 数 值 (长 度 、 成 本 、 时 间 等 ), 则 找 出 两 节 点 (通 常 是 源 节点

40、和 阱 节 点 )之 间 总 权 和 最 小 的 路 径 就 是 最 短 路 问 题 。 最 短 路 问 题 是 网 络 理 论 解 决 的 典型 问 题 之 一 , 可 用 来 解 决 管 路 铺 设 、 线 路 安 装 、 厂 区 布 局 和 设 备 更 新 等 实 际 问 题 。 最 短路 问 题 , 我 们 通 常 归 属 为 三 类单 源 最 短 路 径 问 题包 括 起 点 的 最 短 路 径 问 题 , 确 定 终 点 的 最 短 路 径 问 题 ( 与 确 定 起 点 的 问 题 相 反 , 该 问 题是 已 知 终 结 结 点 , 求 最 短 路 径 的 问 题 。 在 无

41、向 图 中 该 问 题 与 确 定 起 点 的 问 题 完 全 相 同 ,在 有 向 图 中 该 问 题 等 同 于 把 所 有 路 径 方 向 反 转 的 确 定 起 点 的 问 题 。 )确 定 起 点 终 点 的 最 短 路 径 问 题即 已 知 起 点 和 终 点 , 求 两 点 之 间 的 最 短 路 径 。全 局 最 短 路 径 问 题求 图 中 所 有 的 最 短 路 径 。 算 法 只 要 采 用 Floyed-Warshall 算 法 ( 这 是 弗 洛 伊 德 利 用 动态 规 划 (dynamic programming)的 原 理 设 计 的 一 个 高 效 算 法 )

42、 。Floyed-Warshall 算法用来找出每对点之间的最短距离。它需要用邻接矩阵来储存边,这个算法通过考虑最佳子路径来得到最佳路径。 注意单独一条边的路径也不一定是最佳路径。 从任意一条单边路径开始。所有两点之间的距离是边的权,或者无穷大,如果两点之间没有边相连。 对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是更新它。 不可思议的是,只要按排适当,就能得到结果。最短路算法:Dijkstra 算法Dijkstra 复杂度是 O(N2),如果用 binary heap 优化可以达到 O(E+N)logN),用fibonacci h

43、eap 可以优化到 O(NlogN+E) 其基本思想是采用贪心法,对于每个节点 vi,维护估计最短路长度最大值,每次取出一个使得该估计值最小的 t,并采用与 t 相连的边对其余点的估计值进行更新,更新后不再考虑 t。在此过程中,估计值单调递减,所以可以得到确切的最短路。 Dijkstra 程序: From clown studiovoid Dijkstra()for(int i=1;i disj )tmin = disj;k = j; usedk = 1;for(int j=1;j=2index=index(1);endindex2(temp)=index;endd, index1, inde

44、x2 运行结果为:d =0 35 45 35 25 10index1 =1 6 5 2 4 3index2 =1 6 5 6 1 1即:d(最短通路的值) 0 35 45 35 25 10index1(标号顶点顺序) 1 6 5 2 4 3From clown studioindex2(标号顶点索引) 1 6 5 6 1 12、 网络流(1)含义的理解网络流(network flows)是图论中的一种理论与方法,研究网络上的一类最优化问题 。(2)历史及应用1955 年 ,T.E. 哈里斯在研究铁路最大通量时首先提出在一个给定的网络上寻求两点间最大运输量的问题。1956 年,L.R. 福特和

45、D.R. 富尔克森等人给出了解决这类问题的算法,从而建立了网络流理论。所谓网络或容量网络指的是一个连通的赋权有向图 D (V、E、C) , 其中 V 是该图的顶点集,E 是有向边(即弧)集,C 是弧上的容量。此外顶点集中包括一个起点和一个终点。网络上的流就是由起点流向终点的可行流,这是定义在网络上的非负函数,它一方面受到容量的限制,另一方面除去起点和终点以外,在所有中途点要求保持流入量和流出量是平衡的。 最大流理论是由福特和富尔克森于 1956 年创立的 ,他们指出最大流的流值等于最小割(截集)的容量这个重要的事实,并根据这一原理设计了用标号法求最大流的方法,后来又有人加以改进,使得求解最大流

46、的方法更加丰富和完善 。最大流问题的研究密切了图论和运筹学,特别是与线性规划的联系,开辟了图论应用的新途径。 最大流问题仅注意网络流的流通能力,没有考虑流通的费用。实际上费用因素是很重要的。例如在交通运输问题中,往往要求在完成运输任务的前提下,寻求一个使总运输费用最省的运输方案,这就是最小费用流问题。如果只考虑单位货物的运输费用,那么这个问题就变成最短路问题。由此可见,最短路问题是最小费用流问题的基础。现已有一系列求最短路的成功方法。最小费用流(或最小费用最大流)问题 ,可以交替使用求解最大流和最短路两种方法,通过迭代得到解决。 目前网络流的理论和应用在不断发展,出现了具有增益的流、多终端流、

47、多商品流以及网络流的分解与合成等新课题。网络流的应用已遍及通讯、运输、电力、工程规划、任务分派、设备更新以及计算机辅助设计等众多领域。(3)算法的实现Edmonds-Karp 算法建立在 Ford-Fulkerson 方法上的增广路算法,与一般的 Ford-Fulkerson 算法不同的是,它用广度搜索实现对增广路的寻找. 以下为代码: int n;long int c128128;long maxflow(int s, int t)int p, q, queue128, u, v, pre128;long int flow, aug;flow = 0;while(true)memset(pre, -1, sizeof(pre);for(queuep = q = 0 = s; p 0) if(pret #includebool g201201;int n,m,ans;bool b201;int link

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报