西南交通大学数学建模校赛C题景区灭火_第1页
西南交通大学数学建模校赛C题景区灭火_第2页
西南交通大学数学建模校赛C题景区灭火_第3页
西南交通大学数学建模校赛C题景区灭火_第4页
西南交通大学数学建模校赛C题景区灭火_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南交通大学2012年大学生数学建模竞赛题目: B 参赛队员1参赛队员2参赛队员3姓名刘童超王枝李若晗学号200857282010470220104693学院数学学院信息学院信息学院专业统计计软计软电话Email西南交通大学教务处西南交通大学实验室及设备管理处西南交通大学数学建模创新实践基地景区灭火的数学模型【摘要】本文采用网格划分的方法,将连续性问题离散化,建立了图论及其相关模型。同时运用MATLAB的图形处理能力进行了三维制图及一维二维插值,运用C+进行了Dijsktra等算法的编程计算,进而合理的解决了问题。第一问中,考虑到等高线的缺失是由于“破损”,我们舍弃了曲线模拟,而采用了一维插值

2、的方法,并用MATLAB给出了插值曲线,并直观的将曲线拟合至原等高线,发现其效果良好。对于插值结果与直观观察的差异,我们给出了误差分析,并解释了原因。第二问中,在已知等高线高度的情况下,我们采用了二维插值的方法,并利用MATLAB软件画出了三维地形图,将景区外貌直观的呈现了出来,在计算地表面积时,我们采用了划分网格、近似求值的方法,利用MATLAB所给出的网格平面与水平面的夹角,估算出了地表面积,约为26.6,对于其误差,我们也进一步给出了分析。第三问中,我们利用第二问中所求出的高度矩阵,用网格中心点代替此网格,给出了任意两点的空间距离,即任意两点的权重,从而建立了一个图论模型,对于该无向图,

3、我们采用Dijkstra算法利用C+,确定出了最佳路线,并运用MATLAB作图直观的将路线做了出来,并估算出最优路线的空间距离长度约为4567m。第四问中,我们将着火点简化为几个最有可能发生火灾并且救援不方便的点,建立了一个目标规划的模型,然后在一定范围内,对消防点进行了假设,利用第三问的C+程序求出了到着火点的最长时间,移动消防点求出了最优消防站的地址。计算得出结论:在给定的坐标系下,最优消防站点的位置位于点(28,25)。【关键词】:网格离散化 大型稀疏阵 三次样条插值 最短路线 MATLAB C+一、问题的提出某国家级森林公园的地形等高图如图1所示。由于该风景区植被丰富,拥有大量的国家级

4、重点保护动植物,因此旅游管理部门在图1的A点设置了景区消防站,当景区发生火灾时能及时控制和消灭火情。图 1说明:该图水平及竖直方向以10m为单位,山高以50m为单位。请你利用所学数学知识回答以下问题:1、由于人为原因,图1所示的等高图出现了局部破损的情况,请利用数学模型修补好该地图;2、在完成第一问的基础上,结合数学模型建立该景区的三维地形图,并估计该景区的地表面积;3、某天图1所示的B点发生了火灾,于是需要从景区消防站派遣消防员去B点灭火,建立模型确定最佳灭火路线。4、如果需要对景区消防站进行重新选址,请建立模型确定合理的消防站地址。二、模型假设1.该公园的俯视图是一个5120m5120m的

5、正方形(一个像素单位为10m),相邻两等高线的高程差为50m;2.由于该公园植被丰富,故假设消防员步行灭火;3.消防员在前往灭火地点的过程中速度均匀;4.山体表面为连续可导的光滑曲面,其等高线之间的山体均匀线性变化;5.每一网格的山体近似看做平面;6.消防员的路线近似沿网格正交方向。三、符号说明1.第个网格,即其编号方式为先行后列,其具体编号过程见2. 表示整个景区的表面积;3. 表示第个网格的面积;4. 表示第个网格与水平面的夹角;5.表示点到点的权值。四、问题分析第一问中,需要修补该地形图缺失的等高线,主要有两种方法:一是平面插值,二是曲线拟合。由于曲线拟合的原则是使各点距拟合曲线的距离平

6、方和最小,故拟合曲线基本不过已知点。而考虑到题目所给前提为“等高图破损”,故等高线需过已知点,因此我们选用平面插值方法。插值方法有很多种,比如拉格朗日插值,艾米尔特插值,三次样条插值等,我们可以根据各自优劣来选择其插值方式,进而利用MATLAB软件编程计算,绘制出等高线。第二问中,需要画出景区的三维地形图,经过分析,可以利用MATLAB强大的数据处理功能对问题进行求解。对于未知坐标点的高程,可以用MATLAB进行二维插值,从而绘制出地形图。在需要计算地表面积的时候,可以根据假设5的平面假设,利用分块求和的方法,计算出地表面积。第三问中,需要寻找最佳路线,使消防员由消防站A赶到火灾点B的时间最短

7、,即在假设3的速度均匀的条件下,求一条最短时间的路线。可以将最短时间问题简化为最短路径的问题。而对于每两个已经简化的点,由C+编程可以算出其路径,然后根据Dijkstra算法,可以求出其最短路径,即最佳灭火路线。为了将直观将结果展现出来,我们可以做出它的路径图。第四问中,需要选择合理的消防站地址,这是图论中的选址问题,目标是该消防站到最远处的景区着火点时间最短,为了避免繁琐的运算,我们可以将着火点选取在几个最不利的位置,将消防站选取在尽量“中心”的位置,运用C+编程对之进行遍历,进而求出最佳消防站地址。五、模型的建立及求解5.1地图修补模型的建立及求解由问题分析可知,我们在等高线的修补过程中宜

8、采用插值法而不是曲线拟合,而对于插值法则有拉格朗日插值、艾米尔特插值、三次样条插值、线性插值等,下面我们将对几种主要的插值方法进行比较。不同插值方法的比较a.拉格朗日插值拉格朗日插值是将已知的n个点用n-1次多项式进行插值,其优点是在整个区间,只需要一个简单多项式函数去拟合,但其缺点也显而易见,即在已知点过多的情况下,反而易出现龙格现象即在一些点不收敛于原函数。b.线性插值线性插值是将相邻的两个插值点之间用直线相连,这样的整个区间上的插值函数是一个分段函数。其优点是在单个区间上的函数简单,而缺点不能保证在整个函数区间中都可导,这样的插值方法与假设3中的可导性假设相矛盾,故在此不适用。c三次样条

9、插值三次样条插值函数在各个区间中均是三次函数,并且在各个点中均连续可导,这样良好的性质在物理等领域中有着广泛的用途,鉴于此,我们在等高线的修补一问中选择这种方法。插值模型的建立与求解如图1建立坐标系,并通过比例尺量取所需要的点的坐标。图1因为在进行插值运算时,选取的点个数太多会造成方程复杂并且误差过大,而选取点的个数太少会又造成信息量不足而不够精确,故经过分析比较,我们选取4-6个已知点作为插值点,具体选取点如下:等高线1等高线2等高线3等高线4等高线5等高线6(12,37)(22,33)(15,43)(17,37)(17,41)(19,40)(13,36)(24,33)(16,38)(19,

10、36)(18,38)(20,38)(15,35)(26,33)(17,36)(24,35)_(20,37)(22,37)(18,33)(28,33)(19,35)(26,35)(22,36)(24,36.5)(19,32)(21,34)(24,35.5)(26,36.5)(20,32)(23,34)(26,35.5)(22,31)表1各等高线的插值点的选取(单位:百米)利用以上数据,使用MATLAB对各个等高线进行三次样条插值,并输出结果,其中程序详见附录1等高线1-6的插值函数图像输出如图2图2 插值曲线将以上所得等高线插入原图所缺失的部分,所得到的修补等高线如图3所示(其中红色部分为修补部

11、分):图3修补后的等高线图.误差分析从图3可以看到,某些地方所插入的等高线趋势稍显不自然,这是由以下因素引起的:1).工程误差。在工程测量中,等高线的测量都是由有限个测量的准确值经插值而成,换而言之,其等高线并不是“处处精确”,只要满足工程需要就可以了。所以,在这插值的误差中,这部分工程误差不可避免,但却是允许的。2)人为误差。在模型的建立及求解的过程中,我们需要量取需要的点的坐标,尽管我们使用了CAD的坐标量取功能,但仍在读取坐标等步骤难免出现误差,这部分误差会随着工作精细程度的增加而降低。3)系统误差。在选择插入方法的时候,我们考虑到连续可导性的要求,选择了三次样条插值,如果选用其他插值方

12、法的话,结果又会有所差异。这种误差在改进插值方法后可以降低。5.2.表面积估计模型的建立及求解.网格离散化由于该山体是一个极不规则的空间立体曲面,而且除了等高线上的点的高程,其他高程我们并不知道。而该山体的边界条件处理也是极其复杂的,所以用连续性方法将曲面方程求出来再用积分的方法求出地表面积的分析解是不现实的。于是我们采用离散型方法,将平面地形图划分成若干个方格,将每个方格近似看做一个平面,从而可以用二维平面插值的方法和各部分累加求和的方法求出三维地形图和地表面积,这其实是一种数值近似算法的思想。考虑到该公园的面积相当大,并且消防站及火灾面积均相当大,我们没有必要求出地表面积及地形图的精确值,

13、故我们将该森林公园划分为5151个方形区域,每个网格大小约为100m100m.坐标系的建立及划分结果如图4图4三维地形图的建立在仅已知地形图等高线的情况下,欲建立该景区的三维地形图,我们可以采用二元插值的方法。二元插值的思想与一元插值的基本思想一致,对原始数据点(x,y,z)构造函数求出插值点的数据。在此,我们在x方向和y方向均采用三次多项式插值。MATLAB所编程序详见附录2,运算的三维地形结果图见图5图5从以上三维地形图可以清楚的直观认识到该景区的地表形状,为后面的表面积估计模型和最佳灭火路线模型的建立提供了直观的认识。地表面积的估算在经过的网格划分之后,每一块山体近似看作一个平面,该平面

14、和水平面有一个夹角,如图6,该斜平面的面积与之在水平面的投影面积有关系: (5-1)图6整个景区的地表面积S可以由以下公式计算: (5-2)其中S为整个景区的地表面积为第i个网格的水平面投影面积,这里=100m100m=10000为第i个网格平面与水平面的二面角,其取值可以通过插值的方法求出来,由于取值太多,全部取值见附件。经过EXCEL的计算可以得出结果S=2663 10000=26.6误差分析在该景区地表面积的估计中,误差主要来自以下三个方面1)的选取。是根据线性插值的方法得来的,该运算过程将与实际情况出现偏差。2)的运算。我们在知道之后,再来计算tan与sec,该过程的数据有效位数将使结

15、果出现误差。3)山体各网格平面为平面的假设。该山体的表面肯定为一个不规则三维曲面,我们将每一个网格假设成一个平面,将会导致误差。不过,总的来说,这些误差是不可避免的,并且该误差也是满足工程需求的。5.3最佳路线模型的建立及求解网格点的高度值一个网格中有很多点,我们将其中心部分的高度近似看做该网格的平均高度,则一个平面则简化为一个“点”。对于这些点的高度,可以用附录2的二维平面MATLAB插值方法求得,表2摘录了B点所在的山的一部分高度,它表示的坐标范围为(16,41)到(26,51),单位为m,完整数据见附件。000000000000000005560656565004555595980858

16、585852055655995951051001001001005565591001101001251401501501507559100125100125160175185190190591001258100125150200215230225225591101001251502152302502602852755912510012515023025526528530030059120150125150235260275305325325表2有了这些数据,我们就可以求出任意两点的空间距离。相邻网点的空间距离附件中的“高度”文件中中表示了任意网点i的高度,这是一个5151的矩阵,不妨记为A,我

17、们需要由此求出任意相邻两点的空间距离(为了计算方便,我们在容许误差的情况下,假设路线仅沿X、Y方向),这是一个26012601的矩阵,不妨记为B。 对于编号转换的问题,我们采用先行后列的方法,即将A矩阵中的点(a,b)记为B矩阵中的第个点(n为矩阵的列数,此处为51)。B中的第i个点在A中对应的行标和列标分别为: (5-3) (5-4)其中n为矩阵A的列数,此处为51。X表示对X向下取整,如5.9=5,-3.2=-4。表示Y除X的余数。由勾股定理可知,B矩阵中任意元素 (5-5)其中、分别为矩阵A中点,的值、的计算见式(5-3)(5-4)100为两相邻网格点的距离,单位为m,由假设6的方向正交

18、性假设可知,很多元素为无穷大inf和0,其中既不为0也不为inf的点必须满足以下四条之一:故B矩阵为一个大型稀疏矩阵,已知高度矩阵A,生成距离权重矩阵B的C+程序见附录3,其结果为一个26012601的矩阵,该矩阵详见附件。最短路径的确定在将网格简化为点,其中的距离看做一个权重之后,整个图便成了一个无向图,于是我们可以采用图论中的最短路径的算法来求出从A点到B点的最短路径。最短路径的算法一般有两种,Floyd算法和Dijkstra算法,我们将在C+编程的基础上采用后者。下面我将介绍一下Dijkstra算法。Dijkstra算法:=0,L(v)=, ,转;对每一用代替,设为中最小者令,转;若则停

19、止;若则转。此时,每个顶点所标L(v)即为到u的最短距离,此算法的复杂度为度为,(顶点数v的平方的一个同阶量)。Dijkstra算法不仅给出了两点之间的最短距离,而且由此可得到最短路线。利用C+编程我们可以得到结果,详细编程程序见附录4详细输出结果见附录5,其主要结果如下:638(13, 26) -> 689(14, 26) -> 740(15, 26) -> 791(16, 26) -> 842(17, 26) -> 893(18, 26) -> 944(19, 26) -> 995(20, 26) -> 1046(21, 26) ->1

20、097(22, 26) -> 1148(23, 26) -> 1147(23, 25) -> 1198(24, 25) -> 1249(25, 25) -> 1300(26, 25) -> 1351(27, 25) -> 1402(28, 25) -> 1453(29, 25) -> 1504(30, 25) -> 1555(31, 25) -> 1554(31, 24) -> 1553(31, 23) -> 1552(31, 22) -> 1551(31, 21) -> 1550(31, 20) -&g

21、t; 1549(31, 19) -> 1548(31, 18) -> 1599(32, 18) -> 1650(33, 18) -> 1649(33, 17) -> 1700(34, 17) -> 1699(34, 16) -> 1698(34, 15) -> 1749(35, 15) -> 1748(35, 14) -> 1747(35, 13) -> 1746(35, 12) -> 1745(35, 11) -> 1744(35, 10) -> 1743(35, 9) -> 1794(36, 9) -

22、> 1845(37, 9) -> 1896(38, 9) -> 1947(39, 9) -> 1998(40, 9) -> 2049(41, 9)经计算知,该最短距离为4567.00(百米)利用MATLAB编程,将该路线直观表示在景点平面图上结果如图7,其详细编程程序见附录6图7从上图7可知,从消防站到火灾发生点时,为了让时间最短,路程最短,需要翻越一座不高的山,从而使火灾损失降为最低。误差分析以上的模型难免带有误差,其误差主要来自于一下几个方面。1)方向正交性假设。我们为了合理的减少计算量,将消防员的路线假设为与X、Y轴平行的直线,这样的结果难免与实际情况有所偏

23、差,其路线稍显机械。2)速度匀速性假设。由于景区的山的坡度不大,我们假设消防员的运动速度为一个定值,这样的假设也会引起误差。3)网格平面性假设。由于真实的山体不会有如此规则的表面,这样的假设也会引起误差。5.4消防站选址模型的建立及求解一般说来,确定最佳消防站点的选择时,应假设一个消防站点,再将景区边缘点假设为着火点,求出该消防点到着火点的最长时间,再调整该消防站点的位置,使最大时间最小,这便是一个运筹学中的最大值最小化模型,不过该模型实际上是不可行的,因为据估算,该模型的复杂度达到了1016,远远超出了普通计算机的运算能力,故我们将对该模型做以下简化。由于景区山上植被丰富,容易发生火灾,故我

24、们假设火灾发生在山区部分,而且根据直观经验,我们将站点的选择范围限制于点矩形(26,21),(28,21),(26,29)(28,29)之内,然后利用第三问所给出的程序及结果,借用C+编程,求得了不同消防站点的位置到各个可能的着火点的最长时间,移动站点的位置,求得了该时间的最小值。建立了“最大值最小化”优化模型,其编程详见 附录7,其输出结果如下:如果在1097建立,距离和为10184.00.如果在1098建立,距离和为10071.00.如果在1099建立,距离和为9957.00.如果在1148建立,距离和为9882.00.如果在1149建立,距离和为9771.00.如果在1150建立,距离和

25、为9657.00.如果在1199建立,距离和为9578.00.如果在1200建立,距离和为9471.00.如果在1201建立,距离和为9359.00.如果在1250建立,距离和为9287.00.如果在1251建立,距离和为9166.00.如果在1252建立,距离和为9065.00.如果在1301建立,距离和为8978.00.如果在1302建立,距离和为8872.00.如果在1303建立,距离和为8771.00.如果在1352建立,距离和为9062.00.如果在1353建立,距离和为8956.00.如果在1354建立,距离和为8855.00.如果在1403建立,距离和为9161.00.如果在14

26、04建立,距离和为9055.00.如果在1405建立,距离和为8954.00.如果在1454建立,距离和为9239.00.如果在1455建立,距离和为9133.00.如果在1456建立,距离和为9032.00.如果在1505建立,距离和为9339.00.如果在1506建立,距离和为9233.00.如果在1507建立,距离和为9132.00.所以应当建立在第 1303 个地点, 其距离和为 8771.00.该点在地形图上的直观表示如图8:图8六、模型评价6.1.模型特点1)该模型在确保精确的前提下,另辟蹊径,将平面划分为若干个网格,将连续性问题离散化,从而建立起图论中的最短路模型,并利用MATL

27、AB和C+强大的计算能力给出了解答。2)大型矩阵的处理是该模型的另一个特点,本文建立了诸如5151、26012601的大型矩阵,为了节约内存,加快处理速度,本文运用了MATLAB处理大型稀疏阵的能力。3)本文模型的解答过程中体现了队友熟练的C+编程技巧,运用C+编出了Dijkstra算法,目标规划算法等多个程序。4)本文建立的插值模型、最短路模型以及规划模型均具有一定的可扩展性,而应用于其他领域。6.2模型缺点1)该模型的假设过多,比如速度均匀性假设、山体表面光滑性假设,这些假设导致了一些系统误差。2)由于计算机运算能力的限制,第四个模型并没有将所有点当做消防站的候选地址进行扫描选择。七、参考

28、文献1 陈汝栋,于延荣,数学模型与数学建模,北京:国防工业出版社,2006年1月.2 韩中庚,数学建模竞赛,北京:科学出版社,2008年4月.3 刘峰,数学建模,南京:南京大学出版社,2005年9月.4 郑阿奇,MATLAB实用教程,北京:电子工业出版社,2007年1月.附录1:利用MATLAB对等高线进行一维三次样条插值subplot(2,3,1) %将图放在第一个子图中x=22 20 19 18 15 13 12;y=30 31 32 33 35 36 37; %输入x,y的对应坐标xi=12:0.02:22 %输入需要插值的点yi=interp1(x,y,xi,'spline&#

29、39;);%选择插值方式为“三次样条插值”plot(x,y,'o',xi,yi,'r.') %将原始数据和插值数据绘制在一个子坐标图中,颜色为黄色,线性为.subplot(2,3,2)x=22 24 26 28;y=33 33 33 33;xi=22:0.02:28yi=interp1(x,y,xi,'spline')plot(x,y,'o',xi,yi,'r.')subplot(2,3,3)y=43 38 36 35 34;x=15 16 17 19 21;xi=34:0.05:43yi=interp1(x,y,

30、xi,'spline')plot(x,y,'o',xi,yi,'r.')subplot(2,3,4)x=17 19 24 26;y=37 36 35 35;xi=17:0.02:26yi=interp1(x,y,xi,'spline')plot(x,y,'o',xi,yi,'r.')subplot(2,3,5)x=26 24 22 20 18 17;y=35.5 35.5 36 37 38 41;xi=17:0.02:26yi=interp1(x,y,xi,'spline')plot

31、(x,y,'o',xi,yi,'r.')subplot(2,3,6)x=26 24 22 20 19;y=36.5 36.5 37 38 40;xi=19:0.02:26yi=interp1(x,y,xi,'spline')plot(x,y,'o',xi,yi,'r.')附录2.利用MATLAB对曲面进行二维插值x=50:100:5050 y=50:100:5050z=; %此处输入已知点的高度矩阵,由于数据较多,该部分数据详见附件mesh(x,y,z') %画出原来数据的网格图xi=linspace(1,

32、5050,100); %选择x方向上的插值点yi=linspace(0,5050,100); %选择y方向上的插值点xii,yii=meshgrid(xi,yi); %将插值点网格化zii=interp2(x,y,z',xii,yii,'cubic'); %选择三次多项式插值mesh(xii,yii,zii) % 绘制出插值后的网格曲线附录3.利用MATLAB生成2601*2601的空间距离矩阵a=input('请输入高度矩阵')n,m=size(a)b=zeros(m*n,m*n);for i=1:m*n for j=1:m*n if i=j b(i,

33、j)=0; elseif i-j=1|j-i=1|j-i=n|i-j=n b(i,j)=sqrt(a(floor(i-1)/m)+1,mod(i-1,m)+1)-a(floor(j-1)/m)+1,mod(j-1,m)+1)2+1002); else b(i,j)=inf; end endendfor k=n:n:n*m b(k,k+1)=inf; b(k+1,k)=inf;endb(:,n*m+1)=;b(n*m+1,:)=附录4.基于Dijkstra算法用C+编程求最短路径#include<cstdio>#include<cstring>#include<io

34、stream>#include<queue>#include<algorithm>using namespace std;const int maxN = 2601 + 2;const int maxE = 2601 * 2601 + 2;struct node int v; double w; node *nxt;node *GmaxN; int N;node EmaxE; int nE;void init() nE = 0; memset(G, 0, sizeof(G);void add(int u, int v, int w) EnE.v = v; EnE.

35、w = w; EnE.nxt = Gu; Gu = &EnE+;const double inf = 1e+15;double distmaxN;int pathmaxN;double spfa(int s, int t) queue<int> q; bool tagmaxN; for(int i = 0; i < maxN; i+) disti = inf; memset(path, -1, sizeof(path); dists = 0; tags = 1; q.push(s); int u; while( !q.empty() ) u = q.front();

36、q.pop(); tagu = 0; for(node *e = Gu; e ; e = e->nxt) if( (distu + e->w + 1e-9) < diste->v ) diste->v = e->w + distu; pathe->v = u; if( !tage->v ) tage->v = 1; q.push(e->v); int tmp = t; while( tmp != -1 ) printf(" -> %d(%d, %d)", tmp, (tmp / 51) + 1, (tmp %

37、 51) + 1); tmp = pathtmp; printf("n"); return distt;int main() freopen("data.out", "r", stdin); N = 2601; / 顶点个数 init(); / 图的初始化过程 double val; / 读入 N * N 的矩阵 for(int i = 0; i < N; i+) for(int j = 0; j < N; j+) scanf("%lf", &val); add(i, j, val); int

38、s = 2049 - 1, t = 638 - 1; / 源点序号和终点序号 / 计算结果 printf("最短距离: %.2lfn", spfa(s, t); return 0;附录5.最佳灭火路线的Dijkstra算法的C+输出结果638(13, 26) -> 689(14, 26) -> 740(15, 26) -> 791(16, 26) -> 842(17, 26) -> 893(18, 26) -> 944(19, 26) -> 995(20, 26) -> 1046(21, 26) ->1097(22, 2

39、6) -> 1148(23, 26) -> 1147(23, 25) -> 1198(24, 25) -> 1249(25, 25) -> 1300(26, 25) -> 1351(27, 25) -> 1402(28, 25) -> 1453(29, 25) -> 1504(30, 25) -> 1555(31, 25) -> 1554(31, 24) -> 1553(31, 23) -> 1552(31, 22) -> 1551(31, 21) -> 1550(31, 20) -> 1549(3

40、1, 19) -> 1548(31, 18) -> 1599(32, 18) -> 1650(33, 18) -> 1649(33, 17) -> 1700(34, 17) -> 1699(34, 16) -> 1698(34, 15) -> 1749(35, 15) -> 1748(35, 14) -> 1747(35, 13) -> 1746(35, 12) -> 1745(35, 11) -> 1744(35, 10) -> 1743(35, 9) -> 1794(36, 9) -> 1845

41、(37, 9) -> 1896(38, 9) -> 1947(39, 9) -> 1998(40, 9) -> 2049(41, 9)最短距离: 4567.00Process returned 0 (0x0) execution time : 10.367 sPress any key to continue.附录6.利用MATLAB生成最短路径图y=13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 31 31 31 31 31 31 31 32 33 33 34 34 34 35 35 35 35 35

42、35 35 36 37 38 39 40 41x=26 26 26 26 26 26 26 26 26 26 26 25 25 25 25 25 25 25 25 24 23 22 21 20 19 18 18 18 17 17 16 15 15 14 13 12 11 10 9 9 9 9 9 9 9x=x*10;y=y*10;pic=imread('¸½¼þ.bmp');imshow(pic);hold on;text(x,y,'*');附录7.最优选址模型的C+编程实现#include<cstdio>#i

43、nclude<cstring>#include<iostream>#include<queue>#include<algorithm>using namespace std;const int maxN = 2601 + 2;const int maxE = 2601 * 2601 + 2;struct node int v; double w; node *nxt;node *GmaxN; int N;node EmaxE; int nE;void init() nE = 0; memset(G, 0, sizeof(G);void add(int u, int v, int w) EnE.v = v; EnE.w = w; EnE.nxt = Gu; Gu = &EnE+;const double inf = 1e+15;doubl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论