Вы находитесь на странице: 1из 319

. , . , .

T
. . .

AF
DR



2014
510.5
22.1873
20

. .
20 / . , . , . -
; . . . . . .: ,
2014. 320 .
ISBN 978-5-4439-0236-4
,
( ), -
-
. -
- .

T
(, , -
, -
, -
). -
, ,
; -
,
AF . .

22.1873

Thanslation from the English language edition:


Algorithms by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani
Copyright ffi 2006 McGraw-Hill
DR

All Rights Reserved

ISBN 978-0073523408 (.) ffi McGraw-Hill, 2006.


ISBN 978-5-4439-0236-4 ffi , . ., 2014.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
0.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

T
0.2. . . . . . . . . . . . . . . . . . . . . . . 8
0.3. O- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
AF
1.1. . .
1.2. . . . .
1.3. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
19
27
1.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.5. . . . . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2. . . . . . . . . . . . . . . . . . . . . . 49
2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2. . . . . . . . . . . . . . . . . . . . . . . . 52
DR

2.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.6. . . . . . . . . . . . . . . . . . . . . . 61
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

3. . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.2. . . . . . . . . . . . 85
3.3. . . . . . . . . . . . . 89
3.4. . . . . . . . . . . . . . . . . . . . . 92
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4

4.5. . . . . . . . . . . . . . . . . 113
4.6. . . . . . . . . . . . . . . . 114
4.7. . . . . . . . . . . . . . . 119
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.4. . . . . . . . . . . . . . . . . . . . . . . . . . . 146
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

6. . . . . . . . . . . . . . . . . . 156
6.1.

T
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.2. . . . . . . . . 157
6.3. . . . . . . . . . . . . . . . . . . . . . . . 158
6.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
AF
6.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
170
174
175

7. 184
7.1. . . . . . . . . . . . . . . 184
7.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.3. . . . . . . . . . . . . . . . . . 200
7.4. . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.5. . . . . . . . . . . . . . . . . . . . . . . . . . . 205
DR

7.6. - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.7. : . . . . . . . . . . . . . . . . . 217
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

8. NP- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.2. NP- : . . . . . . . . . . . . . 241
8.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

9. NP- . . . . . . . . . . . . . . . . . . . . . . . 267
9.1. . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.2. . . . . . . . . . . . . . . . . . . . . . . . . 271
9.3. . . . . . . . . . . . . . . . . . . . . . . 280
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

10. . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.1. , , . . . . . . . . . . . . . . . . . . . 291
5

10.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
10.3. . . . . . . . . . . . . . . . . . . . 297
10.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
10.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.6. . . . . . . . . . . . . 305
10.7. . . . . . . . . . . 306
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

. . . . . . 312

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

T
AF
DR

,
[ 2008 ]
- . -
. ,

T
, -
. ,
, -
. , ,
, -
AF
.
, ( I) , -
. (,
), ,
, .
. ( II)
:
. ,
( ) . -
II (
DR

, ) -
I ( ).
I II , -
( , ). III
-
( , )
(-, , -
). -
, IV (NP--
, , ).
,
.
-
, ( )
.
0

. , , -
, .
. -
, ,

T

, ,
.

. , ,
AF
, !

0.1.
1448
, , .
, ,
.
, , -
.
DR

.
.
1448 MCDXLVIII. -
MCDXLVIII+DCCCXII? ? ,
,
; -
, .
, 600 . .,
:
-
.
,
, , .
, - IX -
. , -, -
, ( -
).
()
8 0.

, ,
. -
-.
-
. , -
, .
, (, , ) -
. -
, -
.

0.2.

T
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
:

AF Fn1 + Fn2 , n > 1,
Fn = 1,

0,
n = 1,
n = 0.

-
. ,
: , F30 , -
F100 21 . Fn 20,694n (. 0.3).
?
DR


, -
.
Fib1(n)
n = 0: 0
n = 1: 1
Fib1(n 1) + Fib1(n 2)
, :
1. ?
2. ( n)?
3. ?
, -
.
T (n) ( ) Fib1 n. ,
n 1 T (n) , T (n) = T (n 1) + T (n 2) + 3
0.2. 9

( , n ).
Fn , , T (n) Fn . ,
n, ,
. , F200
2138 . , -
40 , 292 .
, : -
1,6 . ,
,
. Fib1
20,694n 1,6n . F100 ,
F101 , F102 . ,
.

T
, , . -
?


, Fib1 . . 1 -
AF
. , -
.
( F0 , F1 , , Fn1 ):
Fib2(n)
n = 0: 0
f [0n]
f [0] 0, f [1] 1
i 2 n:
f [i] f [i 1] + f [i 2]
DR

f [n]

. 1.

Fn

Fn1 Fn2

Fn2 Fn3 Fn3 Fn4

Fn3 Fn4 Fn4 Fn5 Fn4 Fn5 Fn5 Fn6


..
.
10 0.

, . -
? n 1 , -
Fib2 n.
( ) . -
F200 F200000 1 : -
.


-
, . ,

.
: -

T
, . , -
(32 64 ). -
n- 0,694n ,
.
.
AF
.
1 , n- ,
n ( ). , Fib1, -
Fn , nFn .
Fib2 n2 , - .
, ? , :
. 0.1.

0.3. O-
DR

, , -
, (
). -
( ) -
. -
, n n2 .
-
,
.
, -
. : , ,
5n3 + 4n + 3 n, -
4n 3 ( n 5n3 ).
, 5 (
) ,
1
. 8.
0.3. O- 11

. 2.

100 n2
90
80
70
60
50
40 2n + 20
30

T
20
10
0
0 1 2 3 4 5 6 7 8 9 10
AF
O(n3 ) ( ).
O-.

f (n) g(n) n, -
. -
, f = O(g) ( f g),
c > 0, f (n) c g(n) n N.
DR

, f = O(g) , f (n)/g(n) -
.
f = O(g) f g .
, , 10n = O(n). n,
n. ,
f1 (n) = n2 , f2 (n) = 2n + 20 (. . 2). -
? , , n: -
n < 5, n.
, f2 = O( f1 ), f1 6= O( f2 ). ,
2n + 20 2 20
= + 2 22
n2 n n
,
n2 n2 n
=
2n + 20 22n 22
.
, f3 (n) = n + 1.
? , , , f2 = O( f3 )
12 0.

. ,
f2 (n) 2n + 20 f3 (n)
= 20 1.
f3 (n) n+1 f2 (n)
O() . = :
f = (g) ( f g, ) -
g = O( f );
f = (g) ( f g ) , f =
= O(g) g = O( f ).
f2 = ( f3 ) f1 = ( f3 ).
O- 3n2 + 4n + 5 (n2 ), -
.

T
:
1. . , 14n2 -
n2 .
2. na n b a > b. , n2
n.
AF
3. (). -
, 3n n5 .
4.
p . , n ( -
n) (log n)3 ; , -
-
. n2 n log n.
, -
: , -
. -
DR

, O- .

0.1. , , f = O(g) f = (g) (, ,


, f = (g)) :
f (n) g(n)
(a) n 100 n 200
(b) n1/2 n2/3
(c) 100n + log n n + (log n)2
(d) n log n 10n log (10n)
(e) log(2n) log(3n)
(f) 10 log n log(n2 )
(g) n1.01 n log2 n
(h) n2 / log n n(log n)2
13

(i) n0.1 (log n)10


(j) (log n)log n n/ log n
p
(k) n (log n)3
(l) n1/2 5log2 n
(m) n2n 3n
(n) 2n 2n+1
(o) n! 2n
(p) 2(log2 n)
2
(log n)log n

n
(q)
P
ik nk+1
i=1

T
,
.
0.2. , c > 0 g(n) = 1 + c +
+ c 2 + + c n
AF
(a) (1), c < 1;
(b) (n), c = 1;
(c) (c n ), c > 1.
, -
; ,
.
0.3. , F0 = 0, F1 = 1, Fn =
= Fn1 + Fn2 . , -
, :
DR

(a) , Fn 20,5n n 6.
(b) c < 1, Fn 2cn n 0.
(c) c , Fn = (2cn )?

0.4. Fib2 (. 9)? , , -


. F1 = F1 F2 = F0 + F1
:
     
F1 0 1 F
F2
= 1 1
F0 .
1

,
       2  
F2 0 1 F1 0 1 F
F3
= 1 1
F2
= 1 1
F0 ,
1


   n  
Fn 0 1 F
Fn+1
= 1 1 F0 .
1
14 0.
 
0 1
, Fn X = 1 1 -
n.
(a) , 2 2 -
().
X n ?
(b) , O(log n) . (-
: , X 8 .)
(-
Fib3) O(log n), , O(n) Fib2.
,
: O(n) O(log n) -
. : ,

T
, ,
, . , -
Fib2 O(n2 ).
(c) , ,
Fib3, O(n).
AF
(d) M (n) n- . ,
M (n) = O(n2 ) ( ,
1, ). ,
Fib3 O(M (n) log n).
(e) O(M (n))
Fib3. (: -
.)
Fib3 , Fib2? ,
n- , O(n2 ) (
DR

2).
:
p n p n
1+ 5

1 1 1 5
Fn = p p .
5 2 5 2
Fn -
n.
.
,
Fib3 n. (: ,
X .)
1

, (
) :
ff : N -
.

T
ff : , N .
.
, N
- .
AF
( , , -
.) , , -
N . , ,

.
.
( : -
).
DR

1.1.
1.1.1.
, ,
( , ). -
.
:
. (, -
9 + 9 + 9 = 27.) b 2 (-
1.1). ,
3, 11 .
? , -
( , ).
, -

(). ,
, .
16 1.


, , ,
10 . 20 ( ,
).
.
, N > 0 -
b? k ( 0 b 1 )
0 b k 1. ,
999 = 103 1. :
N b- dlog b (N + 1)e -
( log b N , - ).
-

T
? , log b N = (loga N )/(loga b). , -
b a () loga b.
N O(log N ) , -
. O() -
. O(),
AF
.
log N . :
1. log N , 2, -
N .
2. N log N , 1
( , dlog N e ). ( -
,
.)
3. log N N ( ,
dlog(N + 1)e ).
DR

4. log N N -
( , blog N c).
1 1 1
 
5. log N = 1 + + + + ( 1.5).
2 3 N

53 35 (
110101 100011):
: 1 1 1 1
1 1 0 1 0 1 (53)
1 0 0 0 1 1 (35)
1 0 1 1 0 0 0 (88)

,
. ,
x y? , -
( x y)?
1.1. 17

-
.
, x y n ( ).
x + y n + 1 . -
. (c0 + c1 n
- c0 , c1 ). ,
O(n).
, -
: ? : -
,
O(n) . ,
-
.

T
? -
? . -, -
, ,
( 32 64 ). , ,
, -
AF
. -,
,
. -
, -
(, . .),
.

1.1.2.
. x y
, x y
DR

.
13 11 ( 1101 1011):
1 1 0 1

1 0 1 1
1 1 0 1 (1101 1)
+ 1 1 0 1 (1101 1, 1)
0 0 0 0 (1101 0, 2)
1 1 0 1 (1101 1, 3)
1 0 0 0 1 1 1 1 (143 )
, x
( ), 1 ( y),
.
1.6.
? x y n -
, n 2n ( -
). n
18 1.

O(n) + O(n) + + O(n) = O(n2 )


| {z }
n 1

. ,
- , , -
( ).
- .
x y (. ). -
: , 1/2 ( -
), . ,
. , -
, .

T
11 13
5 26
2 52 ()
1 104
143 ()
AF
( -
-) . : 13, 26 104,
, 13 -

. , -
, -
11 , .
- ,
.
DR

,
.
Multiply (. 1.1), -
:  j k
y
2 x 2 , y ,
xy=  j y k
x +2 x , y .

2

? ,
y > 0 y = 0.
? y n ,
n , -
y ( )
y 1.
: -
( ), ( -
), 2 ( ) , , O(n) -
1.2. 19

. 1.1. .

Multiply(x, y)
{: x y, y 0.}
{: x y.}
y = 0: 0
z Multiply(x, b y/2c)
y :
2z
:
x + 2z

T
n- . ,
, - O(n2 ).
? , n -
, O(n) ,
(n2 ) . , , -
AF
, 2.
. x -
y q () r (),
x = yq + r 0 r < y. 1.8 ,
Divide (. 1.2)
.

. 1.2. .

Divide(x, y)
DR

{: n- x y, y 1.}
{: x y.}
x = 0: (q, r) = (0, 0)
(q, r) Divide(bx/2c, y)
q 2 q, r 2 r
x : r r + 1
r y: r r y, q q + 1
(q, r)

1.2.
.
. ,
, 24,
// .
, , 32 . ,
20 1.

, , -
( 32 ).
( , -
) ( 32 ),
,
, . , .
N . x mod N (x
N ) x N : x = qN + r, 0 r < N ,
x mod N = r. :
x y N , x y N
, N :
x y (mod N ) (x y) N .
, 253 13 (mod 60), 253 13 = 240 60. ( -

T
: 253 4 13 .) -
: 59 1 (mod 60), 59 -
.
N , {0, 1,
, N 1}, , ,
AF
(. 1.3).

. 1.3. 8.

0 0 0 1

6 + =
DR

, -
, N ,
N , -
{i + kN : k Z} i 0, , N 1. ,
3:
9 6 3 0 3 6 9
8 5 2 1 4 7 10
7 4 1 2 5 8 11
3, ,
. -
(. 1.9):
. x x 0 (mod N ) y y 0 (mod N ),
x + y x 0 + y 0 (mod N ) x y x 0 y 0 (mod N )
1.2. 21

: ,
, (0 );
25 , ; -
? : (25 3) mod 24, 25 1
( 25 1 (mod 24)) 1 3 = 3 mod 24,
.
, N -
, -
:
x + ( y + z) (x + y) + z (mod N )
x y y x (mod N )
x( y + z) x y + yz (mod N )

T
(, N ).
:
N
N . : ,
AF 2345 (25 )69 3269 169 1 (mod 31).

1.2.1.
x y N , -
N . x y
0 N 1, 0 2(N 1).
N 1, N . , -
, () -
, 2N . , O(n),
n = dlog N e N .
DR

x y N : -
, N .
(N 1)2 2n , log[(N 1)2 ] =
= 2 log(N 1) 2n. N , -
. , ,
.
N ( a x b (mod N ))
. , -
,
, . ,
( ) -
, O(n3 ).

1.2.2. N
, , -
x y mod N x, y N , .
?
22 1.



, .
n
[2n1 , 2n1 1]:
ff 0 2n1 1 -
( ).
ff x, 1 x 2n1 , -
x, -
.
, ,
2n1 2n1 1 2n . -

T
x 2n x.
, 2n ,
( n ).
AF
N ,
. x y
. x y 20 , x y
, , (219 )(2 ) = 219524288 ( -
19

). , , y -
500.
N : -
N . x y mod N ,
y x ( N ).

DR

x mod N x 2 mod N x 3 mod N x y mod N


N , . -
: , y 500 ,
y 1 2500 ! -
y, y.
, : x, -
N :

x mod N x 2 mod N x 4 mod N x 8 mod N x 2


blog yc
mod N .
O(log N ),
2

log y. x y mod N , x, -
y. ,
x 25 = x 110012 = x 100002 x 10002 x 12 = x 16 x 8 x 1 .
, , ( ) -
.
1.2. 23

. 1.4. .

ModExp(x, y, N )
{: n- x, y 0, N > 0.}
{: x y mod N .}
y = 0: 1
z ModExp(x, b y/2c, N )
y :
z 2 mod N
:
x z 2 mod N

T
ModExp (. 1.4) ( )
: ,

y ,

(x b y/2c )2 ,
x =
y
x (x b y/2c )2 , y .
AF
-
Multiply (. 1.1), x 25
x 16 + x 8 + x 1. , -
x 2i , x,
x 2 , -
i

.
n x, y, N .
, ModExp n -
, n
DR

( N O(n2 )). ,
O(n3 ).

1.2.3.
,
( ). (;
greatest common divisor, gcd) a b, -
, a b.
a b -
, . , 1035 = 32 5 23 759 = 3 11 23,
3 23 = 69. , ,
.
- ?
, :
. x y 0
(x, y) = (x mod y, y).
24 1.

. , (x, y) = (x y, y),
y x.
, , x y, x y,
(x, y) (x y, y). , , -
x y y, x, (x, y)
(x y, y).

(. 1.5), . -
, .
(a, b) (b, a mod b), -
(a) a mod b.

. 1.5. .

T
Euclid(a, b)
{: a b 0.}
{: (a, b).}
b = 0: a
AF
Euclid(b, a mod b)

. a b, a mod b < a/2.


. b a/2, a mod b < b a/2. b > a/2,
a mod b = a b < a/2. .
b a/2 a a/2 b a

a mod b a mod b
DR

.
, -
a b . ,
. , -
2n .
, ,
O(n3 ).

1.2.4.
, - , d
a b. , ? -
, d a b,
? , -
d a x + b y:
. d a b, d = a x + b y
x y, d = (a, b).
1.2. 25

. d a b, d
(a, b). , (a, b) a b,
a x + b y = d. , d (a, b).
,
x y? , ,
(ExtendedEuclid, . 1.6).

. 1.6. .

ExtendedEuclid(a, b)
{: a b 0.}
{: x, y, d, d = (a, b) a x + b y = d.}

T
b = 0: (1, 0, a)
(x 0 , y 0 , d) ExtendedEuclid(b, a mod b)
( y 0 , x 0 ba/bc y 0 , d)
AF
. a b (a b)
x, y, d, (a, b) =
= d = a x + b y.
. , x y,
,
d = (a, b).
b. (b = 0)
. : , (a, b), -
(b, a mod b). a mod b < b,
, -
DR

x 0 y 0
(b, a mod b) = b x 0 + (a mod b) y 0 .
(a mod b) (a ba/bcb), :
d = (a, b) = (b, a mod b) = b x 0 + (a mod b) y 0 =
 j k   j k 
a a
= bx0 + a b y0 = a y0 + b x0 y0 .
b b
, d = a x + b y x = y 0 y = x 0 ba/bc y 0 , -
.
. (25, 11) :
25 = 2 11 + 3
11 = 3 3 + 2
3=12+1
2=21+0
26 1.

( -
). , (25, 11) = (11, 3) = (3, 2) = (2, 1) =
= (1, 0) = 1.
x y, 25x + 11 y = 1,
1 (1, 0).

(2, 1), (3, 2), (11, 3) (25, 11). :
1 = 1 0.
1 (2, 1), 0
: 0 = 2 2 1,
1 = 1 (2 2 1) = 1 2 + 3 1.

T
, 1 = 3 1 2, :
1 = 1 2 + 3 1 = 1 2 + 3 (3 1 2) = 3 3 4 2.
2 = 11 3 3 3 = 25 2 11,
AF
1 = 3 3 4 (11 3 3) = 4 11 + 15 3 =
= 4 11 + 15 (25 2 11) = 15 25 34 11.

1.2.5.
a 1/a,
a , 1/a. -
:
x (multiplicative
inverse) a N , a x 1 (mod N ).
DR

, x ( N , -
1.23), a1 . -
. , 2 6,
2x 1
6.
, a N , d = (a, N ) > 1,
a N . , a x 1 (mod N ),
ax 1 N , a x 1 = kN k. 1 = a x kN ,
, d,
.
, , a
N . (a, N ) = 1 ( a N -
), x y,
ax + N y = 1, , a x 1 (mod N ). x, ,
a N .
. , , -
111 mod 25. , ,
1.3. 27

15 25 34 11 = 1. 25, 34 11 1 (mod 25).


34 = 16 mod 25 11 25.
N. a N
, a N . ,
O(n3 ) ( n, ,
) .
, : N
, N .
, -
.

1.3.

T
, ,
? 1640 :
. p 1 a p 1

AF a p1 1 (mod p).
. S = {1, 2, , p 1}
p. : a ( p),
.
a = 3, p = 7. ,
3 1 mod 7, 3 2 mod 7, , 3 6 mod 7
1, 2, , 6, .
DR

, , 6! 36 6! (mod 7). 6! (
, 1, 2, , 6 7,
), , 36 1 (mod 7) ,
a = 3, p = 7.

1 1

2 2

3 3

4 4

5 5

6 6
28 1.

?
7, 17, 19, 71, 79 , 717197179?
, -
. , , . -
, , , -
. , -
. p
, N , 2 N .
, p N = K L K L
N .
, , -
. , , -
? .

T
, ,
,
.
: -
AF
,
. , ,
,
!

p ( -
a). , , ( p) -
S p, -
p. , (
).
DR

a i mod p i, a i a j (mod p)
a ( a1 ) , i j (mod p). (-
, p , a p, a1 .)
a i mod p , ( ) a i 0 (mod p)
, i 0 (mod p) ( a).
S :
S = {1, 2, , p 1} = {a 1 mod p, a 2 mod p, , a (p 1) mod p}.
,
(p 1)! a p1 (p 1)! (mod p).
(p 1)! ( 2, 3, , p 1,
, 2, 3, , p 1 p),
.
, p ,
: , a p1 6 1 (mod p) a =
= 1, 2, , p 1. , ?
1.3. 29

, :

a a N 1
1 (mod N )?

,
( ): ,
N . , N
( a N 1 1 (mod N )) -
a. , 341 = 31 11 ,
2340 1 (mod 341).
, N a

T
. - (
), Primality (. 1.7),
- a,
{1, 2, , N 1}.
AF
. 1.7. .

Primality(N )
{: N .}
{: /.}
a 1 N 1
a N 1 1 (mod N ):

:
DR

? : -
N , a (
N ). . -
(Carmichael numbers).
: -,
; -, (. 32),
.
( )
. , , ,
. -
? , , ,
a. ,
a ( ).
. a N 1 6 1 (mod N ) a, N ,
a 1 N 1.
30 1.

!
N 1 N ,
N , (group). , :
ff ;
ff ():
;
ff ( -
).

N (multiplicative group of N ) ZN .
. -
(subgroup). -

T
, ( ).
, , , -
( ) .
B = {b : b N 1 1 (mod N )}. -
AF
, ZN ( , B -
). , B -
ZN . B ZN ,
|ZN |/2 (N 1)/2.

. a, N , a N 1 6
6 1 (mod N ). , b < N ,
( b N 1 1 (mod N )), a b,
:
DR

(a b)N 1 a N 1 b N 1 a N 1 6 1 (mod N ).
, b a b ( :
a , a i 6 a j i 6 j). , ,
, , , .
, N , , -
.
N , a N 1 1 (mod N ) a < N .
N , a N 1 1 (mod N )
a < N.
, Primality :
N , P( ) = 1;
1
N , P( ) .
2
(one-sided error):
, .
1.3. 31

, -
a ( Primality2 . 1.8): N
1
P( Primality2 ) .
2k
() k. ,
k = 100 2100 , ( -
).

. 1.8. .

Primality2(N )
{: N .}

T
{: /.}
k a1 , a2 , , ak < N
aiN 1 1 (mod N ) i = 1, 2, , k:

:
AF

1.3.1.
. ,
,
. , -
: n
n (, 1/(ln 2n ) 1,44/n).
DR

. (x)
, x. (x) x/(ln x) , -
,
(x)
lim = 1.
x x/ ln x
( ) -
,
: -
, .
?
, ( -
)?
( ) 1/n (
). , -
n ( 1.34).
, -
(,
32 1.


561.
(561 = 3 11 17) a,
561 ( a560 1 (mod 561)), a .
, .
-
, . -
N . N 1 , -
N 1 = 2 t u c u. , -
a a N 1 mod N . au mod N ,
t :
au mod N , a2u mod N , , a2 u a N 1 mod N .
t

T
a N 1 6 1 (mod N ), N ( ) .
: ,
N , -
. (
AF
) 1 mod N ,
, N . , -
(nontrivial square root of 1) ,
1 N , 1. -
, N ( 1.40).
, ,
: N
3/4 .
DR

). ,
a = 2 ( a = 2, 3, 5) -
.
? , -
. -, , a .
-, , -
a ,
a = 2 .
,
. -
N 25 109 a = 2. 109
, , . , -
20000 , , .
( , )
( 109 -
20000 ). ,
2 105 = 0,002%.
1.3. 33

,
. -
, . -
.



( a = 2) 20000

T
109

:
AF
25 109

:
, -
, , : -
.
( ,
) -
DR

. ( ,
: ,
1000- , 1% , -
.)
, . -
, , -
( , -
).
,
.
(. 1.8). , -
( ,
), 1.5 . 2
-
.
. 137. -
, 9.3. ,
34 1.

(. 10.7) -
, , , , -
.
, : 1.29,
1.34, 2.24, 9.8, 10.8.

1.4.
RSA (RSA cryptosystem),
. , . . , -
, .
, (

T
, ,
) , -
(
).
(A) (B),
AF
, (E), -
. (- eavesdropper,
.) , , -
x. x e()
e(x). d(),
() : d(e(x)) = x.


x e(x) x = d(e(x))
DR

, e(x). ,
, d,
x e(x).
-
() (private key). , ,

(codebook). , -
( ,
).
,
? -
? , :
, ,
- ?
1.4. 35

, - ,
( )
.
RSA (RivestShamirAdleman public-key cryptosystem).
-
. -
. , -
. (
, , .)

, .
, , -
, . -

T
RSA .

1.4.1. : AES

( , ).
AF
(one-time pad)
r -
, . x -
x c r. e(x)
x r; XOR
(eXclusive OR, ): e r (x) = x r. ,
r = 01110010, x = 11110000
e r (11110000) = 11110000 01110010 = 10000010.
, e r ( , ,
DR

, ):
e r (e r (x)) = (x r) r = x (r r) = x 0 = x;
0 .
: d r ( y) = y r.
r, ? :
, r,
. ( {0, 1}n ) -

-
. :
. -

( ) -
, , -
-
.
36 1.

, x , -
, ( r) . ,
, 10. -
- ,
!
00
e10
01 e11
e00 10
10 e01

T
11

x y

, ( -
AF
). x z, -
x z, (x r) (z r) = (x z) (r r) = x z 0 = x z.
: , x z , -
x z .
( , ),
x z . -
, -
.
, ( -
). ( ) -
DR

AES (advanced encryption standard). ,


r, -
128 ( 192 256). r,
e r 128. -
, :
128 e r
.
AES .
(, , !) ,
.

1.4.2. RSA
, RSA
. -
, ,
. , -
,
1.4. 37

. (
).
RSA . -
N ( ). -
{0, 1, , N 1},
. , N -
.
. N p q, e -
(p 1)(q 1). :
1. x 7 x e mod N -
N ( {0, 1, , N 1}).
2. d, d -

T
e (p 1)(q 1):

(x e )d x (mod N )

x = 0, 1, , N 1.
AF
, x 7 x e
. (N , e) ,
. -
, d. (
e, -
, N .)
. N = 55 = 5 11. e = 3; e ,
(e, (p 1)(q 1)) = (3, 40) = 1. d
31 mod 40 = 27. x y = x 3 mod 55,
DR

: x = y 27 mod 55. , x = 13,


y = 133 mod 55 = 52, 13 = 5227 mod 55.

.
. : -
, . ,
e (p 1)(q 1), e (p 1)(q 1) -
. d = e1 mod N , ed 1 (mod (p 1)(q 1)), ed =
= 1 + k(p 1)(q 1) k. ,

x ed x = x 1+k(p1)(q1) x

N . x p1 1 (mod p) x 6 0 (mod p),


x 1+k(p1)(q1) x p x (
x 0 (mod p), 0 p). -
x ed x q. p q , x ed x
p q, N .
38 1.

RSA . 1.9. ,
. ?

. 1.9. RSA.


ff p q n
.
ff (N , e), N = pq, e
(p 1)(q 1) . e 3, -
.
ff d, e (p 1)(q 1).
p q d -

T
.

x
ff (N , e),
y = x e mod N ( ).
AF

ff y, x = y d mod N .

RSA :
N , e y = x e mod N , x.
( ). -
DR

, x (
x e y (mod N )), . : -
N , d (
),
.
: -
- ; -
!

1.5.
- (hash
functions).
-,
, IP-, ,
, 250. (, IP- 32 -
0 255, , -
, 18.3.7.144). , IP- ?
1.5. 39

, IP-, -
.
232 4 109 , , ,
. , , -
, . -
,
.

1.5.1. -
232 IP- -
. , 1 250
( ). , ,
IP- . , , -

T
, -
, 250 ( -
).
AF 250 IP-
h y
x
x
y

z z
DR

232 IP- - 250

,
? ,
. -
(250), IP-. -
, ,
, .
? -. -
- h IP- ( 232 -
), 1 250. x
n = h(x). , x, h(x)
n, , n -
. , ,
, .
40 1.

1.5.2. -
-? -
,
. , -
, . ,
IP- ( , ,
h(128.32.168.80) = 80), ,
(, -
). -
, (
).
,
232 ( , -

T
). ,
.
-, -
? , .
232 IP- 250 , -
AF
- 232 /250 224 16 000 000 IP--
-; - -
(collision).
, .
. -
- , -
. , 250 -
, -
. .
(, -
DR

, ,
, ,
.)
? -
. , (n) 250, 257,
257 . ( , ?) -
IP- x 1 .x 2 .x 3 .x 4 257. -
-, 257.
, , 87, 23, 125 4. : h(x 1 .x 2 .x 3 .x 4 ) =
= 87x 1 + 23x 2 + 125x 3 + 4x 4 mod 257.
a = (a1 , a2 , a3 , a4 ) -

4
X
ha (x 1 .x 2 .x 3 .x 4 ) = ai x i mod n.
i=1

, a , ha
. , :
1.5. 41

. x 1 .x 2 .x 3 .x 4 y1 . y2 . y3 . y4 IP-. -
a = (a1 , a2 , a3 , a4 ) {0, 1,
, n 1} ( n , -
),
1
P(ha (x 1 , x 2 , x 3 , x 4 ) = ha ( y1 , y2 , y3 , y4 )) = .
n
, ha (x) = ha ( y) ,
x y . ,
- .
, 250 . x. -
, x, -.
.
( -)
? 249 1/n = 1/257 -

T
(-), x. , -
x- 249/257 x, 2.1
.
. x 1 .x 2 .x 3 .x 4 6= y1 . y2 . y3 . y4 . , , x 4 6=

,
AF
6= y4 . P(ha (x 1 .x 2 .x 3 .x 4 ) = ha ( y1 . y2 . y3 . y4 )), -
P4

i=1
ai x i
4
P
ai yi (mod n). -
i=1
:
3
(1)
X
ai (x i yi ) a4 ( y4 x 4 ) (mod n).
i=1

ha a = (a1 , a2 , a3 , a4 ).
, a1 , a2 a3 ,
DR

a4 (1) . a1 , a2 , a3 -
, (1) c. -
n x 4 6= y4 , x 4 y4 n. -
(1) a4 = c ( y4 x 4 )1 mod n, -
a4 n .
, . ,
, -
H .
H = {ha : a {0, , n 1}4 }.
, -, -
, , h(1,0,0,0) h(0,0,0,1) .
1
, .
, x, , 1, x- y-,
, . ,
1/257. , -
249
1 .
257
42 1.

,
a1 , , a4 n.
-
:
x y |H |/n -
x y -. (
n -.)
- .
- -
, (
1/n). -
.

T
IP-, , ,
- . -
, -
( ; , -
).
AF
N = nk k,
k -
n. H = {ha : a {0, , n 1}k }
-.

1.1. , b 2 b-
b- .
DR

1.2. ,
. -
?
1.3. d- d . ,
d- n (log n/ log d).
?
1.4. ,
log(n!) = (n log n).

(: n! nn (n/2)n/2 .)
1.5. , -
1 + 1/2 + 1/3 + 1/4 + 1/5 + :

1
X
= .
i
i=1
43

n n ln n + ,
ln , = 0,57721 . -
:
n
1
X
= (log n).
i
i=1

(: -
.)
1.6. , (. 17) -
.
1.7.
(. 19) n m?

T
1.8. (. 19)
O(n2 ) , n .
1.9. x y (mod N ) ( x y N ), -

AF
x x 0 (mod N ) y y 0 (mod N )
.
x + y x 0 + y 0 (mod N ),

1.10. , a b (mod N ) M N , a b (mod M ).


1.11. 41356 94824 35?
1.12. 22
2011
mod 3?
1.13. 530000
6123456 31?
1.14. , n- Fn p.
DR

? (: -
0.4.)
1.15. x c, -
x c: , a b
ax b x (mod c) a b (mod c).
1.16. , a b mod c
( )
, . 1.4. b > 10,
a b -
.
1.17. x y ( ,
). : , -
y 1 , ,
y.
, , -
n- m- O(mn).
44 1.

1.18. (210, 588) -


.
1.19. , (Fn+1 , Fn ) = 1 n 1, Fn n- -
.
1.20. : 20 mod 79, 3 mod 62, 21 mod 91, 5 mod 23.
1.21. 113 = 1331 ?
1.22. : a
b, b a.
1.23. , a N ,
( N ).
1.24. {0, 1, , p n 1} p n

T
p?
1.25. 2125 mod 127. (: 127 .)
1.26. 1717 ? (:
17

p q, a 6 0 (mod pq) 1.4.2


AF
a(p1)(q1) 1 (mod pq).)
1.27. RSA (. . 1.9) p = 17, q = 23, N = 391, e = 3.
d? x = 41.
1.28. p = 7 q = 11 (. 1.9).
e d.
1.29. [m] {0, 1, , m 1}. -
- , ,
,
DR

.
(a) H = {ha1 ,a2 : a1 , a2 [m]}, m
ha1 ,a2 : [m]2 [m], ha1 ,a2 (x 1 , x 2 ) = a1 x 1 + a2 x 2 mod m.
(b) H , m = 2k .
(c) H f : [m] [m 1].
1.30. n- x y
n x .
2n.
n , m -
, (circuits), . -
,
. ( -
) .
m- i- -
(i 1)- . -
, ,
45

(m). , , ,
O(log m). ( carry lookahead
adder, .)
(a) ,
, n m
O((log n)(log m)).
(b) , m- x, y, z -
r s, x + y + z = r + s,
r s . (:
.)
(c) ,
O(log n) n- .

T
1.31. , N ! = 1 2 3 N .
(a) ( ()) N !, N
n ?
(b) N ! .
AF
1.32. N (power), q k -
q k > 1.
(a) , , -
N . -
?
(b) , N = q k ( N , q, k),
N = 1, k log N .
(c) , , -
N , .
DR

1.33.
(least common multiple) n- x y, -
, x, y.
n?
1.34. . 31 , , 1/n n- -
, O(n) n--
. .
, p.
,
( , )? (: ( 1) ,

i(1 p)i1 p; ( 2) , E = 1 + (1 p)E,
P
i=1
E .)
1.35. (Wilson): -
N > 1 ,
(N 1)! 1 (mod N ).
46 1.

(a) p x = 1, 2, , p 1 -
p. ?
(b) , , (p 1)! -
1 p, p .
(c) , N , (N 1)! 6 1 (mod N ).
(: N (N 1)! .)
(d) , -
. -
?
1.36. . -
p, p 3 (mod 4),
p = 4k + 3.

T
(a) , x 6 0 (mod p)
x 4k+4 = x 2 .
(b) x (square root) a -
p, a x 2 (mod p). , a
AF
p = 4k + 3, a k+1 a
p.
1.37. .
(a) .
0 14.
3, 5.
?
(b) p q . , -
( j, k) p q ()
DR

0, , pq 1 i, j p
k q. (: , i
( j, k), -
i ( j, k).)
(c) i, ( j, k) .
: i ( j, k) :
i = j q (q1 mod p) + k p (p1 mod q) mod pq.


(d)
?
1.38. , , , 562437487, 3,
, 3
(5 + 6 + 2 + 4 + 3 + 7 + 4 + 8 + 7 = 46 3 ).
11: ,
(87, 74, 43, 62, 05) , 11
. ( , -
.)
47

37? , 37
, (487, 437, 562).
p, 2 5:
n p , -
n r ( p ).
(a) r p = 13 p = 17.
(b) , r p 1.
1.39.
a b mod p a, b, c p.
c

1.40. , x
N , x 2 1 (mod N ), x 6 1 (mod N ), N -
. (, 42 1 (mod 15), 4 6 1 (mod 15), 4

T
1 15. , 15 -
.)
1.41. . a
(quadratic residue) N , x, a x 2 (mod N ).
AF
(a) N , a -
N . , {0, 1, , N 1}
x 2 a (mod N ) .
(b) , N , N
N (N + 1)/2 N .
(c) , N : -
a N , x 2 a (mod N ) -
{0, 1, , N 1}.
1.42. , RSA (. 1.9)
DR

N = pq p. m mod p -
me mod p. , , -
, ,
p, e me mod p m mod p.
1.43. RSA (N , e) . -
, e = 3 - d. ,
N .
1.44. RSA.
(Ni , 3) 3, Ni = pi qi
n- pi qi . ,
n- M , -
( )
M . (: -
1.37.)
1.45. RSA . RSA
P = (N , e) d.
48 1.

(digital signature scheme) Sign Verify. -


Sign . -
Verify (N , e), M ;
, Sign
( M , -
(N , e)).
(a) ?
(b) RSA -
: Sign(M , d) = M d mod N . , -
(N , e) Verify((N , e), M d , M ),
, Sign. -
.
(c) RSA: N = pq, -

T
e d. , -
N , .
RSA . -

N . , ,
AF
m1 , m2 , , mk . , -
m1d mod N . , , (m1d )e m1 (mod N ).
(d) . , -
(391, 17).
?
1.46. , .
(a) -
, , . -
, ,
DR

.
(b) -
, (-
, 1 N 1 -
). ,
.
2

(divide-and-conquer) :
1. (subproblems)
.
2. .

T
3. .
,
(1) ; (2) , -
(3) -
.
AF

, .

2.1.
(17771855) ,

(a + bi)(c + d i) = ac bd + (bc + ad)i
DR

, :
ac, bd (a + b)(c + d) ,
bc + ad = (a + b)(c + d) ac bd.
, : O--
.
.
, . -
n- x y , n (
, ; n -
). x y n/2:
x= xL xR = 2n/2 x L + x R ,

y= yL yR = 2n/2 y L + yR .

, x = 101101102 ( -
), x L = 10112 , x R = 01102 x = 10112 24 + 01102 .
50 2.

,
x y = (2n/2 x L + x R )(2n/2 y L + yR ) = 2n x L y L + 2n/2 (x L yR + x R y L ) + x R yR .
x y . -
( )
. x L y L , x L yR , x R y L , x R yR -
. , , -
n, n/2-
( ),
x y O(n). T (n)
n- , -
(recurrence relation):
 
n

T
T (n) = 4T + O(n).
2
, T (n) = O(n2 ) (. -
2.2). ,
.
(,
AF
). x y,
(n/2)- : x L y L , x R yR , (x L + x R )( y L + yR ).
,
x L yR + x R y L = (x L + x R )( y L + yR ) x L y L x R yR .
(. 2.1), -
1  
n
T (n) = 3T + O(n).
2
( !)
DR

. ,
O(n1,59 ).
,
(. 2.2).
. log2 n 1 -
. , , log2 n.
, , k- -
3k n/2k . -
.
, k-
   k
n 3
3k O k = O(n).
2 2
1
,

n
T (n) = 3T + 1 + O(n),
2
(x L + x R ) ( y L + yR ) n/2 + 1. -
, .
2.1. 51

. 2.1. .

Multiply(x, y)
{: x y.}
{: x y.}
n max( x, y)
n = 1: x y
x L , x R dn/2e, bn/2c x
y L , yR dn/2e, bn/2c y
P1 Multiply(x L , y L )
P2 Multiply(x R , yR )
P3 Multiply(x L + x R , y L + yR )

T
P1 22bn/2c + (P3 P1 P2 ) 2bn/2c + P2

. 2.2. : (a) ,
; (b) .
AF
(a)

1011 0110
10110010 01100011

0010 0011 1101 1001

(b)
n

n/2
DR

n/4

.. log2 n
.

2 2 2 2

1 1 1 1 1 1 1 1 1 1 1 1

(k = 0) O(n), (k = log2 n) -
O(3log2 n ) O(nlog2 3 ).
-
3/2, O(n) O(nlog2 3 ). -
(-
0.2). , O(nlog2 3 ) O(n1,59 ).
52 2.

, (
) 4. 4log2 n =
= n2 , . -
.
-
. 16- 32- -
, ( ) -
.
? , ;
(. 2.6 -
).

2.2.

T
, .
n a n/b
. ,
O(nd ) (
AF
a = 3, b = 2, d = 1).
:
T (n) = aT
l m
n
+ O(nd ).
b
.
l m
. T (n) = aT + O(nd ) -
n
b
a > 0, b > 1, d 0.

DR

O(n ),
d
d > log b a,
T (n) = O(n log n), d = log b a,
d

O(nlog b a ), d < log b a.


. , n b.
, n -
b b ( 2.2); , n
.
log b n , -
b .
a, k- a k
n/b k (. 2.3). ,
,
 d   k
n a
t k = ak O k
= O(n d
) d
.
b b
{t k } ( k 0 log b n), , -
a/b d . t 0
2.2. 53

. 2.3. n a n/b.

a
n

n/b

n/b2
log b n
..
.

T

1

alog b n = nlog b a
AF
O(nd ); , k = log b n, alog b n = nlog b a -
1, O(nlog b a ).
-
( 0.2). ,
:
1. 1.
, : O(nd ).
DR

2. 1.
; O(nlog b a ).
3. 1.
O(log n) , O(nd log n).


, ,
: k -
z[0, 1, , n 1] k z[n/2]
-
z[0, 1, , n/2 1], z[n/2, , n 1]. -
T (n) = T (dn/2e) + O(1).
a = 1, b = 2, d = 0, -
, T (n) = O(log n).
54 2.

2.3.
: -
, ,
(merge) .
MergeSort(a[1n])
{: a[1n].}
{: .}
n > 1:
Merge(MergeSort(a[1dn/2e]), MergeSort(a[dn/2e + 1n]))
:
a
(, ,

T
).
x[1k] y[1l] z[1k + l]? ,
z x[1] y[1]. z
.
AF
Merge(x[1k], y[1l])
k = 0: y[1l]
l = 0: x[1k]
x[1] y[1]:
x[1] Merge(x[2k], y[1l])
:
y[1] Merge(x[1k], y[2l])
(
). Merge O(1)
( -
DR

). O(k + l), .
n :
 
n
T (n) = 2T + O(n),
2
, T (n) = O(n log n).
? , -
. 2,
4 .
. 2.4.
, MergeSort.

( ; -
), -
. ,
, -
. ( Inject -
, Eject
2.3. 55

. 2.4. Merge MergeSort.

10 2 5 3 7 13 1 6

2 10 3 5 7 13 1 6

2 3 5 10 1 6 7 13

1 2 3 5 6 7 10 13

T
):

IterativeMergeSort(a[1n])
AF
{: a[1n].}
{: .}
Q [ ] { }
i 1 n:
Inject(Q, [ai ])
|Q| > 1:
Inject(Q, Merge(Eject(Q), Eject(Q)))
Eject(Q)
DR

n log n
. ,

a1 , a2 , a3 . a1 a2 . a1 a2 ,
a3 , a2 a3 -
. ,
( 1, 2, 3). ,
a2 < a1 < a3 , 2 1 3.
a1 < a2 ?

a1 < a3 ? a2 < a3 ?

a2 < a3 ? 213 a1 < a3 ? 123

321 231 312 132


56 2.

( -
, ,
;
.)
(depth) ,
( 3), -
.
, ,
: n
(n log n) .
, n .
{1, 2, , n}. ,
, (-

T
). ,
n! .
d 2d . -
, ( ) log(n!).
, log(n!) c n log n c > 0.
AF
. ,
n! (n/2)(n/2) , 1 2 n n/2 -
, n/2, q .
1
 
: n! 2n + nn en .
3
, , , n ,
(n log n) , , -
.
, -
(
DR

,
). , , -
? , : -

( 2.20).

2.4.
(median) , -
, (). -
, [45, 1, 10, 30, 25] 25.
, , ;
().
, ,
, . , ,
1. -
10000, 100, .
2.4. 57

, , -
.
n . -
(n log n). ?
: .
, , . -
,
( !) . , -
.
-
k- . S k;
, k- ,
S . , k = 1 ,

T
k = b|S|/2c .

2.4.1.
k- ,
.
AF
v S. S : , -
v, v ( ) v. S L , S v
SR . ,
S : 2 36 5 21 8 13 11 20 5 4 1
v = 5
SL : 2 4 1 , Sv : 5 5 , SR : 36 21 8 13 11 20 .
-
. , S
DR

SR , |S L | + |S v | = 5.
k , ,
:

selection(S L , k), k |S L |,
selection(S, k) = v, |S L | < k |S L | + |S v |,
selection(SR , k |S L | |S v |), k > |S L | + |S v |.

S L , S v , SR , -
, S ( 2.15).
S L SR :
|S| max{|S L |, |SR |}.
v? ; , -
. :
|S L |, |SR | |S|/2. ,

 
n
T (n) = T + O(n),
2
58 2.

. v -
, .
: v .1

2.4.2.
, , , v. -
v -
( ) ,
. (
v = 36, v = 21 .) ( )

n + (n 1) + +
n
= (n2 )

T
2
.
, v ; -
O(n). ?
, .
AF
v, -
v , S
|S|/4 3|S|/4. -
S L SR 3|S|/4.
, v
1/2.
? , -
(. 1.34):
.
() 2.
DR

. E. ,
, ( 1/2) -
1 1+E
. , E = + , E = 2.
2 2
, -
,
:
3n
 
T (n) T + O(n).
4
: -
( ), T (n) -
( n) ( -
) . -
(
1
,
, .
2.5. 59



, -. -
,
, .
. -
,
.
(quicksort)
, .
-
. -

T
, , (n2 ). -
( 2.24), O(n log n). -
, -
.
AF
: ):
n

3n

+
4
3n
 
+ .
4
,
O(n) , O(1)
( , 1/2, ,
, ). -
DR

, T (n) = O(n):
.

2.5.
(n n)- X Y (n n)-
Z = X Y , n
X
Zi j = X ik Yk j .
k=1

, Zi j i- X
j- Y :
j

=
i
(i, j)

X Y Z
60 2.

(X Y Y X ), -
: (X Y )Z = X (Y Z).
, , -
O(n3 ) : O(n2 ) O(n) -
. -
; , -
. , -
1969 , -
. .1
, -
. -
X Y :
n n
2 2

T
   
A B E F
X= C D , Y= G H .

-
( 2.11):
AF 
A B
XY = C D

E F
G H
 
AE + BG AF + BH

= C E + DG C F + DH .

AE, BG, AF , BH, C E, DG, C F , DH


O(n2 ), -
. -
,  
n
T (n) = 8T + O(n2 ),
2
O(n3 ), .
: -
DR

X Y
, ( ?) -
n n
2 2
:
P5 + P4 P2 + P6 P1 + P2
 
XY = P3 + P4 P1 + P5 P3 P7
,

P1 = A(F H), P5 = (A + D)(E + H),


P2 = (A + B)H, P6 = (B D)(G + H),
P3 = (C + D)E, P7 = (A C)(E + F ),
P4 = D(G E).

T (n) = 7T (n/2) + O(n2 ),


T (n) = O(nlog2 7 ) O(n2,81 ).
1
n. -
; O(n2,37 )
. , ,
O(n2+o(1) ). . .
2.6. 61

2.6.
, -
. ().
d 2d, -
,
(1 + 2x + 3x 2 ) (2 + x + 4x 2 ) = 2 + 5x + 12x 2 + 11x 3 + 12x 4 .
, A(x) = a0 + a1 x + + ad x d
B(x) = b0 + b1 x + + bd x d C(x) = A(x) B(x) = c0 + c1 x +
+ c2d x 2d ,
k
X
ck = ai bki
i=0

T
( i > d ai bi ). ck
O(k) , 2d + 1
O(d 2 ) . ?
, . , ,

AF
( ). -
( 2.6.4)
.

2.6.1.
:
. d d + 1
.
, ,
DR

( ).
d + 1 x 0 , , x d . -
d A(x) = a0 + a1 x + + ad x d ,
:
ff a0 , , ad ,
ff A(x 0 ), , A(x d ).
: -
, (
, -
). , ,
.

?
, -
(
: x
62 2.

). , , -
(signal
processing). (a)
. , , -
.
( ),
.

a(t) a(t) (t)

t t t

T
(a) (b) (c)

, , -
(b). , -
.
AF
:

, -
(
) ( t
). , -
,
(t) (unit impulse),
DR

t = 0 (c). -
, (t i),
i. a(t)
:
T 1
X
a(t) = a(i)(t i)
i=0

( T ).
a(t) (t i).
-
b(t) (impulse response) (t).
,
k
X
c(k) = a(i)b(k i),
i=0

!
2.6. 63

, , ,
.
:
, .
, , -
(interpolation),
.


a0 , a1 , , ad A(x 0 ), A(x 1 ), , A(x d )

. 2.5. , -
, ? -

T
.1 ( -
, )? -
d n O(d) (-
2.29), n n -
(n2 ) .
AF
O(n log n) x 0 , x 1 , , x n1 ;
,
.

. 2.5. .

{: A(x) B(x) d.}


{: C = A B.}

x 0 , x 1 , , x n1 n 2d + 1
DR

A(x 0 ), A(x 1 ), , A(x n1 ) B(x 0 ), B(x 1 ), , B(x n1 )

C(x k ) = A(x k )B(x k ) k = 0, 1, , n 1

C(x) = c0 + c1 x + + c2d x 2d

2.6.2.
, A(x)
n 1 n , :
x 0 , x 1 , , x n/21 .
1
,
( )
. , , -
.
64 2.

, A(x i ) A(x i ) , -
x i x i .
, A(x)
, ,

3 + 4x + 6x 2 + 2x 3 + x 4 + 10x 5 = (3 + 6x 2 + x 4 ) + x(4 + 2x 2 + 10x 4 ).

x 2 . , -
A(x)

A(x) = A0 (x 2 ) + xA1 (x 2 ),

A0 A1 A
x. A0 A1

T
n/2 1 ( , n ). ,
A(x i ) A(x i ) :

A(x i ) = A0 (x i2 ) + x i A1 (x i2 ),
A(x i ) = A0 (x i2 ) x i A1 (x i2 ).
AF
, A(x) n x 0 , x 1 , , x n/21
A0 A1 (
) n/2 x 02 , , x n/21
2
.


A(x)
+x 0 x 0 +x n/21 x n/21
n 1
DR

A0 (x) A1 (x)
x 02 2
x n/21
n/2 1

n n/2,
.
,
 
n
T (n) = 2T + O(n),
2

O(n log n).


,
. , ,
x 02 , x 12 , , x n/21
2
,
, .
, -
. ? ?
, , .
2.6. 65

; 1. -
1, 1:

..
.

+1 1 +i i

+1 1

T
+1
p p
1 = 1, 1 = i,
AF
i 1. , -
n . , , :
n- (complex nth roots of unity),
n z n = 1. ( n .)
. 2.6 .
n- ,
1, , 2 , , n1 , = e2i/n .
n :
1. n- ,
: n/2+ j = j .
DR

2. n- n/2.
, n, n ,
n/2k
k = 0, 1, 2, , , -
. -
(fast Fourier transform,
FFT, . . 2.7).

2.6.3.
(. 2.5).


a0 , a1 , , ad A(x 0 ), A(x 1 ), , A(x d )

x i (1, w, w 2 , , w n1 ) n- -
, -
66 2.

. 2.6. 1 .


z = a + bi (a, b).
:
b i sin ) = r e i , : (r, );
z = r(cos +p
ff r = a2 + b2 ;
r ff [0; 2): cos = a/r, sin = b/r.
:
a 1 i 5 + 5i
p
(1, ) (1, /2) (5 2, /4)

T

(r1 , 1 )
(r2 , 2 ) :
AF
(r1 r2 , 1 +2 )
(r1 , 1 ) (r2 , 2 ) = (r1 r2 , 1 + 2 ).
z = (r, )
ff z = (r, + ), 1 = (1, );
ff z (
r = 1), z n = (1, n ).

4 n 1
n z n = 1.
2
n z = (1, 2k/n), k = 0, 1, , n 1
DR

( n = 16).
2 n
+
n ff : (1, ) = (1, + );
ff 1
n/2 ( ).



A(x) A0 (x) A1 (x)
n- -
n/2


-

(n 2)
2.6. 67

. 2.7. .

FFT(A, )
{: A(x) n 1,
n ; , n = 1.}
{: A(0 ), , A(n1 ).}
= 1: A(1)
A(x) A0 (x 2 ) + xA1 (x 2 )
FFT(A0 , 2 ) A0
FFT(A1 , 2 ) A0
j 0 n 1:
A( j ) = A0 (2 j ) + j A1 (2 j )

T
A(0 ), , A(n1 )

O(n log n):


= FFT(, ).
AF
( )? -
,
1
= FFT(, 1 ).
n
, ,
, 1 .
. , -
.
,
DR

O(n log n) (. 2.5) .


(
) (
).
.

n 1: .
,
:
A(x 0 ) 1 x0 x 02 x 0n1

a0
A(x 1 ) 1 x 1 x 12 x 1n1 a1

.. =
.. .. .

. . .


A(x n1 ) 2
1 x n1 x n1 x n1
n1
an1

(Vandermonde matrix).
68 2.

, n 1
n . -
M :

x 0 , , x n1 , M .

, -
, , -
:

M , -
M 1 .

,
, M ()

T
x i = i , n = 1, .

.
1
Mn ()1 = Mn (1 ).
AF n

, 1 ( ).


, -
n, , (n n)-

1 1 1 1 0 = 1

1 2 n1

DR

2 4 2(n1)
2

1
.. .. .. .. ..

.
Mn () = . . . .


j 2 j (n1) j j

1
.. .. .. .. ..

. . . . .


1 n1
2(n1)
(n1)(n1) n1

n 1 ( n ,
). , ( j, k)- [Mn ()] j,k jk
( ).
:

. Mn ()Mn (1 ) = nI, I .

. , ( j, k)- -

n1
X n1
X
[Mn ()] j,i [Mn (1 )]i,k = ji (1 )ik =1+ jk +2( jk) ++(n1)( jk) .
i=0 i=0
2.6. 69

jk . -
1, j = k, n.

(1 n( jk) )/(1 ( jk) ), , n = 1.

.
Mn (1 ) Mn (), -
( ) -
(a + bi) = a bi; -
,
z = r e i z = r ei . z
( , ) z = z 1 . -
M M = nI, , M
(inner product)

T
u v = u0 v0 + + un1 vn1

p
n. , -
n 1 : , -
AF
, ,
. Mn () -
, (
), -
( -
).
, -
, , -
,
(). -
DR

( ).

2.6.4.
, . -
-
.


a = (a0 , , an1 ) ;
n ,
1, , 2 , , n1 n- -
. a Mn () n n,
( j, k)- ( ) jk .
-
, ( -
70 2.

), :


k 2k 2k + 1
a0 a0
a1 a2
a2 ..
a3 .
an2
j jk a4 = j 2 jk j 2 jk =
a1
.. a3
. ..
.
an1 an1
Mn () a

T

2k 2k + 1
a0
a2
j 2 jk j 2 jk ..
.
AF =

j + n/2
an2
a1
a3
2 jk j 2 jk ..
.
an1

, n/2 = 1 n = 1.
, -
Mn/2 (2 ) . ,
n n
2 2
DR

Mn/2 (2 ) j- j j ( j).

a0 a1
a2 a3
j Mn/2 .. + j Mn/2 ..
. .
an2 an1

a0 a1
a2 a3
j + n/2 Mn/2 .. j Mn/2 ..
. .
an2 an1

Mn () (a0 , , an1 ),
n, n/2 -
Mn/2 (2 ) (a0 , a2 , , an2 ) (a1 , a3 , , an1 ). (. 2.8)
, -
2.6. 71

,
( ). T (n) = 2T (n/2) + O(n) = O(n log n).

. 2.8. .

FFT(A, )
{: a = (a0 , a1 , , an1 ), n ,
n .}
{: A(0 ), , A(n1 ).}
= 1: a
(s0 , s1 , , sn/21 ) FFT((a0 , a2 , , an2 ), 2 )
(s00 , s10 , , sn/21
0
) FFT((a1 , a3 , , an1 ), 2 )

T
j 0 n/2 1:
r j = s j + j s0j
r j+n/2 = s j j s0j
(r0 , r1 , , rn1 )
AF

, .
. -
n n/2.

FFTn (: a0 , , an1 , : r0 , , rn1 )


DR

a0
a2
FFTn/2
.. rj
.
an2

a1
j
a3
FFTn/2
.. j + n/2
r j+n/2
.
an1
72 2.

.
() j , j .
, . -
, -
:
r j = s j + j s0j ,
r j+n/2 = s j j s0j .
. 2.9 n = 8. ( , -
, ,
.)
.
1. n log2 n , n -

T
. n log n .
2. : 0, 4, 2, 6, 1, 5, 3, 7.
? , -
-
( ), -
AF
( ).
-
(00 ) (10 ) .
, ,
( , -


1963 -
, , IBM,
DR

.
,
. , -
.
, ,
- . , -
, 1965 ,
.
, . -
, .
.
: ,
1930- . ,
,
. -
, ( -
).
2.6. 73

. 2.9. .

000 a0 A(0 ) 000

100 a4 A(1 ) 001


4

4
010 a2 A(2 ) 010

T
2
110 a6 A(3 ) 011
4 6
AF
001 a1 4
A(4 ) 100
1

101 a5 A(5 ) 101


4 5
2
DR

4
011 a3 A(6 ) 110
6
3
2
111 a7 A(7 ) 111
4 6 7

): 000, 001, 010,


.
3. a j A(k )
.
, , -
. :
(0-) (1-). A(k ) -
, k -
. ( .)
74 2.

4. a j A(k ) jk mod 8.
8 = 1, a j A(k ) a j jk ,
.
5. , , -
.

2.1. 10011011 10111010 ( -


), ,
.
2.2. , n b [n, bn]

T
b.
2.3. 2.2 ,
. -
. -
AF
T (n) = 2T (n/2) + O(n) .
O(n) cn c,
T (n) 2T (n/2) + cn. , -
T (n) T (n/2), T (n/4), T (n/8) .
T (1) = O(1):
 
n
T (n) 2T + cn
2
h   i  
n cn n
2 2T + + cn = 4T + 2cn
4 2 4
h   i  
n cn n
+ + 2cn = 8T + 3cn
DR

4 2T
8 4 8
h   i  
+ 4cn
n cn n
8 2T + + 3cn = 16T
16 8 16
:
 
n
T (n) 2k T k + kcn.
2
k = log2 n, T (n) nT (1) + cn log2 n = O(n log n).
(a) T (n) = 3T (n/2) + O(n).
? k ?
(b) T (n), T (n) = T (n 1) + O(1) (
).
2.4. ?
?
ff A, , -
, -
.
75

ff B, n,
n 1, O(1).
ff C, n, -
n/3 O(n2 ).
2.5. -
:
(a) T (n) = 2T (n/3) + 1;
(b) T (n) = 5T (n/4) + n;
(c) T (n) = 7T (n/7) + n;
(d) T (n) = 9T (n/3) + n2 ;
(e) T (n) = 8T (n/2) + n3 ;

T
(f) T (n) = 49T (n/25) + n3/2 log n;
(g) T (n) = T (n 1) + 2;
(h) T (n) = T (n 1) + nc , c 1 ;
(i) T (n) = T (n 1) + c n , c > 1 ;
AF
(j) T (n) = 2T (n 1) + 1;
p
(k) T (n) = T ( n) + 1.
2.6. -
:

b(t)
DR

1/t 0

t
t0

(a) .
(b) ?
2.7. n- ?
, n ? n ?
2.8. (a) (1, 0, 0, 0). -
? (1, 0, 0, 0)?
(b) (1, 0, 1, 1).
2.9. .
(a) , x + 1 x 2 + 1
. -
76 2.

, , -
.
(b) 1 + x + 2x 2 2 + 3x.
2.10. p 4, p(1) =
= 2, p(2) = 1, p(3) = 0, p(4) = 1, p(5) = 0.
2.11. ( 2.5) -
: X Y n n
  
A B E F
X= C D , Y= G H ,

A, B, C, D, E, F , G H , X Y
n n
2 2
:

T
AE + BG AF + BH
    
A B E F
XY = C D G H
= C E + DG C F + DH
.

.
2.12. ,
AF
, n:
. , n .
F(n)
n > 1:

F(n/2)
F(n/2)
2.13. , -
, . Bn
DR

n .
(a) 3, 5, 7
B3 , B5 B7 . (, B4 )?
(b) Bn .
(c) n, Bn = (2n/2 ).
2.14. , O(n log n) n -
, .
2.15. ( 2.4)
Split, S v
: v, v v. -
, (in place),
.
2.16. A[], n
, . -
n . , x
77

x , , O(log n).
( , ,
n ,
i > n .)
2.17. A[1n]
. , ,
i, A[i] = i.
2.18. x
A[1n].
O(log n). , , ,
(log n) .
2.19. k . , k

T
n -
kn.
(a) :
Merge 2.3 ,
, . -
AF
( k n)?
(b) ,
.
2.20. , x[1n]
O(n + M ), M = max x i min x i . M -
i i
. (n log n)?
2.21. .
{x 1 , x 2 , , x n } R .
DR

1 -
2 .
(a) , , -
X
|x i |.
i

, n . (:
? , ?)
(b) ,
X
(x i )2 .
i

, ( )

X X
(x i )2 = (x i 2 )2 + n( 2 )2 .
i i
78 2.

, 2 , ,
, 1 . 2
. ,
, 2 . 1
,
2 . , , -

max |x i |.
i

(c) , O(n) (,
x i , -
).

T
2.22. m n. ,
k-
O(log(m + n)).
2.23. (majority element) A[1n]
, .
AF
, ( ; , -
). , -
A[i] > A[ j]? . ( , ,
.) A[i] = A[ j]?,
O(1).
(a) , O(n log n). (:
. -
, -
? ,
DR

.)
(b) . (:
, .
. n/2 :
, , ,
. , n/2 -
, . ,
, -

A[kn], p A[q] k.)
2.24. . 59 .
(a) .
(b) ,
n (n2 ).
(c) ,
( )
79

n
n
1
X
T (n) O(n) + (T (i 1) + T (n i))
n
i=1

O(n log n).

2.25. 2.1 , n-
x y O(na ), a = log2 3.
FastMultiply(x, y).
(a) 10n
( n ). , n . -
:

T
Pwr2Bin(n)
n = 1: 10102
:
z=
AF
FastMultiply(z, z)
. -
.
(b) x,
n (n ), -
. .
Dec2Bin(x)
n = 1: binary[x]
DR

:
x x L , x R n/2

binary[] -
; -
O(1).
, , -
.

2.26. . . , n-
, n- ( ,
).
?

2.27. (square) A ,
A A.
(a) , 2 2 -
.
80 2.

(b) -
n n:
, 7 -
5, -
, (. );
, O(nlog2 5 ).
(c) , -
, : (n n)-
S(n) = O(nc ), (n n)- -


 O(nc ). ,
0 X
Y 0
, X Y n n.

T
2.28. (Hadamard matrices) H0 , H1 , H2 ,
:
ff H0 1 1, .
ff k > 0 H k 2k 2k
AF
H
k1
Hk =

H k1

.

H
k1 H k1

, - v n = 2k H k v
O(n log n). ,

.
DR

2.29. p(x) = a0 + a1 x + a2 x 2 +
+ an x n x.
(a) , ,
(Horners rule), z = p(x):
z an
i n 1 0:
z z x + ai
z
(b) ?
,
?
2.30. ,
() , , 7.
(a) , , 2 , , 6 ( -
7). , + 2 + + 6 = 0. (
, .)
81

(b) (0, 1, 1, 1, 5, 2) 7,
,
M6 () ( ). -
7.
(c) . ,
. ( ,
7.)
(d) x 2 + x + 1 x 3 + 2x 1
7.
2.31. 1.2.3 -
() .
,

T
.
(a) ,

2(a/2, b/2), a b ,
(a, b) = (a, b/2), a , b ,
AF
((a b)/2, b), a b .

(b) , .
(c) n- a b -
n ? ( n ,
,
.)
2.32. -
.
DR

:
{p1 = (x 1 , y1 ), p2 = (x 2 , y2 ), , pn = (x n , yn )}.
: , pi 6= p j , -
,

|pi p j | = (x i x j )2 + ( yi y j )2 ,
( ).
, n
.
.
ff x, x i < x -
x i > x. L R.
ff L R. -
p L , q L L pR , qR R, d L dR -
. d = min{d L , dR }.
82 2.

ff , L , -
R d. ,
|x i x| > d, y.
ff -
.
{p M , q M }.
ff {p L , q L }, {pR , qR }, {p M , q M }.
(a) , d d
L.
(b) . ( ,
L, R.)
(c) , -

T

 
n
T (n) = 2T + O(n log n).
2
, O(n log2 n).
AF
(d) , O(n log n)?
2.33. (n n)- A, B, C.
AB = C. O(nlog2 7 ),
. -
.
(a) v n- ,
{0, 1}. ,
(n n)- M , M v = 0,
1/2.
DR

(b) , P(ABv = Cv) 1/2 AB 6= C.


AB = C O(n2 )?
2.34. 3-. 3- -
8.1: , -
-
True/False.
, 3- n
: i j
, | j i| 10. -
.
3

3.1.
. , -
, , -
( -

T
). ? ,
(. 3.1(a)) : , . . -
(. 3.1(b)), (
1 , 11 . .) . -
, -
AF
.

. 3.1. (a) (b).

(a) (b)
5 4

6 3 2
8
DR

7 1
9
10
12
13
11

-
. , , ,
84 3.

,
. -
, .
, -
( ).
,
. .
V E, -
. ( : vertex
node, edge.)
V = {1, 2, 3, , 13}, E ,
( , E {1, 2}, {9, 11}
{7, 13}). , x y -

T
y x. , -
x y, : {x, y}. -
(undirected), -
(undirected graph).
, -
AF
(directed edges). x
y y x. x y
(x, y). (World Wide
Web) : u -
v, u v.
, , ,
( ,
).

3.1.1.
DR

c n = |V | v1 , , vn .
(adjacency matrix) (n n)- a,

1, vi v j ,

ai j =
0 .

, , -
. O(1) ,
( ). -
O(n2 ), -
. (adjacency list).
(
).
, . u -
, u, v,
(u, v) E. -
( ), -
( ). , , -
3.2. 85

?
? |V | -
|E|. , |E| |V |
( |E| |V |, , -
).
|V |2 ( ).
(dense), (sparse).
, ,
. : -,
, ,
, -
. , ,
( , ).

T
-
, -
, ,
. -
AF
, :
-
.

O(|V | + |E|). (u, v) -


u ( O(1) ).
( -
).
( u v, v
u).
DR

3.2.
3.2.1.
(depth-first search) :
? :
,
, (. 3.2)
. , -
, - .
(
, )
( , , ).
. ,
, ,
. ( ,
86 3.

. 3.2. .

L
K
D A B E F H
B

G H C F I J E C G
J

K L
I A D

T
, , ), -
(. 3.3) .1
Previsit Postvisit
( ); ,
.
AF
. 3.3. , .

Explore(v)
{: v G = (V, E).}
{: visited[u] = true u, v.}
visited[v] true
Previsit(v)
(v, u) E:
DR

visited[u] = false: Explore(u)


Postvisit(v)

, Explore . ,
v ,
. ?
, v u, Explore -
- . - v u. z
, Explore (
v, ), w z
:
v z w u

1
( ) ;
, {x, y}
(x, y) ( y, x).
3.2. 87

, z , w .
: Explore(z)
z.
(: Explore(v) ,
visited[u] = false u;
, .)
. 3.4 Explore -
A. , -
. ,
. , Explore B,
BE, , E , -
Explore E. (
) (tree edges). -

T
, .
(back edges).

. 3.4. Explore(A) . 3.2.


AF B
A

E F G

I C H
DR

3.2.2.
Explore , .
(. 3.5)
Explore ( ).

. 3.5. .

DFS(G)
v V :
visited[v] false
v V :
visited[v] = false: Explore(v)
88 3.

, Explore -
visited ( ). -
? :
1) O(1)-: , Previsit Postvisit
( );
2) .
, -
. 1
O(|V |). 2 ( ) -
{x, y} E : Explore(x)
Explore( y). 2, , O(|E|). -
O(|V | + |E|), .
!

T
. 3.6 -
( ). ,
. Explore
A, C F . (forest)
.
AF
. 3.6. (a) . (b) , .

1, 10 11, 22 23, 24
(a) (b) A C F

A B C D B E 4, 9 12, 21 D
2, 3
DR

E F G H I 5, 8 13, 20 H

I J K L J 14, 17 G L
6, 7 18, 19
15, 16 K

3.2.3.
(connected),
( ). . 3.6 : -
, A K. -
:
{A, B, E, I, J}, {C, D, G, H, K, L}, {F }.
(connected components).
, . -
3.3. 89

Explore ,
. Explore
DFS . , -
. , -
v ccnum[v] (
). cc,
, , Explore
, Previsit :
Previsit(v)
ccnum[v] cc

3.2.4.
, , -

T
. ,
. -
( Previsit)
(Postvisit). ( 24 -
) . 3.6. , 5
AF
I, 21 -
D.
,
clock, 1, :
Previsit(v)
pre[v] clock
clock clock + 1
Postvisit(v)
DR

post[v] clock
clock clock + 1
( ) :
. u v [pre(u), post(u)]
[pre(v), post(v)] , .
, [pre(u), post(u)] , -
u , v , -
u, v u.
, , -
. -
, .

3.3.
3.3.1.

( Explore -
90 3.

). . 3.7 -
, (, -
).

. 3.7. .

B A C A 1, 16

B 2, 11 C 12, 15
E F D
E 3, 10 D 13, 14

T
G H 4, 7 F H 8, 9

5, 6 G
AF
, . -
A (tree root),
(descendants). F , G, H -
E, E (ancestor). , C -
(parent) D, D (child) C. ( , -
.)
-
( ).
.
DR

(tree edges) ,
.
(forward edges) A
,
.

(back edges)

. B

(cross edges)

( C D

).

. 3.7 , -
( ).
3.3. 91

pre- post- . -
, u v , v -
Explore(u). pre[u] < pre[v] <
< post[v] < post[u], v -
u. : u v , v -
u; uv ( v-
u-):

pre/post- (u, v)
/
u v v u

T
v u u v


v v u u
AF
, ?

3.3.2.
(cycle) v0 v1 v2
vk v0 ( ). ,
. 3.7 B E F B . -
(acyclic).
.
. , -
DR

.
. , (u, v) , -
v u (u, v) .
: v0 v1 vk v0 vi -
, (
pre[vi ]). vi ,
vi .
vi1 vi ( vk v0 , i = 0) ,
.
(- -
directed acyclic graphs dags)
, -
. , , , -
(
; , ,
, ). ?
92 3.

: -
; u v , u -
v. , -
. ,
(linearize) , , (topologically
sort) ,
. , . 3.8
: B, A, D, C, E, F . ( ?)

. 3.8. , -
.

A C E

T
B D F
AF

? , ,
, post-.
post(u) < post(v) (u, v) (. c. 91),
, :
. -
post- post-.
DR

-
. : ,
(sink). , : ,
(source). , :
.
.
( ) -
: ,
, . , -
? , ?
( 3.14)?

3.4.
3.4.1.
? -
. -
3.4. 93

, . -
. . 3.9 ,
. ,
G B F A. :

u v (con-
nected), u v, v u.

-
( 3.30),
(strongly connected components). . 3.9
.

. 3.9. (a) . (b) -

T
.

(a) (b)
A B C
AF D E F A B, E C, F

G H G, H, I,
D
J, K, L
I J K
DR

-
() (.
. 3.9), .
(meta-graph) .1 : -
,
.

. -
( ).

1

. . .
94 3.

3.4.2.
-
. , (
). ( ).

1. Explore, u, -
, , u.

, Explore , -
- , .
, . 3.9 , Explore
K .
, () ,

T
-, () -.
. , -
: -.

2. ,
AF
post-, -.

3. C C 0 -
C C 0 . post-
C , post- C 0 .

. , -
v C C 0 . v C, Explore(v) ,
DR

(. 1).
post[v] , C 0 . v C 0 ,
Explore(v) C 0 , C
post- C .

3 : -
, -
post- . -
-
( -
).
2 - ,
-. -
(reverse) G R , G -
(. . 3.10). G R -
, G (?). G R post--
- G R ,
- G. , , ().
3.4. 95

. 3.10. . 3.9.

(a) (b)
A B C

D E F A B, E C, F

G H G, H, I,
D
J, K, L
I J K

T
AF L

(). ,
- ? 3.
post-
, post-
( , -
!) - ,
. :
1. G R .
DR

2. -
(. . 3.2.3),
post-, .
; -
. (, G R
post- .)
. 3.9.
, post- -
G R : G, I, J, L, K, H, D, C, F , B, E, A.
: {G, H, I, J, K, L}, {D}, {C, F },
{B, E}, {A}.

-
, :
1 n, . -
96 3.

: , -
. , -
, ( ). -
- , -
. , ,
( ), -
. ,
, (
, , ,
. 4). , -
( - ). ,

,

T
.
- ,
Explore :
, .
,
AF
( ).
- :
, ,
? (
)? .
, , -
-.
DR

3.1. , -
. -
, pre- post- .

A B C

D E F

G H I

3.2. -
, .
, , , pre-
post- .
97

(a) (b) A B
A B C
H C
E D
G D
F G H
F E

3.3. ,
, . -
.

T
A D G
C F
B E H

(a) pre- post- .


AF
(b) .
(c) ?
(d) ?
3.4. -
G. G R -
.

(i) A (ii)
DR

C D
A B C
B
E
F
D E F

G H
J G H I
I

(a) ?
(b) ?
(c) (
G).
(d) ,
?
3.5. G = (V, E) G R = (V, E R )
,
: E R = {(v, u): (u, v) E}.
98 3.

,
( -
).
3.6. (degree) d(v) v G -
v , , v . -
(indegree) din (v) -
(outdegree) dout (v), v -
v ().
P (a) ,
d(u) = 2|E|.
uV
(b) ,
.

T
(c)
?
3.7. G = (V, E) (bipartite),
(V = V1 V2 V1 V2 = ),
AF
(, u, v V1 ,
u v ).
(a) , ,
.
(b) .
, , -
, -
.
,
DR

, .
(c) , -
, ?
3.8. . 10, 7 4 .
, .
,
.
, ,
.
(a) : -
.
(b) , ?
(c) , .
3.9. u twodegree[u]
u. , twodegree[]
, .
99

3.10. Explore (. 3.3) .


Previsit Postvisit ,
.

3.11. ,
G e , G , e.
3.12. : {u, v}
post(u) < post(v), v u .

3.13. .
(a) ,
, . (: -
.)

T
(b) ,
.
(c) , ,
, . -
AF
, ,
.

3.14. . 92 -
, . -
. (:
-
,
.)

3.15. (a) ,
DR

- -
, . ?
, .
(b) , :
, ,
. ?
3.16. n
. G : -
, v w, w -
v. , G -
, -
( ).
3.17. . G = (V, E) -
s V , -
VG V VB V . (infinite trace)
G v0 v1 v2 , -
100 3.

v0 = s (vi , vi+1 ) E i 0.
.
(a) Inf(p) V p, -
. , Inf(p)
G.
(b) , , G .
(c) , , G ,
.
(d) , , , -
,
,
.

T
3.18. T = (V, E)
r V . , u
v, r v T u.
, -
u -
AF
v? O(1). ?
3.19. T = (V, E) , -
x[], . -
z[]:
z[u] = x u.
, .
3.20. T = (V, E) r V .
v r v. -
DR

, p(r) = r. p1 (v) = p(v) p k (v) = p k1 (p(v)) k > 1.


, p k (v) v k- .
v l[v].
, lnew (v) = l(p l(v) (v)).
3.21.
. (:
.)
3.22. , , -
,
.
3.23. , s, t V
G = (V, E) -
s t.
3.24. , ,
, -
.
101

3.25. , u V
(price) pu , . -
cost :

cost[u] = , u ( u).

, cost A, B, C, D, E, F
2, 1, 4, 1, 4, 5. ( pu .)

2 6 4
A C E

T
B D F
3 1 5

cost .
(a)
AF
. (: .)
(b) , (- -
) . (:
.)

3.26. (Eulerian tour) -


, .
1736 -
, . (
, ) -
DR

, :
, ?
. ,
( ; ).

(a) ,
, .
102 3.

(b) (Eulerian path) , -


.
?
(c) ?
3.27. (edge-
disjoint), . , -

,
.
3.28. 2- (2-satisfiability problem, 2SAT)
(clauses), -
( ) ,

T
. , -
true false, . -
, true.
,
AF (x 1 x 2 ) (x 1 x 3 ) (x 1 x 2 ) (x 3 x 4 ) (x 1 x 4 ),
x 1 , x 2 , x 3 , x 4 true, false, false, true
().
(a) .
(b) 2- -
, .
2-,
. I 2--
n m
DR

G I = (V, E) .
ff -
. , , 2n .
ff ( ) I -
, (
, -
). 2m .
, ( ) ,

. G I ,
I.
(c) , ,
(b).
(d) , G I , -
x x x, I .
(e) : -
G I , -
103

. (: , -
. G I -
true false -
, , -
.)
(f) , , ,
2- .
3.29. (binary relation) S -
R (x, y) S S. , , S
, (x, y) R , x -
y. (equivalence relation) -
, :

T
ff (reflexivity): (x, x) R x S;
ff (symmetry): (x, y) R, ( y, x) R;
ff (transitivity): (x, y) R ( y, z) R, (x, z) R.
, x y -
AF
, x y (
).
, S
S1 , S2 , , Sk ( S = S1 S2 Sk
Si S j = i 6= j),
ff : (x, y) R
x, y Si ;
ff : (x, y)
/ R
x Si y S j i 6= j.
DR

(: -
.)
3.30. . 93 x y -
. , -
(. )
.
3.31. . G =
= (V, E). , e e0 e, e0 E, e = e0
, e e0 .
(a) ,
(. 3.29).
, -
, (biconnected compo-
nents) G. (bridge) , -
. (separating vertex)
, .
104 3.

(b) -
, .

C F G

A B D E I H

O N M L

K J

,
( );

T
. :
(c)
. , -
, -
AF
.
(d) -
, ( , -
- ). -
, .
,
.
(e) , -
, .
DR

(f) , v -
, v 0 ,
v 0 , ,
v ( v ).
(g) u low(u) -
pre(u) pre(w) (v, w),
v u. , low
.
(h) , , -
. (:
low . -
, .)
4

4.1.
, -
, , (. 4.1).

T
: , S C -
, .
, .
(distance)
,
AF
. .
(), (-
). s; ,
s. s,
, s.
, . 4.2 S B 2,
. S,

. 4.1. (a) (b) .


DR

(a) E S A (b) S

A D
D C B
B E

. 4.2. .

S
E S A

A C D E

D C B
B
106 4.

. (D, E) ,
S.

4.2.
. 4.2, S, : S,
1 S, 2 . -
S , .
0, 1, 2, , d , -
d + 1: , -
d. ,
: d, -
, d + 1,
d.

T
(breadth-first search, BFS)
(. 4.3). Q S,
0.
d = 1, 2, 3, , Q
d . (-
AF
),
, d.
S . 4.1. , -
. . 4.4
,
. , -
.
S . -
(shortest-path tree).
DR

. 4.3. .

BFS(G, s)
{: G(V, E), s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
dist[s] 0
Q {s} { }
Q :
u Eject(Q)
(u, v) E:
dist[v] = :
Inject(Q, v)
dist[v] dist[u] + 1
4.2. 107

. 4.4. . 4.1.


S
[S]
S [A C D E]
A [C D E B] A C D E
C [D E B]
D [E B]
E [B] B
B []

. -

T
S T -
, ( ), S
T . ,
, - .
AF

. ,
d = 0, 1, 2, , : 1) -
d
dist; 2) dist ; 3) -
d.
().
, -
DR

, O(|V | + |E|). ,
.
2|V |. -
. O(|E|),
( -
) ( ).
, , , -
. ,
, ,
. ,
(. 4.1). -
, .
(-
, ),
( ).
s,
(
).
108 4.

4.3.
.
. , -
- ,
(. 4.5). , -
e E l e . e = (u, v)
l(u, v) luv .
, , (
, ). -
.

. 4.5.

T
95
133
-

290 271
AF 409

445

112 291

275
- -

4.4.
DR

4.4.1.
. -
1,
( -
).
, ,
(. 4.6).

. 4.6. .

2
2 B D B D
3
A 1 1 2 A
4
C E C E
4.4. 109

, -
,
, .
G G 0 ,
. 4.7. S ( -
). 99 SA SB
. , -
, - (
). : 100 A, -
200 B. : -
A. A , B 150
(, S).

T
. 4.7. .
.

G: G0 :

S
AF
100
A

50 S
A

200
B B

: -
G,
. (
DR

, , .) -
: , -
( ). ,
u V .
, u, -

( ). :
ff s 0.
ff , :
( u T ).
, s u T .
v, u G:
v ,
T + l(u, v);
, T + l(u, v), -
( ).
110 4.


-
. , -
- .
;
.
( ) -
( , )
:
Insert: ( ) .
DecreaseKey: ,
, .

T
DeleteMin: , -
.
MakeQueue: (-
, ,
AF
).
-
, ,
. (Dkstra) -
( 4.8).

. 4.8. .

Dijkstra(G, l, s)
DR

{: G(V, E) ( )
{l e : e E}; s V .}
{: u, s,
dist[u] s u ( ).}
u V :
dist[u]
prev[u] nil
dist[s] 0
H MakeQueue(V ) { dist}
H :
u DeleteMin(H)
(u, v) E:
dist[v] > dist[u] + l(u, v):
dist[v] dist[u] + l(u, v)
prev[v] u
DecreaseKey(H, v, dist[v])
4.4. 111

. 4.9. A; -
dist-. .

2
4 B D A: 0 D:
4
B: 4 E:
A 1 3 1
3 C: 2
2 C E
5

2
4 B D A: 0 D: 6
4
B: 3 E: 7
A 1 3 1
3 C: 2
2 C E

T
5

2
4 B D A: 0 D: 5
4
B: 3 E: 6
A 1 3 1
3 C: 2
AF 2

4
C

B
5

2
E

D A: 0 D: 5
4
B: 3 E: 6
A 1 3 1
3 C: 2
2 C E
5

2
B D
DR

A 1
3
2 C E

dist[u] , -
u. , , -
.1
prev: u
, ( )
, .
. 4.9 -
.
1
:
, ( ).
, -
. , .
. .
112 4.

-
. -
.

4.4.2.
s, R ,
.
.
v, s
, R. v?
s v; u -
. u R, u v?
u s, v. ( , -

T
.) v R
; , ( -
):
s v
u
AF
: v, , -
R R
(. 4.10). . , -
, R.

. 4.10. .

R
DR

u
s v

. , , -,
R ,
-, R v,
,
v. , -
. -
4.5. 113

, dist[v] -
, v ( ,
R, dist[v] ):
dist[s] 0, dist[]
R {} { }
R 6= V :
v 6 R dist[v]
v R
(v, z) E:
dist[z] > dist[v] + l(v, z):
dist[z] dist[v] + l(v, z)
(
)

T
(. 4.8). . ,
,

(1) d, R -
AF
d s,
d;
(2) u dist[u]
s u, , , R
( , dist[u] = ).
-
, . -
.

4.4.3.
DR

. 4.8, ,
: ,
Inject Eject . , -
, -
. MakeQueue
, |V | Insert. |V | -
DeleteMin |V | + |E| Insert/DecreaseKey. ,
, , -
, . ,
O((|V | + |E|) log |V |).

4.5.
4.5.1.

( ), -
.
114 4.

Insert DecreaseKey , O(1),


. DeleteMin -
: .

4.5.2.
, -
( ) . -
:
(, ). -
, .
. . 4.11(a).
Insert : -

T
. , () -
, (. 4.11(b)(d)).
, blog2 nc, n
. DecreaseKey,
, ,
AF
.
DeleteMin . -
, -
( ,
, . . 4.11(b)(d)). -
O(log n).

. ,
j 2 j 2 j + 1, b j/2c (-
4.16).
DR

4.5.3. d-
; d- d.
n (logd n) = ((log n)/(log d)).
Insert (log d) , DeleteMin
O(d logd n). ( , ?)
. j -
d( j 1)/de, ( j 1)d + 2, , ( j 1)d +
+ (d + 1) = jd + 1 ( , n, . 4.16).

4.6.
4.6.1.
,
s v
, v. , -
4.6. 115

. 4.11. (a) 10 . .
(b)(d) 7 . (e)(h) DeleteMin -
, , .

(a) 3 (b) 3

10 5 10 5

11 12 6 8 11 12 6 8

15 20 13 15 20 13 7

T
(c) 3 (d) 3

10 5 7 5
AF 11 7 6 8 11 10 6 8

15 20 13 12 15 20 13 12

(e) (f ) 12
DR

7 5 7 5

11 10 6 8 11 10 6 8

15 20 13 12 15 20 13

(g) 5 (h) 5

7 12 7 6

11 10 6 8 11 10 12 8

15 20 13 15 20 13
116 4.

?
-
. .

Insert/ |V | DeleteMin
DeleteMin
DecreaseKey (|V | + |E|) Insert
O(|V |) O(1) O(|V |2 )
O(log |V |) O(log |V |) O((|V | + |E|) log |V |)
 d log |V |   log |V |   log |V |

d- O O O (|V | d + |E|)
log d log d log d
O(log |V |) O(1) (.) O(|V | log |V | + |E|)

T

O(|V |2 ), -
O((|V | + |E|) log |V |). ?
, ( -
) ( ).
AF
|E| ( ) |V |2 . |E| , -
. -
, |E| |V |2 / log |V |.
d-. -
d, d
, d |E|/|V |. d, -
, .
, |E| = O(|V |), O(|V | log |V |),
. , |E| = (|V |2 ),
, , O(|V |2 ). ,
DR

|E| = |V |1+ -
O(|E|), !

, . -
, , -
, . -
Insert
, , (average)
O(1).
( 5) ,
(amortized) Insert O(1).

. . 4.12 S A
B, , A.
, , -
. :
4.6. 117

. 4.12.
.

A
3

S 2

4
B

dist[] . -
:

T
Update((u, v) E)
dist[v] min{dist[v], dist[u] + l(u, v)}
Update , v -
AF
u l(u, v). :
1. Update v ,
u v dist[u] -
.
2. dist[v] , s v
().
, Update ,
.
Update. -
. ,
DR

, - ?
, , s - t.
|V | 1 . (?)
s t
u1 u2 u3 uk

Update (s, u1 ), (u1 , u2 ), (u2 , u3 ), , (uk , t)


, t .
, - ;
, ,
.
, , -
? :
|V | 1 , ! -

O(|V | |E|). . 4.13,
. 4.14.
118 4.

. 4.13.
.

ShortestPaths(G, l, s)
{: G(V, E) ,
{l e : e E}, s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
prev[u] nil
dist[s] 0
|V | 1 :

T
e E:
Update(e)

. 4.14. .
AF
8
S
10
A
1
S
0
0 0
1

2 3 4
0 0 0
5 6 7
0 0 0
G 4 B A 10 10 5 5 5 5 5
B 10 6 5 5 5
1 2 1 C 11 7 6 6
D 14 10 9
F 2 C E 12 8 7 7 7 7
F 9 9 9 9 9 9
DR

1 3 G 8 8 8 8 8 8 8
E D
1

: -
|V |, -
.
, ,
.

4.6.2.
(E, B) . 4.14 4,
A E B A.
. A E 2.
1, ,
0, 1, 2 .
4.7. 119

,
4.6.1 .
? , ,
s t |V | 1
.
,
( ). , (
: ), -
Update- - dist. -
|V | 1 -
, . ,
|V |- - ,
( , ,

T
|V | 1 ). , -
, ,
. - dist[u] -
. Update(u, v) dist[v],
dist[v] dist[u] + l(u, v). dist
AF
;
, , .

4.7.
, :
. , -
. (-
DR

. 4.15. -
.

DagShortestPaths(G, l, s)
{: G(V, E),
{l e : e E}, s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
prev[u] nil
dist[s] 0
G
u V :
(u, v) E:
Update(u, v)
120 4.

) -
, .
, ,
( ) . -
,
-
.
( ),
,
(. 4.15).
, ,
. ,

T
, -
.

AF
4.1. A.

1 2 1
A B C D
8 6
4 6 2 4
1
E F G H
5 1 1

(a) ,
DR

.
(b) .
4.2. , -
:

A 2
2
4 C D
7 6
B 1 3
S 5
2 F
4 6

G H 2
1
3 E
1 1
I
121

4.3. . , ,
G = (V, E) ( -
) 4. O(|V |3 ).
, (
).
4.4. -
.
(v, w)
w v .
level[v] level[w] + 1, level
( ). :
ff

T
.
ff -
, -
.
AF
, , -
.
4.5. - -
. , -

.
4.6. , {u, prev[u]}, -
, .
4.7. G = (V, E) (, ) -
DR

, s V T = (V, E 0 ), E 0 E. ,
, T
s.
4.8. . .
s t ,
. -
, -
.
? , ,
.
4.9. , -
s,
. , s, -
?
4.10. (, )
. , -
122 4.

k . ,
O(k|E|).
4.11. ,
(
, ). -
O(|V |3 ).
4.12. ,
G = (V, E) -
, , O(|V |2 ).
4.13. G = (V, E)
. e E -
l e . , s t,

T
L . -
, ( -
, L).
(a) , ,
s t.
AF
(b) , . -
s t? -
, O((|V | + |E|) log |V |).
4.14. G = (V, E) -
v0 V . ,
, v0 .
4.15. -
. G = (V, E)
DR

s V . t, -
s t, O((|V | + |E|) log |V |). ( s
.)
4.16. 4.5.2 n -
1, 2, , n.
(a) , j- b j/2c,
2 j 2 j + 1 ( n).
(b) ,
, d- ?
. 4.16 , . 1 , ,
. h, -
O(1):
ff |h| ;
ff h1 .
1
. R. E. Tarjan. Data Structures and Network Algorithms. Philadelphia, PA: Society for Industrial
and Applied Mathematics, 1983.
123

. 4.16. .

Insert(h, x)
BubbleUp(h, x, |h| + 1)

DecreaseKey(h, x)
BubbleUp(h, x, h1 (x))

DeleteMin(h)
|h| = 0:
null
:

T
x h[1]
SiftDown(h, h[|h|], 1)
x

MakeHeap(S)
AF
h |S|
x S:
h[|h| + 1] x
i |S| 1:
SiftDown(h, h[i], i)
h

BubbleUp(h, x, i)
{ x i h }
DR

p di/2e
i 6= 1 key(h[p]) > key(x):
h[i] h[p]; i p; p di/2e
h[i] x

SiftDown(h, x, i)
{ x i h }
c MinChild(h, i)
c 6= 0 key(h[c]) > key(x):
h[i] h[c]; i c; c MinChild(h, i)
h[i] x

MinChild(h, i)
2i > |h|:
0 { }
:
arg min{key(h[ j]): 2i j min{|h|, 2i + 1}}
124 4.

, h1
.
(c) , MakeHeap
n O(n). -
? (: ,
Pn
log(n/i).)
i=1
(d) , d- ?
4.17. , -
0, 1, , W , W
.
(a) , , -

T
O(W |V | + |E|).
(b) O((|V | + |E|) log W ).
4.18.
, , -
AF
. , ,
,
. best
:
best[u] = s u.
, best
S, A, B, C, D, E, F 0, 1, 1, 1, 2, 2, 3 ().

A D
DR

2 2 1 1
4 3
S C F

2 2 1 1
B E

, -
s best.
4.19. .
, ().
.
{l e : e E}, -
{c v : v V }.
. -
.
: G = (V, E); -
l e c v ; s V .
125

: cost, u cost[u]
s u.
, cost[s] = cs .
4.20. G = (V, E) V -
E . e E l e . -
, E 0 ,
. e0 E 0
l e0 . E 0 ,

s t G. -
.
4.21. -

T
. c1 , c2 , , cn . -
, c1 , c2 , c3 . ri, j
ci c j : ci -
ri, j c j .
ri, j r j,i < 1, , - .
AF
(a) , , ri, j , -
-
s t. (:
.)
. -
, - ci1 , ci2 , , cik ,
ri1 ,i2 ri2 ,i3 rik1 ,ik rik ,i1 > 1. , -
ci1 , -
. ( ,
!)
DR

(b) , -
. (: .)
4.22. . , -
, -
V . i, pi , -
i j ci j > 0 . -
, .
G = (V, E),
. -
C :
P
pj
(i, j)C
r(C) = P .
ci j
(i, j)C

r .

r ,
r, r > r .
126 4.

, r > 0. (i, j)
w i j = r ci j p j .
(a) , ,
r < r .
(b) , ,
r > r .
(c) ,
" > 0 C, r(C) r ". -
|V |, " R = max (p j /ci j ).
(i, j)E

T
AF
DR
5

-
, .
; ,
, . -

T
: , (greedy) , -
( ) -
, .
. () -
.
AF
5.1.
, .
, , (-
) , . -
(
). ?

1
DR

A C E
3 4 4
4 2 5

B D F
4 6

, ,
:

1. .

; -
. -
-
(minimum spanning tree, MST). ,
:

: G = (V, E), -
w e .
128 5.

: T = (V, E 0 ), E 0 E,
X
weight(T ) = we .
eE 0

-
16:
1
A C E
4
2 5

B D F
4

T
. ?


.
AF
2. n n 1 .
, ,
. n
. (
).
, n 1 .
:
3. G = (V, E),
|E| = |V | 1, .
DR

, G . , 1
, ( -
). , , , -
|V | 1, , .
, , ,
, .
4. -
,
.
( , -.) -
,
- -
. . -
, ,
. , (
).
5.1. 129

5.1.1.
(Kruskal)
;
, -
.
( , -
,
).
5.1 ()
:
BC, CD, BD, CF , DF , EF , AD, AB, CE, AC.

T
, : -
, BD , -
, . . -
14.
AF
. 5.1. , .

A
6
C
5
E A C E
4 1 3
5 2 4

B D F B D F
2 4
DR

,

.

5.1.2.
, , -
- ( -
).
? .
(cut) S V S.
V S V S ( V ,
S), V \ S.
. X -
G = (V, E). S V ,
X S V S. ,
e , S V S. X {e}
.
130 5.

, -
, X ,
X -
, .
? T ,
X . e ( , ).
e T , e

. 5.2. e () T ( )
. , (S, V S)
( e0 ).

S V S

T
e
AF e0

. e ,
e0 , ( , -
). T . e0 e
, . -
, ( e0 -
DR

e, ,
) X {e}, . (,
e0 X .)
. 5.3 . e0 ?

5.1.3.
, .
( ). ,
.
e ,
T1 T2 . e -
, T1 V T1 .
.
. -
. -
{u, v}, u v . -
. -
?
5.1. 131

. 5.3. (a) X (b)


(c), X . e ,
. T , -
X , e T e,
T 0 , X {e}.

(a)
1 3
A C E
2 2 2
2 3
B D F
1 4
(b)

T
A C E A C E
X : T:
B D F B D F
AF
(c)

:
A C E
T 0:
A C E

e
B D F B D F

S V S

(disjoint
DR

sets); . -
, -

MakeSet(x): {x}.

, , -
;

Find(x): x?

, x y,

Union(x, y): , x y.

,
, (. 5.4). |V |
MakeSet, 2|E| Find |V | 1 Union.
132 5.

. 5.4. .

Kruskal(G, w)
{: G = (V, E)
w e .}
{: X ( ).}
u V :
MakeSet(u)
X {}
E
{u, v} E :
Find(u) 6= Find(v):

T
{u, v} X
Union(u, v)

5.1.4. :
AF

(. 5.5).
. , -
, ; -
. ,
(representative), .

. 5.5. {B, E} {A, C, D, F, G, H}


.
DR

E H

B C D F

G A

,
.
MakeSet(x)
(x) x
rank(x) 0
5.1. 133

Find(x)
x 6= (x):
x (x)
x
, MakeSet O(1). -
Find , -
, . -
Union, , -
.
( ),
. ( -
). ,
. ,

T
. -
? ( ) ,
rank. (union by rank).1
Union(x, y)
AF
r x Find(x)
r y Find( y)
r x = r y : ,
rank(r x ) > rank(r y ):
(r y ) r x { r x r y }
:
(r x ) r y { }
rank(r x ) = rank(r y ): rank(r x ) rank(r y ) + 1
. 5.6.
DR


, (
). , rank
, . ,
:
1. x 6= (x), rank(x) < rank((x)).
k -
k 1. ():
2. k 2k -
.
( ) : k -
2k ( ). , -
1
,
. , Union rank
, ,
. . .
134 5.

. 5.6. .
.

MakeSet(A), MakeSet(B), , MakeSet(G):

A0 B0 C0 D0 E0 F0 G0

Union(A, D), Union(B, E), Union(C, F ):

D1 E1 F1 G0

T
A0 B0 C0

Union(C, G), Union(E, A):


AF D2

E1
F1

A0 C0 G0

B0

Union(B, G):
DR

D2

E1 F1

A0

B0 C0 G0

, -
, , ,
. , k
, 1
k.

3. n, n/2k
k.
5.1. 135

, log2 n. ,
log2 n,
Find Union.


.
O(|E| log |V |) (, log |E| = O(log |V |),
|E| |V |2 ). -
. , .
. ,
. , -
, (, O(|E|)), -
. -

T
, ,
,
.
? -
? Find -
AF
, -
? (path compression)
. 5.7;

. 5.7. . Find(I) Find(K).

A3 A3
DR

B0 C1 E2 B0 C1 E2 F1 I0

D0 F1 G1 H0 D0 G1 H0 J0

I0 J0 K0 K0

A3

B0 C1 E2 F1 I0 K0 G1

D0 H0 J0
136 5.

Find
Find(x)
x 6= (x):
(x) Find((x))
(x)

, , : -
Find Union. -
(amortized cost) O(1)
O(log n).
() ?
Find ?

T
,
, . ,
, , . (
: , , -
, ,
AF
. , , -
.)
, -
, , .
: Find ( ) -
, Union (-
Find) -
. ,
, .
, ,
DR

. ,
,
. ,
,
. , 13 (. 133) .1
n , 0 log n -
3.
( , ):
{1}, {2}, {3, 4}, {5, 6, , 16}, {17, 18, , 216 = 65536}, {65537, , 265536 },
{k + 1, k + 2, , 2k }, k -
. log n, -
log, n, , -
1
. 2 k
( , k 1). k
, - .
k, 3
. . .
5.1. 137


.
. ,
; -
(S, S ). ? -
, , (
) . 1/|V |2 -
(S, S
) ( ,
S S ). O(|V |2 ) ( -
) , -
(, 99%, , -
O(|V |2 )) G.

T
O(|E||V |2 log |V |)
. -
, O(|V |2 log |V |),
(David Karger), .

AF
1/|V |2 ?
. , , -
. , ,
C ( G), -
. k ,
kC/2 ( k
C , -
). , -
,

DR

C/(kC/2) = 2/k. , 1 2/k = (k 2)/k


. -
,
,
|V | 2 |V | 3 |V | 4 2 1 2
= .
|V | |V | 1 |V | 2 4 3 |V |(|V | 1)

. , log 1000 = 4, log log log log 1000 1.


-
; n 265536 , .
Find . -
. , -
, -
n log n . ,
Find O(log n) , -
,
. , m Find -
138 5.

O(m log n) ( ) O(n log n)


.
, ,
; .
{k + 1, , 2k }, 2k . 3 -
k
+ k+2 + k .
n n n
2k+1 2 2
, , ,
n , log n,
n log n.
Find ( -
) . -

T
, - -
. log n (,
?). O(log n) ,
.
Find ( -
AF
, . ) . Find -
, -
.
?
, , : {k + 1, , 2k }
2k . ( )
.
O(log n) -
.
DR

5.1.5.
-
. , ()
:
X {} { }
:
S V , X
S V S
e E S V S
X X {e}
|X | |V | 1
-
, X , S
X .
, , -
, S ( 5.8).
5.2. 139

. 5.8. : X , S -
.

S V S

X e

T
, S v 6 S -
:
cost(v) = min w(u, v).
AF uS

,
( 5.9) . , -
. v -
cost[v], S v,
,
. (
).
5.9
.
(prev).
DR

5.2.
mp3-?
1. (, ) -
. -
s1 , s2 , , s T .
(, 44100 , -
-, 50- T = 50 60 44100 130 -
.
.)
2. , s t (quantize) -
. ( -
,
).
3. T -
.
140 5.

. 5.9. : -
. : , A.
cost/prev .

Prim(G, w)
{: G = (V, E) w e .}
{: , prev.}
u V :
cost[u]
prev[u] nil
u0
cost[u0 ] 0
H MakeQueue(V ) { cost}

T
H :
v DeleteMin(H)
{v, z} E:
z H cost[v] > w(v, z):
AF
cost[z] w(v, z)
prev[v] v
DecreaseKey(H, z, cost[z])

6 5
A C E A C E
4 1 3
5 2 4

B D F B D F
2 4
DR

S A B C D E F
{} 0/nil /nil /nil /nil /nil /nil
A 5/A 6/A 4/A /nil /nil
A, D 2/D 2/D /nil 4/D
A, D, B 1/B /nil 4/D
A, D, B, C 5/C 3/C
A, D, B, C, F 4/F
A, D, B, C, F, E

.
. , , 130 -
= {A, B, C, D}. -
(A 00, , D 11) 260 .
?
5.2. 141

. ,
, :

A 70
B 3
C 20
D 37
-
? , -
? , {0, 01, 11, 001},
001 . , -
(prefix-free): -

T
.
( ) -
; (?),

( 0, 1). 5.10
AF
A, B, C, D.
, (-
/ /). , ,
, -
. - ,
: ( . 5.10)
260 213 ( 17% ).
,
. , (
, )
DR

( ). ,
.

. 5.10. . .

0 1

[60]
A 0 A [70]
B 100
C 101 [23]
D 11 D [37]

B [3] C [20]
142 5.

,
f1 , f2 , , f n n ?
n
= f i ( i- )
X

i=1

( ).
( -
, ).
.
,
-; , -
-

T
. ,
( ) .
,

-
AF
, .

?
. , , -
( ), -
. , - x0, x1
, x? -
, . ( ,
, ,
, .)
DR

, .
- . -
, ,
. , ,
i j
.
, , -
( i j). f i + f j .
,
i j , f i + f j , -
. , -
( i j ) ,
( i j).
, ( - ) :
( f1 f2 ),
.
, f1 f2 ,
( f1 + f2 ) . -
5.3. 143

f1 + f2

f5 f3 f4

f1 f2

, (. 110).

T
O(n log n), ( 4.5.2).
Huffman( f )
{: f [1n].}
{: n .}
AF
{H f []}
i 1 n: Insert(H, i) f [i]
k n + 1 2n 1: { n 1 }
i DeleteMin(H)
j DeleteMin(H)
k i, j
f [k] f [i] + f [ j]
Insert(H, k) f [k]
: . 5.10
DR

5.3.
,
. -
,
(Horn formulas).
(Boolean variable), -
true () false (). -
- , ,
8 .
; , -
(literal). x ( x) x
, x .
( ):
1. , ( )
, .
144 5.


, ,
; ( , -
, 200 ):

0,15 0,30 0,20
0,10 0,05 0,30
0,70 0,25 0,30
0,05 0,40 0,20
? : -
, -
?

T
200 . -
290 , 380 400
( ).
.
,
AF
(), :
.
n p1 , p2 , , pn (
n = 4) m . m -
i mpi ; ,
, pi (
1/2k ). ( 5.19),
n
mpi log2 (1/pi ) ,
P
DR

i=1
n
1
H(p1 , , pn ) =
X
pi log2
pi
i=1

. -
p1 , , pn .
, -
, (
, , -
, ).
1 1
(1/2, 1/2) log2 2 + log2 2 = 1,
2 2
.
3 4
(3/4, 1/4) : log2 +
1 4 3
+ log2 4 = 0,81. ,
4
(,
) .
. 5.18 5.19.
5.3. 145

,
. ,
(z w) u
8
8 , . ( )
x, -
, x : .
2. , (-
) ,
(
u v y)
( ).

T
( -
),
true/false , -
. (satisfying
assignment).
AF

: true, -
, false. -
: false -
. true,
( - ). -
,
, .
, : - -
, .
DR

{: .}
{: , .}
false
:
{ , }
true
:

:

,
(w y z) x, (x z) w, x y, x, (x y) w, (w x y), (z ).
false , x true
x. , y true,
x y, .
146 5.

? ,
. ,
,
. , -
:

true,
true .

, -
- , -
.

; -

T
. , , -
. , ( 5.33)?

5.4.
AF
11 (. 5.11) - ; -
(, ) ;
,
30 . ?

. 5.11. (a) . (b) ,


30 .
DR

(a) c (b) c

b b
d f d f
a e a e

k k
g g
h h
i i
j j

,
, 30 . x
S x (-
30 ). , S x
, .
5.4. 147

, :
: B S1 , , Sm B.
: Si , B.
: .
:
B :
Si
, :
a ( ). c,
j f , ,
. b, e i!
, , -

T
:
. , B n
k .
k ln n .
AF
, n t ,
t ( n0 = n). -
k . , ,
n t /k . ,
n 1
 
n t+1 n t t = n t 1 ,
k k
n t n0 (1 1/k) t . -

1 x ex x,
DR

x = 0 ( - -
, ).
y

ex x
1 x
148 5.


1 t
 
n t n0 1 < n0 (e1/k ) t = net/k ;
k
t = k ln n n t ne ln n = 1, ,
.
, ( ) -
, -
, ln n. : -
, ln n ( 5.34).
,
( , )?
, ,
( -

T
, 8) ,
.

AF
5.1. .
6 5 6
A B C D

1 2 2 5 4 7
5

E F G H
1 3 3
DR

(a) ?
(b)
?
(c) . ?
, .
5.2. -
.
1 2 3
A B C D

4 8 6 6 2 4
1

E F G H
5 1 1

(a) .
, ( ,
149

A). , -
cost.
(b) . -
( ) ,
.
5.3. .
: G.
: G ,
?
O(|V |)?
5.4. , n

T
k , n k .
5.5. G = (V, E) -
w e 0. ,
G, -
AF
s V .
(
e w e0 = w e + 1).
(a) ? (,
, , .)
(b) ? (, ,
, .)
5.6. , -
, .
DR

5.7. , -
?
5.8. G = (V, E) s,
. ,
s G -
? ( .)
5.9. G = (V, E), -
. ,
( ).
(a) G |V | 1 ,
.
(b) G e, e
.
(c) e G. e -
.
150 5.

(d) G , -
.
(e) e -
G, ,
.
(f) G e, e
MST.
(g) , , -
.
(h) -
.
(i) -

T
.
(j) r > 0 r- ,
r. G r- s t,
G r- s t.
AF
5.10. T G, H
G. , T H
H.
5.11. -
, {1}, , {8}, Union(1, 2),
Union(3, 4), Union(5, 6), Union(7, 8), Union(1, 4), Union(6, 7), Union(4, 5),
Find(1). .
-
.
DR

5.12.
, -
. m Union Find -
n , (m log n).
5.13. A, C, G, T -
31%, 20%, 9% 40% .
?
5.14. a, b, c, d, e 1/2, 1/4,
1/8, 1/16, 1/16 .
(a) ?
(b) 1 000 000
,
( )?
5.15.
( - ):
(a) {0, 10, 11};
151

(b) {0, 1, 00};


(c) {10, 01, 00}?
5.16. .
(a) 2/5, -
, .
(b) 1/3,
.
5.17. n -
? , .
5.18. ( -
) .

T
17,3% r 4,8% y 1,6%
e 10,2% d 3,5% p 1,6%
t 7,7% l 3,4% b 1,3%
a 6,8% c 2,6% v 0,9%
o 5,9% u 2,4% k 0,6%
AF n
i

s
5,8%
5,5%
5,1%
m
w
f
2,1%
1,9%
1,8%
j
x
q
0,2%
0,2%
0,1%
h 4,9% g 1,7% z 0,1%
(a) .
(b) (
)?
(c) (. . 144)
DR

26
1
X
H= pi log2 .
pi
i=0

, , -
?
(d) ,
? , ,
?
5.19. . p1 , , pn n -
.
(a) , pi -
( 1/2k ). m
, i mpi . ,


n
1
X
mpi log2 .
pi
i=1
152 5.

(b) ( -
).
n
1
X
pi log2
pi
i=1


. ( n)
? ?
5.20. , -
, (perfect
matching), ,
.

T
5.21. .
: G = (V, E) -
w e .
: ,
.
AF
5.22.
, .
, e -
. MST, e.
(a) .
(b) ,
G = (V, E) {w e } -
:
DR


e E w e :
e G ():
G G e { e G}
G
(c) ,
, e.
?
(d) |E|?
5.23. G = (V, E) -
T = (V, E 0 ) ( , G T
). - e E c w(e)
b (e). , -
w
, . ,
, .
(a) e 6 E 0 w
b (e) > w(e).
153

(b) e 6 E 0 w
b (e) < w(e).
(c) e E 0 w
b (e) < w(e).
(d) e E 0 w
b (e) > w(e).
5.24.
.
: G = (V, E), w e , -
U V .
: ,
U ( ).
( .)
O(|E| log |V |) .

T
(: , -
U?)
5.25. (
) : Increment ( -
) Reset ( ). ,
AF
n Increment Reset, -
, O(n). ,
O(1).
5.26. .
x 1 , , x n --
x i = x j - x i 6= x j . -
, (,
n ). , -

DR

x 1 = x 2 , x 2 = x 3 , x 3 = x 4 , x 1 6= x 4
. , -
m n .
5.27. . n -
d1 , d2 , , dn . -
, G = (V, E)
. (
) .
(a) d1 , d2 , d3 , d4 , di 3 i
d1 + d2 + d3 + d4 , .
(b) d1 d2 dn v1 , , vn , -
d1 , , dn . , -
, v1
v2 , v3 , , vd1 +1 . .
ff v1 . , i < j n u V , -
{v1 , vi }, {u, v j } 6 E {v1 , v j }, {u, vi } E.
154 5.

ff , G G 0 = (V, E 0 ) ,
(v1 , vi ) E 0 .
ff , , ,
v1 v2 , v3 , , vd1 +1 .
(c) , ,
d1 , , dn (
) , -
.
n
n m= di .
P
i=1
5.28. , n . ,

, , ,

T
.
,
-
, .
AF
5.29. (prefix-free encoding)
( ),
() .
, k1 , , kn
2k1 + + 2kn 1. (:
.)
5.30. .
, .
0, 1 2. -
. ,
DR

n f1 , , f n
{0, 1, 2}, .
5.31. , -
f i ( i), ci ,
, i- -
l i , f i ci l i .
P
i
-
.
5.32. n . i
t i . -
-
. ,
i
, i t j . -
P
j=1
,
.
155

5.33. , (-
5.3) .
(: ,
.)
5.34. , n, ,
( 5.4),
(i) n ;
(ii) ;
(iii) log n .
, O(log n) .
5.35. , n ( )
n(n 1) .

T
AF
DR
6

(-
, , ). -
, . ,
-

T
.
, ,
.

6.1.
AF

4
. ,
.
, -
, ,
(. 6.1). ? -

. 6.1. .
DR

6 1
1 A B 2
2 4 6 1 1
S 4 1 E S C A B D E
2 C D 1 1 2
3

, S
. , D
B C,
dist[D] = min{dist[B] + 1, dist[C] + 3}.
. -
dist
( . 6.1), v ,
dist[v], . , dist
6.2. 157

:
dist[]
dist[s] 0
v V \ {s}
dist[v] min{dist[u] + l(u, v): (u, v) E}
, {dist[u]: u V } -
: - , -
, , , . -
,
, , -
. -
, .
: -

T
, -
. ? -

( A B , B A);
.
AF
6.2.
(longest in-
creasing subsequence) a1 , , an . -
ai1 , ai2 , , aik ( 1 i1 < i2 < < ik n) -
, .
, .
, 5, 2, 8, 6, 3, 6, 9, 7 2, 3, 6, 9:
DR

5 2 8 6 3 6 9 7

-
. ,
: i j ,
i < j ai < a j (. 6.2).

. 6.2. .

5 2 8 6 3 6 9 7
158 6.

, -
, .
, :
j 1 n
L[ j] 1 + max{L[i]: (i, j) E}
max L[ j]
j

L[ j] , j, , -
,
a j ( , ,
1 ). j -
, L[ j] L[]
1. ( j ,

T
). -
,
L[ j].
?
{L[ j]: 1 j n},
AF
,
. ,
,

L[ j] = 1 + max{L[i]: (i, j) E}.

L[ j] ? i
G R , -
( 3.5). L[ j] -
j, |E|
DR

O(n2 ); .
.
, -
, . (
4), L[ j], prev[j] i, -
. -
.

6.3.
, , -
. ?
, -
- ( SNOWY SUNNY).
S N O W Y S N O W Y
S U N N Y S U N N Y
: 3 : 5
6.3. 159

. -
,
, (edit distance) -
. ( -
3 ?)



L[ j]. -
? , -
. (i, j) i < j, -
a1 , a2 , , an .

T
L[ j] = 1 + max{L[1], L[2], , L[ j 1]}.
, L[5]
, .
AF L[1] L[2]
L[5]

L[3] L[4]

L[1] L[1] L[2] L[1] L[2] L[3]

L[1] L[1] L[1] L[2]


DR

L[1]

L[n] (
?), .

? ,
. ( , -
.) -
.
, :
L[ j] L[ j 1]. , -
, .
, -
. ,
( ).
160 6.

, -
,
, , -
. , , -
, : U, O N W.
, -
; , -
1, -
. ,
: AC -
AB BC. .
? ,
.

T
?

( , ) -
, : ,
AF

. -
-
.
, ,
.


DR

,
. x[1m]
y[1n]. -
, x[1i], , y[1 j], -
E[i, j] (. 6.3). E[m, n].

. 6.3. E[7, 5].

E X P O N E N T I A L

P O L Y N O M I A L

, - E[i, j] -
. x[1i] y[1 j]?
, :
x[i] x[i]
y[ j] y[ j]
6.3. 161

1,
x[1i 1] y[1 j], -
. E[i 1, j], . -
1,
E[i, j 1]. 1, x[i] 6= y[ j], 0,
x[i] = y[ j], E[i 1, j 1]. , -
,
:
E[i, j] = min{1 + E[i 1, j], 1 + E[i, j 1], diff(i, j) + E[i 1, j 1]},
diff(i, j) = 0, x[i] = y[ j], 1 .
, EXPONENTIAL POLYNOMIAL E[4, 3] -
EXPO POL. -
:

T
O O
L L
E[4, 3] = min{1 + E[3, 3], 1 + E[4, 2], 1 + E[3, 2]}.
E[i, j] (. 6.4).
AF
? ,
E[i 1, j], E[i, j 1] E[i 1, j 1] , E[i, j].
, , ,
. , , .
, ,
.

. 6.4. (a) . E[i, j]


E[i 1, j 1], E[i 1, j] E[i, j 1]. (b) .
DR

(a) j1 j n (b) P O L Y N O M I A L
0 1 2 3 4 5 6 7 8 9 10
E 1 1 2 3 4 5 6 7 8 9 10
X 2 2 2 3 4 5 6 7 8 9 10
i1 P 3 2 3 3 4 5 6 7 8 9 10
O 4 3 2 3 4 5 5 6 6 8 9
i
N 5 4 3 3 4 4 5 6 6 8 9
E 6 5 4 4 4 5 5 6 6 8 9
N 7 6 5 5 5 4 5 6 6 8 9
m T 8 7 6 6 6 5 5 6 6 8 9
I 9 8 7 7 7 6 6 6 6 7 8
A 10 9 8 8 8 7 7 7 7 6 7
L 11 10 9 8 9 8 8 8 8 7 6

, ( ).
E[, 0] E[0, ] -
: E[0, j]
162 6.

j y, j.
E[i, 0] = i.
.

i 0 m:
E[i, 0] i
j 0 n:
E[0, j] j
i 1 m:
j 1 n:
E[i, j] min{E[i 1, j] + 1, E[i, j 1] + 1, E[i 1, j 1] + diff(i, j)}
E[m, n]

T
. O(1), -
, O(mn).
-
6:
E X P O N E N T I A L
AF P O L Y N O M I A L


, ,
.
(i, j) -
, :

(i 1, j) (i, j), (i, j 1) (i, j), (i 1, j 1) (i, j)


DR

(. . 6.5). , -
.
(i 1, j 1) (i, j) x[i] = y[ j] () -
0, 1.
s = (0, 0) t = (m, n).
. , -
. ,
, , .
, -
, , -
. -
.

6.4.
, -
. W .
6.4. 163

. 6.5. 6.

P O L Y N O M I A L

T
N

E
AF N

L
DR

- n w1 , , w n v1 , , vn .
?1
, , W = 10 ,
:


1 6 30
2 3 14
3 4 16
4 2 9

.
, 1
4 ( : 48).

1
, -
.
164 6.



.
ff x 1 , x 2 , , x n ,
x 1 , x 2 , , x i i < n.

x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10

.
ff x 1 , , x m y1 , , yn ,
x 1 , , x i y1 , , y j i < m j < n.

T
x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10

y1 y2 y3 y4 y5 y6 y7 y8
AF
O(mn).
ff x 1 , , x n , x i , , x j
i < j < n.

x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10

O(n2 ).
ff , .
DR

?
,
.

( ), -
1 3 (: 46).
8 ,
, , . -
6.4. 165

( )
O(nW ), W , -
, log W , W .


. ,
. : -
w W (
) (,
1, 2, , j, j n). , -
, .

T
K[w] = w.
K[w] ? ,
w i, -
-
w w i . , K[w] K[w w i ] + vi -
AF
i. , i,
:
K[w] = max {K[w w i ] + vi },
i : w i w

, , 0. -
:
K[0] 0
w 1 W :
DR

K[w] max{K[w w i ] + vi : w i w}
K[W ]
W + 1.
O(n), O(nW ).
,
.
.


, -
. ,
- , . ,
0 j n: K[w, j]
, 1, , j -
W . : K[W, n].
K[w, j]
. . j ,
166 6.



{A, C, G, T} (), (-
).
(
3 ) 0,1%. -
, . -
, -
.
, -
. (
), . -
, .

T
?
1.
(, -
, ). -
AF
.
GenBank, ,
1010 .
BLAST,
, -
.
2. (DNA sequencing), -
, (-
) 500700 . ,
,
DR

?
, . -
, , -
. 2001
: Human Genome Consortium ( -
) Celera Genomics ( ).
3. ,
?
.

:
K[w, j] = max{K[w w j , j 1] + v j , K[w, j 1]}
( , w j w.) , -
K[w, j] K[, j 1].
W + 1 n + 1 -
. O(1). -
6.5. 167


: O(nW ).
j, w: K[0, j] 0; K[w, 0] 0
j 1 n:
w 1 W :
w j > w: K[w, j] K[w, j 1]
: K[w, j] max{K[w, j 1], K[w w j , j 1] + v j }
K[W, n]

6.5.
A B C D -
50 20, 20 1, 1 10 10 100 (. 6.6).

T
- . ,

. 6.6. A B C D = (A (B C)) D.

(a) (b)
AF
C

A B 1 10 D A BC D
50 20 20 1 10 100 50 20 20 10 10 100

(c) (d)


DR

A (B C) D (A (B C)) D
50 10 10 100 50 100

( A B 6= B A),
(A (B C) = (A B) C). , -
, (, ,
). ?
m n n p
O(mnp) . , mnp ,
A B C D:

A ((B C) D) 20 1 10 + 20 10 100 + 50 20 100 120200
(A (B C)) D 20 1 10 + 50 20 10 + 50 10 100 60200
(A B) (C D) 50 20 1 + 1 10 100 + 50 1 100 7000

, -
. , ( ,
168 6.


,
. -
, .
, , -
, , -
. ,

.
( )
- (. 1.5)
K[]. K[w]
, ,

T
.
(memoization).
{ - K[w] (w ).}
{ .}
AF
Knapsack(w)
w -:
K[w]
K[w] max{Knapsack(w w i ) + vi : w i w}
K[w] - w
K[w]
. -
O(nW ),
. , O(), -
DR

,
(-
).
, , . -
: , -
, -
, . , W w i
100. K[w] , w 100.

.

), , -
.
A1 , A2 , , An
m0 m1 , m1 m2 , , mn1 mn ?
, -
, , (
6.5. 169

) (. 6.7). -
n n ( 2.13),
.

. 6.7. (a) ((A B) C) D. (b) A ((B C) D). (c) (A (B C)) D.

(a) (b) (c)

D A D

C D A

T
AFA B B C B C

, .
?
Ai Ai+1 A j . , 1 i j n

C[i, j] = Ai Ai+1 A j .

, j i.
i = j : C[i, i] = 0. j > i -
C[i, j].
Ai Ak Ak+1 A j k i j.
DR

-
: C[i, k] + C[k + 1, j] + mi1 mk m j . -
k, :

C[i, j] = min {C[i, k] + C[k + 1, j] + mi1 mk m j }.


ik< j

( s ):

i 1 n: C(i, i) 0
s 1 n 1:
i 1 n s:
ji+s
C[i, j] min{C[i, k] + C[k + 1, j] + mi1 mk m j : i k < j}
C[1, n]

. -
O(n).
O(n3 ).
170 6.

6.6.
-
. -

.


-
: ; -
, (
), . , -
( ) .
, . 6.8 S T

T
. 6.8. S T : .

2
A B
AF S
1

5
5 1
4
T
2 1
C D
3

, , -
( ). -
:
DR

G, s t k. -
s t, k .
?
,
.
, -
,
. v i k -
d ist[v, i] s v,
i . dist[v, 0] ,
s, dist[s, 0] = 0. :
dist[v, i] = min {dist[u, i 1] + l(u, v)}.
(u,v)E


s t,
. -
4.6.1 ( )
6.6. 171

|V | , .
O(|V |2 |E|).
, O(|V |3 ).
,
? :
( ). , -
u v (u, v),
. ,
.
,
.
, V 1 n -
dist[i, j, k] i j,

T

{1, 2, , k}. dist[i, j, 0] i j, -
( , ).
,
k? i, j, -
AF
k i
j. : i j, k -
, k (
, ). -
, -
, i k k j:
k
dist[i, k, k 1]

i dist[k, j, k 1]
DR

j
dist[i, j, k 1]

, k ,

dist[i, k, k 1] + dist[k, j, k 1] < dist[i, j, k 1].


dist[i, j, k] .
() O(|V |3 ):
i 1 n:
j 1 n:
dist[i, j, 0]
(i, j) E:
dist[i, j, 0] l(i, j)
k 1 n:
i 1 n:
j 1 n:
dist[i, j, k] min{dist[i, k, k 1] + dist[k, j, k 1], dist[i, j, k 1]}
172 6.



.
. , -
?
1 n, -
1 D = (di j ) .
, 1,
-
. (. 6.9)
(!) ?

. 6.9. 10.

T
2
A B
4 3
1
AF 2

C
3 2
2

D
4
E

, -
. -
, . 8,
.
DR

( (n 1)!), O(n!) (-
O(n)). , -
,
.
? ,
.
, 1,
j. -
? , ( j),
( ). -
.
S {1, 2, , n}, 1, j S
C[S, j] 1 j, -
1 j,
S .
|S| > 1 C[S, 1] = ,
1.
6.6. 173

C[S, j] . 1 j -
i S { j}. -
1 i S { j}, C[S { j}, i].
i j, di j , i:

C[S, j] = min C[S { j}, i] + di j .


iS : i6= j

|S|, :
C[{1}, 1] 0
s 2 n:
S {1, 2, , n} s, 1:
C[S, 1]
j S, j 6= 1:

T
C[S, j] min{C[S { j}, i] + di j : i S, i 6= j}
min C[{1, , n}, j] + d j1
j

2n n , -
. O(n2 2n ).
AF

, -
, : -
. , -
,
, , O(1)
. .
? : -
DR

, (),
. ,
, ,
.
.
, dist[i, j, k]
, dist[, , k + 1]. -
dist
|V | |V |, k, :
dist[i, j, k] dist[i, j, k 2]. (
, , -
, : prev[i, j], -
i j.
.)
, -
(. 6.5) ,
?
174 6.

6.7.
,
. , . 6.10 {1, 5} ,
{1, 4, 5} ( 4 5 ).
, , {2, 3, 6}.

. 6.10. 3.

1 2

5 6

T
3 4

-
AF

( , ). -
,
. -
? , (
) .
r .
, . I[u]:
u. -
DR

I[r].
, , -
, . ,

u. , , I[w] w,
u. I[u]? , u
, (. 6.11). -
u, u, -
u. , u
, -
. :

X X
I[u] = max 1 + I[w], I[w] .
w u w u

. -
, O(|V | + |E|).
175

. 6.11. I(u)
u. : u , .

T
AF

6.1. .
,
5, 15, 30, 10, 5, 40, 10
15, 30, 10 , 5, 15, 40 . -
:
DR

: a1 , a2 , , an .
: (
).
10, 5, 40, 10 55.
(: j {1, 2, , n} , -
j.)
6.2. , .
a1 < a2 < < an ,
. ( an ).
200 ,
( ). x
, (200 x)2 .
, -
.
, -
.
176 6.

6.3. -
. n , ,
m1 < m2 < < mn . :
ff n -
; 1 i n pi > 0
.
ff k -
, k .
-
.
6.4. s[1n] n, -
, (, -

T
). , ,
dict(w) = w 0 1.
(a) , -
, , s[1n]
. O(n2 ) (, dict
AF
O(1)).
(b) , -
, .
6.5. . (), 4
n .
, .
. -
, (
).
DR

(a) .
,
.
(b)
, . (: -

.)
6.6. a, b, c -
:
a b c
a b b a
b c b a
c a c c
, a b = b, ba = c. , -
, .
177

, , -
(, b b b bac) ,
, a. -
, b b b bac ,
((b(b b))(ba))c = a.
6.7. . -
, ACGTGTCAAAATCG -
ACGCA AAAA ( ACT
). , x[1n]
- (
).
O(n2 ).

T
6.8. x = x 1 x 2 x n y = y1 y2 ym .
(longest common substring), -
k, x i x i+1 x i+k1 = y j y j+1 y j+k1 i j.
, O(mn).
6.9. , -
AF
.
n n ( ). -
( -
). : 20 -
3, 10,
20 + 17 = 37. , ,
: 20 + 10 = 30.
, ,

.
DR

6.10. . n pi [0, 1]
i- . ,
0 k n p1 , , pn [0, 1] , k
( ). 1
O(n2 ). ,
[0, 1] O(1).
6.11. x = x 1 x 2 x n y = y1 y2 ym . -
(longest common subsequence),
k, x i1 x i2 x ik = y j1 y j2 y jk i1 <
< i2 < < ik j1 < j2 < < jk . O(mn).
6.12. n- P -
. (triangulation) P n 3 -
P. P n 2 -
.
1
O(n log2 n).
178 6.

. -
P . (: P -
1 n,
. 1 i < j n A[i, j]
i, i + 1, , j.)

6.13. n v1 , v2 , , vn ( ).
,
( ), , .

( , ). , n .
(a) , ( ,
) :

T
.
(b)
O(n2 ). v1 , , vn , -
O(n2 ), -
O(1) ( -
AF
).

6.14. . X Y , X Y
. n ;
i ai bi ci
( ai , bi , ci ).
().
X Y ?
. (
,
DR

.)

6.15. A B ( ),
n . , 50%
. A i , -
B j . , A .
(, i = n 1 j = n 3 7/8, -
B .)

6.16. ( ). -
n . vi i, di j
i j. d0 j d j0 -
j . ,
-
. -
.
,
O(n2 2n ). (: .)
179

6.17. v , x 1 , x 2 , , x n (
). (,
10 25 45 , 47 15).
-
O(nv), , .
6.18. ( 6.17), -
? (, 1, 5, 10, 20
16 = 1 + 5 + 10 31 = 1 + 10 + 20 , 40
( ). - O(nv).
6.19. ( 6.17): -
, k . (-
, 5 10 , k = 6, 55 ,

T
65 ).
6.20. .
, :
begin 5%
AF do
else
end
40%
8%
4%
if 10%
then 10%
while 23%
: -
,
.
. 6.12 , -
DR

, ( while
end, then while).
, -
.
cost = 1 (0,04) + 2 (0,40 + 0,10) + 3 (0,05 + 0,08 + 0,10 + 0,23) = 2,42.
(cost = 2,18).
.
: n ;
(p1 , p2 , , pn ).
:
.
6.21. (vertex cover) G = (V, E) -
S V , -
. , {A, B, C, D, E, F, G} {A, C, D, F }
, {C, E, F } .
180 6.

. 6.12.

do

end begin while

do then if

begin else if while else then

end

T
3 ( : {B, E, G}).

A D

B E G
AF C F

:
: T = (V, E).
: T .
6.22. O(nt) .
: a1 , a2 , , an ;
DR

t.
: t a1 , a2 , , an ?
ai (
).
(: s
a1 , a2 , , ai .)
6.23. n ; i -
Mi . Mi ri (
1 ri ). , -
r1 r2 rn . -
mi Mi ; ,
. , mi -
, (1 ri )mi , -
1 (1 ri )mi ,
n
(1 (1 ri )mi ). Mi ci ,
Q
i=1
B (ci B
181

). B, r1 , , rn c1 , , cn
.
6.24. .
m n
O(mn). m n -
. ?
(a) , ,
. , -
-
O(n).
(b) , .
,

T
(0, 0) (n, m) .
(k, m/2) k. -
, k. (-
, m .)
(c) .
AF
FindPath((0, 0) (n, m))
k (. )
FindPath((0, 0) (k, m/2))
FindPath((k, m/2) (n, m))

, ,
O(nm), O(n).
6.25. (3-partition).
a1 , , an , -
DR

. ,
{1, , n} I, J, K ,
n
1
X X X X
ai = aj = ak = ai .
3
iI jJ kK i=1

, (1, 2, 3, 4, 4, 5, 8) : (1, 8), (4, 5), (2, 3, 4), -


(2, 2, 3, 5) .
, -
, , n ai .
P
i
6.26. . , -
, . -
, .
= {A, C, G, T}. x = ATGCC
y = TACGCA :
A T G C C
T A C G C A
182 6.

(gap). ,
, . -

(|| + 1) (|| + 1) ( -
). ,
(, T) + (A, A) + (T, ) + (, C) + (G, G) + (C, C) + (C, A).
, , -
x[1n] y[1m] -
O(mn) .
6.27. . -
( 6.26) ,
. -

T
, , -
10 ,
. k c0 + c1 k,
c0 c1 ( c0 > c1 ). ?
AF
6.28. . -
, ,
. ,
x[1n] y[1m] (. 6.26)
x 0 y 0 x y,
. O(mn).
6.29. . , , -
. -
n, (l i , ri , w i ), 1 l i ri n -
[l i , ri ], w i .
DR

-
.
6.30. .
, -
, , -
. , -
, k = {A, C, G, T}.

ATTC AGTC CGCG AGGA ATCA


183

,
, -
. , , -
- , ,
( ) -
.

,
. ,
: ,
s(u) u (
). k. -

T
( , s(u) s(v) ).
X
score(T ) =
(u,v)E(T )

(a) -
; .
AF
(b) (
n k) . (:
.)
DR
7

, -
, , -

T
. ,

ff (
s t, -
, );
AF
ff (
).
, -
, (
) .
.
, -
, :


DR

7.1.
() , -
,
ff , -
,
ff ( ) -
.
7.1. 185

7.1.1. :
.
1 , 6 . (-
x 1 x 2 ) , -
?
( x 1 , x 2 0):
(1) 200 300 ;
(2) 400 () .
?
:

x 1 + 6x 2 max

T
x 1 200
x 2 300

x 1 + x 2 400
x1, x2 0
AF

( linear
program); ,
- .
(x 1 , x 2 ) ; -
, -
. , -
,
(feasible solutions) ,
(. 7.1).
DR

. 7.1. (a) . (b) x 1 + 6x 2 = c, -


c, c.

(a) x2 (b) x2

-
400 400
: 1900

300 300
c = 1900
200 200 c = 1500
c = 1200
100 100
c = 600
x1 x1
0 100 200 300 400 0 100 200 300 400
186 7.

,
() . c
x 1 + 6x 2 = c, 1/6 (. . 7.1).
c -
. c, (-
) .
: ( -
, ).
,
: , -
, ( ).
, ( ), -
. , :

T
1) , , -
,
x 1, x 2;

, -
AF
(infeasible);
2) ,
; ,

x 1 + x 2 max
x1, x2 0

(unbounded) .


DR

, -
. - (simplex
method), 1947 .
7.6, : -
(0, 0)
-
. :

1900
300

200 1400

100

0 200
0 100 200
7.1. 187

- -
, . -
( ) ?
, . -
, () -
.


,
() -, 13 .
x 1 , x 2 , x 3 (
). x 1 x 2 ,
x 3 : -

T
400. , ,
, , x 2 + 3x 3 600.
?
:
x 1 + 6x 2 + 13x 3 max
AF x 1 200
x 2 300
x 1 + x 2 + x 3 400
x 2 + 3x 3 600
x1, x2, x3 0
. -
, -
. -
DR

(. 7.2;
x 3 ). -
, ?
c x 1 + 6x 2 + 13x 3 = c. c
( -
), -
. (0, 300, 100) -
3100 .
-? , -
, .
7.2
(
):
(0, 0, 0) (200, 0, 0) (200, 200, 0) (200, 0, 200) (0, 300, 100)

[0] [200] [1400] [2800] [3100]
, ,
, . ,
188 7.

. 7.2. -
.

x2

300

T
x1
AF 100

x3

,
.
DR


, (0, 300, 100) 3100 ,
: -
, 4. x 1 + 6x 2 + 13x 3 3100,
, 3100, -
.
(0, 1, 1, 4), -
?
7.4 , ,
, .

, ( -
)? , - - -
(. 7.6). , -
( , ),
-
.
7.1. 189

7.1.2. :
, -
. -
. .
:
d1 , d2 , , d12 440 920.
30 ,
20 2000 ;
.
? :
1. 80% .
, 30% .

T
2. 320 400
.
3. 8 .
.
,
AF
,
.
-
, . -
:

w i = i- (i = 1, , 12); w0 = 30;
x i = , i- ;
oi = , i- ;
DR

hi , f i = , i- ;
si = i- ; s0 = 0.

74 ( w0 s0 ). -
. :

w i , x i , oi , hi , f i , si 0, i = 1, , 12.

, ( ):

x i = 20w i + oi .

oi 6w i .

w i = w i1 + hi f i .
190 7.

,
, :

si = si1 + x i di .

i = 1, , 12.
:
s12 = 0.

, ? 1 :
X X X X X
2000 w i + 320 hi + 400 fi + 8 si + 180 oi min .
i i i i i

T
-.
, , .
( : // ). -
10,6 , 10,6 10,
11, ( -
AF
). ,
(
), .
( , ) -
: 8, -
, .

7.1.3. :
; -
DR

7.3. : A B,
B C, A C.
, ( ) ( -
). AB 3 -
, BC AC 2 -
4 .

( ); -
(,
, ). ?
: (, AB)
x AB , x AB
0

. -
, -
1
, -

.
7.1. 191

. 7.3. A, B C. -
.

12

6 11

b c

T
13
10 8
B C

. :
AF 0
3x AB + 3x AB
0
x AB + x AB
0
+ 2x BC + 2x BC
0
+ x BC + x BC 10
0
+ 4x AC + 4x AC max
[ (b, B)]
0
x AB + x AB + x AC + 0
x AC 12 [ (a, A)]
0
x BC + x BC + x AC + 0
x AC 8 [ (c, C)]
0
x AB + x BC + 0
x AC 6 [ (a, b)]
0
x AB + x BC + 0
x AC 13 [ (b, c)]
0
x AB + 0
x BC + x AC 11 [ (a, c)]
DR

0
x AB + x AB 2
0
x BC + x BC 2
0
x AC + x AC 2
0 0 0
x AB , x AB , x BC , x BC , x AC , x AC 0

(!),
- :
0 0 0
x AB = 0, x AB = 7, x BC = x BC = 1,5, x AC = 0,5, x AC = 4,5.

, . , , -
ac, .
:
. -
, (. 7.2).
: ,

?
192 7.

e
, : -
, , . -
, 6 ,
, , -
.
, -
-
. , -
:
LongestPath(G)

T
G
ShortestPath(G)
: x P, -
y Q , Q( y)
P(x)
AF
P.
P

y Q( y)
x Q P(x)

( , P = LONGEST PATH Q =
= SHORTEST PATH ?) -
, P
Q!
DR

( -
) ,
.

7.1.4.

:
1. .
2. .
3. .
-
.
1. , -
.
7.2. 193
n
2a. - ai x i b ,
P
i=1
(slack variable) s 0
n
X
ai x i + s = b,
i=1
s 0.

, , s, -
, .
, ( s 0)
( ).
2b. A = B A B A B.

T
3. -
, () x
x + x x + , x ( -
). ,
AF
x x + x .
-
( , ,
) -
, , -
, .
, :

x 1 + 6x 2 max x 1 6x 2 min
DR

x 1 200 x 1 + s1 = 200
x 2 300 x 2 + s2 = 300
x 1 + x 2 400 x 1 + x 2 + s3 = 400
x1, x2 0 x 1 , x 2 , s1 , s2 , s3 0

, -
. , -
( a = b a b
a b) , .
(. ).

7.2.
7.2.1.
7.4(a) ,
. s
t.
194 7.


, x 1 + 6x 2 , -

   
1 x1
c= x= ,
6 x2
c x c T x. ,
:

x1 200 1 0   200
x
x 2 300 0 1 1 300

x2
x 1 + x 2 400 1 1 400 .

T
| {z } | {z }
A x b
A : -
x
b.
, Ax b. ,
AF ai x bi i = 1, , m,
a1 , , am A.
- -

c T x max,
Ax b,
x 0.
DR

(
). 7.4(b) s t, -
7 . ?

. 7.4. (a) . (b) .

(a) a 2 (b) a 2
d d
3 10 1 2 2 0 1 2

s b 1 1 t s b 1 0 t
3 1
4 5 4 5
c e c e
5 5
7.2. 195

7.2.2.
(network) G = (V, E),
(source) s (sink) t e E
(capacity) ce > 0.
s t, -
. (flow): ,
e f e ( ). -
:
1. : 0 f e ce
e E.
2. u, s t, :
X X
f wu =

T
fuz .
(w,u)E (u,z)E

(flow conservation),
.
, s
AF
t; (size) :

size( f ) =
X
fsu =
X
fut .
(s,u)E (u,t)E

: { f e | e E},
-
( ). -
.
, . 7.4 11 s x y , -
x y. fsa + fs b + fsc 27 : 11
DR

(, fsa 0), 11 (-
, fsa 3) 5 (, fsc + f d c = f ce ;
, s t). -
, -: ,
7 .

7.2.3.
-, ,
.
7.6, -
:

: s t
,
7.5 (a) (b), -
1, ,
196 7.

(c); (d), -
(, , ).

. 7.5. . (a)
. (b) . (c) . (d) .
(e) . (f) -
.

(a) (b)
a a
1 1
s 1 t s t

T
1 1
b

(c) (d)
a
AF s t s
1

0
1

1 1
b b

(e) (f)
a a
DR
1 1
s 1 t s 1 t

1 1
b b

: ,
. 7.5(e)?
. , , -
, . ,
. 7.5(f) b a, a b.
s t,
(u, v) :
1. (u, v) , -
.
2. (v, u) , -
.
7.2. 197

(u, v) cuv fuv


( f ), f vu (
(v, u)). ,
(residual network) G f = (V, E f );
c f :

cuv fuv , (u, v) E fuv < cuv ,



f
cuv =
f vu , (v, u) E f vu > 0.

( )
. , , -
, , , (

T
). s t, -
.
7.6 ( ,
); .
AF
7.2.4.
, , -
, .
?
. . 7.4 ,
(L = {s, a, b} R = {c, d, e, t}):

L 2 R
DR

a d
3 10 1 2

s b 1 t
3 1

4 5
c e
5

L R, -
, -
L R, 7. ,
7 ! ( ,
, R = {t}: t
, 7 .)
(s, t)-
L R, s t.
198 7.

. 7.6. , . 7.4.
, .
.

(a) a d a 2
d
3 10 1 2

s b t s 3 b 1 1 t
4 5
c e c 5
e

(b) a 1
d a 1
d
1 1 2

T
1 10
2 1
s b 1 t s b 1 t
3 1
1
1 4 4
1
c 1
e c e
4
AF
(c)

s
2
a

b
2
d

1 t s
2
1
a
10
b
1
2
d

1
2

t
1 3 1
2
2 4 3
1
c 1
e c e
4

(d) a 2
d a 2
d
2 2 1 2
10
1
DR

s b 1 1 t s b 1 t
3 1
1
3 5 3 5
4
c 1
e c e
1

(e) a 2
d a 2
d
2 1 2 1 1
10
1 1
s b 1 t s 3 b 1 t
1
4 5 4 5
c 5
e c e
5

(f) a 2
d a 2
d
2 1 2 2 10 1 2
1
1 1
s b 1 t s b 1 1 t
2
4 5 4 5
c 5
e c 5
e
7.2. 199

-
L R; :
f (s, t)- (L, R)
:
size( f ) capacity(L, R).
, . -
,
. , ({s, b, c}, {a, d, e, t})
19. -
7, -
. ,
:

T

.
(s, t)-.
, -
AF
( ) . ? ,
t s
G f . L , s
G f , R : R = V L.
L R
e
s t
0
e
DR

,
size( f ) = capacity(L, R).
, L R, -
L R
R L. ( f e = ce f e0 = 0.) , (-
L R) -
.
, .

7.2.5.

O(|E|) , s t
. ? ( ,
?)
200 7.

, .
,
1, C|E|, C -
(?). : C -
? (, , )
?
7.31. , -
, -
C, s t. -
, , -
, ,
O(|V | |E|), .
O(|V | |E|2 )

T
.

7.3.
7.7 () -
AF
( ) ()1 . (,
) ?
: (perfect matching)
?

. 7.7. , .
?


DR

(
)! - s
- t -
.
1
, ,
(bipartite).
7.4. 201

(. 7.8) -
1. , -
, . ,
? ?

. 7.8. . -
.


s t


AF
? -
, ,
. ( 70%
30%!)
, , -
. -
, ,
.
: ,
DR

(
). , -
, : , -
-
. , (
8) -
.

7.4.
, ,
( -
). , ,
, . ,
:
, -
, .
202 7.

, , -
:

x 1 + 6x 2 max
x 1 200
x 2 300
x 1 + x 2 400
x1, x2 0

- (x 1 , x 2 ) = (100, 300) -
1900. ,
: ( 6),

T

x 1 + 6x 2 2000,

2000 .
( , )
AF
? , -
5 1

x 1 + 6x 2 1900.

, 1900 ! -
- ,
, , ?
, ,
DR

, ( -
) y1 , y2 , y3 :


y1 x1 200
y2 x 2 300
y3 x 1 + x 2 400

-, yi , -
. ,

( y1 + y3 )x 1 + ( y2 + y3 )x 2 200 y1 + 300 y2 + 400 y3 .

-, ,
x 1 + 6x 2 , -
. , y1 + y3 = 1 y2 + y3 = 6. -
y1 + y3 1 y2 + y3 6,
7.4. 203

.1 :

y1 , y2 , y3 0
x 1 + 6x 2 200 y1 + 300 y2 + 400 y3 y + y3 1
1
y2 + y3 6

yi ? ,
, ( y1 , y2 , y3 ) = (5, 3, 6).
( 200 5 + 300 3 + 400 6 = 4300).
, 200 y1 + 300 y2 + 400 y3
.
:

T
200 y1 + 300 y2 + 400 y3 min
y1 + y3 1
y2 + y3 6
y1 , y2 , y3 0
AF
,
() . -
-
, .
:

: (x 1 , x 2 ) = (100, 300); : ( y1 , y2 , y3 ) = (0, 5, 1).

1900, . -
. 7.9.
DR

. 7.9. ,
. ,
, .

( )

,
. -
, ,
1
y1 0 y2 0.
204 7.

.
:
ff y j -
; () -
.
ff x i (-
y j ): ( -
y j ) x i , -
.
ff -
yi ,
.

T
,
(. 7.10). , -
, . 7.11. -
-, ( -
AF
) :
. : A = (ai j ) -
,
.

. 7.10.
.

: :
DR

T
c x max y T b min
Ax b yT A cT
x0 y0

. 7.11.
( i I) ( i E), m = |I| + |E| . n -
x j ( j N ) . -
m = |I| + |E| . , ,
; .

: :
c1 x 1 + + cn x n max b1 y1 + + bm ym min
ai1 x 1 + + ain x n bi i I a1 j y1 + + am j ym c j j N
ai1 x 1 + + ain x n = bi i E ai j y1 + + am j ym = c j j 6 N
x j 0 j N yi 0 i I
7.5. 205



. -
, -
. s t
s t : ,
s t.
B S A

D C T

T
, : -
- ,
s t. ?
: s t, , -
AF
! (-
7.28) x u u:
x s x t max,
|x u x v | wuv {u, v}.
s t, -
, u v wuv .

,
. ,
DR

!
.
, -
, .
. ,
, -
-
( 7.25). , -
( -
), - -
, -
.

7.5.

. , ---
206 7.

.
{, , },
, . (-
, .)



G= 0 1 1
1 0 1
1 1 0
. -
, -
. ,

T
(mixed strategy) x 1 , -
x 2 x 3 .
x = (x 1 , x 2 , x 3 ) , 1. ,
y = ( y1 , y2 , y3 ).1
, , -
AF
, i, j, x i y j . ,
() ( )

Gi j P( i, j) =
X X
Gi j x i y j .
i, j i, j

, .
?
. , ,
( x = (1/3, 1/3, 1/3)).
DR

? -
, . ,

1 1 1
0 + (1) + 1 = 0.
3 3 3
0
( ). ( y1 , y2 , y3 ) -
, ,
. :
!
1 1
X X X X X
Gi j x i y j = Gi j y j = yj Gi j = y j 0 = 0,
3 3
i, j i, j j i j

,
G 0.
1
, , -
.
7.5. 207

, ,
,
( ) . -
: -
.
, -
-- ?
. , ,
, . , , -
,
( ). -
, , .
:

T
(
, ). -
. ,
, -
( , -
AF
, , ).
, . ( , -
.)


G= 3 1
2 1

,
x = (1/2, 1/2). ? -
1/2, 0. ,
DR

y = (0, 1).
, x = (x 1 , x 2 ), -
, : -
3x 1 2x 2 , x 1 + x 2 ,
, . y -
,
.
, x , -
, ,
min{3x 1 2x 2 , x 1 + x 2 }, :

(x 1 , x 2 ), min{3x 1 2x 2 , x 1 + x 2 }

x i
. -
, , x 1 x 2

z = min{3x 1 2x 2 , x 1 + x 2 }
208 7.

-
:
z max
z 3x 1 2x 2
z x 1 + x 2
, x 1 x 2 ,
z, :
z max
3x 1 + 2x 2 + z 0
x1 x2 + z 0

T
x1 + x2 = 1
x1, x2 0
, ,
, , y, -
. ,

AF
( y1 , y2 ), max{3 y1 y2 , 2 y1 + y2 } .
| {z }

y
:
w min
3 y1 + y2 + w 0
DR

2 y1 y2 + w 0
y1 + y2 = 1
y1 , y2 0
,
(. 7.11)! ,
, V .
? -
() , -
V , -
. () -
V , .
V (value) .
1/7, (3/7, 4/7) ,
(2/7, 5/7) .
( )
( -
) ,
7.6. - 209

(min-max theorem).
:
X X
max min Gi j x i y j = min max Gi j x i y j .
x y y x
i, j i, j

, -
( , )
: (
) .

7.6. -
- -
. ?

T
- -
-
:
v
AF
v v 0 :
v v0
-
(. 7.1 7.2). n
x 1 , , x n ?
x i Rn .
n x 1 , , x n ,
, -
( ,
). ,
DR

-
-
.1
?

7.6.1. n-
7.12 . -
, ,
-
. , A , -
,2 3 7 . , -
, 3 ,
6 ( ,
) - ,
, .
1
: -
( ),
.
210 7.

. 7.12. , .

x2

A
2
x 1 + 6x 2 + 13x 3 max
7

x 1 200 1

B C x 2 300 2

x 1 + x 2 + x 3 400 3

3
x 2 + 3x 3 600 4

x1 0 5

1

T
x1 x2 0 6

5
x3 0 7

6

AF 4

x3

.
. -
, ,
, .
DR

, ? -
n , n ,
. , -
n, -
, . :
n , -
.1
.
, n 1
.
, 7.12 A C -
{,
3 },
7 .
1
: -
. 7.12 B {, 2 ,
3 },
4
{,
2 , 4 }.
5 . -
, , .
7.6. - 211

7.6.2.
- :
1) , ( ,
);
2) , .
, ,
. - , -
, .
, .

c T x max

T
Ax b
x0
x = (x 1 , , x n ) .
. , , , -
, n {x 1 0, , x n 0} -
AF
. ( , -
.) -, ,
. :
, ci 0
i.
, ci 0 i, x 0
() . ,
ci > 0 - i, , -
, x i . (,
DR

,
x i .)
, -
, x i , ci > 0.
x i ? - . -
, x i 0
x i , - ,
, . -
n , .
, :
2x 1 + 5x 2 max
2x 1 x 2 4 1

x 1 + 2x 2 9 2

x 1 + x 2 3 3

x1 0 4

x2 0 5

212 7.

- , -
4 .
5 x 2 0, -
. x 2 ,
x 1 + x 2 3, -
x 2 = 3, , .
3 .
4
, , , -
. u - ?
-
. -
, ,
. , x -
y1 , , yn x ,

T
u:
u

y2 y1
AF x
, , ,
ai x bi , x , -
,
yi = bi ai x.
n yi , , -
x y x i y j .
, -
DR

yi . (, -
), -
.
1. y 0,
, u.
2. u y-.
3. cu + c T y, cu
u, c -
.
, ! -
7.13 .
- .
, ,
, -
0. ,
. -
,
7.6. - 213

. 7.13. -.

:
: {,
4 }
5 ( ).
2x 1 + 5x 2 max : 0.
2x 1 x 2 4 1
: x 2 .
x 1 + 2x 2 9 2
5 , 3

x 1 + x 2 3 3
. x 2 = 3.
x1 0 4
: {,
4 }:
3

x2 0 5
y1 = x 1 , y2 = 3 + x 1 x 2


( y1 , y2 ): : {,
4 }.
3
: 15.

T
15 + 7 y1 5 y2 max
y1 + y2 7 1
: y1 .
4 ,
2
3 y1 2 y2 3 2
. y1 = 1.
y2 0 3

: {,
2 }:
3
y1 0 4

z1 = 3 3 y 1 + 2 y 2 , z2 = y2
AF y1 + y2 3


(z1 , z2 ):
5

7 1 : {,
2 }.
3
22 z1 z2 max
3 3 : 22.
1 5
z1 + z2 6 1
: ci < 0.
3 3
z1 0 2
{,2 }
3 (
z2 0 3
).
1 2 (x 1 , x 2 ) = (1, 4).
z z 1 4

3 1 3 2
DR
1 1
z + z 4 5

3 1 3 2

{,
2 }
3

y1

{,
3 }
4
{,
1 }
2

x 2

{,
4 }
5 {,
1 }
5

, ,
( -
), . -
(. . 210), ,
. ,
( ).
214 7.

7.6.3.
- , -
.
. , -
?
: -
, .
: ,
. , -
, -!
, , -
(. 7.1.4):

T
c T x min, Ax = b x 0.

( - ; c -
.) , :
bi < 0, i- 1.
AF
:
ff m z1 , , zm 0, m
.
ff , zi i- .
ff z1 + z2 + + zm .

zi = bi i, .
-, .
. z1 + + zm -
DR

, zi , ,
.
zi (-) - -
!1
.
? zi , --
, . ,
: - zi ,
. , -,
.
. 7.12 B ,
(
1
: , . -
- , ,
. , -
, , . -
.
7.6. - 215

2 ,
, 3 ,
4 ).
5 , , -
, ({, 2 ,
3 },
4 {,
2 ,
3 },
5
{,
2 ,4 }
5 {,3 ,
4 }),
5 -

(0, 300, 100).
- : -
, ,
. -
-
.
( -
).

T
(perturbation):
. , -
. , -
, -
, 2 ,
3 ,
4 5 - ,
AF
.
. -
,
( , ). -
- . -
,
x i , ci -
. , x i , -
.
x i , .
DR

- .

7.6.4. -
-

c T x max, Ax 0 x 0,
n A m -?
, , -
. u
. , , n -
- .
n 1 , u
nm : , , -
.
, -
, -
. (
216 7.

n ), , ,
n n (
, ) -
. (. )
O(n3 ), : O(mn4 ) .


, -
. . n -
n , (n = 4):
x1 2x 3 =2
x2 + x3 =3

T
x1 + x2 x4 = 4
x 2 + 3x 3 + x 4 = 5
(, - -
), . -
AF
( 1) :
x1 2x 3 =2
x2 + x3 =3
x 2 + 2x 3 x 4 = 2
x 2 + 3x 3 + x 4 = 5
, x 1 -
( x 1 ).
x 2 , x 3 , x 4 : , -
DR

x 1 .
Gauss(E, X )
{: E n n X = {x 1 , , x n },
i- ei : ai1 x 1 + ai2 x 2 + + ain x n = bi .}
{: , .}
ai1 :

n = 1: b1 /a11
a p1
e1 e p
i 2 n:
ei ei (ai1 /a11 ) e1
(x 2 , , x n )
P Gauss(E {e1 }, X {x 1 })
x 1 (b1 a1 j x j )/a11
j>1
(x 1 , , x n )
7.7. : 217

( , , ,
.)
O(n2 ) , n
1; O(n3 ) . -
, -
,
. , -
.

, mn4 mn,
- . ,
( 7.6.2)

T
.

O((m + n)n).
, , -
( ) cu + c y, cu -
AF
u. -
: ci > 0 ( ,
, - ). ,
yi , , -
, yi .
, ( yi -
) , .
, - O(mn).
? , ,
, Cm+n
n
. -
DR

n. , -
. -
, - . -
,
- .

7.7. :
, -
. , ,
, ,
.
(
) . , -
, .
ff true
false.
218 7.

ff AND OR 2.
ff NOT 1.
, .

AND

NOT OR

T
AF AND OR NOT

true false true

.
: ? (

.)
-
.1 x g g, -
0 x g 1. -
DR

:
g g g g g

true false OR AND NOT

xg = 1 xg = 0

h h0 h h0 h

x g xh x g xh x g = 1 xh
x g x h0 x g x h0
x g x h + x h0 x g x h + x h0 1

1
,
, .
,
. ,
.
7.7. : 219


- ( -
).
,
. -
, , .
1979 -
, -
, , -
.
, , -
(-

T
). , -
. ,
( ) , ,
-
. -
AF
-, .
:
, ,
.
(Narendra Karmarkar), -
, ,
() -
. -
,
( ), -,
DR

. .
, ,
, -
- ,
-
.

-
0 false 1 true.
, x out , -
.
?
-
! :
,
. , -
.
220 7.

,
, , -
. -
, -
. ,
, , -
,
!
, NP-, , -
-
, -
( ), .
: -

T
? . -

? -
, . !
AF

7.1. :
5x + 3 y max
5x 2 y 0
x + y 7
x 5
x 0
DR

y 0
.
7.2. , -
. 15 , 8.
10 , 13. 4
, 1 , 2 -
3 .
, (-
) -
.
7.3. 100
60 . .
ff 1 2 ,
40 , 1000 . .
ff 2 1 , -
30 , 1200 . .
221

ff 3 3 ,
20 , 12000 . .
, -
.
7.4. ,
. ,
.
, .
-
, - 3000
() . ? (-
.) -

T
.
7.5. : -
, .
1 1,5 ;
70 . 2 1 -
AF
60 . 10 ,
20 . : 14
6 .
240 180 . -
. -
110000 . ,
.
(a) -
.
DR

(b) ,
.
?
7.6. , -
, -
( ).
7.7. a, b, -

x + y max
ax + b y 1
x, y 0

(a) ;
(b) ;
(c) .
222 7.

7.8. :
(1, 3), (2, 5), (3, 7), (5, 11), (7, 14), (8, 15), (10, 19).
a x + b y = c, -
( ). -
( ) ,
(maximum absolute error)
max |a x i + b yi c|.
1i7

7.9. -
( 3x 12 5x 1 x 2 ) -
.
x 1 , x 2 , -

T
, -
() .
7.10.
S T , .
AF 6
A
4
1
D 5
2 2 10 G
1
S B E 12
20
2 6 T
1
C F 4
5
DR

7.11. :
x + y max
2x + y 3
x + 3y 5
x, y 0
?
.
7.12.
x 1 2x 3 max
x1 x2 1
2x 2 x 3 1
x1, x2, x3 0
, (x 1 , x 2 , x 3 ) = (3/2, 1/2, 0) .
223

7.13. .
, -
, . , ,
.
(a) 2 2.
(b)
?
7.14. , , -
. -
, . : -
,
. -
( , ):

T


+2 0 3
1 2 +1
AF
?
7.15. , :
0 0 1 1
0 1 2 1
1 1 1 1
1 0 0 1
1 2 0 3
1 1 1 1
3 1
DR
0 2
0 2 1 1
(: (1/3, 0, 0, 1/2, 1/6, 0, 0, 0)
(2/3, 0, 0, 1/3).)
7.16. (1) , (2) -, (3) , (4) ,
(5) . (A) 15
, (B) 2 6 , (C) 4 -
, (D) 100 . (
100 ) . , (E)
50% (- ) .
.

() () () () ()
21 0,85 0,33 4,64 9,00
- 16 1,62 0,20 2,37 8,00
371 12,78 1,58 74,69 7,00
346 8,39 1,39 80,70 508,20
884 0,00 100,00 0,00 0,00
224 7.

-
, -
. , -
( -
). .
7.17. ( -
).
4
A C
7 9
2
S T
2
6 5
B D

T
3
(a) f .
(b) G f ( -
). , S,
, T .
AF
(c) (bottleneck edge), -
-
. .
(d) ( ) -
.
(e) .
(:
, .)
7.18. .
DR

.
(a) , -
.
(b) -
, .
(c) ,
.
(d) u ,
(1 "u ), "u
u.
, (a) (b) -
, (c) (d) -
.
7.19. - ,
. , , -
.
225

7.20. .
G = (V, E) -
{ce }. (s1 , t 1 ),
(s2 , t 2 ), , (sk , t k ), si , t i . k d1 ,
, dk . k f (1) , , f (k) :
ff f (i) si t i .
ff e f e(1) + f e(2) + + f e(k) -
ce .
ff f (i) di .
ff ( ) .
?
7.21. , -

T
.
, -
.
7.22. G = (V, E), -
AF
ce , f s t.
, -
: (u, v) cuv ,
cuv 1. , f
: fuv = cuv .
,
. ,
O(|V | + |E|).
7.23. G = (V, E) -
, , -
DR

S V : {u, v} E
u, v S.
,
. (:
- -
?)
7.24. .
,
.
.
G = (V1 V2 , E) ( V1 V2 ),
M E G ( ,
). -
M , M .
(alternating path) , -
-
M E M .
226 7.

(a) M
. .

E
A
F
B
G
C
H
D
I

T
(b) , M ,
.
(c) ,
O(|V | + |E|), .
AF
(d)
, O(|V | |E|).
7.25. . ,
.

A
1 2
S 1 T
DR

3 1
B

(a) S T -
.
(b) . -
,
S T .
. -
( 7.2).
(c) , , ye
e, x u u 6= s, t.
(d) , -
: ye
s t 1.
(e) ? ,
(s, t)-
227

,
.
7.26.
a11 x 1 + + a1n x n b1 ,
.........................
am1 x 1 + + amn x n bm
j- (forced-equal),
x = (x 1 , , x n ).
, a ji x i b j ,
P
i
x, ,
a ji x i < b j .
P

T
i
,
x 1 + x 2 2,
x 1 x 2 2,
AF x 1 1,
x 2 0
,
.
x (charac-
teristic), I, -
, x I, . -
(x 1 , x 2 ) = (1, 3), x 1 < 1 x 2 < 0,
x 1 + x 2 = 2 x 1 x 2 = 2.
(a) ,
DR

.
(b) ,
, -
, .
7.27. , ( 6.17)
. -
, -
, (
)? .
7.28. .
s t -
l e > 0.
(a) ,
P (s, t)- f , -
l e f e size( f ) = 1. -
e
.
228 7.

(b) .
(c) ,

x s x t max
x u x v luv (u, v) E.
(d) -
. 205. -
?
7.29. . -
. n ; i- si .
m ; j- p j , ,

T
L j {1, 2, , n}
.
-
. .
(a) ,
AF
{0, 1}. (
x i i- y j j-
. y j x i ?)
(b) ,
(
),
( ) -
. (: ,
, , ,
, .)
DR

7.30. . 7.3. ,
-
. , -
,
k k , - -
k .
. (: -
.)
7.31. -
.

1000 A 1000

S 1 T

1000 B 1000
229

(a) , -
,
! ( , , -
.)
, -
.
G = (V, E), s, t, {ce },
. , -
, 1, -
s t
. (fattest) s t -
.
(b) , s t

T
() .
(c) , G
|E| s t.
(d) ,
AF
, -
O(|E| log F ) -
, F . (:
5.4.)
,
,
O(|V | |E|) .
DR
8
NP-

8.1.

,

T
, ,
. ,
(n) ,
(, n, n2 n3 ) n.
, , ,
AF
(, , ) -
. , n! n
n , n nn2 -
, s t.
, -
,
(. ). , , -
- , -
.
, -
DR

: , -
, (
, , ,


, , , -
() -
. -
, , ,
. -
-
( ): ,
264 1 = 18 446 744 073 709 551 615 , -
! : , -
( ) .
1798 , -
8.1. 231

, ( -
) -
(, ).
1965 , , -
, 60-
. , .
: -
18 . ,
-
.
, -
: -
, , -

T
? :
, .
,
O(2n ). 1975
25 , 1983 31, 1995 38. , -
AF

45 . , -
( ) ,
( -
) .
O(n) O(n log n) -
100 10 , -
O(n2 ) 10 . -
O(n6 )
. :
DR

-
, -
. -
.
, , , -
, -
,
.
, , 10.

). -
, .
-
,
:
.
232 8. NP-


(Satisfiability, SAT) (. 3.28 5.3)
( , .),
.
:
(x y z) (x y) ( y z ) (z x) (x y z ).
(Boolean formula in
conjunctive normal form, CNF). 1 (-
) (clauses),
( , ) .
(, x) (x). -
(satisfying truth assignment) -

T
( , true false), ,
.
,
, , .
, true ,
AF
, , .
, ?
, , -
. (: ,
.)
? , , ,
n 2n , .
(search problem).
(instance) I, ,
( ),
DR

(solution) S , ;
. , -
.
, ( ) -
: ,
.
( .)
,
, .
, -
.
(search problem) C -
I ( ) S (),
|I|. , S
I, C (I, S) = true.
1
, ,
.
8.1. 233

-
, -
( ) . ,
()
.
(1) -
,
5.3.
(2) ,
: -
, (-
3.28). . 9.

T
( ), !


(traveling salesman problem, TSP) n 1,
AF
, n n(n 1)/2 , b.
, ,
, b ( -
, ). ,
(1), , (n) , -
b:
d(1),(2) + d(2),(3) + + d(n),(1) b.

. 8.1 ( ; , -
DR

).

. 8.1. , , -
16.

3 2 3 3
4
1

4
3 2

6
234 8. NP-

, -
: -
, . , -
, .
, ?
: -
, -
(, ), -
.
, -
. , ,
. ,
: -

T
,
( 8.1).
, , : , -
-, ? , -
,
AF
: ,
, ? , -
, .
, ( -
) -
. 6.6 ,
(n 1)! , -
, .

, .
DR

: P -
b T di j b.
(i, j)T
, .1
.


1735 , ( :
) , -
( ). ,
, ,

.
? ,
( ), -
1
, , , ,
.
8.1. 235

T
. ,
( -
). , , ,
.
:
AF
, , , -
, ( ), ( 3.26). -
, :
.
: (Euler path)
, ,
. ,
( ).

: -
DR

, , -
? : 64 ();
, -
(
2, 1). . 8.2 , -
.
?
, ,
.
, . -
: , -
, , .1 -
, -
.
1
,
XIX , -
.
. . .
236 8. NP-

. 8.2. .

T
,
AF
.
: , . , ,
: ,
, , (. ).


(cut) ,
. (minimum cut)
b b ( ) -
DR

. , . 8.3 3.
, n 1 : -
1, - -

. (
)
. (
. 137.)
( . 8.3) -
( , -
- ). , -
. -
(balanced cut) n b
S T , -
|S|, |T | n/3 S T b .
...
, -
. (,
8.1. 237

. 8.3. ?

). , -
,

T
. -
(, )
( ) .
-
, ,
AF
, . -
.


7, - ,
-
, ,
. , -
. -
DR

(; integer linear programming, ILP).


: Ax b, A -
m n, b m; , ,
c n, g ( -
). -
x n, Ax b c x g.
, ,
( c x g -
Ax b). , A b
x, Ax b, , . -
,
.
, :
x, , -
Ax = 1, A m n, ,
1 m .
(. 7.1.4); (;
zero-one equations, ZOE).
238 8. NP-

: -
, , ,
. ,
, ; -
8.2 ( ,
).


:
n ( , n n );
n , , , .
7.3 , , -
. (3D

T
Matching) . -
n n n ,
, , -
. (b, g, p) , b, g p
. n ,
AF
n .
. 8.4?

. 8.4. . -
.


DR

,
(independent set problem),
6.7, g, -
g , .
8.1. 239

. 8.5? ? 6.7
,
.

. 8.5. ?

T
AF
. -
(vertex cover problem) b
b , (
).
. 8.5 ? ? -
?
DR

(vertex cover problem)


(. 5). -
E
S1 , , Sm , b. b ,
E. ( -
?)
E ,
Si ,
.
, (clique problem) g
g , -
. . 8.5?
?


, .
(longest path problem)?
240 8. NP-

G -
s t, g. s t -
g. , ,
( ).
( -
-) .


(knapsack problem),
6.4. w1 , , w n
v1 , , vn n . W g (
, -

T
, ). -
, W
g. ,
, .
6.4 -
AF
O(nW ). -
, , -
W , log W ( W ).
:
2n .
, .
,
: , 12
I I I I I I I I I I I I. , ,
, -
DR

(unary knapsack problem).


, ()
.
:
( ), g = W .
, , -
( )
. ,
( , )
W . ,
? , , -
(subset sum problem),
.
-
, ? -
, , -
, 3--
, .
8.2. NP- : 241

8.2. NP- :

,
. :

(NP-) ( P)
3- 2- ( )



T




AF
, -
.
.
- (-
, - , , -
). :
, . -
, .
DR

P NP
. , -
C , I S
true , S I.
C (I, S) |I|. NP
.
, -
. , -
I |I| -
, , . ,
, P.
, -
? , , P 6= NP? -
, , -
( -
, ) , -
NP. : -
242 8. NP-

P NP?
, P (polyno-
mial). NP? no problem ( !),
nondeterministic polynomial time -
. NP -
, -
, . NP -
, (decision
problems), /. (: , -
?
.) -
.

T
NP ( -
), P NP -
, . , P 6= NP
P NP
AF
.


, P 6= NP
? ,
( ); ,
NP: -
, NP- .
DR

, (reductions), -
.
7 . -
. A -
B f h
: A I,
B f (I) S h
(. ). B f (I) , -
A I. f h,
B A ( -
).

S f (I)
f (I) h h(S) I
I f
B
f (I)
I
8.2. NP- : 243


A B
A, B.
, A
B, B .
A B
A B,
, ,
-
( 8.6). NP-
NP- , (-)
NP- NP-.

T
. 8.6. NP P. , -
. , NP- ( NP):
P 6= NP, (NP-) P. ,
AF
P 6= NP, ( P NP-).

NP

P NP-
DR

:
A B B C, A C.
, ,
f h (. . 242). ( fAB , hAB ) ( f BC , hBC )
A B B C, A C :
f BC fAB A C, hAB hBC
C A.
, NP- B ( -
, NP- A), B C,
C NP- ( NP- A C B).
244 8. NP-

.
NP-,
.
, , -
NP- . -
,
NP- . 8.3 ,
.


P NP- , -
.

T
( : -
). -
, , -
NP-. ( , NP.)
NP-, ; (,
AF
) , -
( ) (. -
10), NP- (, , ).
,
, NP-.

8.3.
NP- . 8.7, ,
.
DR

. 8.7. .

NP

3-


8.3. 245

,
.

(s, t)-
, -
, .
(s, t)-,
s t, s t,
. , ,
(s, t)-? , , .
(G = (V, E), s, t)
(s, t)- G 0 = (V 0 , E 0 ) : G 0
G x , x s t.

T
G G0

s s
AF t x t

, V 0 = V {x} E 0 = E {{s, x}, {x, t}}.


G 0 , (s, t)- G:
{s, x} {x, t}, .

:
DR

G = (V, E),
s, t

x
{s, x}, {x, t}
(s, t)-

G 0 = (V 0 , E 0 )


{s, x}, {x, t}

:
246 8. NP-

? .
1. .
x s t, -
G 0 {t, x}
{x, s} ( ). s
t.
2. .
,
(s, t)-. , , -
G (s, t)-, , G 0 .
: {t, x} {x, s} ,
.

T
, - ,
, . (
.)

(s, t)-. , -
AF
.
( ),
.
3-
. 3- -
, -
,
(x y z ) (x y z) (x y z) (x y).
DR

( ,
).
g g ,
. ?
. ,

true. : - -
x, x .
(,
,
). , ,
(, )
. -
( ).
?
(x y z) , -
x, y, z. , ,
. -
8.3. 247

, -
. ( :
-
, .) -
(-
). ,
, ( -
4).
, , .
, -
. , ,
8.8.

T
. 8.8. (x y z ) (x y z) (x y z) (x y).
1. G ,
. -
. ,
.
AF
2. g = 4.

y y y y

x z x z x z x
DR

, . -
-
( f . 242),

( h). , .
:
1. S, g G,
I.
S ,
x x, . S
, x, x true; S
x, x false; ,
, , x . S
248 8. NP-

g , ,
.
2. G g, I -
.
, , I , -
, G g.
(, ) -
S. ( , -
S ?)
3-
, , -
. , ,

T
-
. -
, - -
, .
: (a1 a2 ak )
AF
(a1 a2 y)(y a3 ak ), y , -
, -
. ,

(a1 a2 y1 ) (y 1 a3 y2 ) (y 2 a4 y3 ) (y k3 ak1 ak ),
yi . ( 3-)
I 0 . , I 0 I .
? , I
, I 0 , ,
DR

ai
yi ,

(a1 a2 ak )
 
.
(a1 a2 y1 )(y k3 ak1 ak )

, .
a1 , , ak : -
y1 , y2 yi , , -
. , (a1 a2 ak ).
, (a1 a2 ak ) ai . -
y1 , , yi2 true,
false. , .
,
3-. ,
, 3- -
.
8.3. 249

: 3-
, , -
. ,
- ,
.
- x k > 3 .
x 1 , x 2
. ,
. ,

(x 1 x 2 ) (x 2 x 3 )(x k x 1 ).

, ,
(

T
).


, -
.
AF
, . .
,
, S
G = (V, E) ( ) , -
V S G (. 8.9).

. 8.9. S , V S -
: S ,
S, V S -
.
DR

, (G, g) -
(G, |V | g).
,
. G -
g.
250 8. NP-


.
(complement) G = (V, E) G E
= (V, E), E -
( , G). S
G, S G:

G G.
,
, (G, g) (G,
g).

3-
3- -
: (, , ) -
, -
. -

T
.
,
, (
b, g, p boy, girl, pet).
AF p1

b0 g0

p0 p2

g1 b1
DR

p3

, b0 b1 , g0 g1
. (- p1 , p2 , p3 , p4 ,
.) ,
:
(b0 , g1 , p0 ), (b1 , g0 , p2 ) ( ),
(b0 , g0 , p1 ), (b1 , g1 , p3 ). , (- -
gadget)
.
( ): p0 p2 , p1 p3 .
3- -
,
x.
p x1 , b x0 , g x1 . , x = true, b x0
g x1 , x = false, g x0 .
8.3. 251

, -
. c = (x y z) bc g c . -
, -
.
: (1) x = true, (2) y = false, (3) z = true. (1)
(bc , g c , p x1 ), p x1 p1 x. -
, p1 , x = true. -
y z ( (bc , g c , p y0 )
(bc , g c , p y2 ), (bc , g c , pz1 ) (bc , g c , pz3 )).
bc g c , c -
.
:
, : -

T
( ). ,
,
, , -
.
, .
AF
:
. -
, ,
, -
(b x0 , g x1 , p x0 ) (b x1 , g x0 , p x2 ), x = true, (b x0 , g x0 , p x1 )
(b x1 , g x1 , p x3 ), x = false. , c
(-
bc , g c , -
).
: -
DR

, :
n m , 2n m
( : , -
,
). , : 2n m -
-, ( ,
).

, A
m n, x = (x 1 , , x n ), -

Ax = 1,

1 .
?
: ( )
, . -
252 8. NP-

? m , m , m ,
n . n x 1 , , x n , -
; x i = 1 , i- .
, , , -
x 1 , , x n , .
- . j1 , , jk .
, :
x j1 + x j2 + + x jk = 1.
, .
A:

T
1 0 0 0 0

0
0 0 1 1

0 1 1 0 0
1

0 0 0 1

A = 0 1 0 0 0

AF 0

1

0
0
0
0
0
1
1
0
1
0
1
0
1
0
0

1

0
0

A ,
, , , , , , ,
.
, -
DR

, .

-
: , -
0 1, -
, .
, :
.
:

1 0 0 0
0 0 0 1
A=

0 1 1 .
0
1 0 0 0
0 1 0 0

A, -
. -
8.3. 253

( ), -
: 18, 5, 4, 8,
111112 = 31. ,
.
. - -
31, -
(1, 1, 1, 1, 1): , 5 + 6 + 20 =
= 001012 + 001102 + 101002 = 111112 = 31. -
:
, (n + 1).
( n,
).

T

, (
) : f h (.
. 242) . , 3-
. -
AF
: , NP-,
(
). 8.10 -
.
( )
. x,
Ax b. (
),
( 7.1.4) -
x i x i 1 x i 0.
DR


,
. NP-
: -
, , -
.
G = (V, E)
C E E . , : (1)
, (2)
(e, e0 ) C .
. 8.10 ; -
. , ( ,
).
, -
,
.
254 8. NP-

. 8.10. ( C
{(e1 , e3 ), (e5 , e6 ), (e4 , e5 ), (e3 , e7 ), (e3 , e8 )}) .

e1

e2

e3
e8 e7 e5
e4

e6

T
, .
Ax = 1 ( A m n
AF
, m n )
(. . 8.11) , m + n .
x i ( x i = 0
x i = 1). x j1 + + x jk = 1 k -
k , . ,
-
.
, . -
A, , -
. (,
DR

m ) x i C
(e, e0 ), e ,
( 8.11), e0 ,
x i = 0 ( ). ,
, , .
.
?
. , -
, -
. , -
. -
, , ,
0, , , 1. -
, .
( ).
. -
,
- ( C ).
8.3. 255

. 8.11. .

T
AF
, . 8.12.
- G, -
a, b, c, d. , -
G , -
. , , -
DR

. ( ):
, , ,
( ) :
, ,
( ).
, ,
{a, b} {c, d}, (. 8.12(d)), -
.
, -
. -
, . -
({a, b}, {c, d}) C, . 8.12(a).
, {a, b} {c, d} -
. : , {a, b},
{a, f } (-
{a, b} ).
{c, d} ( ) {c, h}. -
,
256 8. NP-

. 8.12. , .

(a) f l m s
a b

g k n r

c d
h j p q

(b)

T
a b

AF c d

(c)
a b

c
DR
d

(d)
a b
C = {({a, b}, {c, d})}
c d

12 . , -

, C.


G = (V, E) -
: |V |; u v
1, {u, v} E, 1 + .
8.3. 257

1 . -
|V |.
, , -
|V |. -
,
|V | + (
1 + , |V | 1 1). ,
.
, , ?
, , = 1. = 1 -
: i, j, k
di j + d jk dik (, di j + d jk 1 + 1 = 2 dik ). ,
-

T
( ).
-
: .
, -
, -
AF
. , -
|V |,
|V | + , |V |. 9 ,
, ( P 6= NP) -
.
NP
. 8.7. -
, , ,
(= NP)
DR

. , . 8.7 -
NP-.
NP -
(circuit SAT).
(. . 8.13 7.7),
, -
:
ff AND OR, 2.
ff NOT, 1.
ff ( ), true
false.
ff ( 0), ?.
0 .
, -
( ), -
( false true = true). ,
true, false, true . 8.13 false.
258 8. NP-

. 8.13. .

AND

NOT OR

AND OR AND

T
AF true ? ? ?

,
, , -
true ( , ). ,
(false, true, true) . 8.13.
,
. -
( AND),
. , -
, . ( .)
DR

:
,
. ( -
): g -
, , -
:

g g g g g

true false OR AND NOT

(g) (g )

h1 h2 h1 h2 h
1 )
(g h (g h1 ) (g h)
2 )
(g h (g h2 ) )
(g h
(g h1 h2 ) (g h1 h
2 )
8.3. 259

( , ?) -
true, (g) -
g.
-
.
-
A .
? , , A,
, .
, . , -
. , A C ,
I S, S -
. , -

T
I ( , , , S
I, S).
7.7 , -
,
( ) , .
AF
C , S
I. .
, I A
, I, -
S. true -
, , S
I. , -
A I, . .
DR


NP ,
(,
). ,
, ( -
, , );
(unsolvable).
, .

x 3 yz + 2 y 4 z 2 7x y 5 z = 6
( -
) , .
1970
( , ,
), -
1936 ; -
260 8. NP-

(). -
, ( ,
). -
.
, ,
. , -
, .
Terminates(p, x), p x
, p x.
? -
, ,
, .
. -

T
. Terminates(p, x) . -
:
Paradox(z)
Terminates(z, z)
AF
z , z
, (z).
, . Paradox -
Paradox(Paradox).
?
. - ,
, .
: , (halting problem)
.
, -
DR

. , -
, , .
, ,
? ( -
, ?)
, .

8.1. . -
:
:
: , b.
: b, , -
.
261

:
: .
: , -
, .
, -
, -
.
8.2. . ,
, -
.
( )?
8.3. (stingy SAT) :

T
k ,
k true,
. , NP-.
8.4. 3- ,
AF
3.
(a) , 3- NP.
(b) NP- . -
?
NP- 3-
( , NP-).
,
G, , -
g. , , , -
DR

3-. ,
, , 3- NP-.
(c) NP-,
, 3.
-3. NP-
3-?
-3 3-.
G = (V, E) 3, b;
3- G |V | b. ,
C V G , -
V C G. , G
b ,
|V | b. NP- 3-.
(d) , 3- O(|V |4 ).
8.5. -
, -
. (: x i j ,
262 8. NP-

, i- j . -
, .)
8.6. 249 , 3- NP--
,
.
(a) , ,
.
(b) , NP-
, 4.
8.7. :
,
. , -

T
. (: , ,
, -
, , . 7.30.)
8.8. 4- (exact 4SAT)
AF
, , -
. , ,
. , NP-.
8.9. (hitting set) -
{S1 , S2 , , Sn } b. H -
b, Si ( Si H 6= i),
, . , NP-.
8.10. NP- . , -
NP-, -
DR

NP- .
(a) (subgraph isomorphism). -
G H , G H (
H , , -
G), ,
.
(b) (longest path). G g; G
g.
(c) (max SAT).
g , g .
(d) (dense subgraph). G a b;
a G, b .
(e) (sparse subgraph). G a b;
a G, G b .
(f) (set cover).
NP- .
263

(g) (reliable network).


n n: di j ri j ,
b. G = ({1, 2, , n}, E), (1) -
b (2) i j
ri j , . (: di j -
1 2, b = n, ri j 2. NP- ?)
8.11. :
, .
.
(a) .
(b) (s, t)- (-
s t).

T
8.12. k- (k-spanning tree) .
: G = (V, E).
: G, -
k.
AF
, k 2
(a) k- (
NP);
(b) k- NP-. (: k = 2
.)
8.13. -
NP-.
G = (V, E),
(a) L V , , -
DR

L ;
(b) L V , , -
L ;
(c) L V , ,
L;
(d) k, , k -
;
(e) k, , k
;
(f) k, , k -
.
(: , , -
NP-.)
8.14. NP- : -
G = (V, E) k k -
k, .
264 8. NP-

8.15. ,
NP-.
: G1 = (V1 , E1 ), G2 = (V2 , E2 ) b.
: V10 V1 , V20 V2 , -
() b
.
8.16. - ,
.
: i j ( 1 n)
0 1
(0 , 1 ). -
5 :

T
1 2 3 4 5
1 0,0 0,4 0,2 0,9 1,0
2 0,4 0,0 0,1 1,0 0,2
3 0,2 0,1 0,0 0,8 0,5
AF 4
5
0,9
1,0
1,0
0,2
0,8
0,5
0,0
0,2
0,2
0,0

2 3 ,
1 5 . :
. -
( ; , {1, 3, 5}
0,2 + 1,0 + 0,5 = 1,7). , . -
- (experimental cuisine):
: n, n n p 0.
DR

:
p.
, , -
3-.
8.17. , NP ,
O(2 p(n) ), n , p
( ).
8.18. , P = NP, RSA ( 1.4.2)
.
8.19. 2n (kite), n
, n , -
. (kite problem)
g ,
2g , . NP-
.
265

8.20. (dominating set) -


G = (V, E) D V ,
D , ,
D. NP- .
8.21. . -
( k), -
k ( k)
.
, x (x)
k-; |x| k + 1 ( ).
k x,
(x) .
(a) . (: -

T
, -
, a b, k 1 a
k 1 b.)
(b) , .
(: .)
AF
8.22. -
( i j , i j). -
( ). -
,
.
E 0 E G = (V, E) -
(feedback arc set),
.
: G = (V, E) b -
DR

b.
(a) , NP-.
, .
G = (V, E) -
b. V = {v1 , , vn }. -
G 0 = (V 0 , E 0 ), V 0 2n w1 , w10 , , w n , w n0 ,
E 0 n + 2|E| () :
ff (w i , w i0 ) i = 1, 2, , n;
ff (w i0 , w j ) (w 0j , w i ) (vi , v j ) E.
(b) , G b, G 0
b.
(c) : G 0 -
b, G b. (:
b, -
,
, .)
266 8. NP-

8.23. (node disjoint paths)


, s1 , , sk
, t 1 , , t k . -
si t i , .
NP- ; -
( ).
(a) 3-.
(b) 3- n m
k = m + n -. - (s x , t x ) -
x - (sc , t c ) c.
(c) 6 , -
.

T
(d) sc t c , -
, -
. , -
?
AF
DR
9
NP-

. -
, , .
? , -
, - -

T
( , -
, ) .
, ,
NP-, ?
, NP-. , -
AF
- (.
. 253 8.10), NP-
(, ). ? , -
, ,
, . - ?
, NP- -
, . , NP- -
, ( -
) (. 5.3). -
: ,
DR

(, -
) -
( 6.7).
, -
NP- . ,
, -
( ) (, -
). ,
, . , -
(. 9.1
) .
, ,
, , -
. , 5.4 , -
,
log n . , -
, (approximation algorithms),
NP- (. 9.2).
268 9. NP-

( ). ,
: NP- , -
P = NP.
, -
( , ),
, ,
, -
, . -
9.3.

9.1.
9.1.1.

T
, . ,
, (x 1 x 2 ), -
x 1 = x 2 = 0 ( ) .
?
(w, x, y, z) :
AF
(w x y z), (w x), (x y), ( y z ),
, w:
(z w), (w z ).

w=0 w=1
DR

w = 0 w = 1 ( -
), .
, , , :

w=0 w=1

x =0 x =1

: w = 0, x = 1 (w x)
, , . -
.
9.1. 269

, , -
, -
, , .
-
,
. ,
w = 0 x = 0, , w x, -
w x ,
, .
( y z), (y), ( y z ).
w = 0 x = 1
( ), ( y z ),

T
( ) ,
. ,
.
,
. -
AF
, .
- -
.
, . (
, ,
, , ,
.) 9.1 -
.

. 9.1. , .
DR

(w x y z), (w x), (x y), ( y z ), (z w), (w z )

w=0 w=1

(x y z), (x), (x y), ( y z ) (x y), ( y z ), (z), (z )

x =0 x =1 z=0 z=1

( y z), (y), ( y z ) ( ), ( y z ) (x y), ( ) (x y), ( y), ( )

y =0 y =1

(z), (z ) ()

z=0 z=1

() ()
270 9. NP-

, ,
:
1) : ;
2) : ;
3) .
, -
; , (
); .
:
P0
S {P0 } { }

T
S :
P S S
P P1 , P2 , , Pk
Pi :
(Pi ) = :
AF
(Pi ) = : Pi
: Pi S
,
, -
-
. ( .)
, -
:

.
DR

, 2- -
( 9.1).

9.1.2.
(
), . -
, ( -
).
, .
, , -
. ,
, ,
. ?
.
P0
S {P0 } { }
_
9.2. 271

S :
( ) P S S
P P1 , P2 , , Pk
Pi :
Pi :
_ Pi
_(Pi ) < _:
Pi S
_
G = (V, E)
de . -
a b, S V ,
a b. [a, S, b] (

T
a ). , -
, b a,
V S. [a, {a}, a]
a V .
-
AF
[a, S, b] (b, x) x V S. -
x |V S|,
[a, S {x}, x].
-
[a, S, b]? ( -
), .
b a V S, -
:
1) a V S;
DR

2) b V S;
3) V S.
( , ?)
( ).
, . 9.2 , -
28 7! = 5040
. ( ).

9.2.
I
(, )
( ). opt(I) -
I. ,
opt(I) ( -
).
5.4 ( ) -
. I n -
272 9. NP-

. 9.2. (a) . (b) -


.
.

(a) 1 1
F E F E
2 2
G D G D
1 1
1 1 1 1 1 1 1 1
5
H C H C
1 1 1 1
A B A B
2

T
(b) AF A

10 B F 8 H 8

10 C E 10 8 E G C G
13 14 8

10 D H 14 D F 10 8 B D
15 12
DR

11 E G G G C 8

14 14

11 F 8 D H

11 G 8 G

11 H 8 H
: 11 : 8

opt(I) log n. -
log n .
. A ,
I A (I).
9.2. 273

(approximation ratio) A
A (I)
A = max .
I opt(I)

A A -.
, A , A
( ).
,
( A > 1).
NP- , , -
A : , -
, (-
). ?

T
.

9.2.1.
, NP-.
AF

: G = (V, E).
: S V , .
: |S|.
-
. 9.3.

. 9.3. ( )
8.
DR

-
(. 5).
O(log n)-: -
, .
log n .
274 9. NP-

,
, (. 9.4).
, -
. -
, ( ,
, ).

. 9.4. (a) , (b) , ,


() .

(a) (b) (c)

T
AF
? , -
: -
, I -
opt(I). ,

. ( ,
,
NP- .)
: S -
DR

M ,
. ( , - e E S,
e M -
.) 2|M | -
( |M | , ).
2- :
M E
S = { M }
:
,
:
ff ;
ff ,
, .
A 2: ,
.
9.2. 275

9.2.2.
, -
(, ,
) .
.
,
.
- -
, . , , -
:
1. d(x, y) 0 x, y.
2. d(x, y) = 0 , x = y.

T
3. d(x, y) = d( y, x) x, y.
4. ( ) d(x, y) d(x, z) + d(z, y)
x, y, z.
(k-) k -
.
AF
k-
: X = {x 1 , , x n } d(, ); -
k.
: k C1 , , Ck .
: ,
max max d(a, b).
j a,bC j

. 9.5 : ( -
) .
DR

. 9.5. 4 . (
.)

NP-, -
. , k
,
. -
276 9. NP-

: , -
(. 9.6).
1 X
i 2 k:
i X , 1 , , i1 ,
x, min d(x, j )
j<i
k : Ci = { x X ,
i }

. 9.6. (a) , . (b) -


.

(a) (b)

T
2
4

1
AF 3

, ,
. . x X
1 , , k ( , ,
k + 1 ). r
x . X -
r. ,
2r.
DR

, r ? :
k + 1 1 , 2 , , k , x r.
(?) k
, r.
-
.

k , (1) X -
r , (2) -
r.
,
.
.

9.2.3.
-
k-. -
9.2. 277

: -
, 1,5-
. 2.
, :
-
? ,
,
. : -
().
, -
, , , -
. ,
.

T
, , ,
. . -
, ,
( , ;
AF
).
Wichita Wichita

Albuquerque Tulsa Albuquerque 6 5


Tulsa
8 7
4

Little Rock Little Rock


11 12 13
Amarillo Amarillo 14
9 10 3
Dallas Dallas
15 2

El Paso Houston El Paso 16 Houston


1
DR

San Antonio San Antonio

( -
),
. : -
, , ,
, .

Wichita

Albuquerque Tulsa

Amarillo Little Rock

Dallas

El Paso Houston

San Antonio
278 9. NP-

,
.


, -
? ,
, .
, . 257 ,
G C > 0 I(G, C) -
, :
() G , opt(I(G, C)) = n, n
G;

T
() G , opt(I(G, C)) n + C.
,

, .
, A -
AF
A . G -
I(G, C) , C = nA . -
A I(G, C). ,
() (): -
A opt(I(G, C)) = nA , opt(I(G, C)) >
> nA . , , G -
:
I(G, C) C = nA A
nA :
DR

G
: G
( 8.2), -
, .
, -
,
. , P 6= NP, -
.

9.2.4.
,
, : " > 0 -
,
1 ",
1/".
6 . n , -
w1 , , w n v1 , , vn ( ); -
9.2. 279

c -
W .
, O(nW )
.
O(nV ), V .
, W , V
.
O(nV ). V , -
. ,

v1 = 117 586 003, v2 = 738 493 291, v3 = 238 827 453

117, 738 238. ,


. ( -

T
, ".) , :

W
vmax max vi
i
AF
: vi
j
n v
i
"
k
vmax
O(nV )- {vi } {vi }

vi n/", -
O(n3 /"). , -
.
-
S K . S

DR

X vn X
n n
X
vi = i
vi 1 K n.
"vmax "vmax "vmax
iS iS iS

, S
. S :
"v "v

n
X X
vi vi max K n max = K "vmax K (1 ").
n "vmax n
iS iS

9.2.5.
.
. (-
, NP- ), -
. ,
( , ,
, P 6= NP). -
280 9. NP-

NP-
:
ff , () -
(, ).
ff , - -
> 1, > 1 . , ,
, k-
. (
;
.)
ff ,
1 (, ).

T
ff , , .

(, log n).
.
, -
AF
P 6= NP. P,
( NP-)
.
, -
, , -
.

9.3.
(local search) ,
DR

: -
, . :
s -
s s0 :
s s0
s
-
(neighborhood).
; -
.

9.3.1.
n (n 1)!
. ? -
? ,
. , ,
. 2-
9.3. 281

(2-change neighborhood) s ,
s . -
:

-
, , -
.
, -
. , -

T
O(n2 ) . , ,
, . , -
, ,
, .
, .
AF
: -
, 2-,
2- .

, -
DR

. : 3- -
.

O(n3 ) -
, : 3--
, . -
, , 4-,
. , -
. , ,
,
, . -
.
282 9. NP-

. 9.7. (a) . (b) 3-


( ). .

(a)
Wichita
Albuquerque Tulsa

Little Rock
Amarillo
Dallas

El Paso Houston

San Antonio

T
(b)
AF (i) (ii)
DR

(iii) (iv)

9.7
, 9.8 -
.
, .
, .
, -
, -
. ,
9.3. 283

. 9.8. .

T
AF

-
. ,
, -
.
.
DR

9.3.2.
-
. -
( 8).

: G = (V, E)
(0, 1/2].
: A B, -
|V |.
: (A, B).
9.9 16 ,
1. 0.
,
, -
. NP-.
, ,
284 9. NP-

. 9.9. = 1/2 (
).

T
= 1/2 ( ); ,
.
. -
(A, B) |A| = |B|. ( )
AF
, , -
(A {a} + {b}, B {b} + {a}), a A, b B.
.
DR

? , -
, . -
2.
9.3. 285

? ,
, .
.

9.3.3.

( ) -
(, ),
( ).

, . -
p, O(1/p) -

T
( , . -
1.34).
9.10 -
( 8 ). C84 = 70 ,
, , -
AF
35 .
. , -
. -
,
-
.
.


. 9.10 ( -
DR

) . -
, -
.
() :
.
. 9.10
. ?
(simulated annealing) -
T , :
s -
:
s0 s
cost(s0 ) cost(s)
< 0:
s s0
:
s s0 e/T
286 9. NP-

. 9.10. . 35 -
. , .
.

4 , 6

8 , 4 2 , 4

T
AF
8 , 3 8 , 3
DR

4 , 2

1 , 0
287

T (, e/T = 0) -
, . -
T .
T ?
: -
T , .
, -

.
, .
. 9.11.

. 9.11. .

T
AF
DR

. ,
(
). , , -
.
-
( ).
, , -
. , (annealing
schedule), ,
. -
.

9.1. ,
( ), -
, . ,
288 9. NP-

2 (-
2-) .
9.2. -
s. , ,
.
9.3. .
, ,
?
,
? ?
9.4. G = (V, E), -
d. ,

T
1/(d + 1) -
?
9.5. .
( )
AF
G = (V, E) .
5.1 , e -
T . e0 6= e ,
T 0 . , T T 0 -
(e, e0 ) .
(a) ,
(-
). ?
(b) T 0 , T .
, , T T 0 ,
DR

(cost) : -

T = T0 T1 T2 Tk = T 0
cost(Ti ) cost(Ti+1 ) i < k.
(c) , -
G.
T - G
(e, e0 ), cost(T ):
T T + e e0
T
, -
.
?
9.6. (minimum Steiner tree) -
G = (V, E) duv
289

(terminal nodes) V 0 V . -
, V 0 .
V 0 .

, (. 275). -
, 2-:

. (: -

T
.)
9.7. G =
= (V, E) s1 , , sk V .
,
AF
.
(a) ,
, k = 2.
(b) 2- k = 3.
(c) .
9.8. (maximum satisfiability) -
,
.
(a) , () -
DR

, -
.
(b) ,
0 1. -
m k j j- -
. , -

m
1 m
X
1 kj .
2 2
i=1

, 2- ( -
, ). -
, k,
1 + 1/(2k 1).
(c) (-
), ? (: -
, -
290 9. NP-

, ,
.)

9.9. (maximum cut)


G = (V, E) w(e)
, , -
, .
S V w(S) w(e)
e = {u, v}, |S {u, v}| = 1.
w(S).
,
( )
:

T
S -
S 0 V , |(S 0 S) (S S 0 )| = 1 w(S 0 ) > w(S):
S S0
(a) , 2-.
(b) ?
AF
9.10. , -
. , -
9.5 . -, -
, -
.
(a) , 2- -
.
(b) dn/2e-, n -
DR

.
(c) , (n 1)- -
.
(d) A A- -
: x A s x
x ( ,
s ). ,
:
, . , NP-,
. ?
(e) , -
, -
. (, -
(n 1)-
.) , P 6= NP,
-
.
10

-
( ,
factoring). :
, -

T
!
, : -
.
-
, .
AF
1990- , -

. , ( -
, ) -
.
, , -
. ,
( RSA) -
.
DR

10.1. , ,
,
.1
( ) -
.
,
( ) , (
) .
, -
(ground state) |0, -
(excited state) |1. ,
, .
1
, - : ,
, .

. [ . .
. . .]
292 10.

-
(superpositions) :
0 |0 + 1 |1, 0 1 , -
: |0 |2 + |1 |2 = 1. , -
1 1 1 1
p |0 + p |1, p |0 p |1. 0 1
2 2 2 2
(amplitudes) |0 |1 . -
, , , , -
1 2i
p |0 + p |1 ( i , ,
p 5 5
, i = 1). , 0 |0 + 1 |1, -
(. -
10.1), (qubit).

T
. 10.1.
. , -
, |0 |1. (superposition principle) -
, (linear combinations)
: 0 |0 + 1 |1. , 0 |0 + 1 |1 -
AF
|0 |1. 0 1 -
, 1, :
0 |0 1 |1 . 0 1
, , -
!
DR


|0 |1 0 |0 + 1 |1

, ,
, ,
0 1 -
. : 0 1
. ,
? ,
.
, , (-
)
. , -
(measurement), . . 10.2.
. -
10.1. , , 293

. 10.2. -
, .

|0
|0 |2

0 |0 + 1 |1 |1

T
|1 |2

AF
|0 |2 |1 |2 (,
). ( ) -
, : -
0, -
(|0 = 1 |0 + 0 |1), 1 (|1). -
, ,
, -
.
-
. ( )
DR

,
k : k 1 .
|0, |1, , |k 1. -
0 |0 + 1 |1 + + k1 |k 1, |0 |2 + |1 |2 + + |k1 |2 = 1.
0 k 1, -
j | j |2 . , -
, -
.
n 2n -
(, ),
n .
,
( -
). -
00, 01, 10, 11 (
, ).
.
-
294 10.

| = 00 |00 + 01 |01 + 10 |10 + 11 |11,

X
| x |2 = 1.
x{0,1}2

(, {0, 1}2 2, -
{0, 1}n n.) -
, x {0, 1}2
| x |2 . x = jk, -
x: , , x = 10,

T
, .


. 0 |0 + 1 |1,
0 |0 + 1 |1. ,
AF
? : -
,
0 0 |00 + 0 1 |01 + 1 0 |10 + 1 1 |11.
-
, ? . ,
(entangled), -
. , -
1 1
, | = p |00 + p |11 ( ).
2 2
DR

-
(. 10.1). (entanglement)
; -
.

-
(partial measurement). , , .
, 0? ,
, |00 |2 + |01 |2 . :
?
: -
0,
, -
: , -
.
00 01
| = p |00 + p |01.
|00 | + |01 |
2 2
|00 |2 + |01 |2
10.1. , , 295

n ( n -
, , n = 500). , -
500 .
2500
() :
X
x |x
x{0,1}n

, 2500
500 ! ,
, , -
.
2500 .

T
? ? -
. ,
.
, -
? -
AF
.
, , . : -
,
n . (-
, x n
| x |2 , , -
|x.)

. 10.3. n ,
n , -
DR

2n , -
n ( ,
). -
-
.

x y
n n



296 10.

10.2.
. -

(-
n ).
n (-
) ; ,
, -
.
n , |x.
- ( P ),
n y | y. (

T
y
, -
, , , .) , -
n- y -
| y |2 .
, , : -
AF
, (-
, ). , y
. , -
, -
.

. ,

(), -
.
DR

() n -
, .
( ) .
, -
. 10.3 , -
(FFT).
, ,
. ,
, N -
, -
.
N
( ):
ff -
N .
ff
N .
10.3. 297

ff N -
.
ff , -
.
.

10.3.
2, M -
, ,

T
0 0

1 1 1 1

1
1 2
M 1
1
2 1 2 4 2(M 1) 2

1
. = p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. M 1 (M 1) j .
AF .

M 1

j
2j
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 (M 1) 2(M 1) (M 1)(M 1) M 1


p M (). -
2 M . , |i |2
, |i |2 .
O(M 2 ) . ,
, M , ,
O(M log M ) . (
.) , -
DR

-
O(log2 M ) .
, ,
? , -
m = log M ( 2m = M ).
MP1
| = j | j, j m- ,
j=0
j. ( , | j -
, j .)
-
, m = log M .

. (. 10.4, -
2.) ,
log M . ,
log2 M , -
.
298 10.

. 10.4. ()
M = 2m m = log2 M .

0 0

4 1
4

2 4
2

T
2
6 3
4 6
AF
1 4 4
1

5 5
4 5
2
DR

3 4
6
6
3
2
7 7
4 6 7

, ,
.
.
, -
, ( ) .
, m- , -
j | j |2 . -
,
(
).
10.4. 299

, -
, :
1
MP
: m = log2 M , | = j | j.
j=0
: O(m2 ) = O(log2 M )
,
1
MP
| = j | j.
j=0
: m- j ( , 0 j M 1)
P( j) = | j |2 .
, -

T
- -
, - . -
, , .
, . -
, , .
AF
10.4.
, 0 , 1 , , M 1 k,
k M . i = j i j (mod k), -
M /k k. ,
| k j,
, j , j+k , j+2k ,
DR

. 10.5. ( ).

0 3 6 9 M 6 M 3

1 5 9 M 7 M 3

(
) .
, (. ), :
-
k j, k
M . M /k,
M /k .
300 10.


|, k 0 (
0 , k , 2k , , M /k ). -
1, k/M :
p

/k1
MX q
k
| = | jk.
M
j=0

-
M /k 0:
k1
1
X jM
| = p .
k

T
k j=0

. , , -
, k:
M 1 p /k1
MX
1 k
X
j = p jl l = jik .
AF M
l=0
M
i=0

M /k -
jk . jk M , 1, -
p M .
M /k, j = 1/ k j ( j, M /k).
jk M , -
, (1 jk(M /k) )/(1 jk ),
, ( jk(M /k) = j M M ,
M = 1). p
DR

j = 1/ k j, M /k, j = 0 j.
k l < k,
/k1 q
MX
k
| = | jk + l,
M
j=0

-
M /k:
k1
1
X jM
| = p l j M /k .
k k
j=0

, (-
10.5 ,
).
( ), -
k , M /k.
-
10.5. 301

0,
, k
1/k.


. ,
M /k,
k !
-
.
. s ,

T
M 2M (k 1)M
0, , , ,
k k k
( k ). 1 k/2s
M /k.
AF
. ,
j M /k j 2 k. (
j) 1/ j 1/2 -
1/2s s .
j -
( , ,
). , -
k/2s .
, s -
DR

10.5.
, -
, ( ). -
, ,
?

10.5.1.
(AND,
NOT . .), .
. -
H, |0 |1 :

1 1 1 1
|0 H p |0 + p |1, |1 H p |0 p |1.
2 2 2 2
302 10.

,
0 1 .
0 |0 + 1 |1, -
:
0 + 1
H(0 |0 + 1 |1) = 0 H(|0) + 1 H(|1) = p |0 + 0p 1 |1.
2 2
, -
.
(controlled not,
cnot). . () -
, ( ).
, , -
. , cnot(|00) = |00 cnot(|10) = |11.

T
|00 |00 |10 |11

, cnot -
, 4 -
AF
.
( ) -
, .

. ( )
n . ,
2n . , , -
= x |x, -
P
x{0,1}n
. = x |x, -
P
DR

x{0,1}n
0 y + 1 y 0 y 1 y
, 0 y = p 1 y = p
2 2
(n 1)- y. ,
2n1 ( -
y ).
( , ).

10.5.2.
, , -
n ().
, -
,
.
:
n -
| |, -
|.
10.5. 303

-
. () , -
n- m-. (-
) n m . -
, n + m , .
x m , -
x f (x) (
).

x x
x C f (x)
0 f (x)

, -
. , -
|x, 0k - ,
|x, f (x) .
AF

. -
-
.
. 10.7.

10.5.3.
, 2.6.4
M .
DR

FFT M (: 0 , , M 1 , : 0 , , M 1 )

0
2
.. FFT M /2 j
.
M 2

1
j
3
.. FFT M /2 j+M /2
. j+n/2
M 1
304 10.

, .
M = 2m m . -

( m ). , -
-
, ,
, .
: -
m 1 .
-
. (
)
.

T
m 1
AF QFT M /2 QFT M /2

:
.
, , -
j M /2 + j ( j- -
) ( (M /2 + j)-). ,
M /2 + j ,
.
, -
DR

,
. , -
0x 1x, (-
) x M /2 + x.
-
.
, -
. ,
, (,
1) M /2 + j j .
1, , 2 , , M /21 :
, j
( ), 2 -
, , . -
, ,
,
|00, |01 |10 , |11
, (, 2 , 4 . .), -
10.6. 305

, ,
. (, -
, .)
( )
. 10.4; ,
, -
.
, . m
O(m) = O(log M ) ,
O(m2 ), O(log2 M ) .

10.6.

T
,
. , ( )
.
N . -
N x, x 2 1 (mod N ),
AF
x 6 1 (mod N ). (. 1.36 1.40.)
, N , -
( , ).
.

. x N .
(x + 1, N ) N , 1 N .

. x 2 1 (mod N ), x 2 1 = (x 1)(x + 1) -
N . (x 1) (x + 1) N
, N -
DR

, . (x + 1, N ) (
(x 1, N )) N .

. N = 15. 4
N , 42 = 16 1 (mod 15), 4 6 1 (mod 15). -
, (4 1, 15) = 3 (4 + 1, 15) = 5 -
15.
,
. x N
r, x r 1 (mod N ). , -
2 15 4.
N , -
, N (
). .

. N , -
. x 0 N 1,
N , . -
306 10.

1/2 r x N ,
x r/2 N .
-
. , N , -
. x N .
N , (x, N ), -
, (x, N ).
x N , 1/2
.
N .
. x = 2 N = 15 ( 4,
24 = 16 1 (mod 15)). x , x 2 = 4,

T
15, -
N , , (x + 1, N ) = 5.
, (factoring)
(order finding).
, -
AF
. N x
a 7 f (a) = x a mod N . r x N , r
f :
f (0) = f (r) = f (2r) = = 1, f (1) = f (r + 1) = f (2r + 1) = = x
. , f
( 1.2.2). ,
( N ),
f ,
r; -
DR

r
N
. , (. ).
. -
10.7.

10.7.

(. 10.6). -
,
, , .
, N
, .
: N ( -
).
: N .
10.7. 307

. 10.6. .

0 QFT M QFT M

f (a) =
x a mod N

0

M 1 M 1
1 P 1 P
p |a, 0 p |a, x a mod N
M a=0 M a=0

T
1. ( ) x 1
N 1. ( (x, N ) 6= 1, , x -
N .)
AF
2. M , N . ( ,
M N 2 ,
.)
3. s = 2 log N :
a. ,
M , N .
b. f (a) = x a mod N -
M (. ):
(i) -
DR

1
MP
1
p |a, 0.
a=0 M
(ii) f (a) = x a mod N , -
1
MP
1
p |a, x a mod N .
a=0 M
(iii) .
MP/r1
| = | j r + k,
r
j=0
M
k 0 r 1, r x N .
c. -
, 0 M 1. (,
, -
.)
g j1 , , js .
4. M /g , (N , x M /2g + 1).
N , , -
, 1.
308 10.


, f (a) = x a mod N
.
ff ( ), -
.
ff (-
m = log M ).
p
0 M 1 1/ M
. ( , |000 -
, , , -
.)
ff , -

T
f (a) = x a mod N .
( M -
), (
1). -
AF
,
MP

a=0
1
1
p |a, f (a).
M
ff . -
( ), -
.
, f r, -
f (k) k 0 M 1.
( ) -
a,
. f (0), f (1), f (2),
DR

r , -
( ,
),
r, .

(. ),
x, -
.
, . M -
, -
. , -
, M ( , ,
).
, :
,
M . ,
.
309


, ,
-
. 1970-
. -
, ,
. ( , T -
-
T .) -
.

.

T
?
, . -
,
( , ) -
. - , .
AF
-
15 ( !) (nuclear
magnetic resonance, NMR). -
.
, ?
, , -
-
.

, -
DR

...

N n = log N .
2 log N = O(n) ( 3), (
, 2.6.4,
, 1.2.3, )
( n) . -
-
.

1 1
10.1. | = p |00 + p |11 ( -
2 2
) ( , -
). :
(a) , () -
(. . 300) 0 |0 + 1 |1 0 |0 + 1 |1. -
310 10.

0 , 1 , 0 , 1 ( -
) , ( -
).
(b) ?
(c) , ?
(d) ,
?
10.2. ,
1 1
| = p |00 + p |11,
2 2
|00: , cnot
.

T
H

, 10, 01 11? (
, .)
AF
10.3. -
, p
1 P
M 1
| j?
M j=0

10.4. ( M ) | j.
10.5.
P . | =
= j | j l , |0 = j | j + l.
P
j j
| |. ,
DR

|0 | 0 , j0 = j l j . , -
MP /k1 q k1
1 P l j M /k
| = | jk + l | 0 = p
k
0
| j M /k.
j=0
M k j=0

10.6. , -
cnot, cnot, -
.

H H

H H

10.7. (controlled swap, c-swap)


, -
1 ( , -
).
(a) , not, cnot c-swap -
.
311

(b) , (and)
c-swap. c-swap,
a b?
(c) -
? ( , a, 0 a, a.)
(d) , C
Q, not c-swap -
C : C x y, Q
|x, y, z |x, 0, 0. ( z, -
, .)
(e) Q1, |x, y, z |x, 0, 0.
(f) , , not,

T
cnot c-swap, |x, 0, 0 |x, y, 0.
10.8. , N
p q, x N ,
(x, N ) = 1, 3/8 r
x N , , x r/2 -
AF
N .
(a) p , x (-
) p. , p -
1/2. ((: ,
. 1.3.))
(b) ( 1.37), -
, 3/4 x
N .
(c) , , ()
DR

x r/2 1 1/2.

1 2
:

T
G. H. Hardy, E. M. Wright. Introduction to the Theory of Numbers. Oxford
University Press, 1980.
-
1970- , RSA -
AF
. .
D. R. Stinson. Cryptography: Theory and Practice. Chapman and Hall, 2005.
:
R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge University
Press, 1995.
-
(Larry Carter) (Mark Wegman) 1979 . -
(Volker Strassen)
1969 . (Arnold Schonhage)
DR

:

n- O(n log n log log n) . -
(Martin Furer).

3
( ) -
(John Hopcroft) (Bob Tarjan)
1973 . -
.
(Rao Kosaraju).

4 5
1959 (Edsger
Dkstra, 19302002). -
1926 ,
313

(Otakar Boruvka). -
( ,
log n) .
(David Huffman),
1952 ( ).

7
- 1947 (George Danzig,
19142005). 1928 -
(John von Neumann),
. -

T
V. Chvatal. Linear Programming. W. H. Freeman, 1983.
:
M. J. Osborne, A. Rubinstein. A course in game theory. MIT Press, 1994.

8 9
AF
NP- (Steve Cook): 1971 -
, NP-.
(Dick Karp) NP- ( -
8), (
).
NP- ,
.
NP- :
M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the
DR

Theory of NP-completeness. W. H. Freeman, 1979. (: . ,


. . . .:
, 1982.)
:
C. H. Papadimitriou. Computational Complexity. Addison-Wesley, 1995.

10
1994 -
(Peter Shor). ,
,
http://www.cs.berkeley.edu/~vazirani/quantumphysics.html
. ,
:
http://www.cs.berkeley.edu/~vazirani/cs191.html

| 291 72
() 12
() 12 - 85, 96

T
179, 239, 249
k- 275 273
log 136 26
mp3- 139 45
NP, 241 98
AF
NP- 244
O- 10, 11
P, 241
232
2- 102, 233
3- 233, 246, 248,
250
- 7 262, 289
136 269, 287
2027 257
21 233
21, 26
26 236, 245, 263
DR

21 235, 245, 253,


21 256, 263
291 42
, 49, 72, 216
117 13, 53
141 209
103 56
217, 257 80
143 84
145, 232 91
143 84
92
232 84
143 94
84
6174 85
71 85
297 84
315

92 292
93 294
63, 65
, 186 98
53
188 137
228 29, 32
226 -
98 299
110 294
19 301
128 291
- 46

T
16 NP 241
90 P 241
106 237, 275
76 239, 250
102 64, 292
AF

159
158
65
103
88
93
164 93
22 90
185 105
, 259 -
119
172, 233 106
DR

280
271 170
278 170
276
- 34
() 184 35, 36
230, 232 RSA 3638, 264
9, 231 130
- 292
31 110, 116
168 114, 116, 122
218 116

92
206
209 204
206 194
207 186
316

186 30
204 184
193
16 91
280 119, 156
120
239, 262 84
290 16
27
, 259 52
67 197
84 103
56 110, 113

T
93 114, 116
270 272
219
285
, 259
219
268
AF
-
127, 234
288
85
87, 90
87, 90
- 90
188, 210 90
103
106
30
146, 239
289
, 231 -
10
230
DR

-
157 209
- N 305
177 193
177 90
23 90
- 78
25
k- - 6174
57 271
238, 246, 138
249 292
174 260
84 15, 2731
- ( )
32, 47, 305 146

61 35
317

283 69
49 15
15, 28, 3133
244, 291, 305
129 59, 78
(s, t)- 197 55
199 5455
290
137, 236
236 274
105 200, 225, 238
159 200
- 238, 239, 250, 251

T
309 84
AES 36
87, 90 98
84 240, 252
87, 90 292
AF
84
114
90
90
299

205

50, 52 199
53 30
52 35
159 32
, 259 92
240 103
DR

165 177
278 , 72
165 , 259
240
17
192, 242 4952
59, 60, 167
88 61
93 302
166 237,
- 186 251253
209
210 , 291
209 8
- , 8
131
132 , 35
135 139
318

- 38 , 60
- 96
42
, 101, 234
228
102, 235
143
101
-
190, 220, 237, 253 9, 10
91 302
118 301
62 10
47 144, 151

T
AF
DR
T
AF
DR



119002, , ., 11. . (499) 241-74-83.
08.04.2014. Charter ITC. 7010 1/16.
. . . . 20. 1000. .
--8.
. 8 (495) 363-48-86.
http://capitalpress.ru


, , ., . 11.
. (499) 241-72-85. E-mail: biblio@mccme.ru

Вам также может понравиться