Professional Documents
Culture Documents
AF
T
DR
. . .
2014
510.5
22.1873
20
20
. .
/ . , . , . ; . . . . . .: ,
2014. 320 .
ISBN 978-5-4439-0236-4
AF
T
,
( ), . - .
(, , , , ). , ,
; ,
. .
22.1873
DR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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,
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 = 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- .
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.
(c) c , Fn = (2cn )?
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
(d) M (n) n- . ,
M (n) = O(n2 ) ( ,
1, ). ,
Fib3 O(M (n) log n).
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 ).
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.
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
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
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)
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.
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 =
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
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
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
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). :
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
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
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. ,
(: 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 ),
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.
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.28. p = 7 q = 11 (. 1.9).
e d.
DR
(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.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 .
(d) , . ?
AF
T
(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 .
DR
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.
AF
T
DR
(a) , , . , ,
.
(b) , (, 1 N 1 ). ,
.
(divide-and-conquer) :
1. (subproblems)
.
AF
T
2. .
3. .
,
(1) ; (2) , (3) .
, .
2.1.
(17771855) ,
DR
, :
ac, bd (a + b)(c + d) ,
bc + ad = (a + b)(c + d) ac bd.
, : O-.
.
, . n- x y , n (
, ; n ). x y n/2:
x=
xL
xR
= 2n/2 x L + x R ,
y=
yL
yR
= 2n/2 y L + yR .
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
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
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
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
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
2.3.
55
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.
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,
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
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).
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
AF
T
DR
x 0 , x 1 , , x n1 n 2d + 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
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
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
(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 )
( )? ,
=
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
n1
X
i=0
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
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
, , . :
(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. , , .
AF
T
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
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 ).
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)).
DR
(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
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
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),
(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
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 )?
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
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 ( ). ? :
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
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
(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.2. , .
, , , pre-
post- .
97
(a)
(b)
A
B
E
D
F
AF
T
3.3. ,
, . .
A
(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)
?
DR
(b) .
, , , .
,
, .
(c) , , ?
3.8. . 10, 7 4 .
, .
,
.
, ,
.
(a) : .
(b) , ?
(c) , .
3.9. u twodegree[u]
u. , twodegree[]
, .
99
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). ?
, .
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
(a) ,
, .
102
3.
3.27. (edgedisjoint), . ,
,
.
AF
T
(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
ff (symmetry): (x, y) R, ( y, x) 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).
104
3.
(b) , .
C
A
L
K
AF
T
,
( );
. :
(c)
. , , .
(d) , ( , - ). , .
,
.
DR
(e) , , .
(f) , v , v 0 ,
v 0 , ,
v ( v ).
4.1.
AF
T
, , , (. 4.1).
: , S C , .
, .
(distance)
,
. .
(), (). s; ,
s. s,
, s.
, . 4.2 S B 2,
. S,
DR
(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.
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
AF
T
O(log |V |)
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)
1. Update v ,
u v dist[u] .
2. dist[v] , s v
().
DR
, Update ,
.
Update. . ,
, - ?
, , s - t.
|V | 1 . (?)
s
u1
u2
u3
uk
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.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. .
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
(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
,
.
MakeSet(x)
(x) x
rank(x) 0
5.1.
133
Find(x)
x 6= (x):
x (x)
x
AF
T
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. .
.
C0
B0
D0
E0
F0
G0
G0
F1
AF
T
E1
A0
B0
C0
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)
138
5.
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
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
(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 ? ( .)
(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
151
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
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 . ,
, , ,
.
,
, .
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
. ,
: 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]
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].
E X P O N E N T I A L
P O L Y N O M I A L
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
O
L
DR
(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
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
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, 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 .
6.6.
173
|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
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
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
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 ).
:
.
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
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
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).
(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
,
.
, ( )? , - - (. 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
,
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
f
cuv
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
, 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
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 :
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
.
()
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.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.
( ), !
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
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
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
(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 , , . ,
DR
yi . ( 3-)
I 0 . , I 0 I .
? , I
, I 0 , ,
ai
yi ,
(a1 a2 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 .
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
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-.
DR
263
AF
T
8.11. :
, .
.
(a) .
(b) (s, t)- ( s t).
, 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-.)
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
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-
(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 =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-
(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
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,
AF
T
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-
(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
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
m
X
1
m
1 kj .
i=1
, 2- ( , ). , k,
1 + 1/(2k 1).
(c) ( ), ? (: , -
290
9. NP-
, ,
.)
AF
T
(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 |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
(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
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
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, , .)
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 .
DR
1 2
AF
T
1970- , RSA . .
D. R. Stinson. Cryptography: Theory and Practice. Chapman and Hall, 2005.
DR
-
(Larry Carter) (Mark Wegman) 1979 . (Volker Strassen)
1969 . (Arnold Sch
onhage)
:
n- O(n log n log log n) . (Martin F
urer).
4 5
1959 (Edsger
Dkstra, 19302002). 1926 ,
313
(Otakar Bor
uvka). ( ,
log n) .
(David Huffman),
1952 ( ).
AF
T
8 9
DR
10
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
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
, 60
AF
T
DR
119002, , ., 11. . (499) 241-74-83.