最短路径matlab计算机仿真

合集下载

matlab避障最短路径

matlab避障最短路径

matlab避障最短路径一、引言随着机器人技术的发展,自动化导航成为一个重要的研究领域。

在许多应用中,机器人需要通过复杂的环境中,避开障碍物并找到最短路径。

Matlab作为一种强大的数学计算工具,为我们提供了实现这一目标的丰富功能和工具。

二、建立环境模型在开始编写避障算法之前,首先需要建立机器人所在环境的模型。

可以使用Matlab的图形界面工具来实现,也可以通过编程方式来创建。

这里我们选择使用编程方式来建立环境模型。

在Matlab中,可以使用矩阵来表示环境模型。

假设我们的环境是一个网格,每个网格可以是空地、障碍物或起点/终点。

我们可以用不同的数值来表示不同的状态,例如0表示空地,1表示障碍物,2表示起点,3表示终点。

三、编写避障算法在建立环境模型之后,我们可以开始编写避障算法了。

这里我们使用A*算法来寻找最短路径。

A*算法是一种常用的启发式搜索算法,它通过估计当前节点到目标节点的代价来选择下一个节点,从而找到一条最短路径。

具体来说,A*算法通过维护一个开放列表和一个关闭列表来搜索最短路径。

初始时,将起点加入开放列表。

然后,重复以下步骤直到找到终点或开放列表为空:1. 从开放列表中选择代价最小的节点作为当前节点。

2. 如果当前节点是终点,搜索结束,返回最短路径。

3. 否则,将当前节点加入关闭列表,并计算其相邻节点的代价。

4. 对于每个相邻节点,如果它不在关闭列表中并且不是障碍物,则更新其代价,并将其加入开放列表。

四、Matlab实现在Matlab中,可以使用自定义函数来实现A*算法。

下面是一个简单的示例代码:```matlabfunction path = astar(start, goal, map)% 初始化开放列表和关闭列表openList = start;closeList = [];% 初始化起点的代价为0start.g = 0;while ~isempty(openList)% 选择开放列表中代价最小的节点作为当前节点[~, index] = min([openList.f]);current = openList(index);% 如果当前节点是终点,搜索结束if current == goalpath = reconstructPath(current);return;end% 将当前节点加入关闭列表closeList = [closeList, current];openList(index) = [];% 对当前节点的相邻节点进行处理neighbors = findNeighbors(current, map);for i = 1:length(neighbors)neighbor = neighbors(i);% 如果相邻节点在关闭列表中或是障碍物,跳过if ismember(neighbor, closeList) || map(neighbor) == 1continue;end% 计算相邻节点的代价g = current.g + 1;h = heuristic(neighbor, goal);f =g + h;% 如果相邻节点不在开放列表中,或其代价更小if ~ismember(neighbor, openList) || g < neighbor.gneighbor.g = g;neighbor.f = f;neighbor.parent = current;% 如果相邻节点不在开放列表中,加入if ~ismember(neighbor, openList)openList = [openList, neighbor];endendendend% 如果开放列表为空,搜索失败error('No path found.');endfunction path = reconstructPath(node)path = [];while ~isempty(node.parent)path = [node, path];node = node.parent;endendfunction neighbors = findNeighbors(node, map)% 根据当前节点的位置和地图大小,找到相邻节点[row, col] = size(map);neighbors = [];% 上方节点if node.row > 1neighbors = [neighbors, struct('row', node.row-1, 'col', node.col)];end% 下方节点if node.row < rowneighbors = [neighbors, struct('row', node.row+1, 'col', node.col)];end% 左方节点if node.col > 1neighbors = [neighbors, struct('row', node.row, 'col', node.col-1)];end% 右方节点if node.col < colneighbors = [neighbors, struct('row', node.row, 'col', node.col+1)];endendfunction h = heuristic(node, goal)% 使用曼哈顿距离作为启发函数h = abs(node.row-goal.row) + abs(node.col-goal.col);end```以上代码实现了A*算法,并提供了辅助函数来计算相邻节点、启发函数和重构最短路径。

最短路径 dijkstra算法的matlab代码实现

最短路径 dijkstra算法的matlab代码实现

最短路径dijkstra算法的matlab代码实现如何用Matlab实现Dijkstra算法求解最短路径问题?Dijkstra算法是一种用于计算图中的最短路径的经典算法。

该算法以一个起始节点为基础,通过不断更新节点到其他节点的最短距离,直到找到最短路径为止。

本文将一步一步地回答如何使用Matlab实现Dijkstra算法,以及如何在Matlab中构建图并求解最短路径。

第一步:构建图Dijkstra算法是基于图的算法,因此我们首先需要在Matlab中构建一个图。

图可以用邻接矩阵或邻接表等方式表示。

这里我们选择使用邻接矩阵来表示图。

在Matlab中,可以使用矩阵来表示邻接矩阵。

假设我们的图有n个节点,我们可以创建一个n×n的矩阵来表示图的邻接矩阵。

如果节点i和节点j 之间有一条边,则将邻接矩阵中的第i行第j列的元素设置为边的权重,如果没有边相连,则将元素设置为一个较大的值(例如无穷大)表示不可达。

现在,我们可以开始构建邻接矩阵。

这里以一个具体的例子来说明。

假设我们有一个包含6个节点的无向图,如下所示:0 1 2 3 4 5-0 0 4 3 0 0 01 4 0 1 4 0 02 3 1 0 2 1 03 04 2 0 3 24 0 0 1 3 0 25 0 0 0 2 2 0在Matlab中,可以将邻接矩阵表示为一个n×n的矩阵。

在这个例子中,我们可以这样定义邻接矩阵:G = [0 4 3 0 0 0;4 0 1 4 0 0;3 1 0 2 1 0;0 4 2 0 3 2;0 0 1 3 0 2;0 0 0 2 2 0];第二步:实现Dijkstra算法在Matlab中,我们可以使用一些循环和条件语句来实现Dijkstra算法。

下面是一个基本的Dijkstra算法的实现流程:1. 创建一个数组dist,用于存储从起始节点到其他节点的最短距离。

初始时,将起始节点到自身的距离设置为0,其他节点的距离设置为无穷大。

matlab最短路径实验报告

matlab最短路径实验报告

matlab最短路径实验报告一、实验目的本实验的目的是通过使用Matlab软件来实现最短路径算法,掌握最短路径算法的基本思路和实现方法,加深对图论知识的理解和应用能力。

二、实验原理最短路径算法是图论中一个重要的问题,它是指在一个加权有向图或无向图中从一个顶点到另一个顶点之间经过的边权值之和最小的路径。

常见的最短路径算法有Dijkstra算法、Bellman-Ford算法、Floyd-Warshall算法等。

本次实验采用Dijkstra算法来求解最短路径。

Dijkstra算法是一种贪心算法,它通过维护一个集合S来不断扩展已知最短路径集合S中所有节点到未知节点v之间的距离,并选取其中距离最小的节点u加入S中,直到所有节点都被加入S为止。

三、实验步骤1. 构建图首先需要构建一个加权有向图或无向图。

本次实验采用无向图,并使用邻接矩阵表示。

具体步骤如下:(1)定义节点数n和边数m;(2)定义邻接矩阵A(n*n),其中A(i,j)表示从i到j是否有边,如果有则为边的权值,如果没有则为无穷大。

2. 初始化(1)定义两个数组dist和visited,其中dist(i)表示从起点到节点i 的最短距离,visited(i)表示节点i是否已经加入集合S中;(2)将起点加入集合S中,并将visited数组对应位置设为1;(3)初始化dist数组,将所有非起点节点的距离设为无穷大。

3. 迭代更新(1)遍历集合S中所有节点u的邻居节点v,如果v未被加入集合S 中,则更新dist(v)的值。

具体而言,如果dist(u)+A(u,v)<dist(v),则更新dist(v)=dist(u)+A(u,v);(2)在所有未加入集合S中的节点中选取距离最小的节点u,并将其加入集合S中。

4. 输出结果输出起点到各个终点的最短路径长度和路径。

四、实验结果与分析本次实验构建了一个无向图,并使用Dijkstra算法求解了最短路径。

具体实现过程如下:1. 构建图构建了一个6个节点、8条边的无向图,邻接矩阵如下:0 6 4 Inf Inf Inf6 0 1 5 Inf Inf4 1 0 Inf Inf InfInf5InfInf0 Inf 1InfInfInf Inf0 2InfInfInf 1 2 0其中,Inf表示两个节点之间没有边。

matlab最短路径案例

matlab最短路径案例

matlab最短路径案例在实际生活和工作中,我们经常会遇到需要找到最短路径的问题,例如在物流配送中,我们需要计算货物从出发地到目的地的最短路线,以提高效率和节约成本。

在这种情况下,MATLAB是一种非常有效的工具,可以帮助我们快速计算出最短路径。

最短路径问题是计算图中两个节点之间最短路径的问题。

在MATLAB中,我们可以使用Graph和Dijkstra算法来实现最短路径的计算。

首先,我们需要构建一个图,用来表示节点和边。

在MATLAB中,我们可以使用Graph对象来表示图,并且可以使用addnode和addedge函数来添加节点和边。

G = graph();G = addnode(G, 5); % 添加5个节点G = addedge(G, 1, 2, 10); % 添加边,每条边都有一个权重G = addedge(G, 1, 3, 15);G = addedge(G, 2, 3, 8);G = addedge(G, 2, 4, 2);G = addedge(G, 3, 4, 6);G = addedge(G, 4, 5, 12);上面的代码创建了一个图,其中包含5个节点和6条边。

每条边都有一个权重,代表两个节点之间的距离。

接下来,我们可以使用dijkstra函数来计算最短路径。

这个函数需要指定图、起始节点和目标节点。

[start_node, end_node, shortest_dist] = shortestpath(G, 1, 5);上面的代码计算了图G中从节点1到节点5的最短路径,并且返回了起始节点、终止节点和最短路径的长度。

最后,我们可以使用plot函数将最短路径可视化。

plot(G, 'EdgeLabel', G.Edges.Weight) % 可视化图highlight(G, shortest_path, 'EdgeColor', 'r') % 高亮显示最短路径通过以上步骤,我们可以使用MATLAB计算并可视化最短路径。

MATLAB解决最短路径问题代码

MATLAB解决最短路径问题代码

默认是Dijkstra 算法是有权的, 我想如果把权都赋1的话, 就相当于没权的了参数是带权的稀疏矩阵及结点看看这两个例子(一个有向一个无向), 或许你能找到你想知道的% Create a directed graph with 6 nodes and 11 edgesW = [.41 .99 .51 .32 .15 .45 .38 .32 .36 .29 .21]; %这是权DG = sparse([6 1 2 2 3 4 4 5 5 6 1],[2 6 3 5 4 1 6 3 4 3 5],W) %有权的有向图h = view(biograph(DG,[],'ShowWeights','on')) %画图, 这个好玩% Find shortest path from 1 to 6[dist,path,pred] = graphshortestpath(DG,1,6) %找顶点1到6的最短路径% Mark the nodes and edges of the shortest pathset(h.Nodes(path),'Color',[1 0.4 0.4]) %上色edges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));set(edges,'LineColor',[1 0 0]) %上色set(edges,'LineWidth',1.5) %上色下面是无向图的例子% % Solving the previous problem for an undirected graph% UG = tril(DG + DG')% h = view(biograph(UG,[],'ShowArrows','off','ShowWeights','on')) % % Find the shortest path between node 1 and 6% [dist,path,pred] = graphshortestpath(UG,1,6,'directed',false)% % Mark the nodes and edges of the shortest path% set(h.Nodes(path),'Color',[1 0.4 0.4])% fowEdges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));% revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(path)),'ID')); % edges = [fowEdges;revEdges];% set(edges,'LineColor',[1 0 0])% set(edges,'LineWidth',1.5)clc;close all; clear;load data;% global quyu;quyu = [2,3];%一片区域z_jl = lxjl(jdxx,lxxh);%计算路线的距离z = qyxz(jdxx,quyu,z_jl);% 根据节点信息,从z中将y区域的节点和路线选出所有点的信息hzlx(z);%绘制Z的图像[qypt, nqypt] = ptxzm(xjpt,quyu);changdu = length(bhxz(jdxx,1:6));%选出x中y区的标号,只是分区域,求长度并绘制它tt = z(:,[1,2,end])';k = min(min(tt(1:2,:)));%求两次最小值t = tt(1:2,:) ;xsjz = sparse(t(2,:),t(1,:),tt(3,:),changdu,changdu);%产生稀疏矩阵[dist, path, pred] = zdljxz(xsjz, qypt, k );%三个原包矩阵通过zdljxz计算得到最短路径hold onfor j = 1:nqyptcolors = rand(1,3);%产生随机数并用颜色标记hzptxc(path{j},jdxx,colors)endhold offaxis equal%把坐标轴单位设为相等zjd = jdfgd( path, quyu);function z = lxjl(x, y)%计算路线的距离[m n] = size(y);for i = 1:myy(i,1:2) = x(y(i,1),2:3);yy(i,3:4) = x(y(i,2),2:3);endz = sqrt((yy(:,3) - yy(:,1)).^2 + (yy(:,2) - yy(:,4)).^2);y = sort(y');y = y';z = [y yy z];z = sortrows(z);function [z lz] = ptxz(xjpt,y)pt = xjpt(:,2);wei = ismember(xjpt(:,1),y);z = pt(wei);lz = length(z);unction hzptxc(path,jdxx,colors)n = length(path);% hold onfor i = 1:nhzptjd(jdxx, path{i},colors)end% hold offunction hzptjd(jdxx,x,colors)% m = length(x);% x = x';hold onplot(jdxx(x,2),jdxx(x,3),'o','LineStyle' ,'-' ,...'Color',colors,'MarkerEdgeColor',colors)plot(jdxx(x(1),2),jdxx(x(1),3),'*','MarkerFaceColor',colors)hold offfunction hzlx(x)%绘制x的图像[m n] = size(x);hold onfor i = 1:mplot([x(i,3) x(i,5)],[x(i,4) x(i,6)],'k:')endhold offfunction z = bhxz(x,y)%选出x中y区的标号,只是分区域xzq = x(:,4);xzr = ismember(xzq,y);z = x(xzr,:);z = z(:,1);。

利用Matlab编程计算最短路径及中位点选址

利用Matlab编程计算最短路径及中位点选址

139§19. 利用Matlab 编程计算最短路径及中位点选址1、最短路问题两个指定顶点之间的最短路径。

例如,给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线。

以各城镇为图G 的顶点,两城镇间的直通铁路为图G 相应两顶点间的边,得图G 。

对G 的每一边e ,赋以一个实数)(e w —直通铁路的长度,称为e 的权,得到赋权图G 。

G 的子图的权是指子图的各边的权和。

问题就是求赋权图G 中指定的两个顶点00,v u 间的具最小权的轨。

这条轨叫做00,v u 间的最短路,它的权叫做00,v u 间的距离,亦记作),(00v u d 。

求最短路已有成熟的算法:迪克斯特拉(Dijkstra )算法,其基本思想是按距0u 从近到远为顺序,依次求得0u 到G 的各顶点的最短路和距离,直至0v (或直至G 的所有顶点),算法结束。

为避免重复并保留每一步的计算信息,采用了标号算法。

下面是该算法。

(i) 令0)(0=u l ,对0u v ≠,令∞=)(v l ,}{00u S =,0=i 。

(ii) 对每个i S v ∈(i i S V S \=),用)}()(),({min uv w u l v l iS u +∈代替)(v l 。

计算)}({min v l iS v ∈,把达到这个最小值的一个顶点记为1+i u ,令140}{11++=i i i u S S 。

(iii). 若1||-=V i ,停止;若1||-<V i ,用1+i 代替i ,转(ii)。

算法结束时,从0u 到各顶点v 的距离由v 的最后一次的标号)(v l 给出。

在v 进入i S 之前的标号)(v l 叫T 标号,v 进入i S 时的标号)(v l 叫P 标号。

算法就是不断修改各项点的T 标号,直至获得P 标号。

若在算法运行过程中,将每一顶点获得P 标号所由来的边在图上标明,则算法结束时,0u 至各项点的最短路也在图上标示出来了。

最短路径问题matlab求解详尽版

最短路径问题matlab求解详尽版

最短路径问题m a t l a b求解详尽版Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】MATLAB 求最短路径利用graphshortestpath 可以求最短路径,具体用法参考MATLAB帮助Examples:S=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; %起始节点向量E=[2 3 5 4 4 6 5 7 8 6 7 8 9 9 9]; %终止节点向量W=[1 2 12 6 3 4 4 15 7 2 7 7 15 3 10]; %边权值向量,有向图,G(9,9)=0; 9个节点G=sparse(S,E,W); %关联矩阵的稀疏矩阵表示G(9,9)=0;P=biograph(G,[],'ShowWeights','on');%建立有向图对象PH=view(P);%显示各个路径权值[Dist,Path]=graphshortestpath(G,1,9,'Method','Dijkstra') %求节点1到节点9的最短路径set(Path),'Color',[1 ]);%以下三条语句用红色修饰最短路径edges=getedgesbynodeid(H,get(Path),'ID'));set(edges,'LineColor',[1 0 0]);set(edges,'LineWidth',;%以下是运行结果,节点1到节点9的最短路径为19Dist =19Path =1 3 4 5 7 9利用graphallshortestpaths可以求出所有最短路径Dists=graphallshortestpaths(G) %求所有最短路径Dists =0 1 2 5 9 6 16 12 19Inf 0 Inf 6 10 8 17 13 20Inf Inf 0 3 7 4 14 10 17Inf Inf Inf 0 4 2 11 7 14Inf Inf Inf Inf 0 Inf 7 Inf 10Inf Inf Inf Inf Inf 0 Inf 7 15Inf Inf Inf Inf Inf Inf 0 Inf 3Inf Inf Inf Inf Inf Inf Inf 0 10Inf Inf Inf Inf Inf Inf Inf Inf 0。

matlab 单源最短路径

matlab 单源最短路径

matlab 单源最短路径Matlab单源最短路径算法是计算机科学中非常重要的算法之一,该算法可以解决许多实际问题。

本文将针对Matlab单源最短路径,进行详细介绍。

1.问题的定义:对于一个带权无向图,如何从其中的某一节点出发,找到到其他节点的最短路径?2.算法思想:Dijkstra算法是解决单源最短路径问题的一个经典算法。

该算法基于贪心思想,每次选择当前距离源点最近的一个没有确定最短路径的点作为下一步的目标,并依据这个点来更新其余点到源点的距离。

3.算法流程(1)初始化:将源点标记为已确定最短路径,将源点到其余点的距离赋值给初始路径。

(2)迭代:对于未确定最短路径的点,选择距离源点最近的点标记为已确定最短路径,更新其余点到源点的距离。

(3)结束条件:当所有节点都被标记为最短路径或者无法到达时,算法结束。

4.算法实现:以一个典型的图作为例子,展示Dijkstra算法在Matlab中的实现过程。

由于在Matlab中没有提供图数据结构,我们需要手动定义节点和边的信息。

这里我们采用数组来存储节点和边的信息,如下:G = sparse([1 1 1 2 2 3 3 4],... %边所连接的节点[2 3 4 3 4 4 5 5],...[2 1 5 3 2 3 1 3],... %边的权值5,5); %定义图的大小此时,G表示一个含有5个节点和8条边的无向图,权值保存在3行中。

接下来,定义源点、初始路径、标记点位,并进行循环计算。

在每一次循环中,找到当前未标记节点中距离源点最短的节点,将其标记,更新其余节点到源点的距离,并赋值到路径变量中。

5.算法应用:Matlab的单源最短路径算法可应用于很多实际问题中。

除了传统的路由算法,也可应用于社交网络中的用户推荐、电子商务中的商品推荐等多个领域。

综上所述,Matlab单源最短路径算法是计算机科学中非常重要的算法之一,具有广泛的应用场景。

如果读者想要深入学习该算法,可以通过Matlab提供的简单实例进行探索。

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

计算机仿真期末作业
姓名:吴隐奎 班级:04601 学号:041751 日期:2007-6-15
题目:Floyd 算法实现和分析
内容:用MATLAB 仿真工具实现Floyd 算法,求任意两端间的最短路径。

要求:尽可能用M 函数分别实现算法的关键部分,用M 脚本来进行算法结果验证;分别用以下两个图(用初始距离矩阵表示)进行算法验证:
图一:(0)0 100 100 1.2 9.2 100 0.5100 0 100 5 100 3.1 2100 100 0 100 100 4 1.51.2 5 100 0 6.7 100 1009.2 100 100 6.7 0 15.6 100100 3.1 4 100 15.6 0 1000.5 2 1.5 100 100 100 0]W ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
图二:(0)
0 0.5 2 1.5 100 100 1000.5 0 100 100 1.2 9.2 1002 100 0 100 5 100 3.11.5 100 100 0 100 100 4100 1.2 5 100 0 6.7 100100 9.2 100 100 6.7 0 15.6100 100 3.1 4 100 15.6 0W ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
算法:给定图G 及其边(,)i j 的权,(1,1)i j w i n j n ≤≤≤
≤ F0:初始化距离矩阵(0)W
和路由矩阵(0)R 。

其中: (0)0ij ij ij ij w e E w e E i j ∈⎧⎪=∞∉⎨⎪=⎩ 若(有边) 若(无边)
若(对角线元素)
(0)(0)w 0,ij ij
j r ⎧≠∞=⎨⎩ 若 其它 F1:已求得(-1)k W 和(-1)k R ,依据下面的迭代求()k W 和()k R
()(1)(1)(-1),,,,min(,)k k k k i j i j i k k j w w w w --=+
(1)()(1),,,(),(1)()(1),,,k k k i k i j i j k i j k k k i j i j i j
r w w r r w w ----⎧<⎪=⎨=⎪⎩ 若 若 F2:若k<n ,重复F1;若k=n ,终止。

仿真:
用四个m 文件来实现仿真,其中main 为主函数,首先测试出矩阵的长度,然后赋给n ,作为循环的次数;然后调用func1实现路由矩阵的初始化,把第k-1次的值付给a 后,调用func2函数来迭代求出k 次的w 值,调用func3函数,根据a (实际上为k-1次w 值)值和k 次w 值来求出k 次r 值。

迭代循环n 次。

主要程序:
n=length(w);
r=func1(w,n);
for k=1:n
a=w;
w=func2(w,n,k);
r=func3(a,w,r,n,k);
end;
Func1实现路由矩阵的初始化
主要程序
for i=1:1:n
for j=1:1:n
if x(i,j)==100
r0(i,j)=0;
else
r0(i,j)=j;
end,
end;
end;
Fuuc2该函数实现的功能是根据k-1次w 的值迭代求k 次w 的值
主要程序
for i=1:n
for j=1:n
w(i,j)=min(s(i,j),s(i,k)+s(k,j));
end
end
Func3来根据k-1次w 值和k 次w 值的大小求k 次R 的值
主要程序:
for i=1:n
for j=1:n
if i==j
r(i,j)=0;
elseif w(i,j)<a(i,j)
r(i,j)=r(i,k);
else
r(i,j)=r(i,j);
end
end
end
结果:
图一的结果:
w=
0 2.5000 2.0000 1.2000 7.9000 5.6000 0.5000
2.5000 0
3.5000 3.7000 10.4000 3.1000 2.0000
2.0000
3.5000 0 3.2000 9.9000
4.0000 1.5000
1.2000 3.7000 3.2000 0 6.7000 6.8000 1.7000
7.9000 10.4000 9.9000 6.7000 0 13.5000 8.4000
5.6000 3.1000 4.0000
6.8000 13.5000 0 5.1000
0.5000 2.0000 1.5000 1.7000 8.4000 5.1000 0
r=
0 7 7 4 4 7 7
7 0 7 7 7 6 7
7 7 0 7 7 6 7
1 1 1 0 5 1 1
4 4 4 4 0 4 4
2 2
3 2 2 0 2
1 2 3 1 1 2 0
可以看出:V4和V6之间最短距离是6.8,最短路由是V4—>V1—>V7—>V2—>V6 V3和V4之间最短距离是3.2,最短路由是V3—>V7—>V1—>V4
图二的结果:
w =
0 0.5000 2.0000 1.5000 1.7000 8.4000 5.1000
0.5000 0 2.5000 2.0000 1.2000 7.9000 5.6000
2.0000 2.5000 0
3.5000 3.7000 10.4000 3.1000
1.5000
2.0000
3.5000 0 3.2000 9.9000
4.0000
1.7000 1.2000 3.7000 3.2000 0 6.7000 6.8000
8.4000 7.9000 10.4000 9.9000 6.7000 0 13.5000
5.1000 5.6000 3.1000 4.0000
6.8000 13.5000 0
r =
0 2 3 4 2 2 3
1 0 1 1 5 5 1
1 1 0 1 1 1 7
1 1 1 0 1 1 7
2 2 2 2 0 6 2
5 5 5 5 5 0 5
3 3 3
4 3 3 0
端点对V1和V7之间最短距离是5.1,最短路由是V1—>V3—>V7
端点对V3和V5之间最短距离是3.7,最短路由是V3—>V1—>V2—>V5
端点对V1和V6之间最短距离是8.4,最短路由是V1—>V2—>V5—>V6
总结:通过一个学期计算机仿真课的学习,我现在已经能很熟练的使用的仿真工具matlab来进行一些简单的系统仿真,系统的仿真,能很好的帮助我们去理解各种模型,验证书本上的理论知识,而且仿真在系统设计中也有很重要的应用,通过仿真,可以节约成本和时间。

所以这门课的学习,对我以后的学习和工作有很大的帮助。

相关文档
最新文档