Professional Documents
Culture Documents
Introduction To Algorithms
Introduction To Algorithms
Introduction To Algorithms
/ &
Em il: zaro@ceid.upatras.gr
Email:
@ id p t s
. G = (V, E)
ce, T E
.
24
23
6
16
4
18
11
14
10
11
7
21
G = (V, E)
T, eT ce = 50
.
, , , , ,
N
NP-
.
.
, Steiner
.
(max bottleneck paths)
LDPC
Renyi
y
Ethernet
(clusters)
4
Kruskal. T = .
. e T .
. T = E.
.
e T
T .
Prim.
Prim s,
s
T. , T e
T.
.
.
. ce .
S. e.
. C , f
C. f.
f
6
. a-b, b-c, c-d, , y-z, z-a.
2
3
6
4
C = 1-2, 2-3, 3-4, 4-5, 5-6, 6-1
5
8
. S.
D S.
1
3
6
S = { 4, 5, 8 }
D = 5-6, 5-7, 3-4,
3-5, 7-8
4
5
8
7
-
. ,
.
2
3
6
4
5
8
. ( )
S
V-S
. ce .
S. T* e.
. ( )
e T*.
e T* C T*.
T*
e C D
S , f, C D.
T' = T* { e } - { f } .
ce < cf, cost(T') < cost(T*).
.
S
e
T*
. ce .
C. T* f.
. ( )
f T*.
f T* S T*.
T*
f C D
S , e, C D.
T' = T* { e } - { f } .
ce < cf, cost(T') < cost(T*).
.
S
e
T*
10
Prim:
Prim.
P i
[J
[Jarnk
k 1930,
1930 Dijk
Dijkstra
t 1957,
1957 P
Prim
i 1959]
S = .
S.
T
S,
S.
S
11
: Prim
. .
S .
v
a[v] = v S.
Prim(G,
( , c)
) {
foreach (v V) a[v]
Q
foreach (v V) v Q
S
while (Q ) {
u Q
S S {u }
foreach ( e = (u, v) )
if ((v S) (ce < a[v]))
a[v]
[ ] ce
//
Kruskal:
Kruskal. [Kruskal, 1956]
1: e T ,
e .
2: , e = (u, v) T
S = u.
e
u
2
13
: Kruskal
. union-find ( ).
T .
.
O(m log n) (n log n) .
Kruskal(G, c) {
c1 c2 ... cm.
T
foreach (u V) u
u v ;
for i = 1 to m
(u,v) = ei
if (u v
) {
T T {ei}
u v
}
return T
}
14
:
.
.
Kruskal
K k l Prim
P i
.
, ,
ei i / n2
.
, .
boolean less(i, j) {
if
(cost(ei) < cost(ej)) return true
else
l
if (cost(e
(
t( i) > cost(e
t( j)) return
t
false
f
l
else if (i < j)
return true
else
return false
}
15