数据结构 课程设计报告 设计题目: 学校超市选址问题 专 业 班 级 学 生 学 号 指导教师 起止时间 2009
28~2009
31 2009 年 秋季 学期 《数据结构》课程设计 第 1 页 1 1、问题描述 对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同
请为超市选址,要求实现总体最优
2、需求分析 核心问题: 求最短路径(选址的要求就是超市到各单位权值之和最少) 数据模型(逻辑结构): 带权有向图 (权值计算: 距离*频度) 存储结构: typedef struct { string vexs[MAX_VERTEX_SIZE]; int arcs[MAX_VERTEX_SIZE][MAX_VERTEX_SIZE]; int vexnum;// ,arcnum; }MGraph; 核心算法: Floyd算法(弗洛伊德算法-每一对顶点之间的最短路径) 输入数据: 各单位名称,距离,频度,单位个数. 输出数据: 所选单位名称. 总体思路: 如果超市是要选在某个单位,那么先用 floyd算法得出各顶点间的最短距离/最小权值
假设顶点个数有 n个,那么就得到 n*n的一张表格,arcs(i,j)表示 i单位到 j单位的最短距离/最小权值 , 这张表格中和最小的那一行(假设为第 t行),那么超市选在 t单位处就是最优解
3、开发环境 1
硬件环境:PC兼容机 2
软件环境:DEV-C++5 3
操作系统:Window s XP 4、算法设计思想 Floyd算法利用动态规划思想,通过把问题分解为子问题来解决任意两点间的最短路径问题
设G=(V, E, w)是一个带权有向图,其边V={v1, v2, …, vn}
对于 k≤n,考虑其结点 V的一个子集
对于 V中任何两个结点 vi、vj,考虑从 vi到 vj的中间结点都在 v