Professional Documents
Culture Documents
Algorithms
Algorithms
&
2010
1.1
, ,
. . . . . . . . . . . . . . . . .
1.2
1.3
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1
1.4
. . . . . . . . . . . . . . . .
1.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 --
15
2.1
. . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4.1 -- . . . . . . . . . . . . . 26
2.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5
Fourier FFT . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.1 Fourier
. . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.2 Fourier
2.6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3
3.1
35
3.1.1
. . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2
. . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.1 - . . . . . . . . . . . . . . . . . . . . . 51
3.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4
4.1
4.1.1
4.2
53
. . . . . . . . . . . . . . . . . . . . . . . . 54
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3.1
4.4
. . . . . . . . . . . . . . . . . . . . 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5
5.1
67
. . . . . . . . . . . . . . . . . . . . 67
5.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2
5.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3.1
5.3.2
5.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4.1
. . . . . . . . . . . . . 86
5.4.2 Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.4.3 Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.5.1 . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5.2 . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5.3 . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.6
. . . . . . . . . . . . . . . . . . . . 99
5.6.1 Bellman-Ford
. . . . . . . . . . . . . . . . . . . . . . . . . . 100
. . . . . . . . . . . . . . . . . . 109
5.7.1 Floyd-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.7.2 . . . . 112
5.8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6
6.1
117
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.1.1
6.2
6.3
. . . . . . . . . . . . . . . . . . . . . . 119
Turing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.2.1 Turing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.1 -:
6.4
-
. . . . . . . . . . . . . . 124
. . . . . . . . . . . . . . . . . . . . . . . . . . 125
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.5
6.6
7 -
7.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
NP-
133
NTIME
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
ii
7.2
7.3
7.4
NP .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
NP- . . . . . . . . .
7.3.1 NP-
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
151
153
A.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
A.2
A.2.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
A.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
B
B.1
159
. . . . . . . . . . . . . . . . . . . . . . . . . . 159
iii
iv
.
.
,
.
.
.
,
, .
. ,
,
, , , .
.
-
,
-
.
.
.
-
.
, ,
.
-
.
1.
. ,
. ,
.
,
.
.
. ,
. ,
.
.
.
-
(tra
table),
NP.
(intra table).
1.1
, ,
. , ``''
. ,
. -
. ``''
.
(input)
.
(output)
,
,
.
1930, `` '' Chur
h, Godel, Herbrand, Kleene, Post, Turing,
.
(..
,
). , ,
``'' ,
1
-
, , fuzzy , .
1.1. , ,
. , C
Pas
al.
C Pas
al,
(.. , ,
, .).
(blo
k) ( )
f: : : g
C ( begin
. (arrays), (stru
tures - re
ords
Pas
al) (sets) .
(..
, ,
, ) (..
, ) .
.
( omputational problem)
(input)
(output).
.
, ,
(x; y), x y.
n ,
X = (x1 ; x2 ; : : : ; xn ) n .
0
0 0
0
X = (x1 ; x2 ; : : : ; xn )
0
0
0
, x1 x2 xn .
.
(instan e)
(15; 32)
(8; 1; 7; 5; 3; 6; 2; 4)
. ,
.
.
,
(solutions).
.
1.
(1; 2; 3; 4; 5; 6; 7; 8) (8; 1; 7; 5; 3; 6; 2; 4)
.
. .
- orre t),
.
( )
.
- ,
.
1.2
(Knapsa k Problem). ,
B 0 n , si 0 pi 0,
i = 1; 2; : : : ; n.
.
:
0 1)
. ,
.
fi pi .
fi , fi 2 [0; 1, fisi
. ,
Pn
i=1 fi pi ,
Pn
i=1 fi si
B
fi 2 [0; 1 i = 1; : : : ; n.
( ), .
. ,
,
fi
fi 1 0 ( -
0 1).
. ,
i = 1; : : : ; n.
Pn
i=1 fi pi ,
Pn
i=1 fi si
B
fi
2 f0; 1g
,
(feasible solution)
.
(optimal solution),
1.2.
.
, .
, .
( )
n ).
2n
,
(
,
. , ,
(
).
1.1. T
(0; 1; 0; 1=2)
() -
. .
(1=4
15.25. ,
(0; 1; 1; 0) 14.
, (20; ((5; 2); (7; 10); (4; 9)))
, (1; 1; 1). (17; ((6; 6); (11; 10); (9; 8); (8; 8)))
, (1, 1, 0, 0) (0, 0, 1, 1) 16,
8
, (1; 3=11; 0; 1) 16
11 .
(;) ,
.
, .
(optimization problem).
,
,
ut
( ) . ,
.
1.1 ( ).
:
.
2 , ().
2 , f : () 7! IR
.
2 , 2 ():
1.
f ( )
.
-
,
.
1.2. , .
.
.
,
2n
ut
.
(Shortest Path Problem): /
s t,
s t.
n
i; j 2 f1; : : : ; ng, dij dji i j
j i ( -
0).
(tour),
TSP):
,
.
.
,
.
.
2
.
3
-
d:N
N 7! IR+
: () ,
, () 0,
() ,
d(i; k) + d(k; j ).
8i 2 N d(i; i) = 0
i; j; k 2 N d(i; j )
,
1.3.
1.3
(.. , , ,
, .).
.
,
. ,
(Random
A
ess Ma
hine, RAM) . ,
( ).
, (..
, , , .),
(.. , , , , .)
.
.
.
.
(.. , ,
,
, .)
, -
, ,
.
.
. ,
,
.
.
(bits) .
, `` ''
`` '' .
, , .
.
1.
,
.
.
`` ''
. ,
(10; 5)
(100; 30)
.
ut
,
.
.
(..
-
). ,
( ).
1.2 ( ).
T (n)
n ,
n
T (n) .
,
,
(
.
).
.
, ()
.
n ,
. -
2n 1000n2
2
n 100 n log n. ,
,
n ,
. ,
.
.
n
4
(
log n
T (n)
2
n .
n.
ln n
1.3.
T (n) = n, n2 , n3
k
,
,
. T (n) = n
n
k ,
, T (n) = d
d > 1,
.
T (n) = 1 ).
. ,
(.. , , , .) -
ut
1.3.2
, . ,
n, .
,
. , , .
,
. . ,
, , . ,
.
( ).
,
-
.
, (.. .
merge-sort heap-sort ). (..
qui
ksort, ),
.
1.3.3
.
10
1.
.
,
IN = f0; 1; 2; : : : g.
.
.
(.
g(n), (g(n))
. , g (n),
(g (n))
.
IR+ ).
To
. ,
(g(n)) = ff (n) : IN 7! IR+ j (9
1 ;
2 2 IR+ ) (9n0 2 IN) (8n n0 )
1 g(n) f (n)
2 g(n)g
(g(n))
1 ;
2 f (n)
1 g (n)
2 g (n)
n n0 (,
n).
(g (n)) .
, f (n) =
(g(n)) ( f (n) 2 (g(n))) f (n) (g (n)). .
,
f (n)
' .
,
.
n ,
.
2
f (n) = (n ).
O.
g(n),
O(g(n))
.
O(g(n)).
f (n)
(g(n)),
O,
O(g(n)).
(g(n))
1.3.
11
g(n),
(g(n))
.
g(n), o(g(n))
o(g(n)) = ff (n) : IN 7! IR+ j (8
2 IR+ ) (9n0 2 IN) (8n n0 ) f (n) <
g(n)gg
o
, f (n)
g (n)
n. f (n) = o(g(n))
limn!1 fg((nn)) = 0. , 2n2 = o(n3 ), 2n2 6= o(n2 ).
! . o, !
. g (n), ! (g (n))
!(g(n)) = ff (n) : IN 7! IR+ j (8
2 IR+ ) (9n0 2 IN) (8n n0 )
g(n) < f (n)g
!
, f (n)
g (n)
n. f (n) = ! (g (n))
f (n)
2
2
2
limn!1
g(n) = 1. , 2n = ! (n), 2n 6= ! (n ).
1.1.
f (n) g(n) .
:
1.
2.
3.
f (n) + g(n) =
(minff (n); g(n)g).
4.
5.
12
1.
6.
f (n) =
(f (n=2)).
. 1, 3, 4, 6 . 2 5
ut
.
1.2. :
25n
2n
nlog n
n log log n
n1= log n
n
logn 2 + n
n1= log n = (1); log log n; log4 n; (log n)100 log log n; n0:1 log log n;
n0:6 ; n log log n; log(n!) = (n log n); lognn 2 + n = (n log n);
3
2
100
(log n)log n = (nlog log n ); nlog n ; 2log n = (nlog n ); 2n ; 2n + n2 = (2n ); 25n
1.3. ,
f (n)
g(n)
(g(n)) O(g(n)) o(g(n))
(g(n)) !(g(n))
n
+5
n
5
100
2
2 +2 +n
4
3
n n
16log n
4
n
5
102n
n1= log log n
n0:001
n!
nn
20
nlog n
2n
.
f (n)
2n+5
n4 n3
54n
n1= log log n
n!
20
log
n n
g(n)
(g(n)) O(g(n)) o(g(n))
(g(n)) !(g(n))
100
+n
log
n
16
2
n
10
0
:
001
n
n
n
n
2
2n + 25
f (n)
1.4.
1.4
13
R. Sedgewi k).
[7
. [11 [7
.
[32 .
[41 [17
.
.
[20 [33 .
[20
NP- -
. [33
.
[31 [42 .
.
14
1.
2 --
-- (divide-and-
onquer)
(.. , , Fourier).
-- . - :
1.
2.
- .
3.
-.
-- (top-down).
.
, - , - - .
-- (merge-sort), (qui
ksort),
.
.
-- :
1. .
, , ,
.
,
.
2. - '
, . , ,
n .
n=2
3. ( ) .
, -
15
16
2. --
. ,
,
.
4. -
. ,
. ,
.
,
-- ()
. --
.
.
,
(Mapple, Mathemati
a, ).
--
, ,
n- -
2.1.
n-
-
Fibona
i. ;
;
n-
Fibona i .
Fibna iRe ( )
n 1 then return(n);
return(Fibona
iRe
(n
1) + Fibona
iRe
(n 2));
if
!
, -
: ,
.
(
'n ) n
.
(n).
2.1.
17
n
f
1; fp 0;
for i
1 to n do
f
f
+ fp;
fp f
fp;
return(fp );
Fibna i( )
(invariant)
i, i = 1; : : : ; n, f
i + 1-
fp i- .
for-loop
Fibona
i,
ut
2.1
.
-
,
. ,
.
,
, .
n .
x y,
(n) .
n- x y , 2
(n ) (n
n ). ,
2
a la russe (n ) ( -
). ,
1,
(n)
.
.
n . x = xn xn 1 x2 x1 y = yn yn 1 y2 y1 ,
xi ; yi 2 f0; 1g x y .
, x y
n=2 x + x ,
. x x = 2
h
`
xh n=2 x`
n=2 . , y = 2n=2 yh + y`. x y
--.
(2.1)
18
2. --
zh = xh yh, zm = xh y` + x`yh , z` = x` y` .
x y (xh yh ,
xh y`, x` yh, x` y`) n2 - .
.
xy
(2.1)
.
(2.1)
2n (n).
--
. ,
.
T1 (n)
n-
.
.
zm . , zm
xh yh x` y`, ( n2 + 1)- :
n -
zm , (2.1) 3 -
, 6
2n , . ,
(n).
T (n) n-
. T (n) :
T (1) = (1).
, --
a la russe.
2.2
A, B
n n C = A B .
:
8i = 1; : : : ; n; j = 1; : : : ; n C [i; j =
n
X
k=1
A[i; kB [k; j
(2.2)
2.2.
19
,
(n). C n2 , (n3 ).
O(nlog 7 ) = O(n2:81 ).
Strassen
.
,
n .
A=
A11 A12
A21 A22
; B=
n
22
A, B
B11 B12
B21 B22
; C=
C11 C12
C21 C22
C11
C12
C21
C22
=
=
=
=
,
n
22
2
n n (n2 ).
T1 (n)
2
T1 (n) = 8 T1 (n=2) + (n ) T1 (1) = (1).
3
T1 (n) = (n ). ,
-- .
.
D1
D2
D3
D4
D5
D6
D7
=
=
=
=
=
=
=
2
n:
C11
C12
C21
C22
=
=
=
=
D2 + D3
D1 + D2 + D5 + D6
D1 + D2 + D4 D7
D1 + D2 + D4 + D5
C :
20
2. --
Strassen
2 2.
2 2
n n (n2 ).
2 2
n
, Strassen,
T (n),
2
T (n) = 7 T (n=2) + (n ) T (1) = (1).
log 7 ) = (n2:81 ).
T (n) = (n
Strassen -
n.
O(n2:376 ) [10. R. Raz
A. Shpilka [36
(n2 log n)
.
2.3
. A .
.
.
(
). ,
( ).
Diffie Hellman [13
70.
( -
)
q p.
p q
,
.
,
p. a b .
qa = qa mod p 1 . ,
b
qb = q mod p . p q , qa qb
.
1
.
p, .
,
. :
qa
mod p
p, q ,
qa ,
.
p,
a0 , q qa
() .
(fa toring) .
2.3.
21
p, a qb,
p, b, qa ,
Ka = Kb .
, '
,
.
qa ,
p, q,
ab
,
qb .
Ka = Kb
( ).
, .
-
n- x p.
n
x mod p x, n,
p .
a
b
qa = q mod p qb = q mod p.
i
x mod p, i = 2; : : : ; n, i 1 mod p x n
x
. -- .
n , n- x n2 -
n - x . n
x.
2
, n- x x
n 1 - x. .
2
.
x; n; p)
if n = 1 then return(x mod p);
t ExponRe
(x;bn=2
; p);
t t2 mod p;
if n is odd then return(t x mod p);
else return(t);
ExponRe (
T (n) n-
.
2
n-
p (
512 ,
2512
22
2. --
log p ).
T (n=2). T (n)
O(log2 p).
,
-.
-
-.
2.2. ExponRe
.
.
xn mod p -
n. a la russe (
).
x; n; p)
t x; r 1;
while n 1 do
if n is odd then r
t t2 mod p;
n bn=2
;
return(r );
ExponIter(
r t mod p;
` = blog n
+ 1 n = n` n` 1 : : : n2 n1
n.
2i 1 mod p (
i- while-loop, i = 1; : : : ; `, t = x
). ni ( i- bit n) 1,
2i 1 mod p. ,
r t = x
P`
i 1 = n (
r x
i=1 ni 2
n
p). r x mod p
ut
.
2.3.
22
A=
1 1
1 0
!
.
Fn = [fn ; fn 1
Fibona i.
2.4.
23
F1 = [1; 0 .
n 1 F n 1.
Fn = A
1
n
1
A
( n
1 A) O(log n)
n- .
. A
[a+b; a; a; b.
.
ut
( ).
2.4
,
, , .
A = [a0 ; a1 ; : : : ; an 1 .
,
(n)
, x0
Horner (n). Horner,
(n2 ) .
, :
x0 Horner.
(n).
. :
A[a0 ; : : : ; an 1 , x0 )
r A[n 1; i n 2;
while i 0 do
r A[i + r x0 ;
i i 1;
return(r );
Horner(
while-loop
n
( ). ,
Horner
(n).
ut
24
2. --
2.5. --
1.
O(nlog 3 ).
n 2
.
. -- .
A(x) =
Pn 1
i
i=0 ai x
B (x) =
Pn 1
i
i=0 bi x
n 1, C (x) =
A(x)B (x) .
A(x) B (x)
A(x) =
P 2 1
i A (x) = Pn=2 1 a
i
A` (x) + xn=2 Ah (x), A` (x) = n=
a
x
i
h
n=2+i x , B (x) =
i=0
i=0
P 2 1
Pn=2 1
i
i
B` (x) + xn=2 Bh (x), B` (x) = n=
i=0 bi x Bh (x) = i=0 bn=2+i x .
, C (x) = A(x)B (x)
:
C (x)
-
(point-value
n 1 n
(x0 ; y0 ); : : : ; (xn 1 ; yn 1 ), i = 0; : : : ; n 1, yi
xi xi .
representation). ,
n 1 n - (yi ; xi ).
, -,
n xi .
-
. -
1 .
n . A(x) n
1 (x0 ; y0 ); : : : ; (xn 1 ; yn 1 ) B (x)
n 1 (x0 ; y00 ); : : : ; (xn 1 ; yn0 1 ). A(x) + B (x) 0
0
(x0 ; y0 + y0 ); : : : ; (xn 1 ; yn 1 + yn 1 )
(n).
2.4.
25
(n2)
0, 1, ..., n1
b0, b1, ..., bn1
2n 1
(n log n)
A(zi), B(zi),
i = 0, , 2(n 1)
2n 1
(n log n)
C(zi) = A(zi)B(zi),
i = 0, , 2(n 1)
(n)
2.1:
2n 1 B (x) -
-
.
, .
, -
2
Horner (n ).
xi ,
-- (n log n).
( )
(n log n) -
, -
-,
2n 1 .
26
2. --
2.4.1
--
A(x)
1
n . n 2.
n 1: A (x) A(x)
0
2
x, A1 (x) 2
2
x. A(x) A(x) = A0 (x )+ x A1 (x ),
n x0 ; x1 ; x2 ; : : : ; xn 3 ; xn 2 ; xn 1
n
3
2
2
A(x) i = 0; : : : ;
2 1, xi = xn=2+i . A(x)
2
2
A(x) = A0 (x ) + xA1 (x ).
n A(x) n=2 A0 (x)
n=2 A1 (x).
, A0 (x) A1 (x)
2 2
2
n=2, . x0 ; x1 ; : : : ; x
n=2 1 .
A0 (x)
A1 (x) n=2 1 n=2 . ,
i = 0; : : : ; n=2 1, :
A(xi ) = A0 (x2i ) + xi A1 (x2i )
(2.3)
(2.4)
.
T (n) n A(x) n 1.
-- A(x) n=2 A0 (x)
A1 (x) n=2
1.
2 T (n=2) (. T (n=2) n=2
n=2 1). n A(x)
(n) (2.3) (2.4). ,
T (n) = 2 T (n=2) + (n)
T (1) = (1). T (n) = (n log n).
, --
n ( )
-
:
( 1 ), (
2 ), . . . ,
j ), j = 1; : : : ;blog n 1.
,
2j
1; 2; : : : ; n2 ; 1; 2; : : : ;
2j -
n.
(
2.4.
27
( ). ,
,
1 ()
1 1 ,
- , .
, (. 2.2).
P
A(x) = 7i=0 ai xi
p20 = p24 ; p21 = p25 ; p22 = p26 ; p23 = p27
2.1. 8
7.
p0 ; : : : ; p7
:
(
).
/
. / .
:
A00 (p40 )
A01 (p40 )
A10 (p40 )
A11 (p40 )
=
=
=
=
a0 + a4 p40
a2 + a6 p40
a1 + a5 p40
a3 + a7 p40
A00 (p41 )
A01 (p41 )
A10 (p41 )
A11 (p41 )
=
=
=
=
a0 + a4 p41
a2 + a6 p41
a1 + a5 p41
a3 + a7 p41
:
A0 (p20 )
A0 (p21 )
A0 (p22 )
A0 (p23 )
A1 (p20 )
A1 (p21 )
A1 (p22 )
A1 (p23 )
=
=
=
=
=
=
=
=
A00 (p40 ) + p20 A01 (p40 ) = (a0 + a4 p40 ) + p20 (a2 + a6 p40 )
A00 (p41 ) + p21 A01 (p41 ) = (a0 + a4 p41 ) + p21 (a2 + a6 p41 )
A00 (p40 ) + p22 A01 (p40 ) = (a0 + a4 p42 ) + p22 (a2 + a6 p42 )
A00 (p41 ) + p23 A01 (p41 ) = (a0 + a4 p43 ) + p23 (a2 + a6 p43 )
A10 (p40 ) + p20 A11 (p40 ) = (a1 + a5 p40 ) + p20 (a3 + a7 p40 )
A10 (p41 ) + p21 A11 (p41 ) = (a1 + a5 p41 ) + p21 (a3 + a7 p41 )
A10 (p40 ) + p22 A11 (p40 ) = (a1 + a5 p42 ) + p22 (a3 + a7 p42 )
A10 (p41 ) + p23 A11 (p41 ) = (a1 + a5 p43 ) + p23 (a3 + a7 p43 )
28
2. --
( )
A(p0 )
A(p4 )
A(p1 )
A(p5 )
A(p2 )
A(p6 )
A(p3 )
A(p7 )
=
=
=
=
=
=
=
=
A(x) :
A0 (p20 ) + p0 A1 (p20 )
A0 (p20 ) + p4 A1 (p20 ) = A0 (p24 ) + p4 A1 (p24 )
A0 (p21 ) + p1 A1 (p21 )
A0 (p21 ) + p5 A1 (p21 ) = A0 (p25 ) + p5 A1 (p25 )
A0 (p22 ) + p2 A1 (p22 )
A0 (p22 ) + p6 A1 (p22 ) = A0 (p26 ) + p6 A1 (p26 )
A0 (p23 ) + p3 A1 (p23 )
A0 (p23 ) + p7 A1 (p23 ) = A0 (p27 ) + p7 A1 (p27 )
, 8
n ).
log n )
3 (
(7
/ , 3 , 1 , 0 /
).
,
2.4.2
(n)
ut
n-
n
n
x = 1. , ! ! = 1
n- . n n- ,
2ik=n , k = 0; 1; : : : ; n 1, e = 2:71 : : : ,
e
= 3:14 : : : , i2 = 1.
( 2.2).
n-
,
f!0 ; !1 ; : : : ; !n 1g.
n
!n.
n-
!n = e2i=n
n-
n- ,
n- n- . ,
n-
2,
n-
()
29
()
(1)1
(8)3
(8)
(8)4
(8)1
1 (2)1
(8)0
(2)0
i
(8)5
(8)
(4)1
(4)3
(4)2
(4)0
(8)7
2- (1+i)
(8)
2- (1+i)
(8)5
2- (1+i)
(8)
2- (1i)
i
2
(8)
(8)
(8)
1
6
(8)
1
4
(8)0
n = 8 . ()
n = 1; 2; 4, 8. .
n=2+k
k
k
- !n !n
!
n=2 . k ,
k ),
0 k n=2, (i) !nk = !nn=2+k ( - !n=
2
n=2+k 2
k
2
k
(ii) (!n ) = (!n
) = !n=2 ( -). , n-
2.2: ()
2.4.1.
n -
. ,
0 ; : : : ; !n=2 1 g
f(!n0 )2 ; (!n1 )2 ; : : : ; (!nn 1)2 g = f!n=
2
n=2
,
0; : : : ; n=2 1,
k =
k
(!nk )2 = (e2ik=n )2 = e2ik=(n=2) = !n=
2
k
(!nn=2+k )2 = !n2k+n = !nn!n2k = !n2k = e2i2k=n = e2ik=(n=2) = !n=
2
k = 0; : : : ; n=2 1,
k
(!nk )2 = (!nn=2+k )2 = !n=
2
n-
j = 1; : : : log n.
n 2,
j
2 -
j
() 2
-- 2.4.1.
2.5
Fourier FFT
A = [a0 ; : : : ; an 1 n Y = [y0 ; : : : ; yn 1 yk =
Pn 1
kj
j =0 aj !n
30
2. --
k = 0; : : : ; n 1.
Fourier
2.5.1
n 2.
Fourier
AP
n A(x) = nj =01 aj xj
A(x) n-
Fourier
,
1.
--
2.4.1.
,
Fourier
A[a0 ; : : : ; an 1 )
n
if n = 1 then return(a0 );
!n e2i=n ; ! 1;
A0 [a0 ; a2 ; : : : ; an 2 ; A1 [a1 ; a3 ; : : : ; an 1 ;
Y0 FFT(A0 ); Y1 FFT(A1 );
for k
0 to n=2 1 do
yk Y0 [k + !Y1 [k; yn=2+k Y0 [k !Y1 [k; !
return([y0 ; : : : ; yn 1 );
FFT(
/*
2 */
/* - */
/* - */
/* - */
! !n;
2.4.1 FFT
4
,
for-loop,
= 0; : : : ; n=2 1
!n n- . k-
! k n- !nk .
,
). ,
!nn=2+k .
()
,
!nk
(
os() = 1
sin() = 0
.
!
31
2.6. FFT, -
A = [1; 0; 0; 1; 0; 0; 0; 1, B = [1; 4; 2; 3; 4; 5; 2; 1,
C = [1; 0; 0; 0; 0; 0; 0; 0; 1; 0; 0; 1; 0; 0; 1; 1.
Fourier
A, B , C
. 2.1
.
. p0 = 1; p1 =
p2 A B ,
p2
p2
p2
(1
+
i
)
;
p
=
i;
p
=
(
1
+
i
)
;
p
=
1
;
p
=
(1
+
i
)
;
p
=
i
, p7 =
2
3
4
5
6
2
2
2
2 (1 i).
2.1,
A [3; 1; 1
2i; 1; 1; 1; 1+2i; 1, B [12; 0:879+0:464i; 5+11i; 5:121 7:536i; 2; 5:121+
7:536i; 5 11i; 0:879 0:464i.
FFT. , Fourier
16 ,
Fourier
2.5.2
ut
Fourier
n-
A = [a0 ; a1 ; : : : ; an 1
Y = [y0 ; y1 ; : : : ; yn 1 n- ,
A(x)
yk =
n
X1
j =0
aj !nkj k = 0; : : : ; n 1
a0 ; a1 ; : : : ; an 1 .
Y = V A n n , A
, Y
kj
n- , V n n V [k; j = !n , k; j 2
f0; 1; : : : ; n 1g.
1 Y , V 1
A V
1 .
V . V
2.1.
nn
V 1
k; j 2 f0; 1; : : : ; n 1g,
V V 1 .
n
X1
1 nX1 `(k j ) 1 nX1 (k j ) `
1
k`
`j
(V V )[k; j =
!n !n =n =
!
=
(!
)
n `=0 n
n `=0 n
`=0
(2.5)
32
2. --
= !n0 = 1 (V V 1 )[k; k = 1
k = 0; 1; : : : ; n 1. - k 6= j
(n 1) k j n 1.
k j
, k
j n !n 6= 1.
k j 0
(2.5) n (!n
) = 1
k j
!n
. n ,
(.
n
X1
k = j ) !nk
(!nk j )n
(
k
j
)
`
(!n ) = k j
(!nn )k j 1 1k j 1
= k j
=0
!n
1
!nk j 1
!n
1
`=0
1 1
V V
1
- 0. , V V
1
V
V .
1
,
P
(1=n) nj =01 yj !n kj ,
k = 0; : : : ; n
A(x)
ak =
A(x)
[y0 =n; : : : ; yn 1 =n
(n 1) g.
0
1
n- f!n ; !n ; : : : ; !n
k =
n- , !n
!nn !n k = !nn k k 2 f0; 1; : : : ; n 1g. ,
n- (n log n) FFT n- !n
!n 1 . Y=n = [y0 =n; : : : ; yn 1 =n
n
1
y0 ; : : : ; yn 1 n- .
1.
,
n 1
(n log n),
(n), (n log n).
-
2.7. Fourier
Fourier 2.6
.
2.1 FFT .
3 -
2, 4
n = 4).
A = [3; 1; 0; 0 B = [2; 3; 0; 0.
n = 4 f1; i; 1; ig !4 = i.
f1;
1g !2 = 1.
2.6.
33
2.6
34
2. --
3
(dynami programming), -
-, .
, --
-, -
),
-. , -.
- .
- (. 2.1).
, -
- .
:
-. (bottom-up).
,
.
. O ``'' /
.
--
( ) -.
. --
(top-down), ``''
. --
- (.
,
35
36
3.
-
-
. .
C (n; k) =
k n :
n
n!
=
n 2 IN; 0 k n
k
k!(n k)!
P
(1 + x)n = nk=0 nk xk
xk
( ).
C (n; k)
(
C (n; k) =
C (n 1; k 1) + C (n 1; k)
1
0<k<n
(3.1)
:
n k)
if k = 0 or k = n then return(1);
else return(BinomialDC(n
1, k 1) + BinomialDC(n 1, k));
BinomialDC( ,
-
Pas al
-
.
0 k n.
(3.1). :
n k)
for i
0 to n do
C [i; 0 1; C [i; i 1;
for j
1 to i 1 do
C [i; j C [i 1; j 1 + C [i 1; j ;
return(C [n; k );
Binomial( ,
.
ut
37
(optimal substru -
.
,
.
,
v w
w u.
v w w v ,
v u w .
w , v u.
.
s t.
s t,
, '
( ). ,
v w w v,
ut
.
,
,
-.
w).
top-down ,
--, -
. , bottom-up ,
, -
.
:
1.
.
2. .
3. ,
( bottom-up ).
38
3.
4. - , .
.
3.1
(.
).
2.2
pq q r,
p q r .
A1 ; A2 ; : : : ; An , Ai di 1 di ,
i = 1; 2; : : : ; n, A = A1 A2 An . -
. , :
A = ( ((A1 A2 )A3 ) An )
A = (A1 (A2 (A3 (An 1 An ) )))
A = ((A1 A2 )(A3 A4 ) (An 1 An ))
.
!
3.3.
A3 89 3, A4 3 34.
A1 A2 A3 A4 , A1 13 5, A2 5 89,
/ .
.
13 5 89 + 13 89 3 + 13 3 34 = 10582
54201
2856
4055
26418
. -
ut
.
(x
y)
z
n (A1 ; A2 ; : : : ; An ), Ai di 1 di ,
x; y; z
x
y
z = x
(y
z ) =
A1 A2 A3 = (A1 A2 )A3 = A1 (A2 A3 )
. ,
3.1.
39
i = 1; 2; : : : ; n, A1 A2 An .
.
.
(,
).
( ) , .
P (n)
n . ( )
i i + 1, i = 1; 2; : : : ; n
1, ( i n
i ).
2
, P (n)
P (n) =
P (1) = 1.
n- Catalan:
n
X1
i=1
P (i)P (n i)
P (n) = T (n
1 2n
4n
T (n) =
=
3=2
n+1 n
n
1), T (n)
,
(..
.
.
.
Ai::j
Ai Aj .
A1::n. () i i + 1,
1 i < n, A1::i Ai+1::n ,
A1::n = A1::i Ai+1::n .
A1::n d0 di dn
A1::i Ai+1::n . A1::n ,
A1::i Ai+1::n (
A1::i Ai+1::n ,
A1::n .
3.3. H 3
A1::3 A4 1326 .
A1::3 . A1::2 A3 9256
A1 A2::3 1530 . (
) A1::3 (A1 (A2 A3 ))A4 2856
.
2
n .
40
3.
,
m[i; j
Ai::j . 1 i n, m[i; i = 0 Ai::i = Ai
. Ai::j ,
Ai::k Ak +1::j k , i k < j
Ai::k Ak+1::j . m[i; k + m[k + 1; j + di 1 dk dj .
Ai ; : : : ; Aj , k = i; i +1; : : : ; j 1
.
. ,
-
Ai::j :
(
m[i; j =
i<j
i = j
(3.2)
m[1; n,
A1::n .
m[1; n m[i; j i j ,
1 i < j n.
n(n
1)
-.
.
,
m[i; j Ai::j j i p 1
Ai::j j i = p, p = 2; : : : ; n 1. ,
m[i; j i j , i j
2, 3, . (3.2) 1 i < j n,
m[i; k m[k + 1; j , 1 k < j , m[i; j .
:
MatrixChainMultipli
ation(
d[0; 1; : : : ; n)
/*
d */
i 1 to n do
m[i; i 0;
for p
2 to n do
for i
1 to n p + 1 do
j i + p 1; m[i; j 1;
for k
i to j 1 do
q m[i; k + m[k + 1; j + d[i 1d[kd[j ;
if q < m[i; j then m[i; j
q;
return(m[1; n);
for
p, MatrixChainm[i; j i j , 1 i < j n,
for-loop i
for-loop
Multipli
ation
1 (. j
i=p
1).
3.1.
n(n
1)
41
.
3
O(n ).
O(n).
m[i; j , 1 i < j n.
(n2 )
d=
.
3.2. (top-down)
m[1; n
(3.2). ;
4 .
.
. :
Re
MatrixChain(
if
d[i 1; : : : ; j )
i = j then return(0);
for
k
q
/*
i to j
m m[i; j */
1 do
d[i 1; : : : ; k) +
Re
MatrixChain(d[k; : : : ; j ) + d[i
1d[kd[j ;
if q < m then m
q;
return(m);
Re
MatrixChain(
d[0; : : : ; n).
Re MatrixChain(
m[1; n for-loop (
k = 1; : : : ; n
1 .
k m[1; k
n
k m[k + 1; n. ,
T (n) n :
T (n) 1 +
T (n) =
(2n ),
n
X1
n
X1
k=1
k=1
T (1) =
(1).
[T (k) + T (n k) + 1 = n + 2
T (k)
,
(n3 )
-
.
-.
- (. 3.1).
ut
42
3.
1..4
1..1
2..4
1..2
2..2
3..4
2..3
4..4
3..3
4..4
2..2
3..3
1..1
3..4
2..2
3..3
1..3
4..4
4..4
1..1
2..3
1..2
3..3
2..2
3..3
1..1
2..2
3.1: Re MatrixChain
4 .
- .
-,
.
[11, 15.5.
m[1; n.
.
m[1; n .
A1::n
-
.
k ( Ai : : : Aj )
m[i; j , 1 i < j n.
s[i; j . , m[1; n,
.
-
Ai : : : Aj
s[i; j
ut
3.2 top-down
, .
(top-down)
.
,
.
.
, -
- .
. - ,
.
,
3.2.
43
- . , -,
,
, .
.
Re MemMatrixChain(
for
d[0; : : : ; n)
1 to n do
for j
1 to n do
m[i; j 1;
return(Re
MemChain(
Re
MemChain(
/* */
d[0; : : : ; n));
d[i 1; : : : ; j );
else
for
k
q
i to j
1 do
d[i 1; : : : ; k) +
Re
MemChain(d[k; : : : ; j ) + d[i
1d[kd[j ;
if q < m[i; j then m[i; j
q;
return(m[i; j );
Re
MemChain(
Re MemMatrixChain
(n3 )
m[i; j , 1 i < j n, .
m[i; k m[k + 1; j , m[i; j
.
3.2
(Travelling Salesman Problem, TSP).
.
1.2.
N = f1; 2; : : : ; ng d : N N 7! IR+
dij dji i j j i .
(.
) .
,
, .
dii = 0, 8i
2N
'
44
3.
(.
dij =
6 dji) '
.
. , ,
(
).
,
1.
(permutation) 1
: N 7! N (1) = 1
(i) i.
. , 1-1 ()
:
L() = d(n)1 +
n f1g
(n
1)!
n
X1
i=1
d(i)(i+1)
,
.
T
NP (NP-hard, ).
(sub-exponential).
, . , ,
.
.
1
d1j
j .
j 1.
/
,
j 1 (.
( )
.
.
,
S N nf1g , i 2 N n S
1 N n S 6= f1g. L(i; S )
i 1
S . , S = ; ( ),
L(i; ;) = di1 i 2 N n f1g. S 6= ;,
i, 1, S
.
(3.3)
3.2.
45
S = N nf1g, 1
N n S . , 1
L(1; N n f1g) .
3.3 ,
. . ,
L(i; S ) S k + 1 ,
L(j; S n fj g). L(i; S )
S = ;, 1; 2; : : : ; n 1.
.
.
J (i; S )
j i 1 .
d[1 : : : n[1 : : : n)
for i
2 to n do
L(i; ;) d[i; 1;
for k
1 to n 2 do
for all S N n f1g ; jS j = k do
for all i 2 (N n f1g) n S do
q 1;
for all j 2 S do
if d[i; j + L(j; S n fj g) < q then
q d[i; j + L(j; S n fj g); t
L(i; S ) q; J (i; S ) t;
q 1;
for j
2 to n do
if d[1; j + L(j; N n f1; j g) < q then
q d[1; j + L(j; N n f1; j g); t j ;
L(1; N n f1g) q; J (1; N n f1g) t;
return(L(1; N n f1g), J );
TSP(
j;
:
n
X2 n
k=1
(n k
,
1)k = (n2 2n )
L (n2n ) .
, -
n
(n2 )
.
46
3.
8
5
1
2
10
20
15
13
12
4
3
9
10
.
,
(..
n 20).
, -
.
20 , n2 2n 4:2 108 , o
1:2 1017 .
3.4.
N = f1; 2; 3; 4g
3.2. TSP .
.
L J
.
.
.
ijS
1
2
3
4
;
5
f2g
f3g
f4g
35 (2)
35.
3.3
1; 2; 4; 3.
J ,
ut
(
3.3.
47
Knapsa k Problem). -
1.2.
si > 0 pi > 0, i = 1; : : : ; n.
B > 0 n
-
. ,
Pn
i=1 fi si
B
fi 2 f0; 1g i = 1; : : : ; n.
Pn
i=1 fi pi
,
NP.
.
(n2n ).
,
.
A f1; : : : ; ng .
j 2 A , A nfj g
B
sj f1; : : : ; ng n fj g. j
.
,
f1; : : : ; j 1g
,
i = 0; 1; : : : ; n b = 0; : : : ; B , P (i; b)
b.
P (n; B ) f1; : : : ; ng
B .
P (0; b) = 0 b = 0; : : : ; B ( ).
b 0, P (i; b) = 0 i = 1; : : : ; n (
.
f1; : : : ; ig
).
P (i 1; b), i
b, b = 0; : : : ; B . i
P (i
1; b).
i , f1; : : : ; i
1g
b
si . P (i 1; b si ) + pi .
P (i; b). , P (i; b)
:
P (i; b) =
8
>
<
>
:
maxfP (i 1; b); P (i
0
0
1; b si ) + pi g
b0
i = 0
i = 1; : : : ; n b = 1; : : : ; B
(3.4)
.
P (i; b) i.
i,
b. i
i
1. (n + 1)(B + 1) .
(nB ).
48
3.
(B ) i i
1.
i
i 1.
, (nB )
(B ) .
B; (s1 ; p1 ); : : : ; (sn ; pn ))
for i
0 to n do P [i; 0 0;
for b
1 to B do P [0; b 0;
for i
1 to n do
for b
1 to B do
if b
si 0 then
t P [i 1; b si + pi ;
else t
0;
if P [i
1; b t then
P [i; b P [i 1; b;
else P [i; b
t;
return(P [n; B );
Knapsa k(
3.5.
. ;
. ,
P (n; B ) .
.
P (j; B ) > P (j
1; B ).
.
B sj ( j ) 0
0
j P [j ; B
sj > P [j 0 1; B sj , .
return :
b
for
B;
if
n down to 1 do
P [i; b > P [i 1; b then
print(i); b
b si;
, -
P [0 : : : n; 0 : : : B . ,
(B ) , (nB ) .
ut
3.3.
49
3.6.
(10; ((3; 5); (2; 7); (4; 4); (6; 8); (5; 4))) .
.
ijb
0
1
2
3
4
5
0
0
0
0
0
0
0
1
0
0
0
0
0
0
2
0
0
7
7
7
7
.
3
0
5
7
7
7
7
4 5 6 7 8 9 10
0 0 0 0 0 0 0
5 5 5 5 5 5 5
7 12 12 12 12 12 12
7 12 12 12 12 16 16
7 12 12 12 15 16 16
7 12 12 12 15 16 16
P (4; 10) = 16.
, f1; 2; 3g f1; 2; 5g. 3.5,
ut
.
X = fx1 ; x2 ; : : : ; xn g
X1 X2 . X :
i2X1
xi =
X
i2X2
xi A
(3.5)
.
X;
X
. , S 2 S =
i2X xi . ,
0
X X S . . ,
(.
3.8). ,
.
X0
).
X 0 n fj g
0
j 2 X
0
X
(
xj ;''.
``''
.
``'' ``
X0
fx1; : : : ; xj 1g
.
p : [n [S
7! f0; 1g
p(i; j ) = 1
Xi = fx1 ; : : : ; xi g j , p[i; j = 0
, 0 i n, 0 j S .
3
k
[k
k
f0; : : : ; kg
.
.
50
3.
j > 0, p[0; j = 0 0.
i 2 [n, p[i; 0 = 1 , p[i; j = 0 j < 0,
.
i = 1; : : : ; n j = 1; : : : ; S , p[i; j = 1 p[i 1; j = 1 (.
fx1 ; : : : ; xi 1 g j ) p[i 1; j
xi = 1 (.
fx1 ; : : : ; xi 1 g j
xi j
xi ). , p[i; j = p[i 1; j _ p[i 1; j xi .
:
p(i; j ) =
8
>
>
>
<
>
>
>
:
p(i 1; j ) _ p(i 1; j
1
0
0
xi )
i = 1; : : : ; n j = 1; : : : ; S
j=0
j<0
i = 0 j > 0
(3.6)
p(n; S ) -
.
.
(nS )
(S ) . X 2n . ,
n
(n2 ),
.
3.8.
ut
.
,
. ``''
, -
. ,
( ) :
B `` B ;''
, `` B ;''
.
``''
.
,
, .
:
, (.
).
.
.
X = fx1 ; : : : ; xn g X1 X2 -
:
max
8
<X
:
i2X1
xi ;
X
i2X2
xi
9
=
;
3.3.
B = 12
i2X xi
51
.
``''.
3.3.1
ut
-
NP
.
,
n B .
.
B log B B
B
.
.
log B .
, ( )
.
-
(number problem).
`` '' .
`` ''
2n .
n.
, -
.
`` ''
.
.
`` ''
.
`` '' (
n)
.
-
(pseudo-polynomial-time algorithms).
-
.
x , n `` '' x, max(x)
,
. -
((n max(x))k ), k 1.
,
52
3.
k 1.
- ,
((n max(x))k ),
( )
,
,
!
- (.
3.7).
3.4
[11, [32, [5. Bellman .
Held Karp [22.
4
. ,
-
. -
.
( ) -
.
(greedy algorithm). ,
.
.
.
. :
1. `` ''
,
2. ( )
`` '' ,
3. - .
, `` '' ``
'' .
(adaptive) -
`` '' ,
-
`` '' .
`` ''
(irrevo able),
. `` '' -
. ,
- . , `` '' . `` '' ( )
- .
53
54
4.
, -
.
-
- ,
/ .
-
.
, .
, , (..
,
). ,
.
-
(greedy- hoi e) .
. -
.
,
.
4.1
,
(a tivity
A = f1; 2; : : : ; ng
(.. -
i2A
si , -
, , .).
,
,
fi , fi > si 0.
.
,
.
[si ; fi ).
i j
[si ; fi ) \ [sj ; fj ) = ;.
,
i
.
`` ''
. ,
.
.
``''
.
(.
fi si ), (. si ),
fi),
(.
.
4.1.
55
10
11
12
13
14
15
16
17
18
4.1:
.
.
,
f2 fn
f1
(
greedySele tion(
/*
f1 f2 fn
*/
i , i .
- Ai = fk 2 A : sk fi g
i.
.
fi
- , .
(n)
.
, greedySele
tion
i 1 2 3 4 5 6 7 8 9 10
si 0 2 3 5 4 10 9 11 11 14
fi 3 5 6 7 9 11 12 15 16 17
1, 2. , 3, 4 5, 6,
7, 8, 9 10.
4.1.
56
4.
f1; 3; 6; 8g
,
.
f2; 4; 7; 10g
. 2
1 .
f1 f2 .
, 4 3, 7
6, 10 8 ( ).
4.1. , ,
,
.
.
.
2, 1 3.
.
((1; 10); (2; 3); (3; 4); (4; 5); (5; 6); (6; 7); (7; 8); (8; 9); (9; 10)),
1, .
.
(7; 9)),
((1; 3); (1; 3); (2; 4); (2; 4); (3; 5); (4; 6); (5; 7); (6; 8); (6; 8); (7; 9),
6.
,
, .. 1 8. ,
ut
, .. 1, 5, 7, 10.
4.1.1
4.1 .
.
.
4.1.
greedySele tion
.
A -
A1 = fi 2 A :
C (A) (C (A1 ))
A ( A1 ). C (A) = 1 + C (A1 ).
) -
si
f1 g
.
. ,
.
n 1 .
A n .
4.1.
57
,
ut
.
.
C (A) = 1 + C (A1 ).
, ,
, ,
-
A1 .
-
4.1 .
ut
4.1
.
- .
.
. ,
.
.
4.2. .
.
m[i; T
Ai = f1; : : : ; ig T . m[i; T
:
1
C.
1
,
.
58
4.
8
>
<
i > 0 0 T < fi
m[i; T =
i > 0 T fi
>
:
i = 0 T < 0
m[n; fn , fn m[i 1; T
maxfm[i 1; T ; m[i 1; si + 1g
0
.
(n fn) .
(n fn)
, , :
m[i =
8
>
<
>
:
(xi 1 ; yi 1 )
(xi 1 + 1; fi )
(0; 0)
i > 0 si < yi 1
i > 0 si yi 1
i = 0
,
m[n .
ut
n , i, i = 1; : : : ; n,
fi , fi > si 0.
4.3.
si
(..
).
, .
.
.
(interval
d () (,
d
). ,
.
.
.
k,
k .
, d .
.
4.2.
59
(s1 ; f1 ); : : : ; (sn ; fn ))
F max1in ffi g;
1;
for k
0 to F do
for all j 2 fi : (1 i n) ^ (fi = k )g do
1; /* j
*/
for all j 2 fi : (1 i n) ^ (si = k )g do
C [j
;
+ 1; /* j
*/
return(C );
greedyIntervalColoring(
(n F ).
2n .
si fi .
(n log n) (n)
.
ut
.
4.2
(..
, , , , .)
/
t1 ; t2 ; : : : ; tn .
.
(s heduling prob-
lems).
,
.
f1; : : : ; ng
,
/ .
,
(i).
-
i (),
X
j :(j )(i)
(i).
, A(),
n
1X
()
n i=1 i
tj
A() =
i () =
,
.
,
.
60
4.
4.1. 4 8, 7, 2, 5.
, 8, 15, 17, 22, 62. 2, 5, 7, 8,
2, 7, 14, 22, 45.
.
.
.
().
,
t1 t2 tn ( O(n log n)
). :
n
X
i=1
(n i + 1)ti
.
t1; t2 ; : : : ; tn )
0; T 0;
for i
1 to n do
=
+ ti ; T T +
;
return(T=n);
greedyS heduling(
4.2.
/*
t1 t2 tn
*/
.
,
.
n
. ,
.
(
. , (j )
j .
Pn
T ( ) =
j =1 (n j + 1)t (j ) .
,
k k , `
k . , (k ) > k .
k
1 ,
k < ` tk t` .
).
4.2.
61
tk t` T ( ) (n (k)+1)tk
(n
k + 1)t` . k `,
k k ` (k ), tk t`
(n
k + 1)tk (n (k) + 1)t` .
k ` :
.
ut
4.4.
.
. 4.2
EAXE
k = 1; 2; : : : ; n.
,
, .
.
n 1 .
n n t1
,
n 1 .
ut
4.5. . ,
n
X = fx1 ; : : : ; xn g X .
.
.
),
x1
xn
( -
.
,
, ( , ).
( ). ,
.
A
, . [x1 ; x1 +1. , A
62
4.
J x1 . x1
X , J [x1 ; x1 +1. (A nfJ g) [f[x1 ; x1 +1g
X , ,
A , . , -
(
).
X1 = X n [x1 ; x1 +1 X
A
[x1 ; x1 + 1. A1 = A n f[x1 ; x1 + 1g
X1 ( A ). ,
,
.
ut
.
4.6. 1, 5, 20
. .
.
. 20 ,
5 , 1.
x ( ) ,
20 ,
5 ,
1 20, 5, 1
x. :
20
bx=20
x5
x 20 20 ; 5
bx5 =5
x1
x5
5 5 ; 1
x1
20 20 +5 5 + 1 = x, .
,
.
,
20 20 .
, ,
20
. 20
.
. , 20
5 1
x 20 20 .
x,
.
.
, 20, 12, 1 24
,
2 12, 1 20 + 4 1.
ut
4.3.
4.3
63
(.
1.2).
,
. ,
fi P
2 [0; 1 i,
n
i=1 fi pi .
3.3,
2 f0; 1g
fi
B
,
NP-
,
Pn
i=1 fi si
-
. ,
(n log n) .
(.
3.3),
-
.
F = (f1 ; : : : ; fn ).
(f1 ; : : : ; fi 1 ; fi+1 ; : : : ; fn )
n 1 2.
,
i,
fi si
F i =
(
, ).
i,
ri = pi=si .
, -
,
r1 r2 rn
(n log n) ).
(
,
i .
( ) .
B; (s1 ; p1 ); : : : ; (sn ; pn ))
for i
1 to n do
ri pi =si ; F [i 0.
ri , . r1 r2 rn .
for i
1 to n do
if B 0 then F [i
0;
else if B si then
F [i 1; B B si ;
greedyKnapsa k(
else
F );
F [i
B=si ; B
B F [i si ( = 0);
return(
2
-,
F .
F .
64
4.
.
B.
i = 1; : : : ; k
) (.
k
Pk
i=1 si
>
1 (
fi = 1), -
i = k +1; : : : ; n ( )
fi = 0), k
(.
fk = B
k 1
X
i=1
si =sk
.
,
.
1 -
f1 , 0 < f1 1. ,
B f1 s1 . ( )
1 , 1.
F
,
)
(f1
f1 ) s1
(f1
f1 ) s1
f1 < f1
1.
(
1.
B f1 s1 . ,
F 1
. ,
1 . ,
.
4.3.
greedyKnapsa k -
.
-
. .
0
, .
.
B 0, n 1
n B . F = (f1 ; : : : ; fn )
= (f ; : : : ; f )
, F
n
1
f1 = f1 . .
, F 1 = (f2 ; : : : ; fn )
B f1 s1 2; : : : ; n. ,
F 1 = (f2 ; : : : ; fn ) B
f1 s1 = B f1 s1
4.3.
2; : : : ; n.
65
F 1
F 1
-. :
n
X
i=2
fi pi =
n
X
i=2
fi pi
f1 p1 +
n
X
i=2
fi pi = f1 p1 +
f1 = f1 , :
n
X
i=2
fi pi
F F . ,
ut
.
4.7.
. , .
B , B 1 (.. B = 100).
(1; 1 + ") (B; B ). r1 = 1 + "
r2 = 1. " > 0,
. 1+ ".
B .
.
.
. ,
. ,
.
,
.
4.3.1
ut
.
,
i
-
i .
3.3.
,
-.
- ,
``'' -.
66
4.
-.
.
- .
() - .
bottom-up ,
top-down : .
, -,
.
, .
/
-.
4.4
5
, () () .
, '
.
,
.
,
(, , .)
.
.
,
.
,
.
,
.
, .
(layout) (.. ,
- grid, ) .
.
,
.
, .
, (Minimum Spanning Tree),
.
5.1
(V; E )
,
E.
G(V; E ),
67
(graph)
68
5.
()
()
()
()
5.1: - .
G(V; E ),
V = fv1 ; : : : vn g
.
-
,
e = (v1 ; v2 ).
e = fv1 ; v2 g,
E = fe1 ; : : : ; em g
(v1 ; v2 )
- . G(V; E )
, n jV j, ,
m jE j.
(-) e = fv1 ; v2 g v1 v2 ,
e. e = (v1 ; v2 ) v1 v2 .
v1 ( ) e v2 ( ) e.
.
(u)
u 2 V . ,
(u) = fv 2 V : (u; v) 2 E g.
,
(
) (loop).
)
. (
).
.
5.1. () 5.1 ,
(
w:E
7! IR
G(V; E ) -
(weighted graph)
G(V; E; w).
.
5.1.
- ,
69
(degree)
v,
deg(v), v. ,
(in-degree) v , deg in (v )
v ,
(out-degree) v ,
deg out (v ) v . ,
() 5.1, 2 2, 3 4,
5 1. (), 3 3
1.
(G) G(V; E )
, (G) minv 2V fdeg(v )g.
(G) G(V; E )
, (G) maxv 2V fdeg(v )g.
GP
(V; E ), v2V deg(v) =
P
2 jE j, G(V; E ), v2V degin (v) = v2V degout (v) = jE j.
5.1. -
. - , 1
. , 1
ut
1 .
(v0 ; v1 ; : : : ; vk ), (vi 1 ; vi ) 2 E i = 1; : : : ; k,
k. ,
(walk)
``'' .
.
(trail) -
(path) .
, (simple path)
( ).
v u.
,
.
( ir uit) ,
( y le) . ,
, .
, (simple
y
le)
.
d(u; v) u; v
.
D(G) G(V; E )
G, D (G) maxu;v 2V fd(u; v )g.
5.2. ,
w u w.
. , ' .
,
-
, . ,
. ,
u w.
70
5.
u w ,
.
.
ut
( ) .
0
G0 (V 0 ; E 0 )
(subgraph) G(V; E ) V V
0
0
0
0
G (V ; E ) (spanning) V = V
E0 E.
(, / ),
0
V
(indu ed)
0
0
E = f(u; v ) 2 E : u; v 2 V g (
0
V ).
-
( onne ted) -
. , ``''
.
G(V; E ) ,
( on-
ne
ted
omponents). .
.
, () () 5.1 ,
() ,
f1; 2; 3; 4g
f5; 6g
``
u v''.
u; v 2 V ,
( ) u v v
u.
(strongly
onne
ted)
u; v 2 V , ( )
u v v u.
G(V; E ) ,
-
. , ()
5.1 ,
f6g
f1; 2; 3; 4g
f5g
.
``
u v v u''.
, .
. (a
y
li
)
(.
)
.
(forest).
(tree). , () 5.1
1 .
5.1.
(.. [21, 24, 12).
5.1.
71
3 /
4 /
6 /
6 /
3 /
5 /
1
2
3
4
5
6
1
0
1
0
0
0
0
2
0
0
1
1
0
0
3
1
0
0
0
0
1
4
0
1
1
0
0
0
5
0
0
1
0
0
0
6
0
0
0
1
1
0
5.2: .
5.1.
-
1.
2.
3.
G(V; E )
.
.
,
,
.
4.
5.
6.
jE j = jV j 1
jE j = jV j 1
,
,
.
5.3. 5.1.
5.1.1
.
(adja en y list)
(adja en y matrix).
G(V; E ) n m . ,
1; 2; : : : ; n.
G(V; E ) v 2 V .
L n . , v 2 V L[v . v
. , G (n + m)
G(V; E ), A, n n .
A[i; j 1 (vi ; vj ) 2 E 0 .
, A[i; j w (vi ; vj )
(vi ; vj ) . G
2
(n ) .
72
5.
3 /
3 /
6 /
3 /
4 /
5 /
1
2
3
4
5
6
1
0
1
1
0
0
0
2
1
0
1
0
0
0
3
1
1
0
1
1
0
4
0
0
1
0
0
1
5
0
0
1
0
0
0
6
0
0
0
1
0
0
5.3: - .
5.2, 5.3
- .
(sparse),
o(n2 ),
. ,
(dense),
(n2 ),
.
.
, ,
.
5.4. .
G(V; E ), G2 (V; E 2 ),
(u; w ) u w G
(, u w
2
2 G). G G
5.5.
.
G ,
2 V : (v; u) 2 E
u,
(.
u).
.
O(nm).
2
2
A , A [vi ; vj
2
2 vi vj . (vi ; vj ) G
A[vi ; vj + A2 [vi ; vj > 0. :
2 = A A G.
A
G2 . B [vi ; vi = 0 vi 2 V . vi ; vj 2 V , B [vi ; vj = 1
5.2.
73
G(V; E )
GT
(transpose
GT (V; E T )
graph)
= f(v; u) 2 V V : (u; v) 2 E g. ,
G .
ET
GT
G .
G , u 2 V
v 2 L[u, u LT [v v .
T
G
G. (n + m),
.
.
for all
v2V
LT [v
do
u 2 V do
for all v 2 L[u do
LT [v LT [v [ fug;
for all
AT
A).
,
A ( AT
v 2 V do
for all u 2 V
AT [u; v
A
for all
5.2
do
A[v; u;
ut
(n2 ), A.
,
.
G(V; E ) s 2 V ,
(Breadth-First Sear
h)
s.
() .
s.
k,
, ,
s (
1
s).
,
s ( 2 s).
,
k,
k 1.
`` ''
74
5.
k + 1.
k s
, :
,
,
,
,
-
,
.
. ,
-. - ,
.
,
-.
' , First-In-First-
Out (FIFO) - .
)
s.
, - (
,
( ),
. , . ,
p.
(.
v,
m[v
, -, )
(
p[v =
NIL
p[v
). ,
, - ,
.
BFS(
G(V; E ), s)
s m[s
for all v 2 V n fsg do
m[v ; p[v
addToQueue( );
p[s
NIL;
NIL;
extra tFromQueue();
v 2 L[u do
if m[v = then
m[u
for all
v m[v
addToQueue( );
p[v
u;
5.4.
( ):
, . FIFO
.
O(n).
-
.
(m) (.
5.1)
.
O(n + m),
O(m).
5.2.
75
.
-
p[v =
6
NIL.
s, v
,
-
.
(..
G(V; E )
,
-
), .
Gp (Vp ; Ep )
. , Gp (Vp ; Ep )
:
Vp = fv 2 V : m[v = g
Gp
Ep = f(p[v; v) 2 E : v 2 Vp n fsgg
v 2 Vp.
Vp = V ,
G(V; E ),
Gp
s
-
-
.
Gp .
,
s (.
5.6.2 5.30).
,
s
G(V; E )
G (. Vp = V ).
G.
5.7. -
.
G,
``'' .
G, . Vp 6= V , Vp
() V n Vp . V n Vp
s. G ,
Vp G.
, .
,
. .
.
ut
5.8. : ()
, () , () , () .
G(V; E )
(bipartite)
V1 V2 E V1
5.9.
76
5.
s
2
s
2
s
2
8
Q
8
Q
9
4
s
2
s
2
s
2
8
Q
8
Q
s
2
s
2
s
2
8
Q
8
Q
s
2
s
2
5.4: - .
, - , .
.
5.3.
V2 .
77
G(V; E )
.
.
G(V; E )
-. - / .
2V
.
s.
V2
s.
V1
.
V1
V1
V2 ,
V2 ,
( ), .
ut
O(n + m).
5.3
(Depth-First Sear
h)
. ()
, .
:
v .
v .
u, u.
v .
,
.
, .
v.
v,
.
-
, , ,
t
v -,
t 1 d[v t. d[v
v .
m p . m[v
v p[v
v . , ,
m, p, d.
.
- , .
G(V; E ))
DFS Init(
/* */
78
5.
0;
v 2 V do
m[v ; p[v
;
for all v 2 V do
if m[v = then DFS(v );
for all
NIL
DFS( )
t + 1; m[v ; d[v t;
for all u 2 L[v do
if m[u = then
p[u v; DFS(u);
m[v ;
5.5. DFS Init (
) DFS. -
DFS , DFS( )
. DFS( )
.
, (
- ).
O(n + m), .
, Gp (V; Ep ) . ,
Gp
.
Ep = f(p[v; v)
2E:v2V
p[v =
6
Gp
v.
To
NIL
-
Gp
(.
Gp .
-
G(V; E ) -, Gp
. ,
G .
,
Gp
DFS. , p[u = v DFS(u)
v ( , DFS(u)
DFS(v )).
Gp .
,
5.10. : ()
, () , () , () . .
5.11.
G.
G(V; E )
-,
5.3.
79
5
1
5.5: .
, - , . -
(.
d[v).
.
.
80
5.
. ,
:
Ep .
v .
(u; v)
v,
(ba
k edges) u v
u . (u; v)
v -. .
(forward edges)
u v
u . (u; v)
v d[u < d[v (. u v ).
( ross edges).
-
-
(u; v)
v d[u > d[v (.
u v ).
Gp .
5.5, . .
, , .
,
, .
-,
fu; vg
() . ,
fu; vg
(u; v) (v; u) .
5.12. -
.
.
fv; ug
- . , -
5.13.
.
.
(u; v)
5.3.
u .
(u; v ).
, G(V; E ) C . v C
, (u; v ) (``'') C
v . u v ()
v u ( C n (u; v )), () v ,
C . , (u; v ) .
ut
81
5.14. 5.13 - .
(n) ( -
) - .
. -
.
m n 1.
, n
1
. , O(n + m) = O(n).
ut
. ,
5.3.1
-
.
. ,
.
, ,
.
,
G(V; E ). ,
G . Gp (V; Ep )
s . s
Gp .
-
5.1.
Gp
s Gp ,
Gp . , s Gp G.
, s Gp .
- (.
5.12),
s.
s .
ut
82
5.
Gp
.
5.2.
v
Gp
v
Gp , .
u1 ; : : : ; uk v Gp , Tu1 ; : : : ; Tuk
v. Tu1 ; : : : ; Tuk
v , v
Tu1 ; : : : ; Tuk Gp
. , v . v
``'' Tui Gp . ,
Tui v .
ut
.
5.1
Gp .
5.2 ,
`(v) v 2 V :
8
>
<
`(v) = min
>
:
`(u)
d[w
d[v
u v Gp
w v (v; w)
v
w
d[w = `(v ).
v w . , Gp w v
,
.
5.2
5.3.
Gp
`(u) d[v
Gp
`(v).
u v `(ui ) d[v.
u -
v. v ( v) Gp .
5.2, v .
, u1 ; : : : ; uk v Gp . ui , i = 1; : : : ; k ,
`(ui ) < d[v, v
- d[v . v Gp .
5.2, v .
ut
-
5.6.
G(V; E ).
-
5.3.
83
1 (1) 8
1 (8)
1
1 (2) 5
2 (3) 1
1 (6) 4
2 (4) 2
1 (7) 7
9
1 (9)
2 (5) 3
5.6: .
G(V; E ).
.
v
`(v) d[v. 8
5 `(1) = 2 2 = d[5.
.
G(V; E ) Gp (V; Ep )
d[v v 2 V .
1.
2.
Gp -
, , (
- (postorder) ).
d[v, d[w w v
(v; w), `(u) u v.
`(v)
s Gp Gp
v u `(u) d[v .
3.
`(v) v
`(v)
.
u `(u) d[v
v . .
, O(n + m) = O(m).
5.15.
r
(root)
v r.
G(V; E )
, , .
s G.
G , s .
1.
84
5.
2.
G(V; E )
3.
NIL
G.
.
G.
. ,
s .
v , s v
s. v , s .
G s .
, s. s ,
. , G .
r G. u r
u. r ,
T
T
DFS(r ) ( BFS(r )) G (V; E ) (. 5.6).
G.
ut
5.3.2
1
,
. ,
'' ( `` '')
(u; v) u ``
.
(..
. ,
.
.
.
u.
(u; v)
( , `` '').
( 5.13). .
. (topologi
al sort).
G(V; E )
(u; v ) 2 E , u v . ,
DAGs ,
5.3.
85
1
3
5
4
6
7
11
10
8
9
10
11
4
1
5
7
9
11
10
5.7: . ()
G(V; E ).
() 1. () .
.
.
.
.
.
. Last-In-First-Out
v
v
Q (
(LIFO)
Q.
( DFS( )).
(n + m),
.
5.7.
,
v.
(u; v), u u
,
v LIFO.
86
5.
5.4.
(u; v)
,
(u; v ). (u; v ),
u - v .
v - (u; v )
(. 5.13).
u -,
v , (u; v)
DFS(v ). v
. u - DFS(v ).
, u v .
ut
, .
v.
5.16. 5.7, 3.
5.4
G(V; E; w) ,
w : E 7! IR+ . T (V; ET ) G w (T ) ,
P
w (T ) =
e2ET w(e).
G -
-
. , .
' .
.
,
.
G(V; E; w)
G .
.
(.. , , ). , ().
5.4.1
,
(S; V n S ) G(V; E )
S V V n S (. 5.9).
S V n S
(
ut set)
.
( ut)
, B.
5.4.
87
4
5
5
4
10
5
10
3
6
6
12
4
8
5.8: (). .
1
5
4
2
7
5.9:
f1; 2; 3; 5; 6g
.
,
nS
4
5
10
5
10
3
6
6
12
4
,
,
n S = f4; 7; 8; 9g
.
S =
-
(S; V n S ), , .
f5; 8g 4.
S V , (S; V n S ) = f(u; v) 2 E : u 2 S v 62 S g.
e
(S; V n S ) S V n S (
e 2 (S; V n S )). E 0 E (S; V n S ) E 0 \ (S; V n S ) 6= ;
0
(. E ).
(S; V n S ).
. , .
,
.
, .
88
5.
.
.
,
(S; V n S ).
,
e (S; V n S )
(. B.2 5.2).
. ,
. , .
.
.
n
1 , .
.
G(V; E; w))
;;
while jj < n
1 do
MST(
return(
[ feg;
);
e ;
e :
, [ feg ( ),
1.
2.
, [ feg .
,
G.
( ),
[ feg e .
jV j 1 , (. 5.1)
. , .
.
.
G.
5.2.
,
G(V; E; w)
(S; V n S )
n n
n
- ( )
( )
(S; V n S )
(S; V n S )
,
.
5.4.
89
S
u
p
v
y
V\S
(S; V n S ) e = fu; vg
(S; V n S ), e.
5.10:
G , e = fu; vg
(S; V n S ). [feg
T , e . e
T [ feg T . ,
0
T [ feg .
p T e, u v .
To p + e e T .
e S V n S , p ``'' (S; V n S ) (.
B.2). p (S; V n S ).
0
e = fx; y g 2 (S; V n S ) (. 5.10).
0
0
0
T = (T + e) n e G e
T + e p + e .
0
T n e T
(S; V n S ). , [ feg T 0 .
e (S; V n S )
0
0
e 2 (S; V n S ), e e . ,
0
T T :
.
T 0 G.
[feg G. ,
(S; V n S ) .
ut
w(e) w(e0 ).
,
5.17. :
G(V; E; w) G.
. . ,
.
ut
90
5.
G(V; E; w), e
. G
0
G (V; E n feg; w ) e.
5.18.
e.
G(V; E n e).
,
G e. T n e .
(S; V n S ) . e ,
0
0
e . e , w (e ) w (e).
0
0
, T = (T n e) + e G e.
ut
5.19. : -
.
,
, ,
ut
.
T (V; ET ) G(V; E; w)
, Wmax (T ) T , . Wmax (T ) =
maxfw(e) : e 2 ET g. T
T 0 G, Wmax(T ) Wmax(T 0 ). ,
G
5.20.
(bottlene k minimax ).
e = fu; vg T . w(e ) =
Wmax(T ). (S; V nS ) e T .
T , e (S; V n S ).
0
T (S; V n S ),
w (e ) = Wmax (T ). ,
T 0 G, Wmax (T 0 ) Wmax(T ).
ut
.
5.4.2
,
Kruskal
Kruskal .
(. 5.12).
Kruskal (. 5.11)
( -, union-find).
- makeSet( ),
v, findSet(v), v,
5.4.
MST-Kruskal(
91
G(V; E; w))
,
v 2 V do
v
;i 1
while jj < n
1 and i m do
ei = fu; vg
if
u =
6
v then
[ fei g
u; v
for all
w(e1 ) w(em ).
makeSet( );
findSet( )
findSet( )
; union(
i + 1;
return();
);
5.11: Kruskal . .
/ .
.
n 1 , .
u; v),
union(
u v
.
/ . ( )
.
.
.
makeSet. ,
(n) ( union).
(m log m).
( findSet)
(n) -
O(m)
[ fei g
ei .
, ei
,
. 5.2,
.
.
G0 G0 w(T )=2.
, Kruskal
w(T ).
92
5.
10
2
7
1
4
10
2
7
1
4
10
2
7
2
8
5
10
6
3
3
6
6 7
1
5
4
12
4
8
2
8
5
2
5
10
6
3
6
6 7
5
4
12
4
8
2
8
5
2
5
10
6
3
6
6 7
5
4
12
4
8
2
5
4
5
10
5
1
4
5
10
5
1
4
5
10
5
2
8
5
10
6
3
3
6
6 7
1
5
4
12
4
8
2
8
5
2
5
10
6
3
6
6 7
5
4
12
4
8
2
8
5
2
5
10
6
3
10
10
6
3
3
6
6 7
12
4
8
1
4
10
5
10
6
3
3
6
6 7
12
4
8
1
4
6
6 7
12
2
4
8
5.12: Kruskal.
4
8
.
, .
. Kruskal
.
5.4.3
T.
ut
Prim
Prim .
. ,
.
(. 5.14).
(.
[v v 62 S .
p[v v
[v (.
fp[v ; v g 2 E w (p[v ; v ) =
[v ). , v 62 S
5.13)
5.4.
93
G(V; E; w))
for all v 2 V do
[v 1; p[v
;
r V .
[r 0; S ;; ;;
while jS j < n do
v
[v = minu62S f
[ug;
if p[v 6=
then
[ fv; p[vg;
S S [ fvg;
for all u 2 L[v do
if u 62 S and w(v; u) <
[u then
[u w(v; u); p[u v;
return();
MST-Prim(
NIL
NIL
5.13: Prim .
[v .
v .
S . v 62 S
,
[v fp[v; vg ,.
, .
(binary heap), Prim
Kruskal. ,
p (n).
n 1 , ,
O(n log n). ,
.
.
Kruskal .
Prim,
(S; V n S ),
.
,
(.
5.2)
5.22. G(V; E; w) ,
e () ( ,
8e 2 E n fe g; w(e ) < w(e). G e.
94
5.
1
5
4
2
7
1
5
4
2
7
1
5
4
2
7
4
5
5
10
6
8
5
6 7
6 7
12
4
1
4
5
10
6
10
5
10
12
10
10
6 7
12
4
4
5
10
5
1
4
5
10
5
1
4
5
10
5
2
8
5
10
6 7
1
5
4
12
4
8
2
8
5
2
5
10
6
6 7
5
4
12
4
8
2
8
5
2
5
10
6
6 7
4
5
10
5
1
4
5
10
5
1
4
2
8
5
10
6
3
3
6
6 7
12
4
8
2
8
5
5
10
6
3
3
6
6 7
12
4
8
12
2
4
8
4
1
5.14: Prim 1.
,
.
.
.
.
;
;
. .
e T
.
G e .
e
. ``'' . ,
G.
G 3
5.5.
95
(.. 1, 2, 3).
G g,
g
1 G.
e .
,
(.
Kruskal
5.23).
ut
g 1 .
G(V; E; w) . G (. T ,
0
0
T , w(T ) > w(T )).
5.23.
T T 0 G. ,
0
0
0
0
w (T ) = w (T ). T T , e 2 T n T .
0
0
0
(S; V n S ) e T . e 62 T ,
e 2 T (S; V n S ).
0
0
, w (e) < w (e ) ( w (e) > w (e ) ). ,
0 0
(T n e ) + e G
w(T 0 ). T 0 .
ut
.
G(V; E; w) T G.
0
0
G e w (e ).
0
O(n) G
( T ).
5.24.
G0
.
T.
T.
e0
C . G0
O(n), n .
ut
5.5
,
G(V; E; w) .
w : E 7! IR . ,
, , , . ,
w(e)
e 2 E
.
G(V; E; w) / , () p = (v0 ; v1 ; : : : ; vk )
Pk
. , w (p) =
d(u; v) v
i=1 w(vi 1 ; vi ).
u u v .
96
5.
d(u; v) =
v u.
(shortest path) u v d(u; v ).
() (. 5.2).
. ,
s t.
s t
G(V; E; w)
-
,
.
, .
.
G(V; E; w), s 2 V , t 2 V , s
t.
,
G(V; E; w) s 2 V ,
s -
.
(Single-Sour
e Shortest Paths Problem). : Bellman-Ford
Dijkstra.
.
,
.
,
G(V; E; w)
.
(All-Pairs Shortest Paths
Problem)
jV j
.
. , Floyd-Warshall
.
,
.
.
-,
. ,
.
.
5.5.
97
3
5
12
10
(1; 2; 5; 6; 1)
5, (1; 5; 6; 1) 7.
1 1
5.15: .
.
5.5.1
G(V; E; w)
.
d(u; v)
-,
u; v
2V
,
,
(.
4).
,
, .
, (.. 5.15)
s, s
. p s
0
, p p
. ,
.
s . u,
s u ,
d(s; u) d(s; u) = 1.
5.5.2
. ,
. ,
.
5.5.
(u0 ; u1 ; : : : ; uk )
p
ui
pij
G(V; E; w)
u0
uj
uk
i j 0i<jk
ui uj
,
p =
,
.
p ui uj ,
ui
uj p0ij w(p0ij ) < w(pij ).
.
98
5.
pij p0ij p, u0 uk
p. p u0
uk
ut
.
G(V; E; w) 5 . ,
u; v; w 2 V , d(u; v) d(u; w) + d(w; v). , u v
u
w w v .
.
5.1.
(v; u) 2 E
G(V; E; w)
d(s; u) d(s; v) + w(v; u)
,
,
2V
G(V; E; w), p
s t. p
5.25.
.
;
5.5.3
G(V; E; w) s -
u s.
s u (
5.5).
s s.
p n .
p[u
()
p[u
u
. ,
u s u (.
p, Gp (Vp ; Ep ) :
Vp = fv 2 V : p[v 6=
NIL
g [ fsg
Ep = f(p[v; v) 2 E : v 2 Vp n fsgg
G(V; E; w) s
5.26.
5
G.
, -
.
5.6.
5.6
99
5.1.
s. u,
``'' `[u d(s; u). `[s = 0 `[u = 1
u s. u
s. `[u
s u
.
G(V; E; w)
5.1.
5.1.
`[u
G(V; E; w)
d(s; u)
,
.
,
`[u , :
`[v d(s; v) .
-
5.1.
ut
u
s, `[u = 1 .
ut
.
.
.
100
5.
1
8
2
5
10
4
5
4
8
8
2
2
2
4
1
2
0
5
6
4
3
5.16: Bellman-Ford.
i -
i
. . (
L(i; u) = 1).
.
5.6.1
Bellman-Ford
Bellman-Ford
.
. Bellman-Ford
, .
G(V; E; w) n m s.
i = 0; : : : ; n 1 u 2 V , L(i; u) s u
i . n
1 ('
).
s, L(n 1; u) = d(s; u) u 2 V .
, L(0; s) = 0 L(0; u) = 1 u .
, ,
5.6.
101
.
s u i + 1 s v i
(v; u), v (v; u) 2 E . s
u i + 1
s
u i
s v i (v; u),
v (v; u) 2 E . s u i + 1
. , L(i + 1; u)
v:(v;u)2E
(5.1)
G
s, s u ( )
S
u n 1 .
s, L(i; u) = L(n
1; u) = d(s; u)
i n u 2 V . L(n; u) < L(n
1; u) u,
.
s
(5.1) . i = 0; : : : ; n
1
u, L(i +1; u) L(i; v )
v 2 V . , p[u (
u) s
u i .
Bellman-Ford.
Bellman-Ford 5.16.
.
5.6.
,
G(V; E; w); s)
for all u 2 V do
`[u 1; p[u
;
`[s 0;
for i
1 to n 1 do
for all (v; u) 2 E do
if `[u > `[v + w(v; u) then
`[u `[v + w(v; u); p[u
for all (v; u) 2 E do
if `[u > `[v + w(v; u) then
Bellman-Ford(
NIL
return(
v;
);
102
5.
(5.1),
i + 1, `[u L(i + 1; u) u. ,
n
1 `[u L(n 1; u).
s, `[u = d(s; u) (n
1)- .
, .
.
Bellman-Ford
(nm).
,
5.2.
G(V; E; w)
s
.
,
`[u = d(s; u)
. , .
.
s,
,
5.1.
5.1,
`[u
d(s; u).
ut
.
5.3.
G(V; E; w)
s
.
.
,
5.6.
103
= (v0 ; v1 ; : : : ; vk ), v0 = vk ,
s. s,
`[vi , i = 0; 1; : : : ; k , n
1. ,
.
.
). ,
k
X
i=1
`[vi
k
X
i=1
`[vi 1 +
k
X
i=1
v0 = vk
w(vi 1 ; vi ) )
k
X
i=1
w(vi 1 ; vi ) 0
.
.
ut
a.
5.28.
Bellman-Ford .
.
(u; v)
p.
p,
Bellman-Ford.
(u; v) 2 E do
if `[u > `[v + w(v; u) then
print(u; v );
y v; x p[y; p[y NIL;
while x 6= NIL do
print(x);
y x; x p[y; p[y NIL;
for all
return(
5.6.2
);
Dijkstra
Dijkstra . Dijkstra
-
Bellman-Ford. ,
m s.
.
G(V; E; w) n -
,
104
5.
Dijkstra
.
.
, .
.
,
.
Dijkstra
`[u u
s. `[s = 0 `[u = 1 u
. S .
u 2 S , p[u ( u)
s u .
.
,
.
,
( ) (
).
62 S
,
`[u u s (. 5.4).
u . ,
u
.
,
s
s.
s .
Dijkstra 5.17.
G(V; E; w); s)
for all u 2 V do
`[u 1; p[u
;
`[s 0; S ;;
while jS j < n do
u `[u = minv 62S f`[v g;
S S [ fug;
for all v 2 L[u do
if `[v > `[u + w(u; v ) then
`[v `[u + w(u; v); p[v u;
Dijkstra(
NIL
,
.
.
O(m) .
(binary heap)
,
O(log n).
O(log n).
5.6.
105
8
2
2
2
10
2
5
3
2
2
5
15
5
2
6
3
10
3
2
10
3
2
2
14
5
2
14
3
2
14
2
4
3
5.17: Dijkstra.
.
S ) .
(
(
V n S)
.
.
.
106
5.
O((n + m) log n) .
O O(n log n + m)
Fibona i.
. Prim Dijkstra.
S.
,
. Prim,
,
Dijkstra,
,
E ).
(
ut
).
Dijkstra
.
.
5.4.
G(V; E; w)
u
,
,
.
d(s; s) = 0.
`[u = d(s; u)
jS j
, .
S , `[s =
u
, `[u = d(s; u). , u
`[u .
, `[u > d(s; u) (
5.1). s
u
p `[u. z
p u. , p d(s; u) = d(s; z ) + w (z; u) < `[u.
( w (z; u) 0),
u.
(5.2)
5.6.
107
( S)
( V \ S)
u
z
p
y
x
5.18: H Dijkstra . -
s.
u s y
,
z .
,
x, s y, s
p s x, y, z
( 5.5).
,
(5.3)
,
`[y
x S .
(x; y) -
62 S
u .
ut
5.29.
-
x, x > 0, () .
x Dijkstra
:
.
5.30.
.
.
108
5.
`
s. `[s = 0 `[v = 1 v
. v - p[v
u,
`[v
`[u + 1.
. .
s,
Dijkstra .
2V
-
`[v. ,
0
v - ( )
0
v , `[v `[v .
.
, - .
x v
0
. p[v = x `[v = `[x + 1. x
0
x `[x `[x.
0
v - ( ) v
0
x x x.
(x; v ) v .
0
, : `[v `[x + 1 = `[v .
-.
-.
(
). 5.1
,
( ) Dijkstra
ut
5.31.
(. -
.
Problem). Dijkstra .
Dijkstra,
.
;
5.32.
(.
O(n + m))
.
.
5.7.
.
G(V; E; w)
0.
109
,
,
.
( 5.3.2).
s ,
.
,
s.
`[s = 0
`[u =
`[u
u .
. ,
.
.
Dijkstra
. , .
. .
(n + m) .
,
,
`[u
d(s; u).
u `[u .
.
u
.
5.7
ut
, -
G(V; E; w) , d(u; v)
u
v (u; v).
.
Dijkstra (
) Bellman-Ford ( )
u2V
.
n . O(nm + n2 log n)
2
, O(n m)
.
, Floyd-Warshall
O(n3 )
.
110
5.
G(V; E; w))
for i
1 to n do
for j
1 to n do
if (vi ; vj ) 2 E then D0 [i; j
w(vi ; vj );
else D0 [i; j
1;
D0 [i; i 0;
for k
1 to n do
for i
1 to n do
for j
1 to n do
if Dk 1 [i; j > Dk 1 [i; k + Dk 1 [k; j then
Dk [i; j Dk 1 [i; k + Dk 1 [k; j ;
else Dk [i; j
Dk 1 [i; j ;
Floyd-Warshall(
5.19: Floyd-Warshall .
, Floyd-Warshall
Dijkstra
5.7.1
n
(n2 ) .
Floyd-Warshall
,
G(V; E; w)
( ). ,
.
, -
V = fv1 ; v2 ; : : : ; vn 1 ; vn g. vi ; vj 2 V , w(vi ; vj ) = 1
i 6= j (vi ; vj ) , w(vi ; vi ) = 0.
.
. , -
d(vi ; vj ) vi ; vj 2 V ``''
d(vi ; vk ) d(vk ; vj ) vk 2 V n fvi ; vj g ( `''
). -
d(vi ; vj )
vi vj vk ,
vi
vk
vk
vj ( 5.5).
vi
vj
,
(vi ; vj ).
. ,
d(vi ; vj ) = minfw(vi ; vj );
min
fd(vi ; vk ) + d(vk ; vj )g
vk 2V nfvi ;vj g
(5.4)
Floyd-Warshall
bottom-up .
bottom-up ,
vi vj
Vk = fv1 ; : : : ; vk g, k = 0; 1; : : : ; n.
vi
vj
,
5.7.
111
2
1
5
3
3
2
5
3
2
4
4
5.20: Floyd-Warshall.
vi vj
Vk , Vk . V0 = ;,
(vi ; vj ). , k = n Vn = V ,
.
(vi ; vj ) 2 V V , k = 0; 1; : : : ; n, Dk [vi ; vj
vi
vj Vk = fv1 ; : : : ; vk g.
D0 [vi ; vj = w (vi ; vj ) V0 = ;. k ,
Dk [vi ; vj (vi ; vj ) 2 V V .
vi
vj Vk+1 = Vk [
fvk+1g vk+1 (
). vk +1 , vi
vj
Vk +1 Dk +1 [vi ; vj = Dk [vi ; vj (
vi
vj Vk ). ,
vi vj vi vk vk vj
Vk .
Dk +1 [vi ; vj = Dk [vi ; vk + Dk [vk ; vj .
. ,
Dn [vi ; vj .
Dk [vi ; vj =
vi vj .
w(vi ; vj )
minfDk 1 [vi ; vj ; Dk 1 [vi ; vk + Dk 1 [vk ; vj g
d(vi ; vj )
k=0
k = 1; 2; : : : ; n
(5.5)
(5.5) (5.4)
Dk [vi ; vj .
Dk
Dk 1 . k = 0; 1; : : : ; n,
Dk n n. D0
.
Dn .
D0 ; D1 ; : : : ; Dn .
Floyd-Warshall.
112
5.
D0
B
B
=B
B
B
0
D2
B
B
=B
B
B
0
D4
B
B
=B
B
B
1
0
1
1 1
1 1
3
0
5
1
0
1
1 1
1 1
3
0
4
1
0
1
1 1
1 1
3
2 1
1 3 1C
C
0 2 1C
C
A
1 0 4 C
1 1 0 1
0
2 1
1 3 1C
C
0 2 1C
C
A
1 0 4 C
3 1 01
0
2 2
1 1 5C
C
0 2 6C
C
A
1 0 4C
3 1 0
5.21:
D1
D3
1
0
1
1
1 1 0
1 1 1
3 4 1
0
B
B
=B
B
B
B
B
=B
B
B
0
D5
B
B
=B
B
B
1
0
0
1
0
1
1 1
1 1 1
3
0
8
9
7
3
1
0
10
8
4
0
1
0
7
3
2
3
2
0
1
2
1
2
0
1
2
1
2
0
1
1
1C
C
1C
C
C
4
0
1
1C
C
1C
C
C
2
5
6
4
0
4 A
01
C
C
C
C
C
A
D0 ; D1 ; : : : ; D5 Floyd-Warshall
5.20.
Floyd-Warshall 5.19.
D0 ; D1 ; : : : ; Dn Floyd-Warshall 5.20
5.21.
Floyd-Warshall for-loops
Dn . vi
Dn [vi ; vi < 0 Floyd-Warshall.
5.7.2
.
n (),
vi p n .
p[vj vj vi . , p[vj
vj vi
vj .
n , P n n . i-
P vi , i = 1; : : : ; n. ,
(vi ; vj ), P [vi ; vj vj
vi
vj . vj vi vi vj
(. i = j ), P [vi ; vj
.
NIL
5.7.
113
P Floyd-Warshall.
P0 ; P1 ; : : : ; Pn
D0 ; D1 ; : : : ; Dn . , Pk
vi Vk = fv1 ; : : : ; vk g.
P0 . , P0 [vi ; vj vi (vi ; vj )
,
i = j (vi ; vj ) 62 E . ,
NIL
P0 [vi ; vj =
NIL
vi
i = j (vi ; vj ) 62 E
Pk Pk 1
Dk Dk 1 .
Dk 1 [vi ; vj Dk 1 [vi ; vk + Dk 1 [vk ; vj , Dk [vi ; vj vk . , Pk [vi ; vj = Pk 1 [vi ; vj
vi
vj ( vj )
vk . Dk 1 [vi ; vj > Dk 1 [vi ; vk + Dk 1 [vk ; vj ,
Dk [vi ; vj vk .
Pk [vi ; vj = Pk 1 [vk ; vj vi vj vk
vj Pk 1 . ,
vj vi
vj vj
vk
vj .
Pk
Pk 1 . ,
Pn .
Pk [vi ; vj =
Pk 1 [vi ; vj
Pk 1 [vk ; vj
P0
Pk
Pk 1 Floyd(n3 ).
2
(n ) Pk Pk 1 .
Warshall.
5.33. Floyd-Warshall
Pn .
P0 ; P1 ; : : : ; P5
P5 5.20.
P0 ; P1 ; : : : ; P5
-
5.20 5.23.
P5 5.22.
ut
114
5.
1
3
2
5
2
4
4
1
4
2
2
1
2
5
4
1
2
1
3
2
5
5.22: 5.20.
5.8
NP, .
[2 -
.
[2 , , .
, [2
5.8.
P0
B
B
=B
B
B
0
P2
B
B
=B
B
B
0
P4
B
B
=B
B
B
NIL
NIL
NIL
115
NIL
1
2
3
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
5
1
NIL
NIL
NIL
NIL
2
2
1
2
3
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
1
1
2
2
2
1
1
3
3
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
5.23:
NIL
NIL
NIL
NIL
NIL
4
4
4
4
C
C
C
C
C
A
B
B
=B
B
B
P1
C
C
C
C
C
A
B
B
=B
B
B
P3
C
C
C
C
C
A
B
B
=B
B
B
P5
NIL
P0 ; P1 ; : : : ; P5
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
1
1
NIL
NIL
NIL
2
2
1
2
3
NIL
1
1
3
3
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
1
1
2
2
2
1
1
3
3
NIL
5
5
5
5
NIL
1
1
1
NIL
2
2
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
4
4
4
4
1
C
C
C
C
C
A
1
C
C
C
C
C
A
1
C
C
C
C
C
A
NIL
Floyd-Warshall
5.20.
.
[1.
,
[7, 11 [40.
, Kruskal 1956 [27. Prim 1957 [35,
Jarnik 1930.
, Dijkstra
1959 [14. Bellman-Ford 1958 R. Bellman [4 L. Ford [19. Floyd-Warshall 1962 R. Floyd [18 S. Warshall
[43.
, R. Warshall -
.
116
5.
6
( ),
,
.
,
.
Turing (Halting Problem).
,
.
. ,
.
.
,
( omplexity lasses), -
.
.
(
omplete) .
,
.
6.1
, . .
.
.
.
,
117
118
6.
' . (formal
languages) .
,
.
. ,
,
.
V.
G(V; E; w), s; t 2
.
s t .
t s.
s t ,
.
-
.
B s t t
(G(V; E; w ); s; t; B ).
-
.
: .
f ;
S , I S . (i; s) 2 i
s i.
6.1.
.
, .
-
B.
``
(.. ),
(.. ),
.
(formal languages).
,
. ,
(en
oding)
e
6.1.
119
e(i) 1. e(i)
i. ()
,
. i e(i)
, L(; e) .
e
, L(; e) e(i) 2 , i
.
6.2.
,
6.1.1
.
,
(tra table),
(intra table).
.
( )
, .
,
.
, .
,
1970.
.
, , . ,
, .
.
O(nk ), n k . -
P.
P S. Cook
(..
e(i) , .).
x dlog jj xe ,
120
6.
.
(.. ).
(n100 ) n=100 ).
, (2
,
.
(.. 1, 2, 3).
, ,
, .
.
,
, .
6.1. .
;
6.2
Turing
, Turing
. Turing
.
,
Turing (Multitape Deterministi
Turing Ma
hines).
Turing
.
1
(tape)
(
ells) . (blank)
.
,
(tape head)
. ,
Turing
Q.
(state).
Turing
,
,
,
, .
, (
(
L),
(
Turing
S ).
(final state).
k 1.
M k M = (Q; ; ; q0 ; F ) :
R),
Q
. To
121
Q q0
.
.
xy
.
q0 2 Q
F Q
: (Q n F )
.
.
7! Q k fL; R; S gk
.
Turing
.
,
.
(input tape).
Turing. -
q0 .
)
Turing
.
(
x 2 .
xy
),
x
.
F.
:
,
(halt)
. Turing ,
F =f
F =f
g.
, M (x) =
. Turing ,
M x
(a
epts) x.
,
M (x) =
M
(reje
ts) x.
x 2 M
M
L(M ).
,
,
(output tape).
.
.
M (x)
M (x) = y.
x
.
122
6.
,
f0; 1g
f
g
xy1101
1101,
M = (Q; ; ; q0 ; F ). , =
= f0; 1; xyg. q0 , F =
Q = fq0 ; s; s0 ; s1 g [ F .
,
:
p2QnF
q0
q0
q0
q0
s
s
s
s
s0
s0
s0
s0
s1
s1
s1
s1
2
B
0
1
xy
B
0
1
xy
B
0
1
xy
B
0
1
xy
(p; )
(q0 ; B; R)
(q0 ; 0; R)
(q0 ; 1; R)
(s; xy; L)
(; B; R)
(s0 ; xy; R)
(s1 ; xy; R)
(s; xy; S )
(; B; R)
(q0 ; 0; L)
(q0 ; 0; L)
(q0 ; 0; L)
(; B; R)
(q0 ; 1; L)
(q0 ; 1; L)
(q0 ; 1; L)
1101 -
.
.
(q0 ; B1101)
(q0 ; B1101xy)
(s0 ; B11xyxy1)
(s; B1xy101)
6.2.1
!
!
!
!
(q0 ; B1101)
(s; B1101xy)
(q0 ; B11xy01)
(s1 ; Bxyxy101)
!
!
!
!
(q0 ; B1101)
(s1 ; B110xyxy)
(s; B11xy01)
(q0 ; Bxy1101)
!
!
!
!
(q0 ; B1101)
(q0 ; B110xy1)
(s1 ; B1xyxy01)
(s; Bxy1101)
! (q0; B1101) !
! (s; B110xy1) !
! (q0; B1xy101) !
! (
; Bxy1101)
Turing
, , Turing ( ). ,
Turing
.
, DTM
-
M x M . M (x) , U (M ; x)
M (x).
U (M ; x) = M (x). M (x) , U (M ; x) .
DTM
6.3.
6.3
123
M , x 2 L, M (x)
.
x 62 L, M (x) .
L DTM(de
idable)
DTM M L
2
n L . , x 2 L, M (x) =
, x 62 L, M (x) =
.
,
Turing -
x 2 , ``x 2 L ;'' (
).
Turing
DTM
x 2
.
, Turing ( ).
( omputes)
f :
7!
f (x) = y, M (x) = y,
DTM- DTM .
.
Chur
h - Turing () () () Turing.
(..
-definability Chur h,
Post, Markov).
() () Turing . Chur
h Turing Turing
.
6.2. :
1. DTM- DTM-.
2.
DTM-,
DTM-
.
3.
2
plement)
DTM-
DTM- .
n L
L
( om-
124
6.
). (2), DTM
. DTM
DTM
.
0
DTM M L M M ( M ,
0
M , .). M (x) M (x)
M (x) . x 2 L (
L), M (x) M (x) .
ut
6.3.1
-:
Turing.
: ( Turing).
, - (un ountably)
(
ountably)
Turing. Chur
h - Turing, -
(
).
Turing (Halting Problem), DTM
6.1.
.
M (x) .
x,
- (unde idable).
-
. DTM
M
H (M ; x) =
DTM
x, M (x) .
M (x) , H (M ; x) =
.
H , DTM J :
J
H (M ; M ) H
J (M ))
H
.
, .
H (M ; M ) =
J (M ) .
H (M ; M ) =
J (M ) .
J (M ) M (M ) .
J ( J (J )). ' , J (J )
J (J ) .
ut
DTM-.
DTM-
.
6.4. -
6.4
125
-
.
(.. , ) .
M , M ,
.
.
Turing
Turing
.
, DTM
.
(run-
(time
omplexity) M
t : IN 7! IN : n 2 IN, t(n)
M x n.
t(n) M , M t(n)
DTM t(n)-.
( L)
ning time)
( ) DTM
( L).
DTM
( )
O(t(n)).
t(n)- ,
t : IN
7! IN
, -
DTIME[t(n)
O(t(n)).
/
DTIME[t(n)
, ,
6.2.
t(n).
t(n)
t(n) DTIME[t(n)
,
. ,
.
-
.
, ( , , )
.
126
6.
6.2
k = 1; 2; 3; : : : .
DTIME[nk ,
,
P EXP.
P ,
EXP . ,
P
[
k0
DTIME[nk
EXP
[
k 0
DTIME[2n
( ) ,
P EXP. , P EXP.
. ,
6.2
.
6.3.
P EXP.
ut
. 6.2.
6.4. ,
( ).
6.4.2
.
Cook - Karp
-
.
.
,
P.
(Boolean formula)
.
(
lauses), =
1 ^
2 ^ : : : ^
m ,
(literals),
i = `i1 _ `i2 _ : : : _ `ik .
xi :xi . , (x1 _ x2 ) ^
(x2 _ x3 ) ^ (:x1 _ :x3 ) .
.
6.4. -
127
6.1: G (V; E ) = (x1 _ x2 ) ^ (x1 _ :x3 ) ^
(:x1 _ x2 ) ^ (x2 _ x2 ) [33, 9.1.
(satisfiable) -
.
k- (k-SAT),
.
.
k - Turing M
M
.
6.3.
2-
n x1 ; : : : ; xn m
. , 2 .
x _ y (:x ! y ) ^ (:y ! x).
,
G (V; E ) . , V = fx1 ; : : : ; xn g [ f:x1 ; : : : ; :xn g.
`i _ `j , G (:`i ; `j ) (:`j ; `i )
x ::x (. 6.1). , G
0
. , G (`; ` )
0
(:` ; :`).
x
x :x :x x.
() G O(n + m),
() :x x
O(n(n + m)) n .
(n + m),
.
P.
2-.
p x
:x :x x.
(x) = 1. (x) = 1 (:x) = 0, p
(`1 ; `2 ) (`1 ) = 1 (`2 ) = 0.
128
6.
:`1 _ `2
.
(x) = 0.
, :x
x, .
G
1 0.
, :
,
` 1 `
`. , 0
(
:`
).
. '
x :x
`
x :` ` :x :`
`.
,
G . . ,
` x 0 , :`
:x ( ). , ` 0
x.
G .
. ,
1 0. ,
6.5.
, ,
.
L1 \ L2 L1 [ L2
,
.
.
M1
M2
L1
ut
.
P.
L1
L2
DTM
P,
L1
L2
-
, (
. x 2
L1 \ L2 M1(x) = M2 (x) = , L1 [ L2
M1 (x) = M2 (x) = , L1 M1 (x) = .
M1 (x) M2 (x) .
Turing)
. ,
6.5
P.
ut
(redu tion)
( ompleteness)
.
,
(hard) -
.
6.5.
129
R(x)
6.2:
1 2 [33, 8.1.
(
omplete) .
, .
.
1
2
R x R(x) x 2 1
R(x) 2 2 . R
1 2 . R
- 1 - 2 - 1
- 2 . R 1 2
/ Turing 2 1 (. 6.2).
1 2
2 1 . (
R) .
.
6.4 ( ).
2
R
x, x 2 1 R(x) 2 2 . / R
1 2 .
1
6.4 Karp. , .
6.6. (
2 , 2 3 , 1 3 ).
1
. DTM DTM . , .
6.7.
(
2
1 2 2 2 P, 1 2 P).
.
ut
R 1 2 DTM
DTM ,
130
6.
DTM (. 6.2).
DTM
ut
1 .
G(V; E ), G ,
4
V1 V2 . P,
6.8. -
(. 5.9). ,
2-.
. -
G(V; E ).
/
G 2
G G .
i 2 V xi . fi; j g 2 E ,
(xi _ :xj ) ^ (:xi _ xj ) xi xj .
, (,
).
G .
G(V; E ) , V1 , V2 .
1 V1 0 V2
G , G .
, G , G
V1 1 V2
0. V1 V2
( ).
ut
,
1 2 2 , 1
.
(.
1
,
.
1
(
1
2
).
2
2
,
.
C .
C ( C-, C-hard) 0 2 C .
2 C, C ( C-, C-
omplete).
6.5.
V
.
G(V; E )
(independent set)
6.6.
131
. ,
P.
-
,
,
NP.
.
.
C
C
.
, (.
NP).
,
,
.
C,
0
0
C C. C
0
C , C
0
C , C (
ollapse) C0 .
:
6.9.
C0
C C0 , C = C0 .
.
0
2 C0
C0 ,
0
. 2 C C , 0 2 C.
0
0
, C C. , C C. ,
0
0
C C . , C = C .
ut
6.6
,
[33.
[33.
.
, Turing,
, ,
[23, 29, 38. [23 , ,
Turing, -.
[29
Turing -.
[29
. [38
.
132
6.
7 -
NP
-
)
NDTM
.
, NDTM
(
)
DTM. , NDTM
.
.
P NP.
- Turing
. -
, , . -
, ,
.
NP,
, -
.
NDTM DTM ,
- Turing .
133
134
NP
7. -
7.1
-
- Turing
N
k 1 N = (Q; ; ; q0 ; F ). 6.3,
Q , q0 2 Q , F Q
, .
N
- Turing (Non-Deterministi
Turing Ma
hine - NDTM)
((Q n F )
/
k)
(Q k fL; R; S gk )
(Q n F )
k ,
( , , ). ,
NDTM , NDTM
.
, DTM NDTM,
7.1.1
.
NDTM
-
NDTM.
,
/ . , NDTM
( omputation paths) / .
, NDTM `` ''.
NDTM
N (x) .
N (x) .
NDTM
,
N (x)
2
.
N (x)
.
x
N (x)
. , N (x) =
,
, N (x) =
.
NDTM N
L x, ()
N (x) , () x 2 L N (x) =
.
x 2
x
135
q0
7.1: NDTM.
.
N (x)
N (x) q0
( omputation tree).
x.
.
) .
N (x)
(
( 7.1). /
, .
N x
x
.
,
- ( ``'')
x.
x , N (x).
, t : IN 7! IN.
NDTM N t(n)
x n,
N (x) t(n).
- t(n) NDTM
t(n) . ,
NDTM
-
NDTM ()
.
7.1.2
NTIME
-
NTIME[t(n).
O(t(n))
NTIME[
:
136
7. -
DTM NDTM,
NP
-
DTIME[t(n) -
t(n),
0
0
NTIME[t(n) DTIME[t (n), t (n) 0
t(n) ),
t(n). , t (n) = O(
> 1.
)
7.1.
-
O( t(n) )
,
>1
t(n)
N NDTM t(n) -
d
N . d `` -'' N .
d > 1, N DTM. DTM M
N .
N N d- .
t , M N
- . M
t(n).
M .
, M d- (
1 ; : : : ;
t ) N i -
i . , M
. , M (
1 ; : : : ;
t ) 1
. M d- t,
t 1 . M t,
t
.
N t(n), M
d- 1; 2; : : : ; t(n).
t
d- t O(d ). ,
Pt(n)
t
t(n)+1 ).
M
ut
t=1 O(d ) = O(d
.
7.1
t(n),
NTIME[t(n)
[
>1
DTIME[ t(n)
7.2.
NP
137
Turing.
7.1
Chur
h-Turing.
7.1. (
)
NTIME[n2 .
, ( )
B.
, ``'' . ,
.
O(n2 ).
7.2
ut
, . [33, 2.9.
NP
NP,
- . ,
NP =
[
k0
NTIME[nk
7.2.
k 1.
k- NP
2-;
k-. NDTM
, ``'' ( -) `` ''
(.. ).
, NDTM (
) ``'' .
.
- .
( )
NDTM .
R .
R
DTM x; y 2 ,
NP
ut
(polynomially de idable)
(x; y) 2 R. H R
(x; y) 2 R, y
k
x (, k 1 jy j jxj ).
7.2 (
NP).
NP
L = fx 2 : (x; y) 2 R
y 2 g
138
7. -
NP
-
R. L
NDTM N : x, N ``''
k
( -) y jy j jxj
(x; y) 2 R. , N x
(x; y ) 2 R. , N (x)
k
y jxj . N x
y (x; y ) 2 R (.
.
7.1 7.2).
jxj
nk .
'
(x; y)
2R
y
DTM ,
,
R :
N (x).
x.
L 2 NP NDTM N L
(x; y) 2 R y
' ,
L = fx 2 : (x; y) 2 R
y 2 g
R N (x)
k
jxj . H R
y
N (x).
ut
7.2
7.2, /
:
x , ``
NP
''
DTM
. , ``''
.
NP.
y x
`` ''
() .
`` '' .
, ``''
(
)
.
.
,
.
``''
B.
.
7.3.
NP
L1; L2 2 NP
.
,
L1 [ L2; L1 \ L2 2 NP
NP
7.3.
-
139
NP .
1 2 2 2 NP,
7.4.
7.3
NP
1 2 NP.
-
P NP DTM NDTM.
NP
. ,
NP ,
k-.
.
NP.
,
NDTM .
, .
P NP.
NP
,
NP,
.
``'' .
NP ,
NP- ( ).
NP- (NP-
omplete) NP
0 2 NP .
NP- .
P = NP.
7.3.
P=
6 NP,
NP . , P NP
, NP
NP P. , P 6= NP, , NP- (intermediate) , P
NP- (. 7.2). NP-
.
7.3
(graph isomorphism).
7.3
NP-
.
NP
(
140
7. -
NP
-
NP-
NP
7.2:
NP).
NP P 6= NP.
-
,
(
P)
NP-.
,
NP-.
-
NP-. ,
NP- -
7.5.
1 ; 2 2 NP 1 2 .
, ,
.
1.
1 2 P, 2 2 P.
2.
2 2 P, 1 2 P.
3.
2 NP-, 1 .
4.
1 2 NP- , 2 1 .
. (1) ,
1 P NP- 2 2
P = NP.
62 P
ut
.
7.6.
NP
;
.
NP;
NP .
P=
6 NP,
L 2 NP
P = NP,
P 6= NP,
(. 6.5).
NP
.
.
P
NDTM. , . .. [33,
10.
ut
7.3.
NP
-
141
NP-
7.3.1
NP-,
NP-.
NP
( ).
,
.
NP-
70
7.4.
( ).
NP-.
(. 7.2). ,
L 2 NP
NP
.
NDTM .
, NDTM
x,
x x 2 L.
N fa1 ; : : : ; am g
fq0; q1 ; : : : ; q` 1g. , n x. N t(n), t(n) .
x :
t(n).
L 2 NP
1.
(i; t) `` i
t'', 1 i t(n), 1 t t(n). t2 (n) .
2.
(k; t) `` N qk t'',
0 k ` 1, 1 t t(n). `t(n) .
3.
t,
.
NDTM
.
NDTM
142
7. -
NP
-
x -
.
:
1. , .
2. , .
3. ,
.
n x t(n) n
, N q0 .
4.
.
5.
t t(n), N
.
6. ,
.
7. , .
.
NDTM .
.
x .
.
ut
x .
2-, 2
, ( 6.3). ,
3-, 3 ,
NP-
7.5.
3-
NP-.
3-
NP
(. 7.2).
3-.
,
3-.
.
j
k 4
0j 3 .
j = `j1 _ : : : _ `jk
7.3.
NP
-
k 4 .
143
3 zj1 ; : : : ; zjk
3,
:
zji =
1
0
i<p 1
ip 1
,
`1 ; : : : ; `k
0j
-
. ,
ut
j .
7.5
NP-.
, -
. (..
3 ).
(.. ),
NP-.
,
B .
.
2-
NP-.
. 2-
NP.
NP-, 3-
2-. 10
:
C = f(x); (y); (z ); (w); (:x _ :y); (:y _ :z ); (:x _ :z ); (x _ :w); (y _ :w); (z _ :w)g
x _ y _ z ( x, y ,
z 0) 6 10 C . ,
x _ y _ z 7 10
144
7. -
(
w).
NP
-
.
=
1 ^ : : :
m 3-.
.
j = `j1 _ `j2 _ `j3
Cj =
wj
Cj .
0
Cj ,
0
2-
j = 1; : : : ; m.
B 7m.
7m 0
,
.
ut
,
,
, ,
NP- .
(independent set) -
.
(Maximum Independent Set), -
B.
G(V; E )
B
7.6.
.
NP-.
NDTM ``'' -
B ( )
2
O(n ). , () NP.
.
NP-,
3-
n
3-. , 3 . -
G (V; E ), jV j = 3m,
m .
G , .
.
,
, ..
7.3
,
xi :xi .
G (V; E )
V = fvji : j = 1; : : : ; m i = 1; 2; 3g
To
7.3.
NP
-
145
7.3: 3- .
[33, 9.2.
m .
.
G
.
.
G m . ,
xi :xi )
(..
.
1
.
G
m,
1 .
.
,
G
1 .
, . ,
ut
m .
NP-
. ,
.
, Konig (. .. [12)
.
7.8.
2.
146
7. -
NP
-
. 2
. , ,
( ,
).
bn=2
ut
.
,
NP-
.
, -
, (-
NP-,
2-, 2 ,
P ( 6.3).
,
7.9. - ,
NP-.
( lique)
( ,
). (Maximum Clique), -
G(V; E ) B .
G B
.
.
NP-.
G
G.
ut
C
(vertex
over) C .
7.10. - ,
G(V; E ) B . G
B .
NP-.
X V
V n X ) .
(.
,
X
V n X . X V V n X
. . G
B jV j
B
ut
.
7.4
NP-.
[20
NP-
NP- .
7.4.
147
NP-
[33.
NP-
[33
.
[33.
, Ja
k Edmonds (.. . [16, 15 [33)
,
P NP.
, Edmonds
. Edmonds
(
NP- ).
Cook-Levin
NP-
[8, 28.
-
NP- [26.
148
7. -
NP
-
Addison-
[3 S. Baase.
Computer Algorithms:
Adisson-Wesley, 2nd
edition, 1988.
[4 R. Bellman. On a Routing Problem.
[5 R.E. Bellman.
Dynami Programming.
16(1):87-90, 1958.
Pro . of the
[9 J.M. Cooley and J.W. Tu
key. An Algorithm for the Ma
hine Cal
ulation of Complex Fourier
Series.
Mathemati s of Computation,
19(90):197-301, 1965.
[10 D. Coppersmith and S. Winograd. Matrix Multipli
ation via Arithmeti
Progressions. In
of the 19th ACM Symp. on Theory of Computing (STOC '87),
Pro .
[12 R. Diestel.
Graph Theory.
22(6):644-654, 1976.
[14 E.W. Dijkstra. A Note on Two Problems in Conne tion with Graphs.
Numeris he Mathemati ,
1:269-271, 1959.
[15 J. Edmonds.
1966.
149
17B(4):233-240,
150
[17 S. Even.
17B(4):241-245, 1966.
Graph Algorithms.
Flows in Networks.
ompleteness.
[21 F. Harary.
5(6):345, 1962.
NP-
Graph Theory.
Addison-Wesley, 1969.
[22 M. Held and R. Karp. A Dynami
Programming Approa
h to Sequen
ing Problems.
Journal on Applied Mathemati
s,
SIAM
10(1):196-210, 1962.
North-Holland, 1976.
[25 A. Karatsuba and Y. Ofman. Multipli
ation of Multidigit Numbers on Automata (in Russian).
Doklady Akademii Nauk SSSR,
145:293-294, 1962.
[26 R.M. Karp. Redu
ibility Among Combinatorial Problems. In R.E. Miller and J.W. That
her,
editors,
7:48-50, 1956.
9(3):265-
266, 1973.
[29 H.R. Lewis and C.H. Papadimitriou.
Prenti e-Hall,
1981.
[30 K. Mehlhorn.
Randomized Algorithms.
Springer, 1984.
Combinatorial Optimization:
Computational Complexity.
Addison-Wesley, 1994.
In
151
[35 R.C. Prim. Shortest Conne
tion Networks and Some Generalizations.
Journal,
36:1389-1401, 1957.
[36 R. Raz and A. Shpilka. Lower Bounds for Matrix Produ
t in Bounded Depth Cir
uits with
Arbitrary Gates. In
pp.
409-418, 2001.
[37 R. Sedgewi
k.
[38 M. Sipser.
Algorithms.
Numeris he Mathematik,
13:354-356, 1969.
1(2):146-160, 1972.
[41 R.E. Tarjan.
[42 V. Vazirani.
Approximation Algorithms.
SIAM, 1983.
Springer, 2001.
9(1):11-12, 1962.
152
.
, , -
A.1
T (1) = (1) .
.
,
:
T (n) =
2 T (n=2) + n
2
n = 2k k 2
n = 2
(A.1)
n 2
n=2 .
:
T (n) = n + 2 T (n=2)
= n + 2 n=2 + 22 T (n=4)
= n + 2 n=2 + 22 n=22 + 24 T (n=23 )
.
.
.
n=2log n 1 = 2.
,
.
: (.
),
.
153
154
A.
n2
n2
+
(n/2)2
n2/2
(n/2)2
log n
+
(n/4)2
(n/4)2 (n/4)2
n2/4
(n/4)2
+
.
.
.
.
.
.
: (n2)
A.1:
T (n) = 2 T (n=2) + n2 .
,
(.. (A.1)
n 2).
.
T (n) = 2 T (n=2) + n2 .
A.1.
( 0)
,
log
Xn
i=0
n2 =2i = n2
i=0
1 1=2 2 2
k.
log n ( log n + 1 ).
log
Xn
n2 =2i .
k+1
A.1.
log n + 1 n
i
i, i = 0; : : : ; log n + 1, i 2 n. ,
.
.
T (n) =
log
Xn
i=0
2i n = n
log
Xn
i=0
1 2
2k+1
1.
2i = n(2n 1) = (n2 )
k+1
ut
A.2.
155
A.2. :
T (n) =
T (n=2) + 1
1
n = 2k k 1
n = 1
.
i = log n,
T (n) = log n + 1.
A.2
(A.2)
T (n) = i + T (n=2i ).
n=2log n = 1.
ut
.
,
.
,
T (1) = (1).
(A.1), ,
, , :
,
T (n) = 2 T ( n) + log n
m
m=2 ) +
T (1) = (1). m = log n, T (2 ) = 2 T (2
m. T (2m ) S (m) S (m) =
2 S (m=2) + m S (1) = (1).
S (m) = (m log m). ,
T (n) = (log n log log n).
1
T (n) = 2 T (n=2) + f (n)
f (n) = (n)
1 ;
2 2 IR+
1 n f (n)
2 n
.
,
,
,
.
.
156
A.
A.3.
T (1) = 1.
1.
T (n) = T (n 1) + 3.
2.
T (n) = T (n 1) + 2n.
3.
T (n) = 2 T (n=2) + n.
4.
T (n) = T (n=3) + 1.
5.
T (n) = T (n=2) + n.
6.
T (n) = 2 T (n 1) + 1.
.
1.
T (n) = 3(n 1) + 1.
2.
T (n) = 2n(n 1) + 1.
3.
T (n) = n log n.
4.
T (n) = log3 n.
5.
T (n) = 2n 1.
6.
T (n) = 2n 1.
A.3
(Master Theorem)
f (n) .
:
1.
2.
f (n) =
(nlogb a+" ) " > 0, n0
n n0 , a f (n=b) < f (n), T (n) = (f (n)).
3.
2 IN
,
f (n) nlogb a (. ) . ,
"
f (n) (. n )
logb a . , f (n) nlogb a
n
. , f (n)
nlogb a a f (n=b) < f (n) n.
A.3.
157
f (n)
.
, T (n) = 9 T (n=3) + n. a = 9, b = 3,
nlogb a = nlog3 9 = n2 . f (n) = n,
2
T (n) = (n ).
, T (n) = T (2n=3) + 1. a = 1, b = 3=2,
logb a = nlog3=2 1 = n0 = 1 = f (n).
n
T (n) = (log n).
logb a =
T (n) = 3 T (n=4) + n log n a = 3, b = 4, n
nlog4 3 n0:793 . f (n) = n log n 3 f (n=4) < f (n)
T (n) = (n log n).
, T (n) = 2 T (n=2) + n log n. logb a = nlog2 2 = n
n
f (n) = n log n.
2
, T (n) = (n log n).
.
A.4. :
1.
2.
T (n) = 5 T (n=6) + n.
3.
T (n) = 3 T (n=9) + n.
4.
T (n) = T (n 1) + n2 .
5.
6.
.
1.
T (n) = (nlog5 6 ).
2.
T (n) = (n).
3.
4.
T (n) = (n3 ).
5.
T (n) = (n).
6.
158
A.
B
(, )
(spanning tree) .
: , , ,
, - .
B.1.
.
( ), (
``'' ).
,
. ,
.
.
.
. ,
( )
(
). ,
ut
.
5.1,
n n 1 .
, .
B.1
.
- ()
.
.
B.1
G.
G(V; E ) n m , T (V; ET )
T , G
T ( T ). 5.1.(6),
T ( E n ET )
G
.
159
160
B.
E n ET m n + 1 (
(
hords) T ), m
n + 1 G
T.
.
( ut set).
-
T,
T ( T ).
5.1.(3), T .
e 2 ET T , V1 V2 T n e
(. e). (V1 ; V2 )
V1 V2 . , e 2 (V1 ; V2 )
(V1 ; V2 ) G.
G
T . ET n
1 , n 1
G .
, ( )
. ( )
G
( ). ,
( )
n 1 ).
n m m n + 1
B.2.
.
.
.
``'' ``'' .
,
``''
``''.
"k = k
``'' ``''
.
"k + k = 2"k , .
ut
T 0 () G.
0
0
0
0
0
e 2 T n T , e 2 T n T , (T + e) n e
G.
B.1.
T 0 + e e.
e0 2 T 0 T . e0
T e . e0
0
0
. , (T + e) n e G.
ut
.
2 T n T0
,
T T 0 () G.
0
0
0
0
e 2 T n T , e 2 T n T , (T n e) + e
B.2.
G.
B.1.
.
e T
161
.
.
0
T
S V n S
e ,
0
0
e 2 T S V n S (
0
0
, e (S; V n S )). e T
0
. , e T n e
(T n e) + e0 G.
ut