2008/2009学年度第二学期《数据结构》课程设计说明书题目:学校超市选址问题班级:姓名:学号:指导教师:日期:2009-6-22~2009-6-26计算机与信息工程系1、问题描述对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同
请为超市选址,要求实现总体最优
2、需求分析核心问题:求最短路径(选址的要求就是超市到各单位权值之和最少)数据模型(逻辑结构):带权有向图(权值计算:距离*频度)存储结构:typedefstruct{stringvexs[MAX_VERTEX_SIZE];intarcs[MAX_VERTEX_SIZE][MAX_VERTEX_SIZE];intvexnum;//,arcnum;}MGraph;核心算法:Floyd算法(弗洛伊德算法-每一对顶点之间的最短路径)输入数据:各单位名称,距离,频度,单位个数.输出数据:所选单位名称.总体思路:如果超市是要选在某个单位,那么先用floyd算法得出各顶点间的最短距离/最小权值
假设顶点个数有n个,那么就得到n*n的一张表格,arcs(i,j)表示i单位到j单位的最短距离/最小权值,这张表格中和最小的那一行(假设为第t行),那么超市选在t单位处就是最优解
3、开发环境1
硬件环境:PC兼容机2
软件环境:VisualC++6
操作系统:Windows20004、算法设计思想Floyd算法利用动态规划思想,通过把问题分解为子问题来解决任意两点见的最短路径问题
设G=(V,E,w)是一个带权有向图,其边V={v1,v2,…,vn}
对于k≤n,考虑其结点V的一个子集
对于V中任何两个结点vi、vj,考虑从vi到vj的中间结点都在vk中的所有路径,设是其中最短的,并设的路径长度为
如果结点vk不在从vi到vj的最短路径上,则;反之则可以把分为两段,其中一段从vi到vk,另一段从vk到