【数学建模 matlab 实验报告5】最短路问题作业

上一篇:【数学建模 matlab 实验报告4】非线性规划作业

目录

实验报告

实验心得


实验报告

给定一个图G,其顶点集和边集以及对应的权重如下图所示,计算以下问题:

  1. 写出该图的邻接矩阵A;
  1. 写出该图的关联矩阵M;

(3)利用MATLAB画出该图并在图上标记出相应边的权重(提示:利用graph函数和graph函数);

截图:

代码:

Matlab 复制代码
edges = [1 3;1 2;2 4;3 4;4 5;4 7;5 7;5 6;6 7;6 8;7 8];

weights = [10;3;5;6;4;10;5;9;3;4;6];

G = graph(edges(:,1), edges(:,2), weights);

plot(G, 'EdgeLabel', G.Edges.Weight);

(4)利用MATLAB求出顶点v1到顶点v8之间的最短路及其长度,同时在图上将最短路对应的边进行红色突出显示(提示:利用shortestpath函数);

截图:

代码:

Matlab 复制代码
[Path, Distance] = shortestpath(G, 1, 8);

highlight(plot(G), Path, 'EdgeColor', 'r');

title(['Shortest path length: ' num2str(Distance)]);

(5)利用MATLAB求出从顶点v1到所有其他顶点的最短路径树(提示:利用shortestpathtree函数);

截图:

代码:

Matlab 复制代码
[Tree, Distances] = shortestpathtree(G, 1);

plot(Tree, 'EdgeLabel', Tree.Edges.Weight);

(6)利用MATLAB求出所有顶点对之间的最短路径距离(提示:利用distances函数)。

截图:

代码:

Matlab 复制代码
DistMatrix = distances(G);
disp(DistMatrix);

实验心得

本次围绕图论中最短路问题开展 MATLAB 实验,系统完成了图的矩阵表示、可视化绘制、单源最短路、最短路径树及全顶点最短距离求解等系列操作,将抽象的图论理论与编程实践紧密结合,不仅夯实了专业知识,也提升了工程化解决问题的能力,收获十分丰富。

实验从图的基础矩阵表示入手,让我重新梳理了邻接矩阵和关联矩阵的核心定义与构建逻辑。邻接矩阵直观反映顶点间的直接连接关系与权重,关联矩阵则清晰刻画顶点与边的归属关系,这两种矩阵是图论计算的基础。通过手动构建与程序验证,我深刻理解到矩阵建模是将实际图形转化为计算机可处理数据的关键步骤,规范准确的矩阵输入,是后续所有计算顺利开展的前提,也让我认识到数据结构化表达在图论问题中的重要性。

利用 MATLAB 内置graph函数实现图的可视化绘制,是理论具象化的重要环节。通过输入边集和权重,快速生成直观的网络图并标注权重,让抽象的顶点和边变得清晰可见。这一过程让我体会到 MATLAB 在图处理上的便捷性,可视化不仅能直观验证模型正确性,还能为后续路径分析提供直观参考,也让我掌握了工程中图形化展示数据结果的实用方法。

最核心的最短路求解环节,让我深入理解了 Dijkstra 等经典算法的实际应用。借助shortestpath函数快速求解顶点 1 到顶点 8 的最短路径,并通过高亮功能标记路径,既验证了算法的高效性,也直观呈现了最优路径。这让我明白,编程工具封装了复杂的算法迭代逻辑,使用者可以聚焦问题本身,同时也提醒我,理解算法原理是合理运用工具的基础。而最短路径树的求解,实现了从单个目标点到全顶点的最优路径规划,让我认识到最短路问题在全局网络优化中的拓展应用,适用于通信、交通、物流等多场景的全局路径规划。

通过distances函数求解所有顶点对之间的最短距离矩阵,让我感受到 MATLAB 处理大规模图数据的优势。距离矩阵完整呈现了网络中任意两点的最短路径长度,为全局网络分析、节点重要度评估等提供了数据支撑。这一操作让我意识到,图论最短路问题不仅是点对点的路径寻找,更是网络全局优化的重要工具。

本次实验让我充分体会到理论与实践结合的重要意义。课堂上的图论概念和算法原理较为抽象,而通过 MATLAB 编程实现,将公式和定义转化为可运行的代码和可视化图形,知识变得更加直观易懂。同时,实验培养了我严谨的建模思维和细致的编程习惯,从矩阵构建、函数调用到结果验证,每一步都需要精准操作,任何细节错误都会影响最终结果。

此外,实验也让我看到最短路问题的广泛应用价值,无论是交通路线规划、物流配送优化,还是网络通信路由选择,都离不开最短路算法的支撑。掌握 MATLAB 求解图论问题的方法,不仅能完成基础的实验任务,更为后续解决实际工程优化问题奠定了坚实基础。整体而言,本次实验全面提升了我的图论理论水平和编程实践能力,让我对图论算法的应用有了更深刻、更全面的认知。

相关推荐
不只会拍照的程序猿2 小时前
《嵌入式AI筑基笔记04:python函数与模块01—从C的刻板到Python的灵动》
c语言·开发语言·笔记·python
ada0_ada12 小时前
Qt的Widgets项目
开发语言·qt
1104.北光c°2 小时前
Leetcode146 LRU缓存的三种写法 【hot100算法个人笔记】【java写法】
java·开发语言·笔记·算法·leetcode·hot100·lru缓存
花千树-0102 小时前
用 Java 实现 RAG 组件化:从 PDF 加载到智能问答全流程
java·开发语言·人工智能·langchain·pdf·aigc·ai编程
Dovis(誓平步青云)2 小时前
《QT学习第一篇:QT的概述与安装、信号与槽》
开发语言·qt·学习·功能详解
AI帮小忙2 小时前
CTF安全竞赛能力矩阵
开发语言·php
2301_789015622 小时前
C++11新增特性:列表初始化&左值引用&右值引用&万能引用&移动构造&移动赋值&引用折叠&完美转发
c语言·开发语言·c++·c++11
赫瑞2 小时前
Java中的进制转换
java·开发语言
lsx2024063 小时前
jQuery 删除元素
开发语言