图论模型在实际中的应用优质PPT.ppt
《图论模型在实际中的应用优质PPT.ppt》由会员分享,可在线阅读,更多相关《图论模型在实际中的应用优质PPT.ppt(66页珍藏版)》请在冰豆网上搜索。
G的边边的权重:
耗费时间点的权重:
换乘时间并不是一个简单图,两点间可能有多条边5937acb(8)考虑a经过b到c的最短路径由于有换乘的情况,只记录任意两点间的最短路径是不够的。
并非一个标准的图论模型与经典最短路径问题比较567acb(8)Min(a,b)=5Min(b,c)=3Min(a,c)=5+6=113转化成标准的图论模型每条公交线路抽象为一层层与层之间相连的顶点均代表同一个车站它们之间的边(虚线)的权值为换乘花费的时间调用M*M次Dijkstra算法才能得到最优解M为公交线路的总数回顾上图导致无法使用标准算法原因:
Min(a,b)和Min(b,c)之间需要计算附加耗时不用换车的线路成为最佳路径改进的想法:
一次性地处理不用换车的情况567acMin(a,b)=5Min(b,c)=3Min(a,c)=5+6=113b(8)模型的求解标准算法:
每次选择一个新顶点进行扩展所有顶点扩展完毕即为最优解修改后的算法每次对一个顶点所能选择的所有公交线路扩展所有不用换乘就能到达的顶点均在一次中处理所有顶点扩展完毕即为最优解.算法描述一次将扩展出多个顶点,用最小值堆保存初始:
起点对应的节点S入堆;
并赋予标志信息Time(S)=0取堆顶,对此定点,逐一枚举所有不用换乘就能到达的顶点,更新堆中对应点的标志信息.不断重复取堆顶的过程,直到取出的顶点为最终目标TTime(T)即为所求举例说明算法步骤3245132abcdefg1298159206119225考虑顶点考虑顶点b到顶点到顶点g的路径的路径问题重述加入步行的因素,即任意两个车站之间人都可能通过步行到达,并给出步行的时间代价.由于每两点之间均有步行路径,每次扩展都将涉及到所有顶点,复杂度增加不少改进的办法预处理找到两个相邻顶点之间路径的最小值,如果它加上两个顶点的权值之后后,仍然小于一些其它的路径,就可以将其它路径删除.这样至少可以删除不少步行路径考虑实际情况,可设定步行时间的上限.567ac加入步行的路径加入步行的路径并给定权值并给定权值20算法的总结关键在于如何解决换乘的耗时扩展节点的策略与经典算法不同算法实际用到了分支界限法的思想类似于回溯法,但是求解的目标不同。
目标:
找到使目标函数取极值的解。
分支界限法思想以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树从一个点开始,每次以一定的策略扩展一些结点。
每一个活结点一旦成为扩展结点,就一次性产生其所有子结点,并从活节点中移除。
在产生的子结点中,导致不可行解或导致非最优解的子结点被舍弃,其余的加入活结点表中。
选择扩展的节点从活结点表中选择下一扩展结点可能有不同的方式队列式分支限界法:
先入先出的原则优先队列式分支限界法:
选择优先级最高的节点进行扩展最大效益问题:
最大值堆最小耗费问题:
最小值堆一个简单的例子印刷电路板将布线区域划分为nm个方格阵列精确的电路板布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案。
布线时电路只能沿直线或直角布线。
为避免线路相交,已布线方格做上封闭标记,其他线路布线不允许穿过封闭区域。
ab11a11b2211a12212b232211a12212b2332211a12212b23432211a12212b234532211a12212b23456632211a12212b2345676732211a12212b23485678678建模步骤的总结模型的准备提出问题,搜集数据。
模型的假设根据实际情况,提出合理的假设简化问题。
模型的建立根据所作的假设分析对象的因果关系,利用对象的内在规律和适当的数学工具,构造各个量间的等式关系或其它数学结构。
建模步骤的总结模型的分析与求解已建立的模型是否有标准解法转化成标准模型对已有的标准解法修改,以适应模型的求解模型的检验灵敏性,鲁棒性模型的应用图论模型的引入引例现有6个人,任意两人之间或者相互认识,或者相互不认识,证明这6个人中,或者有3个人彼此都认识,或者有3个人彼此不认识思路一只有6个人,人数非常少,可以枚举任意两人之间的关系,然后判断每一种情况是否符合题意。
如果所有情况都满足,则命题成立。
虽然只有6个人,但是这样做的时间复杂度可不低,枚举次数为215只能借助计算机了。
有没有人可以直接证明的办法呢?
思路二有了图论这个强大的工具我们还是像往常一样,以人为顶点,关系为边,建图但是为了以后的直观,这里图的建立有一点小小的不同:
如果两个人之间相互认识,则在这两个人(顶点)间连一条红色边,如果两个人不认识,则在这两个人(顶点)间连一条蓝色边(下面会看到这样做的好处)那么这样我们就得到了一个由红边和蓝边组成的6阶完全图我们实际上要证明的就是这个图中或者存在一个红三角形(认识),或者存在一个蓝三角形(不认识)任取一个顶点v0,由它连出5条边到其它的顶点,这五条边只有红色和蓝色两种根据抽屉原理,肯定有一种颜色的边有3条或3条以上,不妨设为红色viv0vjvk如果vi,vj,vk之间的边都是蓝边,则图中存在一个蓝三角形如果至少有1条为红边,那么它总会与v0发出的两条红边组成一个红三角形。
这样就证明了这个命题现有n根长度不同的小木棍,每根木棍数量无限,取出一些小木棍可以拼出一根长度为这些小木棍长度之和的木棍。
现在要求最小的整数k,使得长度大于等于k的木棍都能够被给出的n根小木棍拼出。
例如,现在有3根小木棍,长度分别3,5,7它们可以拼出长度为3,5,6,7,8,9,10,11,12,13的木棍,看上去5就是答案,怎么证明呢?
可以考虑把能够拼出来的木棍长度x根据模3的结果分成3类(0,1,2)对于xmod3=0,3能够拼出来,那么6,9,12等等模3为0的数都可以被拼出来对于xmod3=1,7能被拼出来,那么7,10,13等等都能被拼出来对于xmod3=2,5能被拼出来,那么8,11,14等等都能被拼出来也就是说,5确实是我们要求的答案这个题看上去似乎毫无头绪,那就先看看简单的情况吧!
根据上面的证明,可以发现一种思路,不妨把上述结果推广一下:
设n根木棍的长度为L1,L2,Ln,不妨设L1为所有木棍中最短的现在把能够拼出的木棍长度根据模L1的结果分为L1类(0,1L1-1),若某一类中的数模L1的结果为i,则它们组成的集合为Si显然,如果存在一个集合Si为空,则问题无解现在考虑所有集合都不为空的情况:
设每个集合的最小元为b0,b1bl1-1(集合不为空,肯定存在最小元)那么如何去求题目要求的k呢?
考虑这样一个值:
k=maxbn-L1,1=n0.k不属于任何Si集合,否则与k是某个S中最小元。
即k不能被小木棍拼出。
对任意Lk,设LSp,L+L1maxbn=bp故Lbp-L1而Lbp(modp)所以L=bp,所以L一定能够被拼出由以上两点可知,k一定是不能被拼出的木棍长度中的最大值那么k+1就是我们要求的答案!
还剩下最后一步:
求b0,b1,b2bl1-1,也就是每个集合中的最小元事实上,每一个能被拼出来的木棍长度x,都是从0开始,用已有的小木棍拼出来的。
那么就可以把集合的编号看做顶点,小木棍的长度看边的长度,建立一个图。
对于每个点i(集合i),都连出n条边,长度为L1,L2Ln。
对于长度为Lk的边,连向编号为(i+Lk)modL1的顶点。
对于从顶点i到j的一条长度为L的路径,表示集合i中的一个数加上L后得到的数属于集合j。
对于任意一个能拼出来的数x(设xmodL1=p),根据上面的建图规则,x一定是点0到p的一条路径的长度。
反过来,0到p的所有路径长度都属于Sp。
所以,可以得出结论:
Sp中的最小元其实就是顶点0到顶点p的最短路径长度。
有了这个结论,我们就可以很容易的求出序列bn了至此,这个问题也就被完美的解决数学建模模型的选择、关系的简化很多问题都是通过建立图论模型解决的图论中常见的模型有序列、树、各种图如何有效选择数学模型,简化原问题中元素之间的关系是数学建模的关键题目坐船问题(改编自湖南省信息学省队选拔赛试题)北大有n个学生去公园划船:
一只船最多坐2个人;
出于娱乐目的,大家决定同船的2个人要么同姓要么同名;
每个人都必须上船,且不能有脚踏多只船的情况问最少需要几只船。
例子6个同学:
姚金宇,李金宇,姚峰宏,陈峰宏姚金宇姚峰宏陈峰宏李金宇姚金宇李金宇陈峰宏姚峰宏例子4个同学:
陈峰宏,囧峰宏,罗睿辞,廖叶子罗睿辞同学想和廖叶子同学坐同一船是不行的,因为他们不同名也不同姓陈峰宏囧峰宏罗睿辞廖叶子陈峰宏囧峰宏罗睿辞廖叶子将每一同学视为一元素,元素之间的关系为同名或者同姓构图是很自然的思路:
2名同学同名或者同姓就连一条边一条边就代表了一种坐船的搭配方式用最少的边覆盖图中的点一般图的最小边覆盖问题一般图最大匹配问题,算法复杂,实现麻烦。
建模姚金宇李金宇姚峰宏陈峰宏陈峰宏囧峰宏罗睿辞廖叶子建模图是本题信息最充分、最自然的模型,但其中数据关系存在很多冗余,没有充分利用原题的条件单独看同名、同姓这2种关系,它们都是等价关系,具有传递性那么换一种模型构造如何?
把图转换成树来考虑建模对于原图中的每一个连通分量,一定可以转换成一棵二叉树树中一个结点的左孩子跟其同姓;
一个结点的右孩子跟其同名。
证明用反证法罗睿辞罗贯中罗纳尔多廖睿辞罗睿辞罗贯中罗纳尔多廖睿辞问题的解决含有n个点的连通分量,至少需要(n+1)div2只船使用贪心法,一定可以构造出一个只需(n+1)div2只船的解罗睿辞罗贯中罗纳尔多廖睿辞罗纳尔多是罗贯中的独生子,去掉他们2个,树依然连通罗睿辞廖睿辞廖睿辞依然是罗睿辞的独生子,将它们分成一组罗贯中罗纳尔多罗睿辞廖睿辞得到了一个最优解贪心构造1、若叶子结点是父亲的独生子,则删去它们2个,树依然保持性质2、若父亲结点有2个孩子重复以上步骤直至树为空或者只剩一个结点为止贪心举例陈峰宏贾由陈云王云贾宝玉贾云贪心举例陈峰宏贾由陈云王云贾宝玉贾云贪心举例陈峰宏贾由陈云王云贾宝玉贾云陈峰宏贾由陈云王云贾宝玉贾云贪心举例贪心举例陈峰宏贾由陈云王云贾宝玉贾云贪心举例陈峰宏贾由陈云王云贾宝玉贾云小结通过无向图到二叉树的转化,将一个复杂的匹配问题用简单贪心解决了建模是一个去粗取精的过程,要尽可能利用对我们有利的信息,而忽略那些与我们目标无关的信息LCA与RMQ问题之间相互转化,就是树形模型与序列模型相互辅助的经典例子希望本例会对同学们今后的解题有所帮助!
数学建模看起来,总会让人觉得是一种很抽象的概念如果把概念简单一点,再通俗一点,大概就是把一些实际中碰到的问题抽象化,化简成类似的数学问题,然后就可以用我们已经知道的方法和工具来求解但是其实数学建模还有很多更深刻的含义和价值,不过已经超出我可以讲述的很清楚的范围了其它数学模型举例其它数学模型举例而且,其实计算机实现的问题建模不见得就一定局限于图论或者其他离散数