【超市地址选址实验报告】
本实验报告主要针对的是学校超市的选址问题,旨在通过理论与实践结合的方式,训练学生如何运用数据结构与算法设计解决实际问题。在这个问题中,我们需要找到一个位置,使得该超市到学校内其他各个单位的距离乘以相应单位人员去超市的频度之和最小,从而实现总体最优。
我们定义了数据模型,这是一个带权有向图。图的每个顶点代表一个单位,边的权重由两个因素决定:单位之间的距离和单位人员去超市的频度。存储结构采用了邻接矩阵,即`MGraph`结构,包含顶点名称数组`vexs`,邻接矩阵`arcs`,以及顶点数量`vexnum`。
核心算法是Floyd算法,这是一种用于寻找图中任意两点之间最短路径的动态规划方法。其基本思想是通过逐步增加中间节点来逐步优化路径,将原问题转化为求解所有顶点对之间的最短路径。具体而言,Floyd算法会迭代地检查所有可能的中间节点,每次迭代都会尝试改进当前已知的最短路径。最终,当所有中间节点都被考虑过之后,得到的就是所有顶点对之间的最短路径。
实验步骤主要包括:
1. 输入基本信息,如单位数量、单位间的路径数、单位名称、单位间的距离和频率等。
2. 建立邻接矩阵的存储结构,用以表示图的关系。
3. 应用Floyd算法,更新邻接矩阵,得到所有单位之间的最短距离或最小权值。
4. 输出每个单位到其他单位的最短路径和路径长度。
5. 找到最小权值总和的那一行,即第`t`行,这表示超市选址在`t`单位时能实现总体最优。
在提供的代码过程中,`CreatMgraph`函数用于获取输入信息并初始化邻接矩阵,而`Floyd`函数执行Floyd算法。通过`dis`数组记录单位间最短距离,`f`数组记录单位去超市的频率,然后在主函数`Main`中调用这些函数,输出最终的超市选址结果。
通过这个实验,学生不仅能够掌握数据结构和算法的设计与应用,还能锻炼解决实际问题的能力,尤其是将现实世界的复杂问题抽象成计算机可处理的模型。此外,Floyd算法的使用也让学生理解了动态规划在解决最短路径问题上的优势,进一步增强了他们的算法思维。