数学建模第七章图与网络方法建模7.3设备更新与中心选址.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于 d(a) 4 最小,所以首先对 a 着色,并对边
(s, a) 着色。由于 t 未着色,继续上述步骤。
4、令 y a ,比较还未着色的顶点。
d(b) min d(b), d(a) a(a,b) 7 d(d) min d(d), d(a) a(a, d) 6 d(t) min d(t), d(a) a(a,t)
为中间顶点的最短路径长度。
2、令 d(s) 0 ,并对所有 x s ,有 d(x) ,对顶点 s 着
色并令 y s 。
3、对于每一个未着色顶点 x ,重新定义 d(x) 如下:
d(x) min d(x), d( y) a( y, x)
如果对于所有未着色的顶点 x , d(x) ,则
§3 设备更新与中心选址
一、指定顶点对之间的最短路径算法 对图 G 每一条边 ei 都规定一个正实数 a(ei ) 与之
对应,所得到的图称为赋权图,称 a(ei ) 为边 ei 的权。 边 (vi , v j ) 上的权记成 a(vi , v j ) 。
对赋权图 G , s , t V , G 中的 (s,t) 一路称为
以下介绍 Floyd (福劳德)提出的算法,其具体
思路如下:对一个有 n 个顶点的图 G ,将顶点用 n 个
整数(从
1

n
)进行编号。令
d
m ij
表示从顶点
i
到ຫໍສະໝຸດ Baidu
j

一条 只允许前 m 个顶点作为中间顶点时的最短距
离。如果这样的路不存在,则 dimj 。
由此定义可知,d
0 ij
表示从顶点
i

d
1 23

min
d
0 21

d103, d203
min4,7 4
d(t) min d(t), d(b) a(b,t) 8
最后对顶点 t 着色和对边 (d,t) 着色,形成从 s 到 t
的最短路,最短路径为 8,由边 (s,c),(c, d),(d,t) 组成最 短路径。
二、所有顶点间最短路径算法
一个图中所有顶点间的最短路径算法是一个更
具有普遍意义的问题。
j
的边长度(如
果没有这条边存在,则
d
0 ij


),
显然 di0j

0
。而
d
n ij

是我们所要求解的从 i 到 j 的最短路径距离。
算法步骤如下:
1、将图中各顶点编号为1,2,,n, 确定矩阵 D0 ,如果顶

i

j
之间有边相连,
d
0 ij
等于该边长度,否则
d
0 ij


而 di0j 0 。
a
3
4
b
2
7
s
8
2
3
t
3
c
3
d
2
1、对 s 着色,令 d(s) 0 ,且对其余顶点均有 d(x) ,(x s) .
2、令 y s ,对所有 x 求解:
d(a) min d(a), d(s) a(s, a) 4 d(b) min d(b), d(s) a(s,b) 7
算法停止,因为此时从 s 到任一未着色的顶点都没 有路,也就不存在从 s 到 t 的路径。否则找出一个
具有最小的 d(x) 值的顶点,对其着色并令 y x 。
4、重复步骤 3 直到顶点 t 已经着色时为止,算法终 止。从 s 到 t 的最短路径已求出。
例:用 Dijkdtra 算法求下图中从顶点 s 到 t 的最短路径。
3、令 y c ,比较与所有未着色的顶点。
d(a) min d(a), d(c) a(c, a) 4 d(b) min d(b), d(c) a(c,b) 7 d(d) min d(d), d(c) a(c, d) 6
d(t) min d(t), d(c) a(c,t)
对于每一个未着色的顶点 y ,考虑所有已着色的 顶点 x ,从 s1 通过已着色的顶点到 y 的不同路径中选 出它们中的最短路径,从而也就确定了新染色的点和
相应的最短路径,不断重复上述过程直至求得从 s 到
t 的最短路径为止。
算法步骤如下:
1、最初,所有的边和顶点均未着色,对每一顶点 x 指
定一个数 d(x) ,表示从 s 到 x 且仅使用已着色顶点作
2、对 m 1,2,, n ,依次利用递归公式
dimj min dimm1 dmmj1, dimj 1
由已知的 Dm1各元素确定 Dm 的各元素值。每确定 一个元素,可记下它所表示的路径,在算法终止时, 不仅通过 Dn 矩阵的各元素知道了各点间的最短距离, 而且也知道了形成这条路径的各边的组成。
d(c) min d(c), d(s) a(s, c) 3
d(d) min d(d), d(s) a(s, d) 8
d(t) min d(t), d(s) a(s,t)
由于 d(c) 3 最小,再对 c 着色,并对边 (s,c) 着色。
由于 t 未着色,继续上述步骤。
最短路,如果它的各边的权和是 G 中任一条 (s,t) 一路 中各边权和最小的。
找寻 (s,t) 最短路最有效的算法是 Dijkstra 算法:
其主要思路是假定我们已经知道了在图中与起点 s
有最短路径的 m 个顶点以及从 s 到这些顶点间的最
短路径,然后求出第 m 1个顶点使之与前 m 个顶点 有相同的属性。其实现方法是比较法。
例:对下图用 Floyd 算法求出各点间的最短路径长度。
1
2
7
2
1
2
6
3
5
3
4
4
1
2
0 1 2 3
D0

2 5
0 6
7 0
2
1 4 0
D1 的各元素和相应的最短路径计算如下:D1 的第一行和第
一列元素与 D0 相同,对角线上的元素均为 0,则需计算其
余 6 个元素如下:
由于 d(d) 6最小,所以首先对 d 着色,并对边 (c, d ) 着
色。由于 t 未着色,继续上述步骤。
5、令 y d ,继续比较有
d(t) min d(t), d(d) a(d,t) 8
d(b) min d(b), d(d) a(d,b) 7
对顶点 b 着色,并对边 (s,b) 着色。 6、令 y b ,计算
相关文档
最新文档