首页 > 试题广场 >

医院应建的村庄和最远村庄到医院的最短路程

[问答题]
给定n个村庄之间的交通图,顶点表示村庄,边表示村庄之间有道路,边上的权表示道路的长度。现在要从这n个村庄中选择一个村庄建一所医院,在n个可选的方案中,选择其中使得离医院最远的村庄到医院的路程最短的方案建医院。试设计求解该问题的算法,并应用该算法对下图所示的实例进行解答,回答:医院应建的村庄和最远村庄到医院的最短路程。

该题可用求每对顶点间最短路径的FLOYD算法求解。求出每一顶点(村庄)到其它顶点(村庄)的最短路径。在每个顶点到其它顶点的最短路径中,选出最长的一条。因为有n个顶点,所以有n条, 在这n条最长路径中找出最短一条,它的出发点(村庄)就是医院应建立的村庄。    void  Hospital(AdjMatrix w,int n)     //在以邻接带权矩阵表示的n个村庄中,求医院建在何处,使离医院最远的村庄到医院的路径最短。    {for (k=1;k<=n;k++)   //求任意两顶点间的最短路径       for (i=1;i<=n;i++)          for (j=1;j<=n;j++)            if (w[i][k]+w[k][j]<w>s) s=w[i][j];         if (s<=m) {m=s; k=i;}//在最长路径中,取最短的一条。m记最长路径,k记出发顶点的下标。        Printf(“医院应建在%d村庄,到医院距离为%d\n”,i,m);        }//for }//算法结束 对以上实例模拟的过程略。在A(6) 矩阵中,各行中最大数依次是9,9,6,7,9,9。这几个最大数中最小者为6,故医院应建在第三个村庄中,离医院最远的村庄到医院的距离是6。 </w>
发表于 2020-07-29 12:00:55 回复(0)