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

. , . , .

AF
T

DR

. . .


2014

510.5
22.1873
20

20

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

AF
T

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

22.1873

DR

Thanslation from the English language edition:


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

ISBN 978-0073523408 (.)


ISBN 978-5-4439-0236-4

ffi McGraw-Hill, 2006.


ffi , . ., 2014.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

7
7
8
10
12

1. . . . . .
1.1. . .
1.2. . . . .
1.3. .
1.4. . . . . . . . . . .
1.5.
. . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

15
15
19
27
34
38
42

2. .
2.1. . . . . . . . . . .
2.2. . . .
2.3. . . . . . . .
2.4. . . . . . . . . . . . . . . .
2.5. . . . . . . . . .
2.6. .
. . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

49
49
52
54
56
59
61
74

3. . . . . . . . . . . . . . . .
3.1. . . . . . . . . . . . . . . . .
3.2.
3.3. .
3.4. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

83
83
85
89
92
96

4. . . . .
4.1. .
4.2. . . .
4.3. . . . . .
4.4.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

105
105
106
108
108

AF
T

0. . . . . . . . . . . . . . . . .
0.1. . . . . . . . .
0.2. .
0.3. O- . . . . . . . . . . . .
. . . . . . . . . . . . . . . .

DR

.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

4.5. . .
4.6. .
4.7.
. . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

113
114
119
120

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

127
127
139
143
146
148

6. . . . . . . . . . . . . . . . . .
6.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. . . . . . . . .
6.3. . . . . . . . . . . . . . . . . . . . . . . .
6.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

156

7.
7.1. . . . . . . . . . . . . . .
7.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. . . . . . . . . . . . . . . . . .
7.4. . . . . . . . . . . . . . . . . . . . . . . . . .
7.5. . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6. - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7. : . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

184
184
193
200
201
205
209
217
220

8. NP- . . . . . . . . . . . . . . . .
8.1. . . . . . . . . . . . . . . . . . . .
8.2. NP- :
8.3. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

230
230
241
244
260

9. NP- . .
9.1. . . . . .
9.2. . . .
9.3. .
. . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

267
268
271
280
287

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

DR

AF
T

5. . . .
5.1. .
5.2. .
5.3. . . . . . .
5.4. .
. . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

156
157
158
162
167
170
174
175

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


10.2. . . . . . . . . . . . . . . . . . . . . . . .
10.3. . . . . . . . . . .
10.4. . . . . . . . . . . . . . . . . . . . . . .
10.5. . . . . . . . . . . . . . . . . . . . . .
10.6. . . .
10.7. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

296
297
299
301
305
306
309

. . . . . . 312

DR

AF
T

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

DR

AF
T

,
[ 2008 ]
- . . ,
, . ,
, . , ,
, .
, ( I) , . (,
), ,
, .
. ( II)
:
. ,
( ) . II (
, ) I ( ).
I II , ( , ). III
( , )
(-, , ). , IV (NP-, , ).
,
.
, ( )
.

AF
T

. , , , .
. , ,

, ,
.

. , ,
, !

0.1.

DR

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

0.

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

0.2.

AF
T

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

Fn1 + Fn2 , n > 1,


n = 1,
Fn = 1,

0,
n = 0.

DR

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

, .
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.

AF
T

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

, Fib1 . . 1 . , .
( F0 , F1 , , Fn1 ):
Fib2(n)

DR

n = 0: 0
f [0n]
f [0] 0, f [1] 1
i 2 n:
f [i] f [i 1] + f [i 2]
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 : .

AF
T

, . ,

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

DR

0.3. O-

, , , (
). ( ) . , n n2 .
,
.
, . : , ,
5n3 + 4n + 3 n, 4n 3 (
n 5n3 ).
, 5 (
) ,
1

. 8.

0.3. O-

11

. 2.

n2

100
90
80
70
60
50

2n + 20

40

AF
T

30
20
10
0

9 10

O(n3 ) ( ).
O-.

DR

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


c > 0, f (n) c g(n) n N.

, 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
20
2
= + 2 22
n
n2
n

,
n2
n2
n

=
2n + 20
22n
22

.
, f3 (n) = n + 1.
? , , , f2 = O( f3 )

12

0.

. ,
f2 (n)
2n + 20
20
=
n+1
f3 (n)

f3 (n)
1.
f2 (n)

O() . = :
f = (g) ( f g, ) g = O( f );
f = (g) ( f g ) , f =
= O(g) g = O( f ).

DR

AF
T

f2 = ( f3 ) f1 = ( f3 ).
O- 3n2 + 4n + 5 (n2 ), .
:
1. . , 14n2 n2 .
2. na n b a > b. , n2
n.
3. (). , 3n n5 .
4.
p . , n ( n) (log n)3 ; , . n2 n log n.
, : , . , O- .

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


, f = (g)) :
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)

f (n)
n 100
n1/2
100n + log n
n log n
log(2n)
10 log n
n1.01
n2 / log n

g(n)
n 200
n2/3
n + (log n)2
10n log (10n)
log(3n)
log(n2 )
n log2 n
n(log n)2

13

(i)

n0.1

(log n)10
n/ log n

(k)

(log n)log n
p
n

(log n)3

n1/2

5log2 n

n2n

3n

2n

2n+1

(j)

(l)

(m)

(n)
(o)

n!

(q)

(log n)
n
P
ik

(p)

2n
2(log2 n)

log n

nk+1

AF
T

i=1

,
.
0.2. , c > 0 g(n) = 1 + c +
+ c 2 + + c n
(a) (1), c < 1;

(b) (n), c = 1;

(c) (c n ), c > 1.

, ; ,
.

DR

0.3. , F0 = 0, F1 = 1, Fn =
= Fn1 + Fn2 . , , :
(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


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

  
   
2  
F2
0 1
0 1
F1
F
=

=
F0 ,
F3
1 1
F2
1 1
1

Fn
Fn+1

n  
0 1
F
= 1 1 F0 .
1


14

0.



0 1

, Fn X = 1 1
n.

(a) , 2 2 ().
X n ?

(b) , O(log n) . (: , X 8 .)

AF
T

( Fib3) O(log n), , O(n) Fib2.


,
: O(n) O(log n) . : ,
, ,
, . , Fib2 O(n2 ).
(c) , ,
Fib3, O(n).

(d) M (n) n- . ,
M (n) = O(n2 ) ( ,
1, ). ,
Fib3 O(M (n) log n).

(e) O(M (n))


Fib3. (: .)

DR

Fib3 , Fib2? ,
n- , O(n2 ) (
2).
:

p n
p n
1
1+ 5
1
1 5
Fn = p
p
.
5

Fn n.
.
,
Fib3 n. (: ,
X .)


, (
) :

AF
T

ff : N .
ff : , N .

DR

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

.
.
( : ).

1.1.
1.1.1.

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

16

1.

AF
T

, , ,
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 , - ).
? , log b N = (loga N )/(loga b). , b a () loga b.
N O(log N ) , . O() . O(),
.
log N . :
1. log N , 2, N .

2. N log N , 1
( , dlog N e ). ( ,
.)

DR

3. log N N ( ,
dlog(N + 1)e ).

4. log N N ( , blog N c).




1
1
1
5. log N = 1 + + + +
( 1.5).
2

53 35 (
110101 100011):
:

1
1
0

1
0
1

0
0
1

1
0
0

0
1
0

1
1
0

(53)
(35)
(88)

,
. ,
x y? , ( x y)?

1.1.

17

AF
T

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

DR

. x y
, x y
.
13 11 ( 1101 1011):

+
1

1
0

0
1
0

1
0
0
0

1
1
1
1
0
1
1

1
0
1
0
0

0
1
0
1

1
1
1

(1101 1)
(1101 1, 1)
(1101 0, 2)
(1101 1, 3)
(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

AF
T

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

13
26
52
104
143

()
()

DR

( -) . : 13, 26 104,
, 13
. , , 11 , .
- ,
.
,
.
Multiply (. 1.1), :
 j k
y
y ,
2 x 2 ,
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. .

AF
T

Multiply(x, y)
{: x y, y 0.}
{: x y.}
y = 0: 0
z Multiply(x, b y/2c)
y :
2z
:
x + 2z
n- . ,
, - O(n2 ).
? , n , O(n) ,
(n2 ) . , , , 2.
. x y q () r (),
x = yq + r 0 r < y. 1.8 ,
Divide (. 1.2)
.
. 1.2. .

DR

Divide(x, y)
{: 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 .

AF
T

, 253 13 (mod 60), 253 13 = 240 60. ( : 253 4 13 .) : 59 1 (mod 60), 59 .


N , {0, 1,
, N 1}, , ,
(. 1.3).
. 1.3. 8.

DR

, , N ,
N , {i + kN : k Z} i 0, , N 1. ,
3:

9
8
7

6
5
4

3
2
1

0
1
2

3
4
5

6
7
8

9
10
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 )

AF
T

x( y + z) x y + yz (mod N )

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

1.2.1.

DR

x y N , N . x y
0 N 1, 0 2(N 1).
N 1, N . , , () , 2N . , O(n),
n = dlog N e N .
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, .

AF
T

, ,
2n1 2n1 1 2n . x 2n x.
, 2n ,
( n ).

DR

N ,
. x y
. x y 20 , x y
19
, , (219 )(2 ) = 219524288 ( ). , , y 500.
N : N . x y mod N ,
y x ( N ).

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 ),
log y. x y mod N , x, y. ,
2

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 .}

AF
T

y = 0: 1
z ModExp(x, b y/2c, N )
y :
z 2 mod N
:
x z 2 mod N
ModExp (. 1.4) ( )
: ,

(x b y/2c )2 ,
y ,
y
x =
x (x b y/2c )2 , y .

DR

Multiply (. 1.1), x 25
x 16 + x 8 + x 1. , x 2i , x,
i
x 2 , .
n x, y, N .
, ModExp n , n
( 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.

AF
T

. 1.5. .

Euclid(a, b)

{: a b 0.}
{: (a, b).}
b = 0: a
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

DR

a mod b

a/2

a mod b

, 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)

AF
T

{: a b 0.}
{: x, y, d, d = (a, b) a x + b y = d.}
b = 0: (1, 0, a)
(x 0 , y 0 , d) ExtendedEuclid(b, a mod b)
( y 0 , x 0 ba/bc y 0 , d)

. a b (a b)
x, y, d, (a, b) =
= d = a x + b y.

DR

. , x y,
,
d = (a, b).
b. (b = 0)
. : , (a, b), (b, a mod b). a mod b < b,
, 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

, 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,

AF
T

1 = 1 (2 2 1) = 1 2 + 3 1.
, 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,
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. :

DR

x (multiplicative
inverse) a N , a x 1 (mod N ).

, 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 .
, .

AF
T

1.3.

, ,
? 1640 :

. p 1 a p 1

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

DR

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

28

1.

AF
T

7, 17, 19, 71, 79 , 717197179?


, . , , . , , , . , .
p
, N , 2 N .
, p N = K L K L
N .
, , . , , ? .
, ,
,
.
: ,
. , ,
,
!

DR

p ( a). , , ( p) S p, p. , (
).
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

N 1

1 (mod N )?

AF
T

,
( ): ,
N . , N
( a N 1 1 (mod N )) a. , 341 = 31 11 ,
2340 1 (mod 341).
, N a
. - (
), Primality (. 1.7),
- a,
{1, 2, , N 1}.
. 1.7. .

Primality(N )

{: N .}
{: /.}

DR

a 1 N 1
a N 1 1 (mod N ):

:

? : 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 ( ).

AF
T


N (multiplicative group of N ) ZN .
. (subgroup). , ( ).
, , , ( ) .
B = {b : b N 1 1 (mod N )}. , ZN ( , B ). , B ZN . B ZN ,
|ZN |/2 (N 1)/2.

DR

. a, N , a N 1 6
6 1 (mod N ). , b < N ,
( b N 1 1 (mod N )), a b,
:
(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
2

N , P( ) .
(one-sided error):
, .

1.3.

31

, a ( Primality2 . 1.8): N
P( Primality2 )

1
.
2k

() k. ,
k = 100 2100 , ( ).
. 1.8. .

Primality2(N )

AF
T

{: N .}
{: /.}

k a1 , a2 , , ak < N
aiN 1 1 (mod N ) i = 1, 2, , k:

:

1.3.1.

DR

. ,
,
. , : n
n (, 1/(ln 2n ) 1,44/n).

. (x)
, x. (x) x/(ln x) , ,
lim

(x)
= 1.
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 .

AF
T

a N 1 6 1 (mod N ), N ( ) .
: ,
N , . (
) 1 mod N ,
, N . , (nontrivial square root of 1) ,
1 N , 1. , N ( 1.40).

DR

, ,
: N
3/4 .

). ,
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

AF
T

:
25 109

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.

AF
T

RSA (RSA cryptosystem),


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

e(x)

DR

x = d(e(x))

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

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

1.4.

35

AF
T

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

, .
, , , . RSA .
1.4.1. : AES


( , ).
(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.

DR

, e r ( , ,
, ):
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
01

10

AF
T

10

e10
e11
e00
e01

11
x

DR

, ( ). x z, x z, (x r) (z r) = (x z) (r r) = x z 0 = x z.
: , x z , x z .
( , ),
x z . , .
, ( ). ( ) 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}).

AF
T

2. d, d e (p 1)(q 1):
(x e )d x (mod N )

x = 0, 1, , N 1.

, x 7 x e
. (N , e) ,
. , d. (
e, , N .)

DR

. 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,
: 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
.

AF
T

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

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

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. -

AF
T

232 IP- . , 1 250


( ). , ,
IP- . , , , , 250 ( ).

250 IP-

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. -

DR

AF
T

-? ,
. , , . ,
IP- ( , ,
h(128.32.168.80) = 80), ,
(, ). , (
).
,
232 ( , ). ,
.
-, ? , .
232 IP- 250 , - 232 /250 224 16 000 000 IP- -; - (collision).
, .
. - , . , 250 , . .
(, -
, ,
, ,
.)
? . , (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

AF
T

, ha (x) = ha ( y) ,
x y . ,
- .
, 250 . x. , x, -.
.
( -)
? 249 1/n = 1/257 (-), x. , x- 249/257 x, 2.1
.
. x 1 .x 2 .x 3 .x 4 6= y1 . y2 . y3 . y4 . , , x 4 6=
6= y4 . P(ha (x 1 .x 2 .x 3 .x 4 ) = ha ( y1 . y2 . y3 . y4 )), 4
4
P
P
,
ai x i
ai yi (mod n). i=1

i=1

3
X

ai (x i yi ) a4 ( y4 x 4 ) (mod n).

(1)

i=1

DR

ha a = (a1 , a2 , a3 , a4 ).
, a1 , a2 a3 ,
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

257

42

1.

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

AF
T

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

DR

1.1. , b 2 b-
b- .

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 + :

X
i=1

1
= .
i

43

n n ln n + ,
ln , = 0,57721 . :
n
X
i=1

1
= (log n).
i

(: .)
1.6. , (. 17) .

AF
T

1.7.
(. 19) n m?
1.8. (. 19)
O(n2 ) , n .

1.9. x y (mod N ) ( x y N ),
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
1.13. 5

2011

30000

mod 3?

6123456 31?

DR

1.14. , n- Fn p.
? (: 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 ).

AF
T

1.24. {0, 1, , p n 1} p n
p?
1.25. 2125 mod 127. (: 127 .)

1.26. 1717 ? (:
p q, a 6 0 (mod pq) 1.4.2
a(p1)(q1) 1 (mod pq).)
17

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.

DR

1.29. [m] {0, 1, , m 1}. - , ,


,
.
(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

AF
T

(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- .
1.31. , N ! = 1 2 3 N .
(a) ( ()) N !, N
n ?
(b) N ! .

DR

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 , .

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

P

i(1 p)i1 p; ( 2) , E = 1 + (1 p)E,
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) , . ?

AF
T

1.36. . p, p 3 (mod 4),


p = 4k + 3.
(a) , x 6 0 (mod p)
x 4k+4 = x 2 .

(b) x (square root) a p, a x 2 (mod p). , a


p = 4k + 3, a k+1 a
p.
1.37. .

(a) .
0 14.
3, 5.
?

DR

(b) p q . , ( j, k) p q ()
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.
c
a b mod p a, b, c p.

AF
T

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
1 15. , 15 .)
1.41. . a
(quadratic residue) N , x, a x 2 (mod N ).

(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}.

DR

1.42. , RSA (. 1.9)


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. .

AF
T

(c) RSA: N = pq, e d. , N , .


RSA .
N . , ,
m1 , m2 , , mk . , m1d mod N . , , (m1d )e m1 (mod N ).
(d) . , (391, 17).
?
1.46. , .

DR

(a) , , . , ,
.

(b) , (, 1 N 1 ). ,
.


(divide-and-conquer) :

1. (subproblems)
.

AF
T

2. .

3. .

,
(1) ; (2) , (3) .

, .

2.1.

(17771855) ,

DR

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

, :
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 .

AF
T

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
+ O(n).
T (n) = 4T
2

, T (n) = O(n2 ) (. 2.2). ,


.
(,
). 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
3
n
O(n).
3k O k =
2

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

AF
T

P1 Multiply(x L , y L )
P2 Multiply(x R , yR )
P3 Multiply(x L + x R , y L + yR )
P1 22bn/2c + (P3 P1 P2 ) 2bn/2c + P2

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

(a)

10110010 01100011

1011 0110

0010 0011

(b)

1101 1001

DR

n/2
n/4
..
.

1 1 1 1 1 1 1 1 1

log2 n

2
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 ).

AF
T

2.2.

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

DR

.
l m
n
+ O(nd ) . T (n) = aT
b
a > 0, b > 1, d 0.

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

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
d
t k = ak O
=
O(n
)

.
k
d
b

{t k } ( k 0 log b n), , a/b d . t 0

2.2.

53

. 2.3. n a n/b.

n
n/b
n/b2

AF
T

..
.

log b n

alog b n = nlog b a

O(nd ); , k = log b n, alog b n = nlog b a 1, O(nlog b a ).


( 0.2). ,
:

DR

1. 1.
, : O(nd ).

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

AF
T

(, ,
).
x[1k] y[1l] z[1k + l]? ,
z x[1] y[1]. z
.
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])

DR

(
). Merge O(1)
( ). O(k + l), .
n :
 
n
+ O(n),
T (n) = 2T
2

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


? , . 2,
4 .
. 2.4.
, MergeSort.

( ; ), . ,
, . ( Inject , Eject

2.3.

55

. 2.4. Merge MergeSort.

10

2 10

3 5

13

7 13

2 3 5 10

6
1 6

1 6 7 13

AF
T

1 2 3 5 6 7 10 13

):

IterativeMergeSort(a[1n])
{: a[1n].}
{: .}

DR

Q [ ] { }
i 1 n:
Inject(Q, [ai ])
|Q| > 1:
Inject(Q, Merge(Eject(Q), Eject(Q)))
Eject(Q)
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 ?

321

a2 < a3 ?
213

a2 < a3 ?
231

123

a1 < a3 ?
312

132

56

2.

AF
T

( , ,
;
.)
(depth) ,
( 3), .
, ,
: n
(n log n) .
, n .
{1, 2, , n}. ,
, ( ). ,
n! .
d 2d . , ( ) log(n!).
, log(n!) c n log n c > 0.
. ,
n! (n/2)(n/2) , 1 2 n n/2 , n/2,
.
q


1
nn en .
: n! 2n +
3

DR

, , , n ,
(n log n) , , .
, (
,
). , , ? , :
( 2.20).

2.4.

(median) , , (). , [45, 1, 10, 30, 25] 25.


, , ;
().
, ,
, . , ,
1. 10000, 100, .

2.4.

57

AF
T

, , .
n . (n log n). ?
: .
, , . ,
( !) . , .
k- . S k;
, k- ,
S . , k = 1 ,
k = b|S|/2c .
2.4.1.

k- ,
.
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 .

DR

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

k |S L |,
selection(S L , k),
|S L | < k |S L | + |S v |,
selection(S, k) = 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
= (n2 )
2

AF
T

n + (n 1) + +

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

DR

.
() 2.

. E. ,
, ( 1/2) 1
1+E
. , E = +
, E = 2.
2

, ,
:
 
T (n) T

3n
4

+ O(n).

: ( ), T (n) ( n) ( ) . (
1
,
, .

2.5.

59

AF
T


, -. ,
, .
. ,
.
(quicksort)
, .
. , , (n2 ). ( 2.24), O(n log n). , .
: ):

n


3n
+

4


3n
.
+
4

DR

,
O(n) , O(1)
( , 1/2, ,
, ). , 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, j)

60

2.

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

AF
T

A B

X= C D ,

E F

Y= G H .

( 2.11):


A B
XY = C D



 

E F
AE + BG AF + BH
= C E + DG C F + DH .
G H

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


O(n2 ), . ,
 
T (n) = 8T

n
2

+ O(n2 ),

DR

O(n3 ), .
: X Y
n
n
, ( ?) 2
2
:


XY =

P5 + P4 P2 + P6
P1 + P2
,
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

AF
T

i=0

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

( ). ( 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)

(t)

a(t)

AF
T

(a)

(b)

(c)

, , (b). , .
:

DR

, (
) ( t
). , ,
(t) (unit impulse),
t = 0 (c). , (t i),
i. a(t)
:
a(t) =

T 1
X

a(i)(t i)

i=0

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

k
X

a(i)b(k i),

i=0

2.6.

63

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

a0 , a1 , , ad

A(x 0 ), A(x 1 ), , A(x d )

AF
T

. 2.5. , , ? .1 ( , )? d n O(d) ( 2.29), n n (n2 ) .


O(n log n) x 0 , x 1 , , x n1 ;
,
.
. 2.5. .

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


{: C = A B.}

DR

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

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 ),

AF
T

A0 A1 A
x. A0 A1
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 ).

, A(x) n x 0 , x 1 , , x n/21
A0 A1 (
2
) n/2 x 02 , , x n/21
.
A(x)
n 1

+x 0

DR

A0 (x) A1 (x)

n/2 1

x 0

x 02

+x n/21

x n/21

2
x n/21

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

O(n log n).


,
. , ,
2
x 02 , x 12 , , x n/21
,
, .
, . ? ?
, , .

2.6.

65

; 1. 1, 1:
..
.

+1

+i

+1

AF
T

+1

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

DR

1. n- ,
: n/2+ j = j .
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).
:
z = r(cos +p
i sin ) = r e i , : (r, );

b
r

AF
T

ff r = a2 + b2 ;
ff [0; 2): cos = a/r, sin = b/r.
:

1
i
5 + 5i
p

(1, ) (1, /2) (5 2, /4)

(r2 , 2 )

(r1 , 1 )

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

(r1 r2 , 1 +2 )

4
n

DR

2
n

n 1
z n = 1.

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

2
+
n

A(x)
n-

(n 2)

A0 (x) A1 (x)
n/2

2.6.

67

. 2.7. .

FFT(A, )
{: A(x) n 1,
n ; , n = 1.}
{: A(0 ), , A(n1 ).}

AF
T

= 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 )
A(0 ), , A(n1 )

O(n log n):


= FFT(, ).

( )? ,
=

1
FFT(, 1 ).
n

DR

, ,
, 1 .
. , .
,
O(n log n) (. 2.5) .

(
) (
).
.

n 1: .
,
:

1 x0
x 02 x 0n1
A(x 0 )
a0

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

..
..

=
.. .
.
.


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

(Vandermonde matrix).

68

2.

, n 1
n . M :
x 0 , , x n1 , M .
, , , :
M , M 1 .

AF
T

,
, M ()
x i = i , n = 1, .
.

1
n

Mn ()1 = Mn (1 ).

, 1 ( ).

, n, , (n n)-
1
1

..
Mn () =
.
1

..
.

1
1

2
2
4
..
..
.
.
j
2 j
..
..
.
.
n1
2(n1)
1

1
n1

2(n1)

..

(n1) j

..

.
(n1)(n1)

DR

0 = 1

2
..
.
j
..
.
n1

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

. , ( j, k)-
n1
X
i=0

[Mn ()] j,i [Mn (1 )]i,k =

n1
X
i=0

ji (1 )ik =1+ jk +2( jk) ++(n1)( jk) .

2.6.

69

jk . 1, j = k, n.

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

AF
T

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

u v = u0 v0 + + un1 vn1

DR

p
n. , n 1 : , , ,
. Mn () , (
), ( ).
, , , ,
(). ( ).
2.6.4.
, . .

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

70

2.

), :

2k

jk

Mn ()

an1
a

= j

..
.

2 jk

j 2 jk

a0
a2
..
.
an2
a1
a3
..
.
an1

AF
T

a0
a1
a2
a3
a4

2k + 1

2k

2k + 1

2 jk

j 2 jk

j + n/2

2 jk

j 2 jk

a0
a2
..
.
an2
a1
a3
..
.
an1

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

DR

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

j + n/2

Mn/2

a0
a2
..
.
an2

Mn/2

a0
a2
..
.
an2

+ j

Mn/2

a1
a3
..
.
an1

Mn/2

a1
a3
..
.
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 ).}

AF
T

= 1: a
(s0 , s1 , , sn/21 ) FFT((a0 , a2 , , an2 ), 2 )
0
(s00 , s10 , , sn/21
) FFT((a1 , a3 , , an1 ), 2 )
j 0 n/2 1:
r j = s j + j s0j
r j+n/2 = s j j s0j
(r0 , r1 , , rn1 )

, .
. n n/2.

DR

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

a0
a2

..
.

FFTn/2

rj

an2

a1
a3

..
.
an1

FFTn/2

j
j + n/2

r j+n/2

72

2.

.
() j , j .
, . , :
r j = s j + j s0j ,
r j+n/2 = s j j s0j .

AF
T

. 2.9 n = 8. ( , , ,
.)
.
1. n log2 n , n . n log n .
2. : 0, 4, 2, 6, 1, 5, 3, 7.
? , ( ), ( ).
(00 ) (10 ) .
, ,
( ,

DR

1963 , , IBM,
.
,
. , .
, ,
- . , , 1965 ,
.
, . , .
.
: ,
1930- . ,
,
. , ( ).

2.6.

73

. 2.9. .

a0

100

a4

010

a2

A(0 ) 000

A(1 ) 001

A(2 ) 010

AF
T

000

110

a6

001

a1

A(3 ) 011

A(4 ) 100

101

a5

A(5 ) 101

DR

011

a3

A(6 ) 110

111

a7

A(7 ) 111

): 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 ( ), ,


.

AF
T

2.2. , n b [n, bn]


b.

DR

2.3. 2.2 ,
. . 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
n
cn
4 2T
+
+ 2cn = 8T
+ 3cn
8
4
8
h  
i
 
n
cn
n
8 2T
+
+ 3cn = 16T
+ 4cn
16

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 ).

AF
T

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 ;
(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 ;
(j) T (n) = 2T (n 1) + 1;
p
(k) T (n) = T ( n) + 1.
2.6. :

DR

b(t)

1/t 0

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
X= C D ,


E F
Y= G H ,

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

AF
T

A B

XY = C D



 

E F
AE + BG AF + BH
=
.
G H
C E + DG C F + DH

2.12. ,
, n:
. , n .
F(n)

n > 1:

F(n/2)
F(n/2)

DR

2.13. , , . Bn
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) .

AF
T

2.19. k . , k
n kn.

(a) :
Merge 2.3 ,
, . ( k n)?

(b) ,
.
2.20. , x[1n]
O(n + M ), M = max x i min x i . M i

. (n log n)?

DR

2.21. .
{x 1 , x 2 , , x n } R .
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

78

2.

, 2 , ,
, 1 . 2
. ,
, 2 . 1
,
2 . , ,
max |x i |.
i

AF
T

(c) , O(n) (,
x i , ).
2.22. m n. ,
k-
O(log(m + n)).

2.23. (majority element) A[1n]


, .
, ( ; , ). , A[i] > A[ j]? . ( , ,
.) A[i] = A[ j]?,
O(1).

DR

(a) , O(n log n). (:


. , ? ,
.)

(b) . (:
, .
. n/2 :
, , ,
. , n/2 , . ,
,
A[kn], p A[q] k.)
2.24. . 59 .
(a) .

(b) ,
n (n2 ).

(c) ,
( )

79

n
T (n) O(n) +

1
n

n
X

(T (i 1) + T (n i))

i=1

O(n log n).


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

AF
T

(a) 10n
( n ). , n . :
Pwr2Bin(n)

n = 1: 10102
:
z=
FastMultiply(z, z)

. .

(b) x,
n (n ), . .
Dec2Bin(x)

DR

n = 1: binary[x]
:
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 ). ,



AF
T

0 X
, X Y n n.
Y 0

2.28. (Hadamard matrices) H0 , H1 , H2 ,


:
ff H0 1 1, .

ff k > 0 H k 2k 2k

H
H
k1
k1

Hk =
.
H
H k1
k1

DR

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

.

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.

AF
T

2.31. 1.2.3 () .
,
.
(a) ,

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

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


(b) , .

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

DR

2.32. .
:

{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.)

AF
T

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

, O(n log2 n).

(d) , O(n log n)?

2.33. (n n)- A, B, C.
AB = C. O(nlog2 7 ),
. .

DR

(a) v n- ,
{0, 1}. ,
(n n)- M , M v = 0,
1/2.
(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.1.

AF
T

. , , , ( ). ? ,
(. 3.1(a)) : , . . (. 3.1(b)), (
1 , 11 . .) . , .
. 3.1. (a) (b).

(a)

(b)

DR

1
9
10
12

13
11

. , , ,

84

3.

AF
T

,
. , .
, ( ).
,
. .
V E, . ( : vertex
node, edge.)
V = {1, 2, 3, , 13}, E ,
( , E {1, 2}, {9, 11}
{7, 13}). , x y y x. , x y, : {x, y}. (undirected), (undirected graph).
, (directed edges). x
y y x. x y
(x, y). (World Wide
Web) : u v, u v.
, , ,
( ,
).

DR

3.1.1.

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

AF
T

? |V | |E|. , |E| |V |
( |E| |V |, , ).

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

DR

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


( ).
( u v, v
u).

3.2.
3.2.1.

(depth-first search) :
? :
,
, (. 3.2)
. , , - .
(
, )
( , , ).
. ,
, ,
. ( ,

86

3.

. 3.2. .
L
K

D
G

E
I

AF
T

, , ), (. 3.3) .1
Previsit Postvisit
( ); ,
.
. 3.3. , .

Explore(v)

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

DR

visited[v] true
Previsit(v)
(v, u) E:
visited[u] = false: Explore(u)
Postvisit(v)

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

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

3.2.

87

AF
T

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

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) .

AF
T

, . 1
O(|V |). 2 ( ) {x, y} E : Explore(x)
Explore( y). 2, , O(|E|). O(|V | + |E|), .
!
. 3.6 ( ). ,
. Explore
A, C F . (forest)
.
. 3.6. (a) . (b) , .

(a)

1, 10

11, 22

23, 24

(b)

E 4, 9

12, 21

5, 8

13, 20

DR

2, 3

14, 17

15, 16

L
18, 19

6, 7

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.

AF
T

, , . ,
. ( Previsit)
(Postvisit). ( 24 ) . 3.6. , 5
I, 21 D.
,
clock, 1, :
Previsit(v)

pre[v] clock
clock clock + 1

DR

Postvisit(v)

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. .

A 1, 16
B 2, 11

C 12, 15

E 3, 10

D 13, 14

AF
T

4, 7

5, 6

H 8, 9

(cross edges)
,
,
(

).

(back edges)
.

(forward edges)
,
.

(tree edges) ,
.

DR

, . A (tree root),
(descendants). F , G, H E, E (ancestor). , C (parent) D, D (child) C. ( , .)
( ).
.

. 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)
v

AF
T

, ?
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. , .

AF
T


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

DR

. post- post-.

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

3.4.
3.4.1.
? . -

3.4.

93

, . . . 3.9 ,
. ,
G B F A. :
u v (connected), u v, v u.
( 3.30),
(strongly connected components). . 3.9
.

AF
T

. 3.9. (a) . (b) .

(a)

(b)

B, E

C, F

G, H, I,
J, K, L

DR

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

1

. . .

94

3.

3.4.2.
. , (
). ( ).
1. Explore, u, , , u.

AF
T

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

2. ,
post-, -.
.

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

DR

. , v C C 0 . v C, Explore(v) ,
(. 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
D

H
J

B, E

C, F

G, H, I,
J, K, L

AF
T

(). ,
- ? 3.
post-
, post-
( , !) - ,
. :

DR

1. G R .

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.

DR

AF
T

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

,
.
- ,
Explore :
, .
,
( ).
- :
, ,
? (
)? .
, , -.

3.1. , . , pre- post- .


A

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

97

(a)

(b)
A

B
E

D
F

AF
T

3.3. ,
, . .
A

(a) pre- post- .

(b) .

(c) ?

(d) ?

3.4. G. G R .
(i)

DR

(ii)

(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

AF
T

(b) ,
.

(c)
?

3.7. G = (V, E) (bipartite),


(V = V1 V2 V1 V2 = ),
(, u, v V1 ,
u v ).
(a) , ,
.

DR

(b) .
, , , .
,
, .
(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. .

AF
T

(a) ,
, . (: .)
(b) ,
.
(c) , ,
, . , ,
.

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

DR

3.15. (a) ,
- , . ?
, .

(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.

AF
T

v0 = s (vi , vi+1 ) E i 0.
.
(a) Inf(p) V p, . , Inf(p)
G.
(b) , , G .
(c) , , G ,
.
(d) , , , ,
,
.
3.18. T = (V, E)
r V . , u
v, r v T u.
, u v? O(1). ?

3.19. T = (V, E) , x[], . z[]:


z[u] = x u.

, .

DR

3.20. T = (V, E) r V .
v r v. , 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 .)
6
C

4
E

AF
T

2
A
B

F
5

cost .

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

DR

3.26. (Eulerian tour) , .


1736 , . (
, ) , :
, ?
. ,
( ; ).


(a) ,
, .

102

3.

(b) (Eulerian path) , .


?
(c) ?

3.27. (edgedisjoint), . ,
,
.

AF
T

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


(clauses), ( ) ,
. , true false, . , true.
,
(x 1 x2 ) (x1 x3 ) (x 1 x 2 ) (x3 x 4 ) (x1 x 4 ),

x 1 , x 2 , x 3 , x 4 true, false, false, true


().
(a) .

(b) 2- , .

DR

2-,
. I 2- n m
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- .

AF
T

3.29. (binary relation) S R (x, y) S S. , , S


, (x, y) R , x y. (equivalence relation) , :
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 , x y (
).
, S
S1 , S2 , , Sk ( S = S1 S2 Sk
Si S j = i 6= j),
ff : (x, y) R
x, y Si ;

DR

ff : (x, y)
/ R
x Si y S j i 6= j.

(: .)

3.30. . 93 x y . , (. )
.
3.31. . G =
= (V, E). , e e0 e, e0 E, e = e0
, e e0 .
(a) ,
(. 3.29).

, , (biconnected components) G. (bridge) , . (separating vertex)


, .

104

3.

(b) , .
C
A

L
K

AF
T

,
( );
. :
(c)
. , , .

(d) , ( , - ). , .

,
.

DR

(e) , , .

(f) , v , v 0 ,
v 0 , ,
v ( v ).

(g) u low(u) pre(u) pre(w) (v, w),


v u. , low
.
(h) , , . (:
low . , .)


4.1.

AF
T

, , , (. 4.1).
: , S C , .
, .
(distance)
,
. .
(), (). s; ,
s. s,
, s.
, . 4.2 S B 2,
. S,

DR

. 4.1. (a) (b) .

(a)

(b)

S
A

. 4.2. .

A C D E
D

106

4.

. (D, E) ,
S.

4.2.

DR

AF
T

. 4.2, S, : S,
1 S, 2 . S , .
0, 1, 2, , d , d + 1: , d. ,
: d, , d + 1,
d.
(breadth-first search, BFS)
(. 4.3). Q S,
0.
d = 1, 2, 3, , Q
d . ( ),
, d.
S . 4.1. , . . 4.4
,
. , .
S . (shortest-path tree).
. 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
A
C
D
E
B



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

S
A

AF
T

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

. ,

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 .
, , (
, ). .

AF
T

. 4.5.

95

133

290

409

271

445

291

112

275

DR

4.4.

4.4.1.

. 1,
( ).
, ,
(. 4.6).
. 4.6. .

1
C

D
3

2
E

4.4.

109

AF
T

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

G:

G0 :

100

50

200

DR

: G,
. (
, , .) : , ( ). ,
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: ( ) .

AF
T

DecreaseKey: ,
, .

DeleteMin: , .

MakeQueue: ( , ,
).
, ,
. (Dkstra) ( 4.8).
. 4.8. .

DR

Dijkstra(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

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-. .

1
2

1
3
5
2

B
1

D
1

A: 0
B: 3
C: 2

D: 6
E: 7

AF
T

D:
E:

3
3

A: 0
B: 4
C: 2

5
2

DR
1

A: 0
B: 3
C: 2

D: 5
E: 6

D: 5
E: 6

A: 0
B: 3
C: 2

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

:
, ( ).
, . , .
. .

112

4.

. .
4.4.2.

AF
T

s, R ,
.
.
v, s
, R. v?
s v; u . u R, u v?
u s, v. ( , .) v R
; , ( ):
s

: v, , R R
(. 4.10). . , , R.
. 4.10. .

DR

. , , -,
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)

AF
T

(
)
(. 4.8). . ,
,

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

, . .

DR

4.4.3.

. 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.

DR

AF
T

, ( ) . :
(, ). , .
. . 4.11(a).
Insert :
. , () , (. 4.11(b)(d)).
, blog2 nc, n
. DecreaseKey,
, ,
.
DeleteMin . , ( ,
, . . 4.11(b)(d)). O(log n).

. ,
j 2 j 2 j + 1, b j/2c ( 4.16).
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)

(b)

3
10

11

(c)

12
20

11

13

15

12
20

6
7

13

(d)

10

15

20

11

13

10

11

15

12

20

13

15

10

20

13

7
10
13

5
10

11
15

20

13

(h)

5
7

12

11
20

12

(g)

15

12

11

12

(f )

DR

(e)

10

AF
T

15

6
10

11
15

20

13

12

116

4.

?
. .

DeleteMin

Insert/
DecreaseKey

|V | DeleteMin
(|V | + |E|) Insert

O(|V |)

O(1)

O(|V |2 )

d-

O(log |V |)
O(log |V |)
 d log |V | 
 log |V | 
O
O

log d

log d

O(1) (.)

log d

O(|V | log |V | + |E|)

AF
T

O(log |V |)

O((|V | + |E|) log |V |)




log |V |
O (|V | d + |E|)

DR


O(|V |2 ), O((|V | + |E|) log |V |). ?
, ( ) ( ).
|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 ). ,
|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
2

S
4

AF
T

dist[] . :
Update((u, v) E)

dist[v] min{dist[v], dist[u] + l(u, v)}

Update , v u l(u, v). :

1. Update v ,
u v dist[u] .
2. dist[v] , s v
().

DR

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

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.
.

AF
T

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 :
e E:
Update(e)
. 4.14. .
10

G
1

DR

S
A
B
C
D
E
F
G

0
0

1
0
10

2 3 4
0 0 0
10 5 5
10 6
11

12 8 7
9 9 9
8 8 8

5 6 7
0 0 0
5 5 5
5 5 5
7 6 6
14 10 9
7 7 7
9 9 9
8 8 8

: |V |, .
, ,
.
4.6.2.
(E, B) . 4.14 4,
A E B A.
. A E 2.
1, ,
0, 1, 2 .

4.7.

119

AF
T

,
4.6.1 .
? , ,
s t |V | 1
.
,
( ). , (
: ), Update- - dist. |V | 1 , . ,
|V |- - ,
( , ,
|V | 1 ). , , ,
. - dist[u] . Update(u, v) dist[v],
dist[v] dist[u] + l(u, v). dist
;
, , .

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.

) , .
, ,
( ) . ,
.

AF
T

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

4.1. A.
1

DR

(a) ,
.
(b) .

4.2. , :
2

5
F

1
1

121

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

AF
T

ff
.

ff , .

, , .

4.5. - . ,
.
4.6. , {u, prev[u]}, , .

DR

4.7. G = (V, E) (, ) , 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 ).

AF
T

4.13. G = (V, E)
. e E l e . , s t,
L . , ( , L).
(a) , ,
s t.
(b) , . s t? , O((|V | + |E|) log |V |).
4.14. G = (V, E) v0 V . ,
, v0 .

DR

4.15. . G = (V, E)
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)

AF
T

|h| = 0:
null
:
x h[1]
SiftDown(h, h[|h|], 1)
x
MakeHeap(S)

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

DR

BubbleUp(h, x, i)
{ x i h }
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). ? (: ,
n
P
log(n/i).)
i=1

(d) , d- ?

AF
T

4.17. , 0, 1, , W , W
.
(a) , , O(W |V | + |E|).
(b) O((|V | + |E|) log W ).

4.18.
, , . , ,
,
. best
:
best[u] = s u.

, best
S, A, B, C, D, E, F 0, 1, 1, 1, 2, 2, 3 ().

DR

1
3

F
1

, 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. .

DR

AF
T

4.21. . c1 , c2 , , cn . , c1 , c2 , c3 . ri, j
ci c j : ci ri, j c j .
ri, j r j,i < 1, , - .
(a) , , ri, j , s t. (:
.)
. , - ci1 , ci2 , , cik ,
ri1 ,i2 ri2 ,i3 rik1 ,ik rik ,i1 > 1. , -
ci1 , . ( ,
!)
(b) , . (: .)
4.22. . , , V . i, pi , i j ci j > 0 . , .
G = (V, E),
. C :
P
(i, j)C

r(C) = P

(i, j)C

pj
ci j

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 ).

DR

AF
T

(i, j)E

AF
T

, .
; ,
, . : , (greedy) , ( ) , .
. () .

5.1.

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

DR

E
4
6

5
F

, ,
:
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:
A

E
2

5
F

AF
T

. ?

.
2. n n 1 .

, ,
. n
. (
).
, n 1 .
:

DR

3. G = (V, E),
|E| = |V | 1, .

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

5.1.

129

5.1.1.
(Kruskal)
;
, .

AF
T

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

, : , BD , , . . 14.
. 5.1. , .

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 ).

V S

AF
T

e0

DR

. e ,
e0 , ( , ). T . e0 e
, . , ( e0 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)

A
2

C
2

E
2

AF
T

(b)

X :

T:

(c)

T 0:

V S

DR

(disjoint
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)

AF
T

X {}
E
{u, v} E :
Find(u) 6= Find(v):
{u, v} X
Union(u, v)

5.1.4. :

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

DR

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


.

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

5.1.

133

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

AF
T

, MakeSet O(1). Find , , . Union, , .


( ),
. ( ). ,
. ,
. ? ( ) ,
rank. (union by rank).1
Union(x, y)

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

DR

. 5.6.

, (
). , 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

C0

B0

D0

E0

F0

G0

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


D1

G0

F1

AF
T

E1

A0

B0

C0

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


D2

F1

E1

C0

A0

G0

B0

DR

Union(B, G):

D2

E1

F1

A0

B0

C0

G0

, , , ,
. , k
, 1
k.

3. n, n/2k
k.

5.1.

135

, log2 n. ,
log2 n,
Find Union.

AF
T

.
O(|E| log |V |) (, log |E| = O(log |V |),
|E| |V |2 ). . , .
. ,
. , , (, O(|E|)), . , ,
,
.
? ? Find , ? (path compression)
. 5.7;
. 5.7. . Find(I) Find(K).

A3

DR

A3

B0

C1

E2

D0

G1

F1

I0

J0

B0

H0

C1

E2

D0

G1

K0

F1

H0

K0

A3

B0

C1

E2

F1

D0

H0

J0

I0

K0

G1

J0

I0

136

5.

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

DR

AF
T


, , : Find Union. (amortized cost) O(1)
O(log n).
() ?
Find ?
,
, . ,
, , . (
: , , , ,
. , , .)
, , , .
: Find ( ) , Union ( Find) . ,
, .
, ,
. ,
,
. ,
,
. , 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

DR

AF
T

.
. ,
; ? (S, S).
, , (
) . 1/|V |2 ( ,
(S, S)
O(|V |2 ) ( S S).
) , (, 99%, , O(|V |2 )) G.
O(|E||V |2 log |V |)
. , O(|V |2 log |V |),
(David Karger), .

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

C/(kC/2) = 2/k. , 1 2/k = (k 2)/k
. ,
,
|V | 2 |V | 3 |V | 4
2 1
2

=
.
4 3
|V |
|V | 1 |V | 2
|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
n
n
n
+ k+2 + k .
2k+1
2
2

DR

AF
T

, , ,
n , log n,
n log n.
Find ( ) . , - . log n (,
?). O(log n) ,
.
Find ( , . ) . Find , .
?
, , : {k + 1, , 2k }
2k . ( )
.
O(log n) .
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 .

V S

AF
T

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

DR

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

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 .

AF
T

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

{}
A
A, D
A, D, B
A, D, B, C
A, D, B, C, F
A, D, B, C, F, E

DR

0/nil

/nil
5/A
2/D

/nil
6/A
2/D
1/B

/nil
4/A

/nil
/nil
/nil
/nil
5/C
4/F

/nil
/nil
4/D
4/D
3/C

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

5.2.

141

. ,
, :

A
B
C
D

70
3
20
37

DR

AF
T

? , ? , {0, 01, 11, 001},


001 . , (prefix-free): .
( ) ; (?),

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

A
B
C
D

0
100
101
11

1
[60]

A [70]
[23]

B [3]

D [37]
C [20]

142

5.

,
f1 , f2 , , f n n ?
=

n
X

f i ( i- )

i=1

AF
T

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

DR

?
. , , ( ), . , - x0, x1
, x? , . ( ,
, ,
, .)
, .
- . , ,
. , ,
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

f1

f4

f2

AF
T

, (. 110).
O(n log n), ( 4.5.2).
Huffman( f )

{: f [1n].}
{: n .}

{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]

DR

: . 5.10
?

5.3.

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

144

5.

, ,
; ( , , 200 ):

0,15
0,10
0,70
0,05

0,30
0,05
0,25
0,40

0,20
0,30
0,30
0,20

AF
T

? : , ?
200 . 290 , 380 400
( ).
.
,
(), :
.

DR

n p1 , p2 , , pn (
n = 4) m . m i mpi ; ,
, pi (
1/2k ). ( 5.19),
n
P

mpi log2 (1/pi ) ,
i=1

H(p1 , , pn ) =

n
X
i=1

pi log2

1
pi

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

5.3.

145

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

DR

AF
T

( ).
( ),
true/false , . (satisfying
assignment).

: true, , false. : false . true,
( - ). ,
, .
, : - , .
{: .}
{: , .}
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 .

AF
T

, - , .

; . , , . , ( 5.33)?

5.4.

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

DR

. 5.11. (a) . (b) ,


30 .

(a)

(b)

b
d
a

,
, 30 . x
S x ( 30 ). , S x
, .

5.4.

147

, :
: B S1 , , Sm B.
: Si , B.
: .
:
B :
Si

AF
T

, :
a ( ). c,
j f , ,
. b, e i!
, , :
. , B n
k .
k ln n .

, n t ,
t ( n0 = n). k . , ,
n t /k . ,


n
1
,
n t+1 n t t = n t 1
k

n t n0 (1 1/k) t .

DR

1 x ex x,

x = 0 ( - , ).
y

1
ex
1 x

148

5.



1 t
n t n0 1
< n0 (e1/k ) t = net/k ;
k

AF
T

t = k ln n n t ne ln n = 1, ,
.
, ( ) , , ln n. : , ln n ( 5.34).
,
( , )?
, ,
( , 8) ,
.

5.1. .
A

DR

(a) ?

(b)
?

(c) . ?
, .
5.2. .
1
3
2
C
A
B
D
8

4
E

6
F

2
G

1
1

(a) .
, ( ,

149

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

AF
T

5.4. , n
k , n k .

5.5. G = (V, E) w e 0. ,
G, s V .
(
e w e0 = w e + 1).
(a) ? (,
, , .)

(b) ? (, ,
, .)

DR

5.6. , , .

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.

AF
T

(d) G , .
(e) e G, ,
.
(f) G e, e
MST.
(g) , , .
(h) .
(i) .
(j) r > 0 r- ,
r. G r- s t,
G r- s t.
5.10. T G, H
G. , T H
H.

DR

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). .

.
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 ? , .

AF
T

5.18. ( ) .

e
t
a
o
i
n
s
h

r
d
l
c
u
m
w
f
g

17,3%
10,2%
7,7%
6,8%
5,9%
5,8%
5,5%
5,1%
4,9%

4,8%
3,5%
3,4%
2,6%
2,4%
2,1%
1,9%
1,8%
1,7%

y
p
b
v
k
j
x
q
z

1,6%
1,6%
1,3%
0,9%
0,6%
0,2%
0,2%
0,1%
0,1%

DR

(a) .
(b) (
)?
(c) (. . 144)
H=

26
X
i=0

pi log2

1
.
pi

, , ?
(d) ,
? , ,
?

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


n
X
1
mpi log2 .
i=1

pi

152

5.

(b) ( ).
n
X

pi log2

i=1

1
pi


. ( n)
? ?

AF
T

5.20. , , (perfect
matching), ,
.
5.21. .

: G = (V, E) w e .
: ,
.

5.22.
, .
, e . MST, e.

DR

(a) .
(b) ,
G = (V, E) {w e } :

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
, . ,
, .
b (e) > w(e).
(a) e 6 E 0 w

153

b (e) < w(e).


(b) e 6 E 0 w
b (e) < w(e).
(c) e E 0 w

b (e) > w(e).


(d) e E 0 w

5.24.
.
: G = (V, E), w e , U V .
: ,
U ( ).

AF
T

( .)
O(|E| log |V |) .
(: , U?)

5.25. (
) : Increment ( ) Reset ( ). ,
n Increment Reset, , O(n). ,
O(1).

DR

5.26. .
x 1 , , x n - x i = x j - x i 6= x j . , (,
n ). ,
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
P
n m=
di .
i=1

AF
T

5.28. , n . ,

, , ,
.
,
, .

5.29. (prefix-free encoding)


( ),
() .
, k1 , , kn
2k1 + + 2kn 1. (:
.)

DR

5.30. .
, .
0, 1 2. . ,
n f1 , , f n
{0, 1, 2}, .
5.31. , f i ( i), ci ,
,
i- P
f i ci l i .
l i ,
i

5.32. n . i
t i . . ,
i
P
, i
t j . j=1

,
.

155

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

DR

AF
T

5.35. , n ( )
n(n 1) .

AF
T

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

6.1.

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

DR

. 6.1. .

, 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}

AF
T

, {dist[u]: u V } : - , , , , . ,
, , . , .
: , . ?
( A B , B A);
.

6.2.

DR

(longest increasing subsequence) a1 , , an . ai1 , ai2 , , aik ( 1 i1 < i2 < < ik n) , .


, .
, 5, 2, 8, 6, 3, 6, 9, 7 2, 3, 6, 9:
5

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

158

6.

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

AF
T

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

DR

L[ j] ? i
G R , ( 3.5). L[ j] j, |E|
O(n2 ); .
.
, , . (
4), L[ j], prev[j] i, . .

6.3.
, , . ?
, - ( SNOWY SUNNY).
S
S

N O W
U N N
: 3

Y
Y

S
U

N O W
N
N
: 5

Y
Y

6.3.

159

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

AF
T


L[ j]. ? , . (i, j) i < j, a1 , a2 , , an .
L[ j] = 1 + max{L[1], L[2], , L[ j 1]}.

, L[5]
, .
L[5]

L[1] L[2]

L[1]

L[3]

L[4]

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

DR

L[1]

L[1]

L[3]

L[1] L[2]

L[1]

L[n] (
?), .

? ,
. ( , .) .
, :
L[ j] L[ j 1]. , , .
, . ,
( ).

160

6.

AF
T

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


( , ) , : ,

. .
, ,
.

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]

y[ j]

x[i]
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]},

AF
T

diff(i, j) = 0, x[i] = y[ j], 1 .


, EXPONENTIAL POLYNOMIAL E[4, 3] EXPO POL. :
O

O
L

E[4, 3] = min{1 + E[3, 3], 1 + E[4, 2], 1 + E[3, 2]}.


E[i, j] (. 6.4).
? ,
E[i 1, j], E[i, j 1] E[i 1, j 1] , E[i, j].
, , ,
. , , .
, ,
.

DR

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


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

(a)

j1 j

i1
i

(b)

E
X
P
O
N
E
N
T
I
A
L

P
0 1
1 1
2 2
3 2
4 3
5 4
6 5
7 6
8 7
9 8
10 9
11 10

O
2
2
2
3
2
3
4
5
6
7
8
9

L
3
3
3
3
3
3
4
5
6
7
8
8

Y
4
4
4
4
4
4
4
5
6
7
8
9

N
5
5
5
5
5
4
5
4
5
6
7
8

O M I A L
6 7 8 9 10
6 7 8 9 10
6 7 8 9 10
6 7 8 9 10
5 6 6 8 9
5 6 6 8 9
5 6 6 8 9
5 6 6 8 9
5 6 6 8 9
6 6 6 7 8
7 7 7 6 7
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]

AF
T

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

, ,
.
(i, j) , :
(i, j 1) (i, j),

DR

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

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

(. . 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.

E
X
P

AF
T

O
N
E

N
T
I

DR

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

1
2
3
4

6
3
4
2

30
14
16
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

AF
T

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

x2

x3

x4

x5

x6

x7

x8

y1

y2

y3

y4

y5

y6

y7

y8

x9

x 10

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 ).

DR

ff , .

,
.

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

6.4.

165

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

AF
T

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

K[w] = w.

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

, , 0. :

DR

K[0] 0
w 1 W :
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.

AF
T


{A, C, G, T} (), ( ).
(
3 ) 0,1%. , . , .
, . (
), . , .
?
1.
(, , ). .
GenBank, ,
1010 .
BLAST,
, .

DR

2. (DNA sequencing), , () 500700 . ,


,
?
, . , , . 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.

AF
T

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


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

(a)

(b)

C
1

10
A
B
50 20 20 1

D
10 100

(c)

BC
A
50 20 20 10

D
10 100

(d)

DR

A (B C)
50 10

D
10 100

(A (B C)) D
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)
(A (B C)) D
(A B) (C D)

20 1 10 + 20 10 100 + 50 20 100
20 1 10 + 50 20 10 + 50 10 100
50 20 1 + 1 10 100 + 50 1 100

120200
60200
7000

, . , ( ,

168

6.

AF
T

,
. ,
.
, , , , . ,

.
( )
- (. 1.5)
K[]. K[w]
, ,
.
(memoization).
{ - K[w] (w ).}
{ .}
Knapsack(w)

w -:
K[w]
K[w] max{Knapsack(w w i ) + vi : w i w}
K[w] - w
K[w]

DR

. O(nW ),
. , O(), ,
(-
).
, , . : , , , . , 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)
D

(c)
A

AF
T

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

DR

, j i.
i = j : C[i, i] = 0. j > i C[i, j].
Ai Ak Ak+1 A j k i j.
: 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.
.
.

AF
T

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

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

AF
T

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

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

DR

dist[i, j, k 1]

dist[k, 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)
(!) ?

AF
T

. 6.9. 10.

DR

, . , . 8,
.
( (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|, :

AF
T

C[{1}, 1] 0
s 2 n:
S {1, 2, , n} s, 1:
C[S, 1]
j S, j 6= 1:
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 ).

DR

, , : . , ,
, , O(1)
. .
? : , (),
. ,
, ,
.
.
, 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.

2
5

AF
T

DR


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

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

I[u] = max 1 +

X
w u

I[w],

I[w] .

w u

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

175

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

AF
T

6.1. .
,
5, 15, 30, 10, 5, 40, 10

DR

15, 30, 10 , 5, 15, 40 . :


: 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 .

AF
T

6.4. s[1n] n, , (, ). , ,
dict(w) = w 0 1.

(a) , , , s[1n]
. O(n2 ) (, dict
O(1)).
(b) , , .

DR

6.5. . (), 4
n .
, .
. , (
).
(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.

AF
T

6.7. . , ACGTGTCAAAATCG ACGCA AAAA ( ACT


). , x[1n]
- (
).
O(n2 ).
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).

DR

6.9. , .
n n ( ). ( ). : 20 3, 10,
20 + 17 = 37. , ,
: 20 + 10 = 30.
, ,

.

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 .

AF
T

(a) , ( ,
) :
.

(b)
O(n2 ). v1 , , vn , O(n2 ), O(1) ( ).

DR

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

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).

AF
T

6.19. ( 6.17): , k . (, 5 10 , k = 6, 55 ,
65 ).
6.20. .
, :
begin
do
else
end
if
then
while

5%
40%
8%
4%
10%
10%
23%

DR

: ,
.
. 6.12 , , ( 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
begin

end
do

while

then

begin

else

if

if
while

else

then

AF
T

end
3 ( : {B, E, G}).
A

: T = (V, E).
: T .

6.22. O(nt) .

DR

: a1 , a2 , , an ;
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
Q
(1 (1 ri )mi ). Mi ci ,
i=1

B (ci B

181

). B, r1 , , rn c1 , , cn
.

AF
T

6.24. .
m n
O(mn). m n . ?
(a) , ,
. , O(n).
(b) , .
,
(0, 0) (n, m) .
(k, m/2) k. , k. (, m .)
(c) .
FindPath((0, 0) (n, m))

k (. )
FindPath((0, 0) (k, m/2))
FindPath((k, m/2) (n, m))

, ,
O(nm), O(n).

DR

6.25. (3-partition).
a1 , , an , . ,
{1, , n} I, J, K ,
n
X
X
X
X
1
ai .
ai =
aj =
ak =
iI

jJ

kK

i=1

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


, P
, , n
ai .
i

6.26. . , , . , .
= {A, C, G, T}. x = ATGCC
y = TACGCA :

A
A

G
G

C
C

C
A

182

6.

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

AF
T

6.27. . ( 6.26) ,
. , , 10 ,
. k c0 + c1 k,
c0 c1 ( c0 > c1 ). ?
6.28. . , ,
. ,
x[1n] y[1m] (. 6.26)
x 0 y 0 x y,
. O(mn).

DR

6.29. . , , . n, (l i , ri , w i ), 1 l i ri n [l i , ri ], w i .
.
6.30. .
, , , . , , k = {A, C, G, T}.

ATTC AGTC

CGCG AGGA ATCA

183

AF
T

,
, . , , - , ,
( ) .

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

(a) ; .

DR

(b) (
n k) . (:
.)

AF
T

, , , . ,

ff (
s t, , );
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 () .
?
:

AF
T

x 1 + 6x 2 max
x 1 200
x 2 300

x 1 + x 2 400
x1, x2 0

DR


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

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

(a)

(b)

x2

x2

400

400

300

300

200

200

100

100

: 1900
c = 1900
c = 1500
c = 1200
c = 600

100

200

300

400

x1

100

200

300

400

x1

186

7.

AF
T

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

, (infeasible);
2) ,
; ,
x 1 + x 2 max
x1, x2 0

(unbounded) .

DR

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

1400

200

100

100

200

200

7.1.

187

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

AF
T

,
() -, 13 .
x 1 , x 2 , x 3 (
). x 1 x 2 ,
x 3 : 400. , ,
, , x 2 + 3x 3 600.
?
:
x 1 + 6x 2 + 13x 3 max
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

AF
T

x1

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 ;
.
? :

AF
T

1. 80% .
, 30% .

2. 320 400
.

3. 8 .
.
,
,
.
, . :
w i = i- (i = 1, , 12); w0 = 30;
x i = , i- ;

DR

oi = , i- ;

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

AF
T

,
-.
, , .
( : // ). 10,6 , 10,6 10,
11, ( ). ,
(
), .
( , ) : 8, , .
7.1.3. :

DR

; 7.3. : A B,
B C, A C.
, ( ) ( ). AB 3 , BC AC 2 4 .

( ); (,
, ). ?
: (, AB)
0
x AB , x AB

. , 1
,
.

7.1.

191

. 7.3. A, B C. .

A
12
a
11

AF
T

13

10

. :

0
0
0
3x AB + 3x AB
+ 2x BC + 2x BC
+ 4x AC + 4x AC
max
0
0
x AB + x AB
+ x BC + x BC
10

[ (b, B)]

0
x AB + x AB
0
x BC + x BC

[ (c, C)]

+ x AC +

+ x AC +

0
x AB + x BC
+

+ x BC +
+

0
x BC

12

8
6

13

+ x AC 11

DR

0
x AB
0
x AB

0
x AC
0
x AC
0
x AC
0
x AC

[ (a, A)]

[ (a, b)]
[ (b, c)]
[ (a, c)]

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 ,
, , .
, . , :

AF
T

LongestPath(G)
G
ShortestPath(G)

: x P, y Q , Q( y)
P(x)
P.
P

Q( y)

P(x)

DR

( , P = LONGEST PATH Q =
= SHORTEST PATH ?) -
, P
Q!
( ) ,
.

7.1.4.

:
1. .
2. .
3. .
.
1. , .

7.2.

193

2a. -

n
P

ai x i b ,

i=1

(slack variable) s 0
n
X

ai x i + s = b,

i=1

s 0.
, , s, , .
, ( s 0)
( ).

AF
T

2b. A = B A B A B.

3. , () x
x + x x + , x ( ). ,
x x + x .
( , ,
) , , , .
, :
x 1 + 6x 2 max

DR

x 1 6x 2 min

x 1 200
x 2 300

x 1 + x 2 400
x1, x2 0

x 1 + s1 = 200
x 2 + s2 = 300
x 1 + x 2 + s3 = 400

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=
x2
6

AF
T

c x c T x. ,
:

x1
200
200
1 0  

x
x 2 300 0 1 1 300
x2
x 1 + x 2 400
400 .
1 1
| {z }
| {z }
A
x
b

A : x
b.
, Ax b. ,
ai x bi

i = 1, , m,

a1 , , am A.
-
c T x max,
Ax b,

DR

x 0.

(
). 7.4(b) s t, 7 . ?
. 7.4. (a) . (b) .

(a)

(b)

10 1

a
2

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.

AF
T

2. u, s t, :
X
X
f wu =
fuz .
(w,u)E

(u,z)E

(flow conservation),
.

, s
t; (size) :
X
X
size( f ) =
fsu =
fut .
(s,u)E

(u,t)E

DR

: { f e | e E},
( ). .
, . 7.4 11 s x y , x y. fsa + fs b + fsc 27 : 11
(, 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

1
s

1
s

AF
T

1
1

(c)

(d)

(e)

(f)

DR

1
1

: ,
. 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 :

f
cuv

cuv fuv , (u, v) E fuv < cuv ,


(v, u) E f vu > 0.

f vu ,

AF
T

( )
. , , , , , (

). s t, .
7.6 ( ,
); .
7.2.4.

, , , .
?
. . 7.4 ,
(L = {s, a, b} R = {c, d, e, t}):
L

DR

10

5
e

L R, , L R, 7. ,
7 ! ( ,
, R = {t}: t
, 7 .)
(s, t)-
L R, s t.

198

7.

. 7.6. , . 7.4.
, .
.

(a)

d
t

10

2
1

(b)

5
1
1

d
2

AF
T

(c)

1
2

(d)

1
2

(e)

10

1
1
b
2

1
5

d
1

1
1

a
t

10

a
2

4
1

3
1

(f)

10

1
4

DR
1

10

10

5
2

e
d

2
1

1
5

7.2.

199

L R; :
f (s, t)- (L, R)
:
size( f ) capacity(L, R).

AF
T

, . ,
. , ({s, b, c}, {a, d, e, t})
19. 7, . ,
:


.
(s, t)-.

, ( ) . ? ,
t s
G f . L , s
G f , R : R = V L.
R

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.

AF
T

, .
,
1, C|E|, C (?). : C ? (, , )
?
7.31. , , C, s t. , , , ,
O(|V | |E|), .
O(|V | |E|2 )
.

7.3.

7.7 () ( ) ()1 . (,
) ?
: (perfect matching)
?

. 7.7. , .
?

DR

(
)! - s
- t .
1
, ,
(bipartite).

7.4.

201

(. 7.8) 1. , , . ,
? ?
. 7.8. . .

AF
T

DR

? , ,
. ( 70%
30%!)
, , . , ,
.
: ,
(
). , , : , . , (
8) .

7.4.

, ,
( ). , ,
, . ,
:
, , .

202

7.

, , :
x 1 + 6x 2 max
x 1 200
x 2 300
x 1 + x 2 400
x1, x2 0

AF
T

- (x 1 , x 2 ) = (100, 300) 1900. ,


: ( 6),

x 1 + 6x 2 2000,

2000 .
( , )
? , 5 1

x 1 + 6x 2 1900.

DR

, 1900 ! - ,
, , ?
, ,
, ( ) 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 :

x 1 + 6x 2 200 y1 + 300 y2 + 400 y3

y1 , y2 , y3 0
y + y3 1
1
y2 + y3 6

AF
T

yi ? ,
, ( y1 , y2 , y3 ) = (5, 3, 6).
( 200 5 + 300 3 + 400 6 = 4300).
, 200 y1 + 300 y2 + 400 y3
.
:
200 y1 + 300 y2 + 400 y3 min
y1 + y3 1
y2 + y3 6

y1 , y2 , y3 0

,
() . -
, .
:
: (x 1 , x 2 ) = (100, 300);

: ( y1 , y2 , y3 ) = (0, 5, 1).

DR

1900, . . 7.9.

. 7.9. ,
. ,
, .

( )

,
. , ,
1

y1 0 y2 0.

204

7.

.
:
ff y j ; () .
ff x i ( y j ): ( y j ) x i , .

AF
T

ff yi ,
.

,
(. 7.10). , , . 7.11. -, ( ) :
. : A = (ai j ) ,
.

. 7.10.
.

DR

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

x j 0 j N

yi 0 i I

ai1 x 1 + + ain x n = bi i E

ai j y1 + + am j ym = c j j 6 N

7.5.

205



. , . s t
s t : ,
s t.
S

AF
T

, : - ,
s t. ?
: s t, , ! ( 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

AF
T

. , . ,
(mixed strategy) x 1 , x 2 x 3 .
x = (x 1 , x 2 , x 3 ) , 1. ,
y = ( y1 , y2 , y3 ).1
, , , i, j, x i y j . ,
() ( )
X
X
Gi j P( i, j) =
Gi j x i y j .
i, j

i, j

DR

, .
?
. , ,
( x = (1/3, 1/3, 1/3)).
? , . ,

1
1
1
0 + (1) + 1 = 0.
3
3
3

0
( ). ( y1 , y2 , y3 ) , ,
. :
!
X
X
X
X
X
1
1
Gi j x i y j =
Gi j y j =
yj
Gi j =
y j 0 = 0,
i, j

i, j

,
G 0.
1
, , .

7.5.

207

AF
T

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

G=
3
2

1
1

DR

,
x = (1/2, 1/2). ? 1/2, 0. ,
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

AF
T

x1 x2 + z 0
x1 + x2 = 1
x1, x2 0

, ,
, , y, . ,

( y1 , y2 ), max{3 y1 y2 , 2 y1 + y2 } .
{z
}
|

w min

DR

3 y1 + y2 + w 0

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

i, j

i, j

, ( , )
: (
) .

7.6. -

AF
T

- . ?
- :
v
v v 0 :
v v0

DR

(. 7.1 7.2). n
x 1 , , x n ?
x i Rn .
n x 1 , , x n ,
, ( ,
). ,
.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

x 2 300

x 1 + x 2 + x 3 400

x 2 + 3x 3 600

B
3

x1 0

AF
T

x1

x3

x 1 200

x2 0

x3 0

DR

. , ,
, .

, ? n , n ,
. , n, , . :
n , .1

, n 1
.

, 7.12 A C 3 },
7
{,
.
1
: 2 ,
3 },
4
. 7.12 B {,

2 ,
4 }.
5
{,
. , , .

7.6. -

211

7.6.2.
- :
1) , ( ,
);
2) , .
, ,
. - , , .
, .

AF
T

c T x max
Ax b
x0

x = (x 1 , , x n ) .
. , , , , n {x 1 0, , x n 0} . ( , .) -, ,
. :
, ci 0
i.

DR

, ci 0 i, x 0
() . ,
ci > 0 - i, , , x i . (,
,
x i .)
, , x i , ci > 0.
x i ? - . , x i 0
x i , - ,
, . n , .
, :
2x 1 + 5x 2 max

2x 1 x 2 4

x 1 + 2x 2 9

x 1 + x 2 3

x1 0

x2 0

212

7.

AF
T

- , 4 .
5 x 2 0,
. x 2 ,
x 1 + x 2 3, x 2 = 3, , .
3 .
4

, , , . u - ?
. , ,
. , x y1 , , yn x ,
u:
u

y2

y1

, , ,
ai x bi , x , ,
yi = bi ai x.

DR

n yi , , x y x i y j .
, yi . (, ), .
1. y 0,
, u.
2. u y-.
3. cu + cT y, cu
u, c .
, ! 7.13 .
- .
, ,
, 0. ,
. ,

7.6. -

213

. 7.13. -.
:

4 }
5
: {,
( ).
: 0.

2x 1 + 5x 2 max
2x 1 x 2 4

x 1 + 2x 2 9

x 1 + x 2 3

x1 0

x2 0

: x 2 .
5 ,
3

. x 2 = 3.
4 }:
3
: {,

y1 = x 1 ,


( y1 , y2 ):

y2 = 3 + x 1 x 2

AF
T

4 }.
3
: {,
: 15.

15 + 7 y1 5 y2 max
y1 + y2 7

3 y1 2 y2 3

y2 0

y1 0

y1 + y2 3

: y1 .
4 ,
2

. y1 = 1.
2 }:
3
: {,

z1 = 3 3 y 1 + 2 y 2 ,


(z1 , z2 ):
7
3

1
3

22 z1 z2 max
1
3

5
3

z1 + z2 6

z1 0

z2 0

2
z 1
3 2
1
z 4
3 2

2 }.
3
: {,
: 22.

: ci < 0.

2 }
3
{,
(
).
(x 1 , x 2 ) = (1, 4).

DR

1
z
3 1
1
z +
3 1

z2 = y2

2 }
3
{,

y1
3 }
4
{,

1 }
2
{,

x 2

4 }
5
{,

1 }
5
{,

, ,
( ), . (. . 210), ,
. ,
( ).

214

7.

7.6.3.
- , .

AF
T

. , ?
: , .
: ,
. , , -!
, , (. 7.1.4):
c T x min,

Ax = b x 0.

( - ; c .) , :
bi < 0, i- 1.
:

ff m z1 , , zm 0, m
.
ff , zi i- .
ff z1 + z2 + + zm .

DR


zi = bi i, .
-, .
. z1 + + zm , zi , ,
.
zi (-) - !1
.
? zi , - , . ,
: - zi ,
. , -,
.

. 7.12 B ,
(
1

: , . - , ,
. , , , . .

7.6. -

215

AF
T

2 ,
3 ,
4 ).
5
,
, , 2 ,
3 },
4
2 ,
3 },
5
, ({,
{,
2 ,
4 }
5
3 ,
4 }),
5
{,
{,

(0, 300, 100).
- : , ,
. .
( ).

(perturbation):
. , . , , 2 ,
3 ,
4
5 - ,
,
.

DR

. ,
( , ). - . ,
x i , ci . , x i , .
x i , .
- .
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):
2x 3

=2

x2 + x3

=3

AF
T

x1
x1 + x2

x4 = 4

x 2 + 3x 3 + x 4 = 5

(, - ), . ( 1) :
x1

2x 3

=2

x2 + x3

=3

x 2 + 2x 3 x 4 = 2

x 2 + 3x 3 + x 4 = 5

DR

, x 1 ( x 1 ).
x 2 , x 3 , x 4 : , 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 ) . , ,
. , .

DR

AF
T

, mn4 mn,
- . ,
( 7.6.2)
.

O((m + n)n).
, , ( ) cu + c y, cu u. : ci > 0 ( ,
, - ). ,
yi , , , yi .
, ( yi ) , .
, - O(mn).
? , ,
n
, Cm+n
. n. , . , - . ,
- .

7.7. :
, . , ,
, ,
.
(
) . , , .
ff true
false.

218

7.

ff AND OR 2.

ff NOT 1.

, .

AND

OR

AF
T

NOT

OR

AND

true

NOT

true

false

DR

.
: ? (

.)
.1 x g g, 0 x g 1. :
g

true

false

OR

AND

NOT

xg = 1

xg = 0

h0

x g xh
x g x h0
x g x h + x h0

h0

x g xh
x g x h0
x g x h + x h0 1

h
x g = 1 xh

,
, .
,
. ,
.

7.7. :

219

DR

AF
T

- ( ).
,
. , , .
1979 , , , .
, , ( ). , . ,
( ) , ,
. -, .
:
, ,
.
(Narendra Karmarkar), , ,
() . ,
( ), -,
. .
, ,
, - ,
.

0 false 1 true.
, x out , .
?
! :
,
. , .

220

7.

,
, , . , . ,
, , ,
!
, NP-, , , ( ), .

AF
T

: ? .
? , . !

7.1. :
5x + 3 y max
5x 2 y 0
x + y 7
x 5

DR

x 0
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 . .

, .

AF
T

7.4. ,
. ,
.
, .
, - 3000
() . ? ( .) .

7.5. : , .
1 1,5 ;
70 . 2 1 60 . 10 ,
20 . : 14
6 .
240 180 . . 110000 . ,
.

DR

(a) .

(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

AF
T

7.9. ( 3x 12 5x 1 x 2 ) .
x 1 , x 2 , , () .
7.10.
S T , .
4

20

12

DR

10

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)
?

AF
T

7.14. , , . , . : ,
. ( , ):

+2
1

0
2

3
+1

7.15. , :
0
1
1
0
2
1
3
2

1
2
1
0
0
1
2
1

DR

0
0
1
1
1
1
0
0

1
1
1
1
3
1
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
16
371
346
884

()
0,85
1,62
12,78
8,39
0,00

()
0,33
0,20
1,58
1,39
100,00

()
4,64
2,37
74,69
80,70
0,00

()
9,00
8,00
7,00
508,20
0,00

224

7.

, . , ( ). .

AF
T

7.17. ( ).
4
C
A
9
7
2
S
T
2
5
6
B
D
3
(a) f .
(b) G f ( ). , S,
, T .
(c) (bottleneck edge), . .
(d) ( ) .
(e) .
(:
, .)

DR

7.18. .
.
(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 ( ) .
?

AF
T

7.21. , .
, -
.
7.22. G = (V, E), ce , f s t.
, : (u, v) cuv ,
cuv 1. , f
: fuv = cuv .
,
. ,
O(|V | + |E|).

DR

7.23. G = (V, E) , , 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

AF
T

(b) , M ,
.
(c) ,
O(|V | + |E|), .
(d)
, O(|V | |E|).

7.25. . ,
.
1

DR

(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 ).
P
,
a ji x i b j ,
i

AF
T

x, ,
P

a ji x i < b j .
i

x 1 + x 2 2,

x 1 x 2 2,
x 1 1,

x 2 0

,
.
x (characteristic), 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.

DR

(a) ,
.
(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. ?

AF
T

7.29. . . n ; i- si .
m ; j- p j , ,
L j {1, 2, , n}
.
. .
(a) ,
{0, 1}. (
x i i- y j j-
. y j x i ?)

DR

(b) ,
(
),
( ) . (: ,
, , ,
, .)
7.30. . 7.3. ,
-
. , ,
k k , - k .
. (: .)

7.31. .
1000

1000
1

S
1000

T
1000

229

(a) , ,
! ( , , .)

, .
G = (V, E), s, t, {ce },
. , , 1, s t
. (fattest) s t .

AF
T

(b) , s t
() .

(c) , G
|E| s t.

(d) ,
, O(|E| log F ) , F . (:
5.4.)

DR

,
,
O(|V | |E|) .

NP-
8.1.

DR

AF
T


,
, ,
. ,
(n) ,
(, n, n2 n3 ) n.
, , ,
(, , ) . , n! n
n , n nn2 , s t.
, ,
(. ). , , - , .
, : , , (
, , ,

, , , () . , , ,
. ( ): ,
264 1 = 18 446 744 073 709 551 615 , ! : , ( ) .
1798 , -

8.1.

231

DR

AF
T

, ( ) (, ).
1965 , , , 60-
. , .
: 18 . ,
.
, : , , ? :
, .
,
O(2n ). 1975
25 , 1983 31, 1995 38. ,
45 . , ( ) ,
( ) .
O(n) O(n log n) 100 10 , O(n2 ) 10 . O(n6 )
. :
, . .
, , , , ,
.
, , 10.

). , .
,
:
.

232

8. NP-


(Satisfiability, SAT) (. 3.28 5.3)
( , .),
.
:
(x y z)

(x y)

( y z )

(z x) (x y z ).

DR

AF
T

(Boolean formula in
conjunctive normal form, CNF). 1 ( ) (clauses),
( , ) .
(, x) (x). (satisfying truth assignment) ( , true false), ,
.
,
, , .
, true ,
, , .
, ?
, , . (: ,
.)
? , , ,
n 2n , .
(search problem).
(instance) I, ,
( ),
(solution) S , ;
. , .
, ( ) : ,
.
( .)
,
, .
, .
(search problem) C I ( ) S (),
|I|. , S
I, C (I, S) = true.
1
, ,
.

8.1.

233

AF
T

, ( ) . ,
()
.
(1) ,
5.3.
(2) ,
: , ( 3.28). . 9.

( ), !

(traveling salesman problem, TSP) n 1,


, n n(n 1)/2 , b.
, ,
, b ( , ). ,
(1), , (n) , b:
d(1),(2) + d(2),(3) + + d(n),(1) b.

DR

. 8.1 ( ; , ).

. 8.1. , , 16.

2
6

234

8. NP-

DR

AF
T

, : , . , , .
, ?
: , (, ), .
, . , ,
. ,
: ,
( 8.1).
, , : , -, ? , ,
: ,
, ? , , .
, ( ) . 6.6 ,
(n 1)! , , .

, .
: P
b T
di j b.
(i, j)T

, .1
.

1735 , ( :
) , ( ). ,
, ,

.
? ,
( ), -

1
, , , ,
.

8.1.

235

DR

AF
T

,
. ,
( ). , , ,
.
:
, , , , ( ), ( 3.26). , :
.
: (Euler path)
, ,
. ,
( ).

: , , ? : 64 ();
, (
2, 1). . 8.2 , .
?
, ,
.
, . : , , , .1 , .
1
,
XIX , .
. . .

236

8. NP-

AF
T

. 8.2. .

,
.
: , . , ,
: ,
, , (. ).

DR

(cut) ,
. (minimum cut)
b b ( ) . , . 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. ?

AF
T

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

DR

7, - ,
, ,
. , . (; 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 ( ,
).

AF
T

:
n ( , n n );
n , , , .
7.3 , , . (3D
Matching) . n n n ,
, , . (b, g, p) , b, g p
. n ,
n .
. 8.4?

. 8.4. . .

DR

,
(independent set problem),
6.7, g, g , .

8.1.

239

. 8.5? ? 6.7
,
.

AF
T

. 8.5. ?

DR

. (vertex cover problem) b


b , (
).
. 8.5 ? ? ?
(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. , ,
( ).
( -) .

DR

AF
T

(knapsack problem),
6.4. w1 , , w n
v1 , , vn n . W g (
, , ). , W
g. ,
, .
6.4 O(nW ). , , W , log W ( W ).
:
2n .
, .
,
: , 12
I I I I I I I I I I I I. , ,
, (unary knapsack problem).
, ()
.
:
( ), g = W .
, , ( )
. ,
( , )
W . ,
? , , (subset sum problem),
.
, ? , , , 3-, .

8.2. NP- :

241

8.2. NP- :

,
. :
( P)

3-

2- ( )




AF
T

(NP-)

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?

AF
T

, P (polynomial). NP? no problem ( !),


nondeterministic polynomial time . NP , -
, . NP , (decision
problems), /. (: , ?
.) .

NP ( ), P NP -
, . , P 6= NP
P NP
.

DR

, P 6= NP
? ,
( ); ,
NP: -
, NP- .
, (reductions), .
7 . . A B f h
: A I,
B f (I) S h
(. ). B f (I) , A I. f h,
B A ( ).
A

f (I)

S f (I)

f (I)

h(S) I
I

8.2. NP- :

243


A B
A, B.
, A
B, B .
A B
A B,

AF
T

, ,
( 8.6). NP-
NP- , (-)
NP- NP-.
. 8.6. NP P. , . , NP- ( NP):
P 6= NP, (NP-) P. ,
P 6= NP, ( P NP-).

NP

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 ,
.

AF
T

P NP- , .
( : ). , , NP-. ( , NP.)
NP-, ; (,
) , ( ) (. 10), NP- (, , ).
,
, NP-.

8.3.

DR

NP- . 8.7, ,
.

. 8.7. .

NP

3-

8.3.

245

,
.
(s, t)-

AF
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.
G0

G
s

, V 0 = V {x} E 0 = E {{s, x}, {x, t}}.


G 0 , (s, t)- G:
{s, x} {x, t}, .

(s, t)-

DR

:
G = (V, E),
s, t

x
{s, x}, {x, 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. .

AF
T

,
(s, t)-. , , G (s, t)-, , G 0 .
: {t, x} {x, s} ,
.
, - ,
, . (
.)

(s, t)-. , .
( ),
.
3-

. 3- , ,

DR

(x y z ) (x y z) (x y z) (x y).

( ,
).
g g ,
. ?
. ,

true. : - x, x .
(,
,
). , ,
(, )
. ( ).
?
(x y z) , x, y, z. , ,
. -

8.3.

247

AF
T

, . ( :
, .) (). ,
, ( 4).
, , .
, . , ,
8.8.
. 8.8. (x y z ) (x y z) (x y z) (x y).
1. G ,
. . ,
.
2. g = 4.

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-

AF
T

, , . , ,
. , - , .
: (a1 a2 ak )
(a1 a2 y)(y a3 ak ), y , , . ,

(a1 a2 y1 ) (y1 a3 y2 ) (y2 a4 y3 ) (yk3 ak1 ak ),

DR

yi . ( 3-)
I 0 . , I 0 I .
? , I
, I 0 , ,
ai

yi ,



(a1 a2 ak )

(a1 a2 y1 )(yk3 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
. ,
. ,
(x1 x 2 ) (x2 x 3 )(xk x 1 ).

AF
T

, ,
(
).

, .
, . .
,
, S
G = (V, E) ( ) , V S G (. 8.9).

DR

. 8.9. S , V S : S ,
S, V S .

, (G, g) (G, |V | g).


,
. G g.

250

8. NP-


.
= (V, E),
E
E (complement) G = (V, E) G
( , G). S

G, S G:
,
G G.
g).
, (G, g) (G,
3-

AF
T

3- : (, , ) , . .
,
, (
b, g, p boy, girl, pet).
p1

b0

g0

p0

p2

g1

DR

b1

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

DR

AF
T

, . 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 .
:
, : ( ). ,
,
, , .
, .
:
. , ,
, (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 , ).
: , :
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:

AF
T

1
0

A = 0
0

0
0

0
0
1
0
1
0
0
0
1

0
0
1
0
0
1
0
1
0

0
1
0
0
0
1
0
1
0

0
1

0
0

0
0

DR

A ,
, , , , , , ,
.
, , .

: , 0 1, , .
, :
.
:

1
0

A=
0
1
0

0
0
1
0
1

0
0
1
0
0

0
1

0
.
0
0

A, . -

8.3.

253

AF
T

( ), : 18, 5, 4, 8,
111112 = 31. ,
.
. - 31, (1, 1, 1, 1, 1): , 5 + 6 + 20 =
= 001012 + 001102 + 101002 = 111112 = 31. :
, (n + 1).
( n,
).

DR

, (
) : f h (.
. 242) . , 3-
. : , NP-,
(
). 8.10 .
( )
. x,
Ax b. (
),
( 7.1.4) x i x i 1 x i 0.

,
. 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
e8

e3

e7

e4

e5

AF
T

e6

DR

, .
Ax = 1 ( A m n
, m n )
(. . 8.11) , m + n .
x i ( x i = 0
x i = 1). x j1 + + x jk = 1 k k , . ,
.
, . A, , . (,
m ) x i C
(e, e0 ), e ,
( 8.11), e0 ,
x i = 0 ( ). ,
, , .
.
?
. , , . , . , , ,
0, , , 1. , .
( ).
. ,
- ( C ).

8.3.

255

. 8.11. .

AF
T

DR

, . 8.12.
- G, a, b, c, d. , G , . , , . ( ):
, , ,
( ) :
, ,
( ).
, ,
{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)

b
g

c
h

AF
T

(b)

DR

(c)

(d)

a
c

b
C = {({a, b}, {c, d})}

12 . ,
, C.


G = (V, E) : |V |; u v
1, {u, v} E, 1 + .

8.3.

257

AF
T

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 ). ,
( ).
: .
, , . , |V |,
|V | + , |V |. 9 ,
, ( P 6= NP) .
NP

DR

. 8.7. , , ,
(= NP)
. , . 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

OR

AND

AF
T

AND

true

DR

,
, , true ( , ). ,
(false, true, true) . 8.13.
,
. ( AND),
. , , . ( .)
:
,
. ( ): g , , :
g

true

false

OR

AND

NOT

(g)

(g)

h1

h2

1 )
(g h
2 )
(g h
(g h1 h2 )

h1

h2

(g h1 )
(g h2 )
1 h
2 )
(g h

h
(g h)

(g h)

8.3.

259

DR

AF
T

( , ?) true, (g) g.
.
A .
? , , A,
, .
, . , . , A C ,
I S, S . , I ( , , , S
I, S).
7.7 , ,
( ) , .
C , S
I. .
, I A
, I, S. true , , S
I. , A I, . .

NP ,
(,
). ,
, ( , , );
(unsolvable).
, .

x 3 yz + 2 y 4 z 2 7x y 5 z = 6

( ) , .
1970
( , ,
), 1936 ; -

260

8. NP-

AF
T

(). , ( ,
). .
, ,
. , , .
Terminates(p, x), p x
, p x.
? , ,
, .
. . Terminates(p, x) . :
Paradox(z)

Terminates(z, z)

DR

z , z
, (z).
, . Paradox Paradox(Paradox).
?
. - ,
, .
: , (halting problem)
.
, . , , , .
, ,
? ( , ?)
, .

8.1. . :
:
: , b.
: b, , .

261

:
: .
: , , .
, , .
8.2. . ,
, .
( )?

AF
T

8.3. (stingy SAT) :


k ,
k true,
. , NP-.
8.4. 3- ,
3.
(a) , 3- NP.

DR

(b) NP- . ?
NP- 3-
( , NP-).
,
G, , g. , , , 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.

AF
T

8.7. :
,
. , . (: , ,
, , , . 7.30.)
8.8. 4- (exact 4SAT)
, , . , ,
. , NP-.

8.9. (hitting set) {S1 , S2 , , Sn } b. H b, Si ( Si H 6= i),


, . , NP-.

DR

8.10. NP- . , NP-, 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- ?)

AF
T

8.11. :
, .
.
(a) .
(b) (s, t)- ( s t).

8.12. k- (k-spanning tree) .


: G = (V, E).
: G, k.

, k 2
(a) k- (
NP);
(b) k- NP-. (: k = 2
.)

DR

8.13. NP-.
G = (V, E),
(a) L V , , 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
.

AF
T

8.16. - ,
.
: i j ( 1 n)
0 1
(0 , 1 ). 5 :
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

4
0,9
1,0
0,8
0,0
0,2

5
1,0
0,2
0,5
0,2
0,0

2 3 ,
1 5 . :
. ( ; , {1, 3, 5}
0,2 + 1,0 + 0,5 = 1,7). , . - (experimental cuisine):

DR

: n, n n p 0.
:
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- .

AF
T

8.21. . ( k), k ( k)
.
, x (x)
k-; |x| k + 1 ( ).
k x,
(x) .
(a) . (: , , a b, k 1 a
k 1 b.)
(b) , .
(: .)
8.22. ( i j , i j). ( ). ,
.
E 0 E G = (V, E) (feedback arc set),
.

DR

: G = (V, E) b 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.

AF
T

(c) 6 , .

DR

(d) sc t c , , . , ?

NP-

DR

AF
T

. -
, , .
? , -
, - ( , , ) .
, ,
NP-, ?
, NP-. , - (.
. 253 8.10), NP-
(, ). ? , , ,
, . - ?
, NP- , . , NP- , ( ) (. 5.3). : ,
(, ) ( 6.7).
, NP- . ,
, ( ) (, ). ,
, . , (. 9.1
) .
, ,
, , . , 5.4 , ,
log n . , , (approximation algorithms),
NP- (. 9.2).

268

9. NP-

( ). ,
: NP- , P = NP.
, ( , ),
, ,
, , . 9.3.

9.1.

AF
T

9.1.1.

, . ,
, (x 1 x 2 ), x 1 = x 2 = 0 ( ) .
?
(w, x, y, z) :
(w x y z),

(w x),

(x y),

( y z ),

(z w),

(w z ).

, w:

w=1

DR

w=0

w = 0 w = 1 ( ), .
, , , :

w=0

x =0

w=1

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 ),

AF
T

( ),

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

DR

. 9.1. , .

(w z )
(w x y z), (w x), (x y), ( y z ), (z w),
w=0

(x y z), (x), (x y), ( y z )


x =1

x =0

( y z), (y), ( y z )
y =0

y =1

(z), (z)
z=0
()

z=1
()

()

( ), ( y z )

w=1
(x y), ( y z ), (z), (z)
z=0
(x y), ( )

z=1
(x y), ( y), ( )

270

9. NP-

, ,
:
1) : ;
2) : ;
3) .
, ; , (
); .
:

AF
T

P0
S {P0 } { }
S :
P S S
P P1 , P2 , , Pk
Pi :
(Pi ) = :
(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
_

DR

AF
T

G = (V, E)
de . a b, S V ,
a b. [a, S, b] (
a ). , , b a,
V S. [a, {a}, a]
a V .
[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;
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)
2

G
1

1
H
1

1
5

D
1

E
D
1

1
C

AF
T

(b)

10

10

10

E 10

H 14

10

14

14

13

14

11

11

: 11

12

DR
11

15

11

: 8

opt(I) log n. log n .


. A ,
I A (I).

9.2.

273

(approximation ratio) A
A = max
I

A (I)
.
opt(I)

AF
T

A A -.
, A , A
( ).
,
( A > 1).
NP- , , A : , , ( ). ?
.
9.2.1.

, NP-.


: G = (V, E).
: S V , .
: |S|.

. 9.3.

DR

. 9.3. ( )
8.

(. 5).
O(log n)-: , .
log n .

274

9. NP-

,
, (. 9.4).
, . , ( ,
, ).
. 9.4. (a) , (b) , ,
() .

(b)

(c)

AF
T

(a)

DR

? , : , I opt(I). ,

. ( ,
,
NP- .)
: S M ,
. ( , - e E S,
e M .) 2|M | ( |M | , ).
2- :
M E
S = { M }

:
,
:
ff ;

ff ,
, .

A 2: ,
.

9.2.

275

9.2.2.

AF
T

, (, ,
) .
.
,
.
- , . , , :
1. d(x, y) 0 x, y.
2. d(x, y) = 0 , x = y.
3. d(x, y) = d( y, x) x, y.
4. ( ) d(x, y) d(x, z) + d(z, y)
x, y, z.
(k-) k .
k-
: X = {x 1 , , x n } d(, ); k.
: k C1 , , Ck .
: ,
max max d(a, b).
j

a,bC j

DR

. 9.5 : ( ) .

. 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) .

4
1

(b)

AF
T

(a)

DR

, ,
. . x X
1 , , k ( , ,
k + 1 ). r
x . X r. ,
2r.
, 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.
, :
? ,
,
. : ().
, , , , . ,

AF
T

, , ,
. . , ,
( , ;
).
Wichita

Albuquerque

Wichita

Albuquerque

Tulsa

Little Rock

Amarillo

Dallas

11

12

10

Amarillo

Tulsa
4

13

14

Dallas

15

El Paso

El Paso

DR

Houston

Little Rock

16

Houston

San Antonio

San Antonio

( ),
. : , , ,
, .
Wichita

Albuquerque

Tulsa
Little Rock

Amarillo
Dallas
El Paso

Houston
San Antonio

278

9. NP-

,
.

, ? ,
, .
, . 257 ,
G C > 0 I(G, C) , :

AF
T

() G , opt(I(G, C)) = n, n
G;
() G , opt(I(G, C)) n + C.

,

, .
, A A . G I(G, C) , C = nA . A I(G, C). ,
() (): A opt(I(G, C)) = nA , opt(I(G, C)) >
> nA . , , G :

DR

I(G, C) C = nA A
nA :
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

AF
T

117, 738 238. ,


. ( , ".) , :
W
vmax max vi
i
k
j
v
n
i
:
vi
"

vmax

O(nV )- {
vi } {vi }

DR


vi n/", O(n3 /"). , .
S K . S

X
X vn X
n
n
i

vi =

vi
1 K
n.
iS

iS

"vmax

iS

"vmax

"vmax

, S
. S :

X
X
"v
"v
n

vi max K
n max = K "vmax K (1 ").
vi
iS

iS

"vmax

9.2.5.

.
. (, NP- ), . ,
( , ,
, P 6= NP). -

280

9. NP-

AF
T

NP-
:
ff , () (, ).
ff , - > 1, > 1 . , ,
, k-
. (
;
.)
ff ,
1 (, ).
ff , , .

(, log n).
.
, P 6= NP. P,
( NP-)
.
, , , .

9.3.

DR

(local search) ,
: , . :
s -
s s0 :
s s0
s

(neighborhood).
; .
9.3.1.
n (n 1)!
. ? ? ,
. , ,
. 2-

9.3.

281

(2-change neighborhood) s ,
s . :

AF
T

, , .
, . , O(n2 ) . , ,
, . , , ,
, .
, .
: , 2-,
2- .

DR

, . : 3- .

O(n3 ) , : 3- , . , , 4-,
. , . , ,
,
, . .

282

9. NP-

. 9.7. (a) . (b) 3-


( ). .

(a)

Wichita
Albuquerque

Tulsa
Little Rock

Amarillo
Dallas

Houston

El Paso

AF
T

San Antonio

(b)

DR

(i)

(iii)

(ii)

(iv)

9.7
, 9.8 .
, .
, .
, , . ,

9.3.

283

. 9.8. .

AF
T

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-

AF
T

. 9.9. = 1/2 (
).

DR

= 1/2 ( ); ,
.
. (A, B) |A| = |B|. ( )
, , (A {a} + {b}, B {b} + {a}), a A, b B.
.

? , , . 2.

9.3.

285

? ,
, .
.
9.3.3.

AF
T

( ) (, ),
( ).

, . p, O(1/p) ( , . 1.34).
9.10 ( 8 ). C84 = 70 ,
, , 35 .
. , . ,
.
.

DR

. 9.10 ( ) . , .
() :
.
. 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

2 , 4

8 , 3

8 , 3

DR

AF
T

8 , 4

4 , 2

1 , 0

287

T (, e/T = 0) , . T .
T ?
: T , .
,
.
, .
. 9.11.

DR

AF
T

. 9.11. .

. ,
(
). , , .
( ).
, , . , (annealing
schedule), ,
. .

9.1. ,
( ), , . ,

288

9. NP-

2 ( 2-) .
9.2. s. , ,
.
9.3. .
, ,
?
,
? ?

AF
T

9.4. G = (V, E), d. ,


1/(d + 1) ?
9.5. .
( )
G = (V, E) .
5.1 , e T . e0 6= e ,
T 0 . , T T 0 (e, e0 ) .
(a) ,
( ). ?

DR

(b) T 0 , T .
, , T T 0 ,
(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 .

AF
T

, (. 275). , 2-:

. (: .)
9.7. G =
= (V, E) s1 , , sk V .
,
.
(a) ,
, k = 2.
(b) 2- k = 3.
(c) .

DR

9.8. (maximum satisfiability) ,


.
(a) , () , .
(b) ,
0 1. m k j j- . ,

m
X
1
m
1 kj .
i=1

, 2- ( , ). , k,
1 + 1/(2k 1).
(c) ( ), ? (: , -

290

9. NP-

, ,
.)

AF
T

9.9. (maximum cut)


G = (V, E) w(e)
, , , .
S V w(S) w(e)
e = {u, v}, |S {u, v}| = 1.
w(S).
,
( )
:
S -
S 0 V , |(S 0 S) (S S 0 )| = 1 w(S 0 ) > w(S):
S S0
(a) , 2-.

(b) ?

9.10. , . , 9.5 . -, , .
(a) , 2- .

DR

(b) dn/2e-, n .

(c) , (n 1)- .

(d) A A- : x A s x
x ( ,
s ). ,
:
, . , NP-,
. ?

(e) , , . (, (n 1)-
.) , P 6= NP,
.

10

DR

AF
T

( ,
factoring). :
, !
, : .
, .
1990- ,
. , ( , ) .
, , . ,
( RSA) .

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

AF
T

(amplitudes) |0 |1 . , , , , 2i
1
p |0 + p |1 ( i , ,
5
5
p
, i = 1). , 0 |0 + 1 |1, (. 10.1), (qubit).

DR

. 10.1.
. , , |0 |1. (superposition principle) , (linear combinations)
: 0 |0 + 1 |1. , 0 |0 + 1 |1 |0 |1. 0 1 , 1, :
0 |0 1 |1 . 0 1
, , !

|0

|1

0 |0 + 1 |1

, ,
, ,
0 1 . : 0 1
. ,
? ,
.
, , ( )
. , (measurement), . . 10.2.
. -

10.1. , ,

293

. 10.2. , .

|0
|0 |2

|1
|1 |2

AF
T

0 |0 + 1 |1

DR

|0 |2 |1 |2 (,
). ( ) , : 0, (|0 = 1 |0 + 0 |1), 1 (|1). , ,
, .
. ( )
,
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 |2 = 1.

x{0,1}2

AF
T

(, {0, 1}2 2, {0, 1}n n.) , x {0, 1}2


| x |2 . x = jk, x: , , x = 10,
, .

. 0 |0 + 1 |1,
0 |0 + 1 |1. ,
? : ,
0 0 |00 + 0 1 |01 + 1 0 |10 + 1 1 |11.

, ? . ,
(entangled), . , 1
1
, | = p |00 + p |11 ( ).
2

DR

(. 10.1). (entanglement)
; .

(partial measurement). , , .
, 0? ,
, |00 |2 + |01 |2 . :
?
: 0,
, : , .
| = p

00
|00 | + |01 |
2

|00 + p

01
|00 |2 + |01 |2

|01.

10.1. , ,

295

n ( n , , n = 500). , 500 .
2500
() :
X
x |x
x{0,1}n

AF
T

, 2500
500 ! ,
, , .
2500 .
? ? . ,
.
, ? .
, , . : ,
n . (, x n
| x |2 , , |x.)

DR

. 10.3. n ,
n , -
2n , n ( ,
). .

x
n

y
n

296

10.

10.2.

AF
T

.
( n ).
n () ; ,
, .
n , |x.
- ( P
),
y | y. (
n
y

DR

, , , , .) , n- y | y |2 .
, , : , (, ). , y
. , , .

. ,

(), .
() n , .
( ) .
, . 10.3 , (FFT).
, ,
. ,
, N , .
N
( ):

ff N .

ff
N .

10.3.

297

ff N .
ff , .
.

10.3.

AF
T

2, M -
, ,

1
1
1

1
0
2
M 1

1

1 2
4

2(M 1) 2

1
. = p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
j
2j
(M 1) j .
M 1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

M 1
M 1
1 (M 1) 2(M 1) (M 1)(M 1)
0

1
2

DR


M (). p
2 M . , |i |2
, |i |2 .
O(M 2 ) . ,
, M , ,
O(M log M ) . (
.) , O(log2 M ) .
, ,
? , m = log M ( 2m = M ).
MP
1
| =
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 .

AF
T

DR

, ,
.
.
, , ( ) .
, m- , j | j |2 . ,
(
).

10.4.

299

, , :
: m = log2 M , | =

MP
1

j | j.

j=0

: O(m2 ) = O(log2 M )
,
MP
1
| =
j | j.
j=0

: m- j ( , 0 j M 1)
P( j) = | j |2 .

AF
T

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

10.4.

DR

, 0 , 1 , , M 1 k,
k M . i = j i j (mod k), M /k k. ,
| k j,
, j , j+k , j+2k ,
. 10.5. ( ).

M 6 M 3

M 7

M 3

(
) .
, (. ), :
k j, k
M . M /k,
M /k .

300

10.


|, k 0 (
0 , k , 2k , , M /k ).
p
1, k/M :
MX
/k1

| =

j=0

k
| jk.
M

M /k 0:

k1
X
jM
1
| = p
.

k

AF
T
k

j=0

. , , , k:
1
M

j = p

M
1
X

jl l =

l=0

k
M

MX
/k1

jik .

i=0

DR

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
j = 1/ k j, M /k, j = 0 j.
k l < k,
MX
/k1 q
k
| =
| jk + l,
j=0

-
M /k:

k1

X
jM
1
.
| = p
l j M /k
k

j=0

, ( 10.5 ,
).
( ), k , M /k.
-

10.5.

301

0,
, k
1/k.

. ,
M /k,
k !
.

AF
T

. s ,
0,

(k 1)M
M 2M
,
, ,
k
k
k

( k ). 1 k/2s
M /k.

. ,
j M /k j 2 k. (
j) 1/ j 1/2 1/2s s .
j ( , ,
). , k/2s .

DR

, s .

10.5.

, , ( ). , ,
?
10.5.1.

(AND,
NOT . .), .
. H, |0 |1 :
|0

1
1
p |0 + p |1,
2
2

|1

1
1
p |0 p |1.
2
2

302

10.

,
0 1 .
0 |0 + 1 |1, :
H(0 |0 + 1 |1) = 0 H(|0) + 1 H(|1) =

0 + 1

p
|0 + 0p 1 |1.
2
2

AF
T

, .
(controlled not,
cnot). . () , ( ).
, , . , cnot(|00) = |00 cnot(|10) = |11.
|00

|00

|10

|11

DR

, cnot , 4 .
( ) , .

. ( )
n . ,
2n
. , , P
x |x, =
x{0,1}n
P
x |x, . =
x{0,1}n

, 0 y =

0 y + 1 y
0 y 1 y
p
p
1 y =
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) (
).

f (x)

f (x)

AF
T

, . , |x, 0k - ,
|x, f (x) .


. .
. 10.7.
10.5.3.

DR

, 2.6.4
M .
FFT M (: 0 , , M 1 , : 0 , , M 1 )
0
2

..
.

FFT M /2

M 2

1
3

..
.

M 1

j
FFT M /2

j+n/2

j+M /2

304

10.

AF
T

, .
M = 2m m .
( m ). , , ,
, .
: m 1 .
. (
)
.
m 1

QFT M /2

QFT M /2

DR

:
.
, , j M /2 + j ( j- ) ( (M /2 + j)-). ,
M /2 + j ,
.
, ,
. , 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 ) .

AF
T

10.6.

,
. , ( )
.
N . N x, x 2 1 (mod N ),
x 6 1 (mod N ). (. 1.36 1.40.)
, N , ( , ).
.

. x N .
(x + 1, N ) N , 1 N .

DR

. x 2 1 (mod N ), x 2 1 = (x 1)(x + 1) N . (x 1) (x + 1) N
, N , . (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 .

AF
T

. x = 2 N = 15 ( 4,
24 = 16 1 (mod 15)). x , x 2 = 4,
15, N , , (x + 1, N ) = 5.
, (factoring)
(order finding).
, . 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

DR

. , f
( 1.2.2). ,
( N ),
f ,
r; r
N
. , (. ).
. 10.7.

10.7.

(. 10.6). ,
, , .
, N
, .
: N ( ).
: N .

10.7.

307

. 10.6. .

QFT M

QFT M
f (a) =
x a mod N

M 1
1 P
p
|a, x a mod N
M a=0

AF
T

M 1
1 P
p
|a, 0
M a=0

DR

1. ( ) x 1
N 1. ( (x, N ) 6= 1, , x N .)
2. M , N . ( ,
M N 2 ,
.)
3. s = 2 log N :
a. ,
M , N .
b. f (a) = x a mod N M (. ):
(i) MP
1
1
p |a, 0.

a=0

(ii) f (a) = x a mod N , MP


1
1
p |a, x a mod N .

a=0

(iii) .
MP
/r1
r
| j r + k,
| =
j=0

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 , , , .)

AF
T

ff , f (a) = x a mod N .
( M ), (
1). MP
1
1
p |a, f (a).
,
a=0

DR

ff . ( ), .
, f r, f (k) k 0 M 1.
( ) a,
. f (0), f (1), f (2),
r , ( ,
),
r, .

(. ),
x, .
, . M , . , , M ( , ,
).
, :
,
M . ,
.

309

DR

AF
T

, ,
. 1970-
. , ,
. ( , T T .) .

.
?
, . ,
( , ) . - , .
15 ( !) (nuclear
magnetic resonance, NMR). .
, ?
, , .

, ...

N n = log N .
2 log N = O(n) ( 3), (
, 2.6.4,
, 1.2.3, )
( n) . .

1
2

1
2

10.1. | = p |00 + p |11 ( ) ( , ). :


(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

AF
T

|00: , cnot
.
H

, 10, 01 11? (
, .)

10.3. M 1
1 P
, p
| j?
M

j=0

10.4. ( M ) | j.

10.5.
| =
P .
P
= j | j l , |0 = j | j + l.
j

DR

| |. ,
|0 | 0 , j0 = j l j . , MP
/k1 q
k1
1 P l j M /k
k
0
| jk + l | 0 = p

| j M /k.
| =
M

j=0

j=0

10.6. , cnot, cnot, .


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.

AF
T

(f) , , not,
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 N .

(a) p , x () p. , p 1/2. ((: ,


. 1.3.))

DR

(b) ( 1.37), , 3/4 x


N .
(c) , , ()
x r/2 1 1/2.



1 2

AF
T

G. H. Hardy, E. M. Wright. Introduction to the Theory of Numbers. Oxford


University Press, 1980.

1970- , RSA . .
D. R. Stinson. Cryptography: Theory and Practice. Chapman and Hall, 2005.

R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge University


Press, 1995.

DR

-
(Larry Carter) (Mark Wegman) 1979 . (Volker Strassen)
1969 . (Arnold Sch
onhage)
:

n- O(n log n log log n) . (Martin F
urer).

( ) (John Hopcroft) (Bob Tarjan)


1973 . .
(Rao Kosaraju).

4 5
1959 (Edsger
Dkstra, 19302002). 1926 ,

313

(Otakar Bor
uvka). ( ,
log n) .
(David Huffman),
1952 ( ).

AF
T

- 1947 (George Danzig,


19142005). 1928 (John von Neumann),
.
V. Chv
atal. Linear Programming. W. H. Freeman, 1983.

M. J. Osborne, A. Rubinstein. A course in game theory. MIT Press, 1994.

8 9

NP- (Steve Cook): 1971 , NP-.


(Dick Karp) NP- ( 8), (
).
NP- ,
.
NP- :

DR

M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the


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

72
- 85, 96
179, 239, 249
273
26
45
98
232
2- 102, 233
3- 233, 246, 248,
250
262, 289
269, 287
257
233

AF
T

| 291
() 12
() 12

k- 275
log 136
mp3- 139
NP, 241
NP- 244
O- 10, 11
P, 241

DR

- 7
136
2027
21
21, 26
26
21
21
291

117
141
103
217, 257
143
145, 232
143

232
143

6174
71
297

236, 245, 263


235, 245, 253,
256, 263
42
, 49, 72, 216
13, 53
209
56
80
84
91
84
92
84
94
84
85
85
84

92
93
, 186
53
188
228
226
98
110
19
128
16
90
106
76
102

159
158

164
22
185
, 259

315
292
294
63, 65
98

206
209
206
207

92

204
194
186

DR

AF
T

172, 233
280
271
278
276
() 184
230, 232
9, 231
31
168
218

137
29, 32
299
294
301
291
46
NP 241
P 241
237, 275
239, 250
64, 292
65
103
88
93
93
90
105
119
106

170
170

34
35, 36
RSA 3638, 264
130
292
110, 116
114, 116, 122
116

316

186
204
193

16
280

DR

AF
T

239, 262
290
27
, 259
67
84
56
93
270
219
285
219
127, 234
288
188, 210
103
30
289
, 231

30
184

91
119, 156
120
84
16

52
197
103
110, 113
114, 116
272

157
177
177
23
25
k- 57
238, 246,
249
174
84
32, 47, 305
61

, 259
268
85
87, 90
87, 90
90
90
106
146, 239
10
230
209
N 305
193
90
90
78

6174
271
138
292
260
15, 2731
( )
146

35

69
15
3133

59, 78
55
5455


274
200, 225, 238
200
238, 239, 250, 251
84
AES 36
98
240, 252
292
299

DR

AF
T

283
49
15, 28,
244, 291, 305
129
(s, t)- 197
199
290
137, 236
236
105
159
309

87, 90
84
87, 90
84
114
90
90
50, 52
53
52
159
, 259
240
165
278
165
240

317

192, 242

88
93
166
- 186
209
210
209
131
132
135

205

199
30
35
32
92
103
177
, 72
, 259

17
4952
59, 60, 167
61
302
237,
251253
, 291
8
, 8
, 35
139

318

- 38
- 96
42
228
143

, 101, 234
102, 235
101

9, 10
302
301
10
144, 151

DR

AF
T

190, 220, 237, 253


91
118
62
47

, 60

AF
T

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