时间复杂性分析: 对第次循环:步骤(2)要进行次比较运算,步骤(3)要进行 i次加法与i次比较运算。所以,该次循环运算量为3.所以, 在最坏的情况下,运算量为级,是好算法。 算法证明: 定理1:算法中的函数t(a)给出了a与a的距离。 证明:对作数学归纳法。 (1)i=1时结论显然成立。 (2)设对所有的j,1≤jKi时,t(a)=d(a,a) (3)考虑j=i 令P=voV1.va,vo=a,Va=a是连接a与a的一条最短路
0.8 1 0.6 0.4 0.2 0 x t 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 n 6 时间复杂性分析: 对第i次循环:步骤(2)要进行i次比较运算,步骤(3)要进行 i次加法与i次比较运算。所以,该次循环运算量为3i .所以, 在最坏的情况下,运算量为n 2级,是好算法。 算法证明: 定理1:算法中的函数t(ai )给出了a与ai的距离。 证明:对i作数学归纳法。 (1) i=1时结论显然成立。 (2) 设对所有的j,1≤j<i 时,t (aj)=d (a, aj). (3) 考虑j=i 令P= v0 v1 . vd , v0 = a ,vd =ai是连接a与ai的一条最短路
Vo VI V2 V3 Vn-1 Vn va-i va 于是 d =d(a,a,) 又令v,是P中第一个不在A中的点。由于 a乒A所以 这样的点存在。 因为 ∈A-,所以:n≥1 记P中a到vn一段长为☑,而a到v-1的一段长为 Z。 由归纳假设有: ≥(yn-)
0.8 1 0.6 0.4 0.2 0 x t 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 n 7 于是 i i 1 a A − 因为 ,所以: ( , ) d d a a = i v0 v1 v2 v3 vn-1 vn vd-1 vd a P ai 又令vn是P中第一个不在Ai-1中的点。由于 ,所以 这样的点存在。 0 1 i v A − n 1 记P中a到vn一段长为 l ,而a到vn-1的一段长为 l 1 。 由归纳假设有: 1 1 ( ) n l t v −
Vo V1 V2 V3 Vn-1 Vn Vd 显然有: d=d(a,a)21=1+1(vn-vn) ≥t(yn-1)+l(yn-1yn) 由算法:当已知 A1={a,a2,.,a-1} 而要给a:标号时, 其中要选择 i-1 - 由选择知: ybn-)≤1(yn-y) 所以: d=d(a,a)21=h+1(v-v) ≥t(yn-)+l(yn-yn) ≥n)+1(y.bn1-
0.8 1 0.6 0.4 0.2 0 x t 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 n 8 显然有: 1 1 ( , ) ( ) d d a a l l l v v = = + i n n − v0 v1 v2 v3 vn-1 vn vd-1 vd a P ai 1 1 ( ) ( ) n n n t v l v v + − − 由算法:当已知 A a a a i i − − 1 1 2 1 = , , , 而要给ai标号时, 其中要选择 ,由选择知: ( 1) 1 i bn − − ( 1) 1 1 1 ( ) ( ) i n n n n l v b l v v − − − − 所以: 1 1 ( , ) ( ) d d a a l l l v v = = + i n n − 1 1 ( ) ( ) n n n t v l v v + − − ( 1) 1 1 1 ( ) ( ) i n n n t v l v b − + − − −
又由算法最终对点a:的标号值的选择方法知: t()+1.bn1-)≥t(a) 另一方面:由算法知,存在一条长度为t(a)的联结a与a的 路,所以: t(a)≥d(a,a,) 这样,我们证明了: t(a,)=d(a,a,) 故,算法是正确的
0.8 1 0.6 0.4 0.2 0 x t 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 n 9 另一方面:由算法知,存在一条长度为t(ai)的 联结a与ai的 路,所以: ( ) ( , ) i i t a d a a 又由算法最终对点ai的标号值的选择方法知: ( 1) 1 1 1 ( ) ( ) ( ) i n n n i t v l v b t a − − − − + 这样,我们证明了: ( ) ( , ) i i t a d a a = 故,算法是正确的
例1如图所示,求点a到点b的距离。 6 解1.A1={a,t(@=0,T1=Φ 2.b1=V3 3.m1=1,a2=,t(3)=t(a+1(a%)=1(最小),T2={a3; 0
0.8 1 0.6 0.4 0.2 0 x t 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 n 10 例1 如图所示,求点a到点b的距离。 8 1 2 6 1 4 2 2 7 9 2 4 6 9 3 a v1 v2 v3 v4 v5 v6 b 解 1. A1= {a},t (a) = 0,T1 = Φ 2. b1 (1)= v3 ; 3. m1 = 1, a2 = v3 , t(v3 ) = t(a) + l(av3 ) = 1 (最小), T2 ={av3 };