这是一个图论的问题图是一个加权有向图,我已经算出各个顶点之间的最短距离就是根据这个加权有向图来选择3个地点作为自来水厂的位置算法:第一步:从28个地点中 任选3个点 来作为自来

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/31 06:33:20

这是一个图论的问题
图是一个加权有向图,我已经算出各个顶点之间的最短距离
就是根据这个加权有向图来选择3个地点作为自来水厂的位置
算法:
第一步:从28个地点中 任选3个点 来作为自来水厂的选址位置
第二步:除去选中的3个点,遍历剩下的25个点,求出每个地点到三个选址地点的最短距离,然后再求出这25个点到最近自来水厂的最短距离之和,使最短距离之和最小
怎样用Lingo编程来实现这个算法
火急

Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等
注意:你的指定点开始的问题,直接从把下面的东西看完后,应用(6)就可以解决,任意开始点的话,就把所有点都指定一下就行了.
再补充一个,这个算法一般图论书上都有,但是写的非常之高深莫测,看不懂的.建议去看清华大学的数据结构与算法这本书上的算法,(蓝色封皮的)
设S为最短距离已确定的顶点集(看作红点集),V-S是最短距离尚未确定的顶点集(看作蓝点集).
①初始化
初始化时,只有源点s的最短距离是已知的(SD(s)=0),故红点集S={s},蓝点集为空.
②重复以下工作,按路径长度递增次序产生各顶点最短路径
在当前蓝点集中选择一个最短距离最小的蓝点来扩充红点集,以保证算法按路径长度递增的次序产生各顶点的最短路径.
当蓝点集中仅剩下最短距离为∞的蓝点,或者所有蓝点已扩充到红点集时,s到所有顶点的最短路径就求出来了.
注意:
①若从源点到蓝点的路径不存在,则可假设该蓝点的最短路径是一条长度为无穷大的虚拟路径.
②从源点s到终点v的最短路径简称为v的最短路径;s到v的最短路径长度简称为v的最短距离,并记为SD(v).
(3)在蓝点集中选择一个最短距离最小的蓝点k来扩充红点集
根据按长度递增序产生最短路径的思想,当前最短距离最小的蓝点k的最短路径是:
源点,红点1,红点2,…,红点n,蓝点k
距离为:源点到红点n最短距离+边长
为求解方便,设置一个向量D[0..n-1],对于每个蓝点v∈ V-S,用D[v]记录从源点s到达v且除v外中间不经过任何蓝点(若有中间点,则必为红点)的"最短"路径长度(简称估计距离).
若k是蓝点集中估计距离最小的顶点,则k的估计距离就是最短距离,即若D[k]=min{D[i] i∈V-S},则D[k]=SD(k).
初始时,每个蓝点v的D[c]值应为权w,且从s到v的路径上没有中间点,因为该路径仅含一条边.
注意:
在蓝点集中选择一个最短距离最小的蓝点k来扩充红点集是Dijkstra算法的关键
(4)k扩充红点集s后,蓝点集估计距离的修改
将k扩充到红点后,剩余蓝点集的估计距离可能由于增加了新红点k而减小,此时必须调整相应蓝点的估计距离.
对于任意的蓝点j,若k由蓝变红后使D[j]变小,则必定是由于存在一条从s到j且包含新红点k的更短路径:P=.且D[j]减小的新路径P只可能是由于路径和边组成.
所以,当length(P)=D[k]+w小于D[j]时,应该用P的长度来修改D[j]的值.
(5)Dijkstra算法
Dijkstra(G,D,s){
//用Dijkstra算法求有向网G的源点s到各顶点的最短路径长度
//以下是初始化操作
S={s};D[s]=0; //设置初始的红点集及最短距离
for( all i∈ V-S )do //对蓝点集中每个顶点i
D[i]=G[s][i]; //设置i初始的估计距离为w
//以下是扩充红点集
for(i=0;iD[k]+G[k][j])
//新红点k使原D[j]值变小时,用新路径的长度修改D[j],
//使j离s更近.
D[j]=D[k]+G[k][j];
}
}
(6)保存最短路径的Dijkstra算法
设置记录顶点双亲的向量P[0..n-1]保存最短路径:
当顶点i无双亲时,令P[i]=-1.
当算法结束时,可从任一P[i]反复上溯至根(源点)求得顶点i的最短路径,只不过路径方向正好与从s到i的路径相反.
.
Dijkstra算法的时间复杂度为O(n2)
参考资料:http://student.zjzk.cn/course_ware/data_structure/web/tu/tu7.5.2.htm

这是一个图论的问题图是一个加权有向图,我已经算出各个顶点之间的最短距离就是根据这个加权有向图来选择3个地点作为自来水厂的位置算法:第一步:从28个地点中 任选3个点 来作为自来 加权无向图是什么 加权平均法的公式悬赏30分我有两个数据A=34;B=45理论上C=A*B现在我需要得到这样一个C,C是A的加权70%和B的加权30%得到的加权平均结果,请问应该怎么计算. C语言编程,求解非加权无向图(简单图)的平均路径长度请给出一个非加权无向图的求解其平均路径长度的程序,C语言.只是,非加权无向图要像以下的格式那样给出.graph sample {a -- b;b -- c;c -- a;} 强连通的有向加权图最小生成树的算法设计针对强连通的有向加权图,设计算法,求解该图的最小生成树,并从数学上证明其正确性.解答中包含算法、证明和一个实例. 什么叫加权平均数?加权是一个什么概念? 汽车加权加速度和振动加速度是一个意思吗? 最短路径Floyd算法有一个无向加权图,利用Floyd算法可以求出任意两个节点之间的最短路径.但是,如果需要找出一个节点,使其距离图中其他所有节点的路径之和最短.除了枚举所有的点之外,有没 有向图G的强连通分量是指-----,一个连通图的---是一个极小连通子图 图中提到的加权是什么意思? 一个简单的动态电路问题如图,是一个可以起振荡的电路,谁能帮我分析一下它是怎么起振的.麻烦各位大侠给我讲解一下,如果有什么电路基础的书(向我这种文盲也能看的懂的)帮我介绍一下 一见路程 向遇问题我就晕晕的!谁能告诉我作题时的思路?还有 我记得有一个公式是关于顺风速度 和风速的 高密度电法反演图件解释,谁能帮我解释一个图件498664781这号码有问题…我的电话号码是? 圆周运动质点轨迹的问题如图,V是质点的切向速度方向,而V1是加速度方向,Vn是两个速度合成之后的效果,那么我有一个疑问,质点最终到底是沿着Vn的速度方向运动呢,还是沿着弧ab的轨迹运动, 河里的水为什么都会流向海洋这是我孩子向我提的问题,希望大家能给我一个正确易懂的答案, 有一个投影仪照向平面镜然后再照向屏幕的一个图中,若要在屏幕中得到一个更大的像,应该是将凸透镜向哪里移动?我老师说向下 我没明白...他说往下移动是对的吗?不是应该往后移动才是缩 这是一个非常敏感的问题恐怕不应该向新闻界透露英语怎么说 一个数学计算题,如果X1,X2,…,Xn是来自总体X的样本.证明:样本的加权均数 为总体均值μ的无偏估计?如图这个很长的计算公式看不懂呀,第一个等号后面是怎么变过来的