数据结构超市选址问题.docVIP

  • 4
  • 0
  • 约8.21千字
  • 约 16页
  • 2024-01-19 发布于湖北
  • 举报

PAGE1/NUMPAGES15

课程设计报告书

题目:学校超市选址问题

目录

需求分析········································3

概要设计········································3

详细设计········································3

调试分析········································9

用户使用说明····································9

测试结果········································9

参考文献·······································15

1.需求分析

输入数据:

各单位编号;

各单位到超市的距离;

各单位人去超市的频度;

按照以上输入数据创建图;

为超市选址实现总体最优

1、该程序可以读取文件中相邻两地点的距离信息,在程序中用邻接矩阵构造一个有向网,并计算网中任意节点到其它节点的最短路径并输出。

2、在磁盘中新建一个文件存储两个地点的距离信息,要求先输入起点,以空格间隔,然后输入终点,再以空格间隔,然后输入这两个地点间的距离,如此法,依次输入各路径间的起点,终点和距离。

3、根据界面所给的提示信息首先输入保存交通网的文件名,然后输入要求哪一个节点到其它节点的最短路径。

4、程序运行后,在屏幕上将输出所求节点经过某些中转站到达它所能达到的节点及最短路径的值,并将各节点与其对应的编号保存到文件“编号与地名对照表”中,以便它用。

5、程序执行的命令包括:(1)求place数组中的记录在顶点向量中的坐标、(2)采用邻接矩阵存储结构,构造有向网

6.输出最优解。

2.概要设计

本程序主要采用带权图来实现超市选址实现总体最优的一些功能。

1.刚开始我们用频度(即人流量)X距离作为权值,算权值最小的,但当距离一定时,人流量大的反而不被选择

如果用距离/频度(即人流量)作为权值,比如一个离1M频度为1人的单位,和离100M频度为100人的单位就出现问题了

2.最后我们想还是人流量最重要了,但网上都说要用在main函数中通过子函数sistant()来求出各单位到超市的距离的平方和,之后求出距离平方和与人数的关系,最后算出相对的最短距离从而确定超市的最优地址。

基本操作:

CreatGraph(MGraphG)

操作结果:采用邻接矩阵存储结构,构造有向网G

LocateVex(MGraphG,char*place)

初始条件:用邻接矩阵存储的有向网G已存在

操作结果:返回place数组中的记录在顶点向量中的坐标

3.详细设计

实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图N–S图或PAD图进行描述,画出函数和过程的调用关系图。

(1)元素类型:typedefintVRType;

typedefstructVRType

{

floatAdj;

intAdjnum;

intAdjfrequency;

}VRType;//存储距离和频度作为权值,权值类型

typedefchar*VertexType;

typedefcharPathMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedefint*ShortPathTable;?

(2)结点类型:typedefstructAreCell

{

VRTypeadj;//权值

InfoType*info;//附加信息

}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedefstruct

{

VertexTypevexs[MAX_VERTEX_NUM];

AdjMatrixarcs;//邻接矩阵

intvexnum,arcnum;//顶点个数,弧的条数

}MGraph;

(3)主程序模块:

voidmain()

{

MGraphG;

intv,Adjcountminvexnum;//Adjcountmin记录当前总权值的最小值

doubleAdjcountmin;//Adjcountminvexnum记录当前总权值的最小值对应的起点顶点编号

文档评论(0)

1亿VIP精品文档

相关文档