Академический Документы
Профессиональный Документы
Культура Документы
T
. . .
AF
DR
2014
510.5
22.1873
20
. .
20 / . , . , . -
; . . . . . .: ,
2014. 320 .
ISBN 978-5-4439-0236-4
,
( ), -
-
. -
- .
T
(, , -
, -
, -
). -
, ,
; -
,
AF . .
22.1873
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
0.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
T
0.2. . . . . . . . . . . . . . . . . . . . . . . 8
0.3. O- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
AF
1.1. . .
1.2. . . . .
1.3. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
19
27
1.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.5. . . . . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2. . . . . . . . . . . . . . . . . . . . . . 49
2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2. . . . . . . . . . . . . . . . . . . . . . . . 52
DR
2.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.6. . . . . . . . . . . . . . . . . . . . . . 61
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3. . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.2. . . . . . . . . . . . 85
3.3. . . . . . . . . . . . . 89
3.4. . . . . . . . . . . . . . . . . . . . . 92
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4
4.5. . . . . . . . . . . . . . . . . 113
4.6. . . . . . . . . . . . . . . . 114
4.7. . . . . . . . . . . . . . . 119
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.4. . . . . . . . . . . . . . . . . . . . . . . . . . . 146
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6. . . . . . . . . . . . . . . . . . 156
6.1.
T
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.2. . . . . . . . . 157
6.3. . . . . . . . . . . . . . . . . . . . . . . . 158
6.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
AF
6.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
170
174
175
7. 184
7.1. . . . . . . . . . . . . . . 184
7.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.3. . . . . . . . . . . . . . . . . . 200
7.4. . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.5. . . . . . . . . . . . . . . . . . . . . . . . . . . 205
DR
7.6. - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.7. : . . . . . . . . . . . . . . . . . 217
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
8. NP- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.2. NP- : . . . . . . . . . . . . . 241
8.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9. NP- . . . . . . . . . . . . . . . . . . . . . . . 267
9.1. . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.2. . . . . . . . . . . . . . . . . . . . . . . . . 271
9.3. . . . . . . . . . . . . . . . . . . . . . . 280
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10. . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.1. , , . . . . . . . . . . . . . . . . . . . 291
5
10.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
10.3. . . . . . . . . . . . . . . . . . . . 297
10.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
10.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.6. . . . . . . . . . . . . 305
10.7. . . . . . . . . . . 306
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
. . . . . . 312
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
T
AF
DR
,
[ 2008 ]
- . -
. ,
T
, -
. ,
, -
. , ,
, -
AF
.
, ( I) , -
. (,
), ,
, .
. ( II)
:
. ,
( ) . -
II (
DR
, ) -
I ( ).
I II , -
( , ). III
-
( , )
(-, , -
). -
, IV (NP--
, , ).
,
.
-
, ( )
.
0
. , , -
, .
. -
, ,
T
, ,
.
. , ,
AF
, !
0.1.
1448
, , .
, ,
.
, , -
.
DR
.
.
1448 MCDXLVIII. -
MCDXLVIII+DCCCXII? ? ,
,
; -
, .
, 600 . .,
:
-
.
,
, , .
, - IX -
. , -, -
, ( -
).
()
8 0.
, ,
. -
-.
-
. , -
, .
, (, , ) -
. -
, -
.
0.2.
T
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
:
AF Fn1 + Fn2 , n > 1,
Fn = 1,
0,
n = 1,
n = 0.
-
. ,
: , F30 , -
F100 21 . Fn 20,694n (. 0.3).
?
DR
, -
.
Fib1(n)
n = 0: 0
n = 1: 1
Fib1(n 1) + Fib1(n 2)
, :
1. ?
2. ( n)?
3. ?
, -
.
T (n) ( ) Fib1 n. ,
n 1 T (n) , T (n) = T (n 1) + T (n 2) + 3
0.2. 9
( , n ).
Fn , , T (n) Fn . ,
n, ,
. , F200
2138 . , -
40 , 292 .
, : -
1,6 . ,
,
. Fib1
20,694n 1,6n . F100 ,
F101 , F102 . ,
.
T
, , . -
?
, Fib1 . . 1 -
AF
. , -
.
( F0 , F1 , , Fn1 ):
Fib2(n)
n = 0: 0
f [0n]
f [0] 0, f [1] 1
i 2 n:
f [i] f [i 1] + f [i 2]
DR
f [n]
. 1.
Fn
Fn1 Fn2
, . -
? n 1 , -
Fib2 n.
( ) . -
F200 F200000 1 : -
.
-
, . ,
.
: -
T
, . , -
(32 64 ). -
n- 0,694n ,
.
.
AF
.
1 , n- ,
n ( ). , Fib1, -
Fn , nFn .
Fib2 n2 , - .
, ? , :
. 0.1.
0.3. O-
DR
, , -
, (
). -
( ) -
. -
, n n2 .
-
,
.
, -
. : , ,
5n3 + 4n + 3 n, -
4n 3 ( n 5n3 ).
, 5 (
) ,
1
. 8.
0.3. O- 11
. 2.
100 n2
90
80
70
60
50
40 2n + 20
30
T
20
10
0
0 1 2 3 4 5 6 7 8 9 10
AF
O(n3 ) ( ).
O-.
f (n) g(n) n, -
. -
, f = O(g) ( f g),
c > 0, f (n) c g(n) n N.
DR
, f = O(g) , f (n)/g(n) -
.
f = O(g) f g .
, , 10n = O(n). n,
n. ,
f1 (n) = n2 , f2 (n) = 2n + 20 (. . 2). -
? , , n: -
n < 5, n.
, f2 = O( f1 ), f1 6= O( f2 ). ,
2n + 20 2 20
= + 2 22
n2 n n
,
n2 n2 n
=
2n + 20 22n 22
.
, f3 (n) = n + 1.
? , , , f2 = O( f3 )
12 0.
. ,
f2 (n) 2n + 20 f3 (n)
= 20 1.
f3 (n) n+1 f2 (n)
O() . = :
f = (g) ( f g, ) -
g = O( f );
f = (g) ( f g ) , f =
= O(g) g = O( f ).
f2 = ( f3 ) f1 = ( f3 ).
O- 3n2 + 4n + 5 (n2 ), -
.
T
:
1. . , 14n2 -
n2 .
2. na n b a > b. , n2
n.
AF
3. (). -
, 3n n5 .
4.
p . , n ( -
n) (log n)3 ; , -
-
. n2 n log n.
, -
: , -
. -
DR
, O- .
n
(q)
P
ik nk+1
i=1
T
,
.
0.2. , c > 0 g(n) = 1 + c +
+ c 2 + + c n
AF
(a) (1), c < 1;
(b) (n), c = 1;
(c) (c n ), c > 1.
, -
; ,
.
0.3. , F0 = 0, F1 = 1, Fn =
= Fn1 + Fn2 . , -
, :
DR
(a) , Fn 20,5n n 6.
(b) c < 1, Fn 2cn n 0.
(c) c , Fn = (2cn )?
,
2
F2 0 1 F1 0 1 F
F3
= 1 1
F2
= 1 1
F0 ,
1
n
Fn 0 1 F
Fn+1
= 1 1 F0 .
1
14 0.
0 1
, Fn X = 1 1 -
n.
(a) , 2 2 -
().
X n ?
(b) , O(log n) . (-
: , X 8 .)
(-
Fib3) O(log n), , O(n) Fib2.
,
: O(n) O(log n) -
. : ,
T
, ,
, . , -
Fib2 O(n2 ).
(c) , ,
Fib3, O(n).
AF
(d) M (n) n- . ,
M (n) = O(n2 ) ( ,
1, ). ,
Fib3 O(M (n) log n).
(e) O(M (n))
Fib3. (: -
.)
Fib3 , Fib2? ,
n- , O(n2 ) (
DR
2).
:
p n p n
1+ 5
1 1 1 5
Fn = p p .
5 2 5 2
Fn -
n.
.
,
Fib3 n. (: ,
X .)
1
, (
) :
ff : N -
.
T
ff : , N .
.
, N
- .
AF
( , , -
.) , , -
N . , ,
.
.
( : -
).
DR
1.1.
1.1.1.
, ,
( , ). -
.
:
. (, -
9 + 9 + 9 = 27.) b 2 (-
1.1). ,
3, 11 .
? , -
( , ).
, -
(). ,
, .
16 1.
, , ,
10 . 20 ( ,
).
.
, N > 0 -
b? k ( 0 b 1 )
0 b k 1. ,
999 = 103 1. :
N b- dlog b (N + 1)e -
( log b N , - ).
-
T
? , log b N = (loga N )/(loga b). , -
b a () loga b.
N O(log N ) , -
. O() -
. O(),
AF
.
log N . :
1. log N , 2, -
N .
2. N log N , 1
( , dlog N e ). ( -
,
.)
3. log N N ( ,
dlog(N + 1)e ).
DR
4. log N N -
( , blog N c).
1 1 1
5. log N = 1 + + + + ( 1.5).
2 3 N
53 35 (
110101 100011):
: 1 1 1 1
1 1 0 1 0 1 (53)
1 0 0 0 1 1 (35)
1 0 1 1 0 0 0 (88)
,
. ,
x y? , -
( x y)?
1.1. 17
-
.
, x y n ( ).
x + y n + 1 . -
. (c0 + c1 n
- c0 , c1 ). ,
O(n).
, -
: ? : -
,
O(n) . ,
-
.
T
? -
? . -, -
, ,
( 32 64 ). , ,
, -
AF
. -,
,
. -
, -
(, . .),
.
1.1.2.
. x y
, x y
DR
.
13 11 ( 1101 1011):
1 1 0 1
1 0 1 1
1 1 0 1 (1101 1)
+ 1 1 0 1 (1101 1, 1)
0 0 0 0 (1101 0, 2)
1 1 0 1 (1101 1, 3)
1 0 0 0 1 1 1 1 (143 )
, x
( ), 1 ( y),
.
1.6.
? x y n -
, n 2n ( -
). n
18 1.
. ,
- , , -
( ).
- .
x y (. ). -
: , 1/2 ( -
), . ,
. , -
, .
T
11 13
5 26
2 52 ()
1 104
143 ()
AF
( -
-) . : 13, 26 104,
, 13 -
. , -
, -
11 , .
- ,
.
DR
,
.
Multiply (. 1.1), -
: j k
y
2 x 2 , y ,
xy= j y k
x +2 x , y .
2
? ,
y > 0 y = 0.
? y n ,
n , -
y ( )
y 1.
: -
( ), ( -
), 2 ( ) , , O(n) -
1.2. 19
. 1.1. .
Multiply(x, y)
{: x y, y 0.}
{: x y.}
y = 0: 0
z Multiply(x, b y/2c)
y :
2z
:
x + 2z
T
n- . ,
, - O(n2 ).
? , n -
, O(n) ,
(n2 ) . , , -
AF
, 2.
. x -
y q () r (),
x = yq + r 0 r < y. 1.8 ,
Divide (. 1.2)
.
. 1.2. .
Divide(x, y)
DR
{: n- x y, y 1.}
{: x y.}
x = 0: (q, r) = (0, 0)
(q, r) Divide(bx/2c, y)
q 2 q, r 2 r
x : r r + 1
r y: r r y, q q + 1
(q, r)
1.2.
.
. ,
, 24,
// .
, , 32 . ,
20 1.
, , -
( 32 ).
( , -
) ( 32 ),
,
, . , .
N . x mod N (x
N ) x N : x = qN + r, 0 r < N ,
x mod N = r. :
x y N , x y N
, N :
x y (mod N ) (x y) N .
, 253 13 (mod 60), 253 13 = 240 60. ( -
T
: 253 4 13 .) -
: 59 1 (mod 60), 59 -
.
N , {0, 1,
, N 1}, , ,
AF
(. 1.3).
. 1.3. 8.
0 0 0 1
6 + =
DR
, -
, N ,
N , -
{i + kN : k Z} i 0, , N 1. ,
3:
9 6 3 0 3 6 9
8 5 2 1 4 7 10
7 4 1 2 5 8 11
3, ,
. -
(. 1.9):
. x x 0 (mod N ) y y 0 (mod N ),
x + y x 0 + y 0 (mod N ) x y x 0 y 0 (mod N )
1.2. 21
: ,
, (0 );
25 , ; -
? : (25 3) mod 24, 25 1
( 25 1 (mod 24)) 1 3 = 3 mod 24,
.
, N -
, -
:
x + ( y + z) (x + y) + z (mod N )
x y y x (mod N )
x( y + z) x y + yz (mod N )
T
(, N ).
:
N
N . : ,
AF 2345 (25 )69 3269 169 1 (mod 31).
1.2.1.
x y N , -
N . x y
0 N 1, 0 2(N 1).
N 1, N . , -
, () -
, 2N . , O(n),
n = dlog N e N .
DR
x y N : -
, N .
(N 1)2 2n , log[(N 1)2 ] =
= 2 log(N 1) 2n. N , -
. , ,
.
N ( a x b (mod N ))
. , -
,
, . ,
( ) -
, O(n3 ).
1.2.2. N
, , -
x y mod N x, y N , .
?
22 1.
, .
n
[2n1 , 2n1 1]:
ff 0 2n1 1 -
( ).
ff x, 1 x 2n1 , -
x, -
.
, ,
2n1 2n1 1 2n . -
T
x 2n x.
, 2n ,
( n ).
AF
N ,
. x y
. x y 20 , x y
, , (219 )(2 ) = 219524288 ( -
19
). , , y -
500.
N : -
N . x y mod N ,
y x ( N ).
DR
log y. x y mod N , x, -
y. ,
x 25 = x 110012 = x 100002 x 10002 x 12 = x 16 x 8 x 1 .
, , ( ) -
.
1.2. 23
. 1.4. .
ModExp(x, y, N )
{: n- x, y 0, N > 0.}
{: x y mod N .}
y = 0: 1
z ModExp(x, b y/2c, N )
y :
z 2 mod N
:
x z 2 mod N
T
ModExp (. 1.4) ( )
: ,
y ,
(x b y/2c )2 ,
x =
y
x (x b y/2c )2 , y .
AF
-
Multiply (. 1.1), x 25
x 16 + x 8 + x 1. , -
x 2i , x,
x 2 , -
i
.
n x, y, N .
, ModExp n -
, n
DR
( N O(n2 )). ,
O(n3 ).
1.2.3.
,
( ). (;
greatest common divisor, gcd) a b, -
, a b.
a b -
, . , 1035 = 32 5 23 759 = 3 11 23,
3 23 = 69. , ,
.
- ?
, :
. x y 0
(x, y) = (x mod y, y).
24 1.
. , (x, y) = (x y, y),
y x.
, , x y, x y,
(x, y) (x y, y). , , -
x y y, x, (x, y)
(x y, y).
(. 1.5), . -
, .
(a, b) (b, a mod b), -
(a) a mod b.
. 1.5. .
T
Euclid(a, b)
{: a b 0.}
{: (a, b).}
b = 0: a
AF
Euclid(b, a mod b)
a mod b a mod b
DR
.
, -
a b . ,
. , -
2n .
, ,
O(n3 ).
1.2.4.
, - , d
a b. , ? -
, d a b,
? , -
d a x + b y:
. d a b, d = a x + b y
x y, d = (a, b).
1.2. 25
. d a b, d
(a, b). , (a, b) a b,
a x + b y = d. , d (a, b).
,
x y? , ,
(ExtendedEuclid, . 1.6).
. 1.6. .
ExtendedEuclid(a, b)
{: a b 0.}
{: x, y, d, d = (a, b) a x + b y = d.}
T
b = 0: (1, 0, a)
(x 0 , y 0 , d) ExtendedEuclid(b, a mod b)
( y 0 , x 0 ba/bc y 0 , d)
AF
. a b (a b)
x, y, d, (a, b) =
= d = a x + b y.
. , x y,
,
d = (a, b).
b. (b = 0)
. : , (a, b), -
(b, a mod b). a mod b < b,
, -
DR
x 0 y 0
(b, a mod b) = b x 0 + (a mod b) y 0 .
(a mod b) (a ba/bcb), :
d = (a, b) = (b, a mod b) = b x 0 + (a mod b) y 0 =
j k j k
a a
= bx0 + a b y0 = a y0 + b x0 y0 .
b b
, d = a x + b y x = y 0 y = x 0 ba/bc y 0 , -
.
. (25, 11) :
25 = 2 11 + 3
11 = 3 3 + 2
3=12+1
2=21+0
26 1.
( -
). , (25, 11) = (11, 3) = (3, 2) = (2, 1) =
= (1, 0) = 1.
x y, 25x + 11 y = 1,
1 (1, 0).
(2, 1), (3, 2), (11, 3) (25, 11). :
1 = 1 0.
1 (2, 1), 0
: 0 = 2 2 1,
1 = 1 (2 2 1) = 1 2 + 3 1.
T
, 1 = 3 1 2, :
1 = 1 2 + 3 1 = 1 2 + 3 (3 1 2) = 3 3 4 2.
2 = 11 3 3 3 = 25 2 11,
AF
1 = 3 3 4 (11 3 3) = 4 11 + 15 3 =
= 4 11 + 15 (25 2 11) = 15 25 34 11.
1.2.5.
a 1/a,
a , 1/a. -
:
x (multiplicative
inverse) a N , a x 1 (mod N ).
DR
, x ( N , -
1.23), a1 . -
. , 2 6,
2x 1
6.
, a N , d = (a, N ) > 1,
a N . , a x 1 (mod N ),
ax 1 N , a x 1 = kN k. 1 = a x kN ,
, d,
.
, , a
N . (a, N ) = 1 ( a N -
), x y,
ax + N y = 1, , a x 1 (mod N ). x, ,
a N .
. , , -
111 mod 25. , ,
1.3. 27
1.3.
T
, ,
? 1640 :
. p 1 a p 1
AF a p1 1 (mod p).
. S = {1, 2, , p 1}
p. : a ( p),
.
a = 3, p = 7. ,
3 1 mod 7, 3 2 mod 7, , 3 6 mod 7
1, 2, , 6, .
DR
, , 6! 36 6! (mod 7). 6! (
, 1, 2, , 6 7,
), , 36 1 (mod 7) ,
a = 3, p = 7.
1 1
2 2
3 3
4 4
5 5
6 6
28 1.
?
7, 17, 19, 71, 79 , 717197179?
, -
. , , . -
, , , -
. , -
. p
, N , 2 N .
, p N = K L K L
N .
, , -
. , , -
? .
T
, ,
,
.
: -
AF
,
. , ,
,
!
p ( -
a). , , ( p) -
S p, -
p. , (
).
DR
a i mod p i, a i a j (mod p)
a ( a1 ) , i j (mod p). (-
, p , a p, a1 .)
a i mod p , ( ) a i 0 (mod p)
, i 0 (mod p) ( a).
S :
S = {1, 2, , p 1} = {a 1 mod p, a 2 mod p, , a (p 1) mod p}.
,
(p 1)! a p1 (p 1)! (mod p).
(p 1)! ( 2, 3, , p 1,
, 2, 3, , p 1 p),
.
, p ,
: , a p1 6 1 (mod p) a =
= 1, 2, , p 1. , ?
1.3. 29
, :
a a N 1
1 (mod N )?
,
( ): ,
N . , N
( a N 1 1 (mod N )) -
a. , 341 = 31 11 ,
2340 1 (mod 341).
, N a
T
. - (
), Primality (. 1.7),
- a,
{1, 2, , N 1}.
AF
. 1.7. .
Primality(N )
{: N .}
{: /.}
a 1 N 1
a N 1 1 (mod N ):
:
DR
? : -
N , a (
N ). . -
(Carmichael numbers).
: -,
; -, (. 32),
.
( )
. , , ,
. -
? , , ,
a. ,
a ( ).
. a N 1 6 1 (mod N ) a, N ,
a 1 N 1.
30 1.
!
N 1 N ,
N , (group). , :
ff ;
ff ():
;
ff ( -
).
N (multiplicative group of N ) ZN .
. -
(subgroup). -
T
, ( ).
, , , -
( ) .
B = {b : b N 1 1 (mod N )}. -
AF
, ZN ( , B -
). , B -
ZN . B ZN ,
|ZN |/2 (N 1)/2.
. a, N , a N 1 6
6 1 (mod N ). , b < N ,
( b N 1 1 (mod N )), a b,
:
DR
(a b)N 1 a N 1 b N 1 a N 1 6 1 (mod N ).
, b a b ( :
a , a i 6 a j i 6 j). , ,
, , , .
, N , , -
.
N , a N 1 1 (mod N ) a < N .
N , a N 1 1 (mod N )
a < N.
, Primality :
N , P( ) = 1;
1
N , P( ) .
2
(one-sided error):
, .
1.3. 31
, -
a ( Primality2 . 1.8): N
1
P( Primality2 ) .
2k
() k. ,
k = 100 2100 , ( -
).
. 1.8. .
Primality2(N )
{: N .}
T
{: /.}
k a1 , a2 , , ak < N
aiN 1 1 (mod N ) i = 1, 2, , k:
:
AF
1.3.1.
. ,
,
. , -
: n
n (, 1/(ln 2n ) 1,44/n).
DR
. (x)
, x. (x) x/(ln x) , -
,
(x)
lim = 1.
x x/ ln x
( ) -
,
: -
, .
?
, ( -
)?
( ) 1/n (
). , -
n ( 1.34).
, -
(,
32 1.
561.
(561 = 3 11 17) a,
561 ( a560 1 (mod 561)), a .
, .
-
, . -
N . N 1 , -
N 1 = 2 t u c u. , -
a a N 1 mod N . au mod N ,
t :
au mod N , a2u mod N , , a2 u a N 1 mod N .
t
T
a N 1 6 1 (mod N ), N ( ) .
: ,
N , -
. (
AF
) 1 mod N ,
, N . , -
(nontrivial square root of 1) ,
1 N , 1. -
, N ( 1.40).
, ,
: N
3/4 .
DR
). ,
a = 2 ( a = 2, 3, 5) -
.
? , -
. -, , a .
-, , -
a ,
a = 2 .
,
. -
N 25 109 a = 2. 109
, , . , -
20000 , , .
( , )
( 109 -
20000 ). ,
2 105 = 0,002%.
1.3. 33
,
. -
, . -
.
( a = 2) 20000
T
109
:
AF
25 109
:
, -
, , : -
.
( ,
) -
DR
. ( ,
: ,
1000- , 1% , -
.)
, . -
, , -
( , -
).
,
.
(. 1.8). , -
( ,
), 1.5 . 2
-
.
. 137. -
, 9.3. ,
34 1.
(. 10.7) -
, , , , -
.
, : 1.29,
1.34, 2.24, 9.8, 10.8.
1.4.
RSA (RSA cryptosystem),
. , . . , -
, .
, (
T
, ,
) , -
(
).
(A) (B),
AF
, (E), -
. (- eavesdropper,
.) , , -
x. x e()
e(x). d(),
() : d(e(x)) = x.
x e(x) x = d(e(x))
DR
, e(x). ,
, d,
x e(x).
-
() (private key). , ,
(codebook). , -
( ,
).
,
? -
? , :
, ,
- ?
1.4. 35
, - ,
( )
.
RSA (RivestShamirAdleman public-key cryptosystem).
-
. -
. , -
. (
, , .)
, .
, , -
, . -
T
RSA .
1.4.1. : AES
( , ).
AF
(one-time pad)
r -
, . x -
x c r. e(x)
x r; XOR
(eXclusive OR, ): e r (x) = x r. ,
r = 01110010, x = 11110000
e r (11110000) = 11110000 01110010 = 10000010.
, e r ( , ,
DR
, ):
e r (e r (x)) = (x r) r = x (r r) = x 0 = x;
0 .
: d r ( y) = y r.
r, ? :
, r,
. ( {0, 1}n ) -
-
. :
. -
( ) -
, , -
-
.
36 1.
, x , -
, ( r) . ,
, 10. -
- ,
!
00
e10
01 e11
e00 10
10 e01
T
11
x y
, ( -
AF
). x z, -
x z, (x r) (z r) = (x z) (r r) = x z 0 = x z.
: , x z , -
x z .
( , ),
x z . -
, -
.
, ( -
). ( ) -
DR
1.4.2. RSA
, RSA
. -
, ,
. , -
,
1.4. 37
. (
).
RSA . -
N ( ). -
{0, 1, , N 1},
. , N -
.
. N p q, e -
(p 1)(q 1). :
1. x 7 x e mod N -
N ( {0, 1, , N 1}).
2. d, d -
T
e (p 1)(q 1):
(x e )d x (mod N )
x = 0, 1, , N 1.
AF
, x 7 x e
. (N , e) ,
. -
, d. (
e, -
, N .)
. N = 55 = 5 11. e = 3; e ,
(e, (p 1)(q 1)) = (3, 40) = 1. d
31 mod 40 = 27. x y = x 3 mod 55,
DR
x ed x = x 1+k(p1)(q1) x
RSA . 1.9. ,
. ?
. 1.9. RSA.
ff p q n
.
ff (N , e), N = pq, e
(p 1)(q 1) . e 3, -
.
ff d, e (p 1)(q 1).
p q d -
T
.
x
ff (N , e),
y = x e mod N ( ).
AF
ff y, x = y d mod N .
RSA :
N , e y = x e mod N , x.
( ). -
DR
, x (
x e y (mod N )), . : -
N , d (
),
.
: -
- ; -
!
1.5.
- (hash
functions).
-,
, IP-, ,
, 250. (, IP- 32 -
0 255, , -
, 18.3.7.144). , IP- ?
1.5. 39
, IP-, -
.
232 4 109 , , ,
. , , -
, . -
,
.
1.5.1. -
232 IP- -
. , 1 250
( ). , ,
IP- . , , -
T
, -
, 250 ( -
).
AF 250 IP-
h y
x
x
y
z z
DR
,
? ,
. -
(250), IP-. -
, ,
, .
? -. -
- h IP- ( 232 -
), 1 250. x
n = h(x). , x, h(x)
n, , n -
. , ,
, .
40 1.
1.5.2. -
-? -
,
. , -
, . ,
IP- ( , ,
h(128.32.168.80) = 80), ,
(, -
). -
, (
).
,
232 ( , -
T
). ,
.
-, -
? , .
232 IP- 250 , -
AF
- 232 /250 224 16 000 000 IP--
-; - -
(collision).
, .
. -
- , -
. , 250 -
, -
. .
(, -
DR
, ,
, ,
.)
? -
. , (n) 250, 257,
257 . ( , ?) -
IP- x 1 .x 2 .x 3 .x 4 257. -
-, 257.
, , 87, 23, 125 4. : h(x 1 .x 2 .x 3 .x 4 ) =
= 87x 1 + 23x 2 + 125x 3 + 4x 4 mod 257.
a = (a1 , a2 , a3 , a4 ) -
4
X
ha (x 1 .x 2 .x 3 .x 4 ) = ai x i mod n.
i=1
, a , ha
. , :
1.5. 41
. x 1 .x 2 .x 3 .x 4 y1 . y2 . y3 . y4 IP-. -
a = (a1 , a2 , a3 , a4 ) {0, 1,
, n 1} ( n , -
),
1
P(ha (x 1 , x 2 , x 3 , x 4 ) = ha ( y1 , y2 , y3 , y4 )) = .
n
, ha (x) = ha ( y) ,
x y . ,
- .
, 250 . x. -
, x, -.
.
( -)
? 249 1/n = 1/257 -
T
(-), x. , -
x- 249/257 x, 2.1
.
. x 1 .x 2 .x 3 .x 4 6= y1 . y2 . y3 . y4 . , , x 4 6=
,
AF
6= y4 . P(ha (x 1 .x 2 .x 3 .x 4 ) = ha ( y1 . y2 . y3 . y4 )), -
P4
i=1
ai x i
4
P
ai yi (mod n). -
i=1
:
3
(1)
X
ai (x i yi ) a4 ( y4 x 4 ) (mod n).
i=1
ha a = (a1 , a2 , a3 , a4 ).
, a1 , a2 a3 ,
DR
a4 (1) . a1 , a2 , a3 -
, (1) c. -
n x 4 6= y4 , x 4 y4 n. -
(1) a4 = c ( y4 x 4 )1 mod n, -
a4 n .
, . ,
, -
H .
H = {ha : a {0, , n 1}4 }.
, -, -
, , h(1,0,0,0) h(0,0,0,1) .
1
, .
, x, , 1, x- y-,
, . ,
1/257. , -
249
1 .
257
42 1.
,
a1 , , a4 n.
-
:
x y |H |/n -
x y -. (
n -.)
- .
- -
, (
1/n). -
.
T
IP-, , ,
- . -
, -
( ; , -
).
AF
N = nk k,
k -
n. H = {ha : a {0, , n 1}k }
-.
1.1. , b 2 b-
b- .
DR
1.2. ,
. -
?
1.3. d- d . ,
d- n (log n/ log d).
?
1.4. ,
log(n!) = (n log n).
(: n! nn (n/2)n/2 .)
1.5. , -
1 + 1/2 + 1/3 + 1/4 + 1/5 + :
1
X
= .
i
i=1
43
n n ln n + ,
ln , = 0,57721 . -
:
n
1
X
= (log n).
i
i=1
(: -
.)
1.6. , (. 17) -
.
1.7.
(. 19) n m?
T
1.8. (. 19)
O(n2 ) , n .
1.9. x y (mod N ) ( x y N ), -
AF
x x 0 (mod N ) y y 0 (mod N )
.
x + y x 0 + y 0 (mod N ),
? (: -
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.
T
p?
1.25. 2125 mod 127. (: 127 .)
1.26. 1717 ? (:
17
.
(a) H = {ha1 ,a2 : a1 , a2 [m]}, m
ha1 ,a2 : [m]2 [m], ha1 ,a2 (x 1 , x 2 ) = a1 x 1 + a2 x 2 mod m.
(b) H , m = 2k .
(c) H f : [m] [m 1].
1.30. n- x y
n x .
2n.
n , m -
, (circuits), . -
,
. ( -
) .
m- i- -
(i 1)- . -
, ,
45
(m). , , ,
O(log m). ( carry lookahead
adder, .)
(a) ,
, n m
O((log n)(log m)).
(b) , m- x, y, z -
r s, x + y + z = r + s,
r s . (:
.)
(c) ,
O(log n) n- .
T
1.31. , N ! = 1 2 3 N .
(a) ( ()) N !, N
n ?
(b) N ! .
AF
1.32. N (power), q k -
q k > 1.
(a) , , -
N . -
?
(b) , N = q k ( N , q, k),
N = 1, k log N .
(c) , , -
N , .
DR
1.33.
(least common multiple) n- x y, -
, x, y.
n?
1.34. . 31 , , 1/n n- -
, O(n) n--
. .
, p.
,
( , )? (: ( 1) ,
i(1 p)i1 p; ( 2) , E = 1 + (1 p)E,
P
i=1
E .)
1.35. (Wilson): -
N > 1 ,
(N 1)! 1 (mod N ).
46 1.
(a) p x = 1, 2, , p 1 -
p. ?
(b) , , (p 1)! -
1 p, p .
(c) , N , (N 1)! 6 1 (mod N ).
(: N (N 1)! .)
(d) , -
. -
?
1.36. . -
p, p 3 (mod 4),
p = 4k + 3.
T
(a) , x 6 0 (mod p)
x 4k+4 = x 2 .
(b) x (square root) a -
p, a x 2 (mod p). , a
AF
p = 4k + 3, a k+1 a
p.
1.37. .
(a) .
0 14.
3, 5.
?
(b) p q . , -
( j, k) p q ()
DR
0, , pq 1 i, j p
k q. (: , i
( j, k), -
i ( j, k).)
(c) i, ( j, k) .
: i ( j, k) :
i = j q (q1 mod p) + k p (p1 mod q) mod pq.
(d)
?
1.38. , , , 562437487, 3,
, 3
(5 + 6 + 2 + 4 + 3 + 7 + 4 + 8 + 7 = 46 3 ).
11: ,
(87, 74, 43, 62, 05) , 11
. ( , -
.)
47
37? , 37
, (487, 437, 562).
p, 2 5:
n p , -
n r ( p ).
(a) r p = 13 p = 17.
(b) , r p 1.
1.39.
a b mod p a, b, c p.
c
1.40. , x
N , x 2 1 (mod N ), x 6 1 (mod N ), N -
. (, 42 1 (mod 15), 4 6 1 (mod 15), 4
T
1 15. , 15 -
.)
1.41. . a
(quadratic residue) N , x, a x 2 (mod N ).
AF
(a) N , a -
N . , {0, 1, , N 1}
x 2 a (mod N ) .
(b) , N , N
N (N + 1)/2 N .
(c) , N : -
a N , x 2 a (mod N ) -
{0, 1, , N 1}.
1.42. , RSA (. 1.9)
DR
N = pq p. m mod p -
me mod p. , , -
, ,
p, e me mod p m mod p.
1.43. RSA (N , e) . -
, e = 3 - d. ,
N .
1.44. RSA.
(Ni , 3) 3, Ni = pi qi
n- pi qi . ,
n- M , -
( )
M . (: -
1.37.)
1.45. RSA . RSA
P = (N , e) d.
48 1.
T
e d. , -
N , .
RSA . -
N . , ,
AF
m1 , m2 , , mk . , -
m1d mod N . , , (m1d )e m1 (mod N ).
(d) . , -
(391, 17).
?
1.46. , .
(a) -
, , . -
, ,
DR
.
(b) -
, (-
, 1 N 1 -
). ,
.
2
(divide-and-conquer) :
1. (subproblems)
.
2. .
T
3. .
,
(1) ; (2) , -
(3) -
.
AF
, .
2.1.
(17771855) ,
(a + bi)(c + d i) = ac bd + (bc + ad)i
DR
, :
ac, bd (a + b)(c + d) ,
bc + ad = (a + b)(c + d) ac bd.
, : O--
.
.
, . -
n- x y , n (
, ; n -
). x y n/2:
x= xL xR = 2n/2 x L + x R ,
y= yL yR = 2n/2 y L + yR .
, x = 101101102 ( -
), x L = 10112 , x R = 01102 x = 10112 24 + 01102 .
50 2.
,
x y = (2n/2 x L + x R )(2n/2 y L + yR ) = 2n x L y L + 2n/2 (x L yR + x R y L ) + x R yR .
x y . -
( )
. x L y L , x L yR , x R y L , x R yR -
. , , -
n, n/2-
( ),
x y O(n). T (n)
n- , -
(recurrence relation):
n
T
T (n) = 4T + O(n).
2
, T (n) = O(n2 ) (. -
2.2). ,
.
(,
AF
). x y,
(n/2)- : x L y L , x R yR , (x L + x R )( y L + yR ).
,
x L yR + x R y L = (x L + x R )( y L + yR ) x L y L x R yR .
(. 2.1), -
1
n
T (n) = 3T + O(n).
2
( !)
DR
. ,
O(n1,59 ).
,
(. 2.2).
. log2 n 1 -
. , , log2 n.
, , k- -
3k n/2k . -
.
, k-
k
n 3
3k O k = O(n).
2 2
1
,
n
T (n) = 3T + 1 + O(n),
2
(x L + x R ) ( y L + yR ) n/2 + 1. -
, .
2.1. 51
. 2.1. .
Multiply(x, y)
{: x y.}
{: x y.}
n max( x, y)
n = 1: x y
x L , x R dn/2e, bn/2c x
y L , yR dn/2e, bn/2c y
P1 Multiply(x L , y L )
P2 Multiply(x R , yR )
P3 Multiply(x L + x R , y L + yR )
T
P1 22bn/2c + (P3 P1 P2 ) 2bn/2c + P2
. 2.2. : (a) ,
; (b) .
AF
(a)
1011 0110
10110010 01100011
(b)
n
n/2
DR
n/4
.. log2 n
.
2 2 2 2
1 1 1 1 1 1 1 1 1 1 1 1
(k = 0) O(n), (k = log2 n) -
O(3log2 n ) O(nlog2 3 ).
-
3/2, O(n) O(nlog2 3 ). -
(-
0.2). , O(nlog2 3 ) O(n1,59 ).
52 2.
, (
) 4. 4log2 n =
= n2 , . -
.
-
. 16- 32- -
, ( ) -
.
? , ;
(. 2.6 -
).
2.2.
T
, .
n a n/b
. ,
O(nd ) (
AF
a = 3, b = 2, d = 1).
:
T (n) = aT
l m
n
+ O(nd ).
b
.
l m
. T (n) = aT + O(nd ) -
n
b
a > 0, b > 1, d 0.
DR
O(n ),
d
d > log b a,
T (n) = O(n log n), d = log b a,
d
. , n b.
, n -
b b ( 2.2); , n
.
log b n , -
b .
a, k- a k
n/b k (. 2.3). ,
,
d k
n a
t k = ak O k
= O(n d
) d
.
b b
{t k } ( k 0 log b n), , -
a/b d . t 0
2.2. 53
. 2.3. n a n/b.
a
n
n/b
n/b2
log b n
..
.
T
1
alog b n = nlog b a
AF
O(nd ); , k = log b n, alog b n = nlog b a -
1, O(nlog b a ).
-
( 0.2). ,
:
1. 1.
, : O(nd ).
DR
2. 1.
; O(nlog b a ).
3. 1.
O(log n) , O(nd log n).
, ,
: k -
z[0, 1, , n 1] k z[n/2]
-
z[0, 1, , n/2 1], z[n/2, , n 1]. -
T (n) = T (dn/2e) + O(1).
a = 1, b = 2, d = 0, -
, T (n) = O(log n).
54 2.
2.3.
: -
, ,
(merge) .
MergeSort(a[1n])
{: a[1n].}
{: .}
n > 1:
Merge(MergeSort(a[1dn/2e]), MergeSort(a[dn/2e + 1n]))
:
a
(, ,
T
).
x[1k] y[1l] z[1k + l]? ,
z x[1] y[1]. z
.
AF
Merge(x[1k], y[1l])
k = 0: y[1l]
l = 0: x[1k]
x[1] y[1]:
x[1] Merge(x[2k], y[1l])
:
y[1] Merge(x[1k], y[2l])
(
). Merge O(1)
( -
DR
). O(k + l), .
n :
n
T (n) = 2T + O(n),
2
, T (n) = O(n log n).
? , -
. 2,
4 .
. 2.4.
, MergeSort.
( ; -
), -
. ,
, -
. ( Inject -
, Eject
2.3. 55
10 2 5 3 7 13 1 6
2 10 3 5 7 13 1 6
2 3 5 10 1 6 7 13
1 2 3 5 6 7 10 13
T
):
IterativeMergeSort(a[1n])
AF
{: a[1n].}
{: .}
Q [ ] { }
i 1 n:
Inject(Q, [ai ])
|Q| > 1:
Inject(Q, Merge(Eject(Q), Eject(Q)))
Eject(Q)
DR
n log n
. ,
a1 , a2 , a3 . a1 a2 . a1 a2 ,
a3 , a2 a3 -
. ,
( 1, 2, 3). ,
a2 < a1 < a3 , 2 1 3.
a1 < a2 ?
a1 < a3 ? a2 < a3 ?
( -
, ,
;
.)
(depth) ,
( 3), -
.
, ,
: n
(n log n) .
, n .
{1, 2, , n}. ,
, (-
T
). ,
n! .
d 2d . -
, ( ) log(n!).
, log(n!) c n log n c > 0.
AF
. ,
n! (n/2)(n/2) , 1 2 n n/2 -
, n/2, q .
1
: n! 2n + nn en .
3
, , , n ,
(n log n) , , -
.
, -
(
DR
,
). , , -
? , : -
( 2.20).
2.4.
(median) , -
, (). -
, [45, 1, 10, 30, 25] 25.
, , ;
().
, ,
, . , ,
1. -
10000, 100, .
2.4. 57
, , -
.
n . -
(n log n). ?
: .
, , . -
,
( !) . , -
.
-
k- . S k;
, k- ,
S . , k = 1 ,
T
k = b|S|/2c .
2.4.1.
k- ,
.
AF
v S. S : , -
v, v ( ) v. S L , S v
SR . ,
S : 2 36 5 21 8 13 11 20 5 4 1
v = 5
SL : 2 4 1 , Sv : 5 5 , SR : 36 21 8 13 11 20 .
-
. , S
DR
SR , |S L | + |S v | = 5.
k , ,
:
selection(S L , k), k |S L |,
selection(S, k) = v, |S L | < k |S L | + |S v |,
selection(SR , k |S L | |S v |), k > |S L | + |S v |.
S L , S v , SR , -
, S ( 2.15).
S L SR :
|S| max{|S L |, |SR |}.
v? ; , -
. :
|S L |, |SR | |S|/2. ,
n
T (n) = T + O(n),
2
58 2.
. v -
, .
: v .1
2.4.2.
, , , v. -
v -
( ) ,
. (
v = 36, v = 21 .) ( )
n + (n 1) + +
n
= (n2 )
T
2
.
, v ; -
O(n). ?
, .
AF
v, -
v , S
|S|/4 3|S|/4. -
S L SR 3|S|/4.
, v
1/2.
? , -
(. 1.34):
.
() 2.
DR
. E. ,
, ( 1/2) -
1 1+E
. , E = + , E = 2.
2 2
, -
,
:
3n
T (n) T + O(n).
4
: -
( ), T (n) -
( n) ( -
) . -
(
1
,
, .
2.5. 59
, -. -
,
, .
. -
,
.
(quicksort)
, .
-
. -
T
, , (n2 ). -
( 2.24), O(n log n). -
, -
.
AF
: ):
n
3n
+
4
3n
+ .
4
,
O(n) , O(1)
( , 1/2, ,
, ). -
DR
, T (n) = O(n):
.
2.5.
(n n)- X Y (n n)-
Z = X Y , n
X
Zi j = X ik Yk j .
k=1
, Zi j i- X
j- Y :
j
=
i
(i, j)
X Y Z
60 2.
(X Y Y X ), -
: (X Y )Z = X (Y Z).
, , -
O(n3 ) : O(n2 ) O(n) -
. -
; , -
. , -
1969 , -
. .1
, -
. -
X Y :
n n
2 2
T
A B E F
X= C D , Y= G H .
-
( 2.11):
AF
A B
XY = C D
E F
G H
AE + BG AF + BH
= C E + DG C F + DH .
X Y
, ( ?) -
n n
2 2
:
P5 + P4 P2 + P6 P1 + P2
XY = P3 + P4 P1 + P5 P3 P7
,
2.6.
, -
. ().
d 2d, -
,
(1 + 2x + 3x 2 ) (2 + x + 4x 2 ) = 2 + 5x + 12x 2 + 11x 3 + 12x 4 .
, A(x) = a0 + a1 x + + ad x d
B(x) = b0 + b1 x + + bd x d C(x) = A(x) B(x) = c0 + c1 x +
+ c2d x 2d ,
k
X
ck = ai bki
i=0
T
( i > d ai bi ). ck
O(k) , 2d + 1
O(d 2 ) . ?
, . , ,
AF
( ). -
( 2.6.4)
.
2.6.1.
:
. d d + 1
.
, ,
DR
( ).
d + 1 x 0 , , x d . -
d A(x) = a0 + a1 x + + ad x d ,
:
ff a0 , , ad ,
ff A(x 0 ), , A(x d ).
: -
, (
, -
). , ,
.
?
, -
(
: x
62 2.
). , , -
(signal
processing). (a)
. , , -
.
( ),
.
t t t
T
(a) (b) (c)
, , -
(b). , -
.
AF
:
, -
(
) ( t
). , -
,
(t) (unit impulse),
DR
t = 0 (c). -
, (t i),
i. a(t)
:
T 1
X
a(t) = a(i)(t i)
i=0
( T ).
a(t) (t i).
-
b(t) (impulse response) (t).
,
k
X
c(k) = a(i)b(k i),
i=0
!
2.6. 63
, , ,
.
:
, .
, , -
(interpolation),
.
a0 , a1 , , ad A(x 0 ), A(x 1 ), , A(x d )
. 2.5. , -
, ? -
T
.1 ( -
, )? -
d n O(d) (-
2.29), n n -
(n2 ) .
AF
O(n log n) x 0 , x 1 , , x n1 ;
,
.
. 2.5. .
x 0 , x 1 , , x n1 n 2d + 1
DR
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)
, ,
x 2 . , -
A(x)
A(x) = A0 (x 2 ) + xA1 (x 2 ),
A0 A1 A
x. A0 A1
T
n/2 1 ( , n ). ,
A(x i ) A(x i ) :
A(x i ) = A0 (x i2 ) + x i A1 (x i2 ),
A(x i ) = A0 (x i2 ) x i A1 (x i2 ).
AF
, A(x) n x 0 , x 1 , , x n/21
A0 A1 (
) n/2 x 02 , , x n/21
2
.
A(x)
+x 0 x 0 +x n/21 x n/21
n 1
DR
A0 (x) A1 (x)
x 02 2
x n/21
n/2 1
n n/2,
.
,
n
T (n) = 2T + O(n),
2
; 1. -
1, 1:
..
.
+1 1 +i i
+1 1
T
+1
p p
1 = 1, 1 = i,
AF
i 1. , -
n . , , :
n- (complex nth roots of unity),
n z n = 1. ( n .)
. 2.6 .
n- ,
1, , 2 , , n1 , = e2i/n .
n :
1. n- ,
: n/2+ j = j .
DR
2. n- n/2.
, n, n ,
n/2k
k = 0, 1, 2, , , -
. -
(fast Fourier transform,
FFT, . . 2.7).
2.6.3.
(. 2.5).
a0 , a1 , , ad A(x 0 ), A(x 1 ), , A(x d )
x i (1, w, w 2 , , w n1 ) n- -
, -
66 2.
. 2.6. 1 .
z = a + bi (a, b).
:
b i sin ) = r e i , : (r, );
z = r(cos +p
ff r = a2 + b2 ;
r ff [0; 2): cos = a/r, sin = b/r.
:
a 1 i 5 + 5i
p
(1, ) (1, /2) (5 2, /4)
T
(r1 , 1 )
(r2 , 2 ) :
AF
(r1 r2 , 1 +2 )
(r1 , 1 ) (r2 , 2 ) = (r1 r2 , 1 + 2 ).
z = (r, )
ff z = (r, + ), 1 = (1, );
ff z (
r = 1), z n = (1, n ).
4 n 1
n z n = 1.
2
n z = (1, 2k/n), k = 0, 1, , n 1
DR
( n = 16).
2 n
+
n ff : (1, ) = (1, + );
ff 1
n/2 ( ).
A(x) A0 (x) A1 (x)
n- -
n/2
-
(n 2)
2.6. 67
. 2.7. .
FFT(A, )
{: A(x) n 1,
n ; , n = 1.}
{: A(0 ), , A(n1 ).}
= 1: A(1)
A(x) A0 (x 2 ) + xA1 (x 2 )
FFT(A0 , 2 ) A0
FFT(A1 , 2 ) A0
j 0 n 1:
A( j ) = A0 (2 j ) + j A1 (2 j )
T
A(0 ), , A(n1 )
(
) (
).
.
n 1: .
,
:
A(x 0 ) 1 x0 x 02 x 0n1
a0
A(x 1 ) 1 x 1 x 12 x 1n1 a1
.. =
.. .. .
. . .
A(x n1 ) 2
1 x n1 x n1 x n1
n1
an1
(Vandermonde matrix).
68 2.
, n 1
n . -
M :
x 0 , , x n1 , M .
, -
, , -
:
M , -
M 1 .
,
, M ()
T
x i = i , n = 1, .
.
1
Mn ()1 = Mn (1 ).
AF n
, 1 ( ).
, -
n, , (n n)-
1 1 1 1 0 = 1
1 2 n1
DR
2 4 2(n1)
2
1
.. .. .. .. ..
.
Mn () = . . . .
j 2 j (n1) j j
1
.. .. .. .. ..
. . . . .
1 n1
2(n1)
(n1)(n1) n1
n 1 ( n ,
). , ( j, k)- [Mn ()] j,k jk
( ).
:
. Mn ()Mn (1 ) = nI, I .
. , ( j, k)- -
n1
X n1
X
[Mn ()] j,i [Mn (1 )]i,k = ji (1 )ik =1+ jk +2( jk) ++(n1)( jk) .
i=0 i=0
2.6. 69
jk . -
1, j = k, n.
(1 n( jk) )/(1 ( jk) ), , n = 1.
.
Mn (1 ) Mn (), -
( ) -
(a + bi) = a bi; -
,
z = r e i z = r ei . z
( , ) z = z 1 . -
M M = nI, , M
(inner product)
T
u v = u0 v0 + + un1 vn1
p
n. , -
n 1 : , -
AF
, ,
. Mn () -
, (
), -
( -
).
, -
, , -
,
(). -
DR
( ).
2.6.4.
, . -
-
.
a = (a0 , , an1 ) ;
n ,
1, , 2 , , n1 n- -
. a Mn () n n,
( j, k)- ( ) jk .
-
, ( -
70 2.
), :
k 2k 2k + 1
a0 a0
a1 a2
a2 ..
a3 .
an2
j jk a4 = j 2 jk j 2 jk =
a1
.. a3
. ..
.
an1 an1
Mn () a
T
2k 2k + 1
a0
a2
j 2 jk j 2 jk ..
.
AF =
j + n/2
an2
a1
a3
2 jk j 2 jk ..
.
an1
, n/2 = 1 n = 1.
, -
Mn/2 (2 ) . ,
n n
2 2
DR
Mn/2 (2 ) j- j j ( j).
a0 a1
a2 a3
j Mn/2 .. + j Mn/2 ..
. .
an2 an1
a0 a1
a2 a3
j + n/2 Mn/2 .. j Mn/2 ..
. .
an2 an1
Mn () (a0 , , an1 ),
n, n/2 -
Mn/2 (2 ) (a0 , a2 , , an2 ) (a1 , a3 , , an1 ). (. 2.8)
, -
2.6. 71
,
( ). T (n) = 2T (n/2) + O(n) = O(n log n).
. 2.8. .
FFT(A, )
{: a = (a0 , a1 , , an1 ), n ,
n .}
{: A(0 ), , A(n1 ).}
= 1: a
(s0 , s1 , , sn/21 ) FFT((a0 , a2 , , an2 ), 2 )
(s00 , s10 , , sn/21
0
) FFT((a1 , a3 , , an1 ), 2 )
T
j 0 n/2 1:
r j = s j + j s0j
r j+n/2 = s j j s0j
(r0 , r1 , , rn1 )
AF
, .
. -
n n/2.
a0
a2
FFTn/2
.. rj
.
an2
a1
j
a3
FFTn/2
.. j + n/2
r j+n/2
.
an1
72 2.
.
() j , j .
, . -
, -
:
r j = s j + j s0j ,
r j+n/2 = s j j s0j .
. 2.9 n = 8. ( , -
, ,
.)
.
1. n log2 n , n -
T
. n log n .
2. : 0, 4, 2, 6, 1, 5, 3, 7.
? , -
-
( ), -
AF
( ).
-
(00 ) (10 ) .
, ,
( , -
1963 -
, , IBM,
DR
.
,
. , -
.
, ,
- . , -
, 1965 ,
.
, . -
, .
.
: ,
1930- . ,
,
. -
, ( -
).
2.6. 73
. 2.9. .
4
010 a2 A(2 ) 010
T
2
110 a6 A(3 ) 011
4 6
AF
001 a1 4
A(4 ) 100
1
4
011 a3 A(6 ) 110
6
3
2
111 a7 A(7 ) 111
4 6 7
4. a j A(k ) jk mod 8.
8 = 1, a j A(k ) a j jk ,
.
5. , , -
.
T
b.
2.3. 2.2 ,
. -
. -
AF
T (n) = 2T (n/2) + O(n) .
O(n) cn c,
T (n) 2T (n/2) + cn. , -
T (n) T (n/2), T (n/4), T (n/8) .
T (1) = O(1):
n
T (n) 2T + cn
2
h i
n cn n
2 2T + + cn = 4T + 2cn
4 2 4
h i
n cn n
+ + 2cn = 8T + 3cn
DR
4 2T
8 4 8
h i
+ 4cn
n cn n
8 2T + + 3cn = 16T
16 8 16
:
n
T (n) 2k T k + kcn.
2
k = log2 n, T (n) nT (1) + cn log2 n = O(n log n).
(a) T (n) = 3T (n/2) + O(n).
? k ?
(b) T (n), T (n) = T (n 1) + O(1) (
).
2.4. ?
?
ff A, , -
, -
.
75
ff B, n,
n 1, O(1).
ff C, n, -
n/3 O(n2 ).
2.5. -
:
(a) T (n) = 2T (n/3) + 1;
(b) T (n) = 5T (n/4) + n;
(c) T (n) = 7T (n/7) + n;
(d) T (n) = 9T (n/3) + n2 ;
(e) T (n) = 8T (n/2) + n3 ;
T
(f) T (n) = 49T (n/25) + n3/2 log n;
(g) T (n) = T (n 1) + 2;
(h) T (n) = T (n 1) + nc , c 1 ;
(i) T (n) = T (n 1) + c n , c > 1 ;
AF
(j) T (n) = 2T (n 1) + 1;
p
(k) T (n) = T ( n) + 1.
2.6. -
:
b(t)
DR
1/t 0
t
t0
(a) .
(b) ?
2.7. n- ?
, n ? n ?
2.8. (a) (1, 0, 0, 0). -
? (1, 0, 0, 0)?
(b) (1, 0, 1, 1).
2.9. .
(a) , x + 1 x 2 + 1
. -
76 2.
, , -
.
(b) 1 + x + 2x 2 2 + 3x.
2.10. p 4, p(1) =
= 2, p(2) = 1, p(3) = 0, p(4) = 1, p(5) = 0.
2.11. ( 2.5) -
: X Y n n
A B E F
X= C D , Y= G H ,
A, B, C, D, E, F , G H , X Y
n n
2 2
:
T
AE + BG AF + BH
A B E F
XY = C D G H
= C E + DG C F + DH
.
.
2.12. ,
AF
, n:
. , n .
F(n)
n > 1:
F(n/2)
F(n/2)
2.13. , -
, . Bn
DR
n .
(a) 3, 5, 7
B3 , B5 B7 . (, B4 )?
(b) Bn .
(c) n, Bn = (2n/2 ).
2.14. , O(n log n) n -
, .
2.15. ( 2.4)
Split, S v
: v, v v. -
, (in place),
.
2.16. A[], n
, . -
n . , x
77
x , , O(log n).
( , ,
n ,
i > n .)
2.17. A[1n]
. , ,
i, A[i] = i.
2.18. x
A[1n].
O(log n). , , ,
(log n) .
2.19. k . , k
T
n -
kn.
(a) :
Merge 2.3 ,
, . -
AF
( k n)?
(b) ,
.
2.20. , x[1n]
O(n + M ), M = max x i min x i . M -
i i
. (n log n)?
2.21. .
{x 1 , x 2 , , x n } R .
DR
1 -
2 .
(a) , , -
X
|x i |.
i
, n . (:
? , ?)
(b) ,
X
(x i )2 .
i
, ( )
X X
(x i )2 = (x i 2 )2 + n( 2 )2 .
i i
78 2.
, 2 , ,
, 1 . 2
. ,
, 2 . 1
,
2 . , , -
max |x i |.
i
(c) , O(n) (,
x i , -
).
T
2.22. m n. ,
k-
O(log(m + n)).
2.23. (majority element) A[1n]
, .
AF
, ( ; , -
). , -
A[i] > A[ j]? . ( , ,
.) A[i] = A[ j]?,
O(1).
(a) , O(n log n). (:
. -
, -
? ,
DR
.)
(b) . (:
, .
. n/2 :
, , ,
. , n/2 -
, . ,
, -
A[kn], p A[q] k.)
2.24. . 59 .
(a) .
(b) ,
n (n2 ).
(c) ,
( )
79
n
n
1
X
T (n) O(n) + (T (i 1) + T (n i))
n
i=1
2.25. 2.1 , n-
x y O(na ), a = log2 3.
FastMultiply(x, y).
(a) 10n
( n ). , n . -
:
T
Pwr2Bin(n)
n = 1: 10102
:
z=
AF
FastMultiply(z, z)
. -
.
(b) x,
n (n ), -
. .
Dec2Bin(x)
n = 1: binary[x]
DR
:
x x L , x R n/2
binary[] -
; -
O(1).
, , -
.
2.26. . . , n-
, n- ( ,
).
?
2.27. (square) A ,
A A.
(a) , 2 2 -
.
80 2.
(b) -
n n:
, 7 -
5, -
, (. );
, O(nlog2 5 ).
(c) , -
, : (n n)-
S(n) = O(nc ), (n n)- -
O(nc ). ,
0 X
Y 0
, X Y n n.
T
2.28. (Hadamard matrices) H0 , H1 , H2 ,
:
ff H0 1 1, .
ff k > 0 H k 2k 2k
AF
H
k1
Hk =
H k1
.
H
k1 H k1
, - v n = 2k H k v
O(n log n). ,
.
DR
2.29. p(x) = a0 + a1 x + a2 x 2 +
+ an x n x.
(a) , ,
(Horners rule), z = p(x):
z an
i n 1 0:
z z x + ai
z
(b) ?
,
?
2.30. ,
() , , 7.
(a) , , 2 , , 6 ( -
7). , + 2 + + 6 = 0. (
, .)
81
(b) (0, 1, 1, 1, 5, 2) 7,
,
M6 () ( ). -
7.
(c) . ,
. ( ,
7.)
(d) x 2 + x + 1 x 3 + 2x 1
7.
2.31. 1.2.3 -
() .
,
T
.
(a) ,
2(a/2, b/2), a b ,
(a, b) = (a, b/2), a , b ,
AF
((a b)/2, b), a b .
(b) , .
(c) n- a b -
n ? ( n ,
,
.)
2.32. -
.
DR
:
{p1 = (x 1 , y1 ), p2 = (x 2 , y2 ), , pn = (x n , yn )}.
: , pi 6= p j , -
,
|pi p j | = (x i x j )2 + ( yi y j )2 ,
( ).
, n
.
.
ff x, x i < x -
x i > x. L R.
ff L R. -
p L , q L L pR , qR R, d L dR -
. d = min{d L , dR }.
82 2.
ff , L , -
R d. ,
|x i x| > d, y.
ff -
.
{p M , q M }.
ff {p L , q L }, {pR , qR }, {p M , q M }.
(a) , d d
L.
(b) . ( ,
L, R.)
(c) , -
T
n
T (n) = 2T + O(n log n).
2
, O(n log2 n).
AF
(d) , O(n log n)?
2.33. (n n)- A, B, C.
AB = C. O(nlog2 7 ),
. -
.
(a) v n- ,
{0, 1}. ,
(n n)- M , M v = 0,
1/2.
DR
3.1.
. , -
, , -
( -
T
). ? ,
(. 3.1(a)) : , . . -
(. 3.1(b)), (
1 , 11 . .) . -
, -
AF
.
(a) (b)
5 4
6 3 2
8
DR
7 1
9
10
12
13
11
-
. , , ,
84 3.
,
. -
, .
, -
( ).
,
. .
V E, -
. ( : vertex
node, edge.)
V = {1, 2, 3, , 13}, E ,
( , E {1, 2}, {9, 11}
{7, 13}). , x y -
T
y x. , -
x y, : {x, y}. -
(undirected), -
(undirected graph).
, -
AF
(directed edges). x
y y x. x y
(x, y). (World Wide
Web) : u -
v, u v.
, , ,
( ,
).
3.1.1.
DR
c n = |V | v1 , , vn .
(adjacency matrix) (n n)- a,
1, vi v j ,
ai j =
0 .
, , -
. O(1) ,
( ). -
O(n2 ), -
. (adjacency list).
(
).
, . u -
, u, v,
(u, v) E. -
( ), -
( ). , , -
3.2. 85
?
? |V | -
|E|. , |E| |V |
( |E| |V |, , -
).
|V |2 ( ).
(dense), (sparse).
, ,
. : -,
, ,
, -
. , ,
( , ).
T
-
, -
, ,
. -
AF
, :
-
.
3.2.
3.2.1.
(depth-first search) :
? :
,
, (. 3.2)
. , -
, - .
(
, )
( , , ).
. ,
, ,
. ( ,
86 3.
. 3.2. .
L
K
D A B E F H
B
G H C F I J E C G
J
K L
I A D
T
, , ), -
(. 3.3) .1
Previsit Postvisit
( ); ,
.
AF
. 3.3. , .
Explore(v)
{: v G = (V, E).}
{: visited[u] = true u, v.}
visited[v] true
Previsit(v)
(v, u) E:
DR
, Explore . ,
v ,
. ?
, v u, Explore -
- . - v u. z
, Explore (
v, ), w z
:
v z w u
1
( ) ;
, {x, y}
(x, y) ( y, x).
3.2. 87
, z , w .
: Explore(z)
z.
(: Explore(v) ,
visited[u] = false u;
, .)
. 3.4 Explore -
A. , -
. ,
. , Explore B,
BE, , E , -
Explore E. (
) (tree edges). -
T
, .
(back edges).
E F G
I C H
DR
3.2.2.
Explore , .
(. 3.5)
Explore ( ).
. 3.5. .
DFS(G)
v V :
visited[v] false
v V :
visited[v] = false: Explore(v)
88 3.
, Explore -
visited ( ). -
? :
1) O(1)-: , Previsit Postvisit
( );
2) .
, -
. 1
O(|V |). 2 ( ) -
{x, y} E : Explore(x)
Explore( y). 2, , O(|E|). -
O(|V | + |E|), .
!
T
. 3.6 -
( ). ,
. Explore
A, C F . (forest)
.
AF
. 3.6. (a) . (b) , .
1, 10 11, 22 23, 24
(a) (b) A C F
A B C D B E 4, 9 12, 21 D
2, 3
DR
E F G H I 5, 8 13, 20 H
I J K L J 14, 17 G L
6, 7 18, 19
15, 16 K
3.2.3.
(connected),
( ). . 3.6 : -
, A K. -
:
{A, B, E, I, J}, {C, D, G, H, K, L}, {F }.
(connected components).
, . -
3.3. 89
Explore ,
. Explore
DFS . , -
. , -
v ccnum[v] (
). cc,
, , Explore
, Previsit :
Previsit(v)
ccnum[v] cc
3.2.4.
, , -
T
. ,
. -
( Previsit)
(Postvisit). ( 24 -
) . 3.6. , 5
AF
I, 21 -
D.
,
clock, 1, :
Previsit(v)
pre[v] clock
clock clock + 1
Postvisit(v)
DR
post[v] clock
clock clock + 1
( ) :
. u v [pre(u), post(u)]
[pre(v), post(v)] , .
, [pre(u), post(u)] , -
u , v , -
u, v u.
, , -
. -
, .
3.3.
3.3.1.
( Explore -
90 3.
). . 3.7 -
, (, -
).
. 3.7. .
B A C A 1, 16
B 2, 11 C 12, 15
E F D
E 3, 10 D 13, 14
T
G H 4, 7 F H 8, 9
5, 6 G
AF
, . -
A (tree root),
(descendants). F , G, H -
E, E (ancestor). , C -
(parent) D, D (child) C. ( , -
.)
-
( ).
.
DR
(tree edges) ,
.
(forward edges) A
,
.
(back edges)
. B
(cross edges)
( C D
).
. 3.7 , -
( ).
3.3. 91
pre- post- . -
, u v , v -
Explore(u). pre[u] < pre[v] <
< post[v] < post[u], v -
u. : u v , v -
u; uv ( v-
u-):
pre/post- (u, v)
/
u v v u
T
v u u v
v v u u
AF
, ?
3.3.2.
(cycle) v0 v1 v2
vk v0 ( ). ,
. 3.7 B E F B . -
(acyclic).
.
. , -
DR
.
. , (u, v) , -
v u (u, v) .
: v0 v1 vk v0 vi -
, (
pre[vi ]). vi ,
vi .
vi1 vi ( vk v0 , i = 0) ,
.
(- -
directed acyclic graphs dags)
, -
. , , , -
(
; , ,
, ). ?
92 3.
: -
; u v , u -
v. , -
. ,
(linearize) , , (topologically
sort) ,
. , . 3.8
: B, A, D, C, E, F . ( ?)
. 3.8. , -
.
A C E
T
B D F
AF
? , ,
, post-.
post(u) < post(v) (u, v) (. c. 91),
, :
. -
post- post-.
DR
-
. : ,
(sink). , : ,
(source). , :
.
.
( ) -
: ,
, . , -
? , ?
( 3.14)?
3.4.
3.4.1.
? -
. -
3.4. 93
, . -
. . 3.9 ,
. ,
G B F A. :
u v (con-
nected), u v, v u.
-
( 3.30),
(strongly connected components). . 3.9
.
T
.
(a) (b)
A B C
AF D E F A B, E C, F
G H G, H, I,
D
J, K, L
I J K
DR
-
() (.
. 3.9), .
(meta-graph) .1 : -
,
.
. -
( ).
1
. . .
94 3.
3.4.2.
-
. , (
). ( ).
1. Explore, u, -
, , u.
, Explore , -
- , .
, . 3.9 , Explore
K .
, () ,
T
-, () -.
. , -
: -.
2. ,
AF
post-, -.
3. C C 0 -
C C 0 . post-
C , post- C 0 .
. , -
v C C 0 . v C, Explore(v) ,
DR
(. 1).
post[v] , C 0 . v C 0 ,
Explore(v) C 0 , C
post- C .
3 : -
, -
post- . -
-
( -
).
2 - ,
-. -
(reverse) G R , G -
(. . 3.10). G R -
, G (?). G R post--
- G R ,
- G. , , ().
3.4. 95
. 3.10. . 3.9.
(a) (b)
A B C
D E F A B, E C, F
G H G, H, I,
D
J, K, L
I J K
T
AF L
(). ,
- ? 3.
post-
, post-
( , -
!) - ,
. :
1. G R .
DR
2. -
(. . 3.2.3),
post-, .
; -
. (, G R
post- .)
. 3.9.
, post- -
G R : G, I, J, L, K, H, D, C, F , B, E, A.
: {G, H, I, J, K, L}, {D}, {C, F },
{B, E}, {A}.
-
, :
1 n, . -
96 3.
: , -
. , -
, ( ). -
- , -
. , ,
( ), -
. ,
, (
, , ,
. 4). , -
( - ). ,
,
T
.
- ,
Explore :
, .
,
AF
( ).
- :
, ,
? (
)? .
, , -
-.
DR
3.1. , -
. -
, pre- post- .
A B C
D E F
G H I
3.2. -
, .
, , , pre-
post- .
97
(a) (b) A B
A B C
H C
E D
G D
F G H
F E
3.3. ,
, . -
.
T
A D G
C F
B E H
(i) A (ii)
DR
C D
A B C
B
E
F
D E F
G H
J G H I
I
(a) ?
(b) ?
(c) (
G).
(d) ,
?
3.5. G = (V, E) G R = (V, E R )
,
: E R = {(v, u): (u, v) E}.
98 3.
,
( -
).
3.6. (degree) d(v) v G -
v , , v . -
(indegree) din (v) -
(outdegree) dout (v), v -
v ().
P (a) ,
d(u) = 2|E|.
uV
(b) ,
.
T
(c)
?
3.7. G = (V, E) (bipartite),
(V = V1 V2 V1 V2 = ),
AF
(, u, v V1 ,
u v ).
(a) , ,
.
(b) .
, , -
, -
.
,
DR
, .
(c) , -
, ?
3.8. . 10, 7 4 .
, .
,
.
, ,
.
(a) : -
.
(b) , ?
(c) , .
3.9. u twodegree[u]
u. , twodegree[]
, .
99
3.11. ,
G e , G , e.
3.12. : {u, v}
post(u) < post(v), v u .
3.13. .
(a) ,
, . (: -
.)
T
(b) ,
.
(c) , ,
, . -
AF
, ,
.
3.14. . 92 -
, . -
. (:
-
,
.)
3.15. (a) ,
DR
- -
, . ?
, .
(b) , :
, ,
. ?
3.16. n
. G : -
, v w, w -
v. , G -
, -
( ).
3.17. . G = (V, E) -
s V , -
VG V VB V . (infinite trace)
G v0 v1 v2 , -
100 3.
v0 = s (vi , vi+1 ) E i 0.
.
(a) Inf(p) V p, -
. , Inf(p)
G.
(b) , , G .
(c) , , G ,
.
(d) , , , -
,
,
.
T
3.18. T = (V, E)
r V . , u
v, r v T u.
, -
u -
AF
v? O(1). ?
3.19. T = (V, E) , -
x[], . -
z[]:
z[u] = x u.
, .
3.20. T = (V, E) r V .
v r v. -
DR
3.25. , u V
(price) pu , . -
cost :
cost[u] = , u ( u).
, cost A, B, C, D, E, F
2, 1, 4, 1, 4, 5. ( pu .)
2 6 4
A C E
T
B D F
3 1 5
cost .
(a)
AF
. (: .)
(b) , (- -
) . (:
.)
, :
, ?
. ,
( ; ).
(a) ,
, .
102 3.
T
. , -
true false, . -
, true.
,
AF (x 1 x 2 ) (x 1 x 3 ) (x 1 x 2 ) (x 3 x 4 ) (x 1 x 4 ),
x 1 , x 2 , x 3 , x 4 true, false, false, true
().
(a) .
(b) 2- -
, .
2-,
. I 2--
n m
DR
G I = (V, E) .
ff -
. , , 2n .
ff ( ) I -
, (
, -
). 2m .
, ( ) ,
. G I ,
I.
(c) , ,
(b).
(d) , G I , -
x x x, I .
(e) : -
G I , -
103
. (: , -
. G I -
true false -
, , -
.)
(f) , , ,
2- .
3.29. (binary relation) S -
R (x, y) S S. , , S
, (x, y) R , x -
y. (equivalence relation) -
, :
T
ff (reflexivity): (x, x) R x S;
ff (symmetry): (x, y) R, ( y, x) R;
ff (transitivity): (x, y) R ( y, z) R, (x, z) R.
, x y -
AF
, x y (
).
, S
S1 , S2 , , Sk ( S = S1 S2 Sk
Si S j = i 6= j),
ff : (x, y) R
x, y Si ;
ff : (x, y)
/ R
x Si y S j i 6= j.
DR
(: -
.)
3.30. . 93 x y -
. , -
(. )
.
3.31. . G =
= (V, E). , e e0 e, e0 E, e = e0
, e e0 .
(a) ,
(. 3.29).
, -
, (biconnected compo-
nents) G. (bridge) , -
. (separating vertex)
, .
104 3.
(b) -
, .
C F G
A B D E I H
O N M L
K J
,
( );
T
. :
(c)
. , -
, -
AF
.
(d) -
, ( , -
- ). -
, .
,
.
(e) , -
, .
DR
(f) , v -
, v 0 ,
v 0 , ,
v ( v ).
(g) u low(u) -
pre(u) pre(w) (v, w),
v u. , low
.
(h) , , -
. (:
low . -
, .)
4
4.1.
, -
, , (. 4.1).
T
: , S C -
, .
, .
(distance)
,
AF
. .
(), (-
). s; ,
s. s,
, s.
, . 4.2 S B 2,
. S,
(a) E S A (b) S
A D
D C B
B E
. 4.2. .
S
E S A
A C D E
D C B
B
106 4.
. (D, E) ,
S.
4.2.
. 4.2, S, : S,
1 S, 2 . -
S , .
0, 1, 2, , d , -
d + 1: , -
d. ,
: d, -
, d + 1,
d.
T
(breadth-first search, BFS)
(. 4.3). Q S,
0.
d = 1, 2, 3, , Q
d . (-
AF
),
, d.
S . 4.1. , -
. . 4.4
,
. , -
.
S . -
(shortest-path tree).
DR
. 4.3. .
BFS(G, s)
{: G(V, E), s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
dist[s] 0
Q {s} { }
Q :
u Eject(Q)
(u, v) E:
dist[v] = :
Inject(Q, v)
dist[v] dist[u] + 1
4.2. 107
. 4.4. . 4.1.
S
[S]
S [A C D E]
A [C D E B] A C D E
C [D E B]
D [E B]
E [B] B
B []
. -
T
S T -
, ( ), S
T . ,
, - .
AF
. ,
d = 0, 1, 2, , : 1) -
d
dist; 2) dist ; 3) -
d.
().
, -
DR
, O(|V | + |E|). ,
.
2|V |. -
. O(|E|),
( -
) ( ).
, , , -
. ,
, ,
. ,
(. 4.1). -
, .
(-
, ),
( ).
s,
(
).
108 4.
4.3.
.
. , -
- ,
(. 4.5). , -
e E l e . e = (u, v)
l(u, v) luv .
, , (
, ). -
.
. 4.5.
T
95
133
-
290 271
AF 409
445
112 291
275
- -
4.4.
DR
4.4.1.
. -
1,
( -
).
, ,
(. 4.6).
. 4.6. .
2
2 B D B D
3
A 1 1 2 A
4
C E C E
4.4. 109
, -
,
, .
G G 0 ,
. 4.7. S ( -
). 99 SA SB
. , -
, - (
). : 100 A, -
200 B. : -
A. A , B 150
(, S).
T
. 4.7. .
.
G: G0 :
S
AF
100
A
50 S
A
200
B B
: -
G,
. (
DR
, , .) -
: , -
( ). ,
u V .
, u, -
( ). :
ff s 0.
ff , :
( u T ).
, s u T .
v, u G:
v ,
T + l(u, v);
, T + l(u, v), -
( ).
110 4.
-
. , -
- .
;
.
( ) -
( , )
:
Insert: ( ) .
DecreaseKey: ,
, .
T
DeleteMin: , -
.
MakeQueue: (-
, ,
AF
).
-
, ,
. (Dkstra) -
( 4.8).
. 4.8. .
Dijkstra(G, l, s)
DR
{: G(V, E) ( )
{l e : e E}; s V .}
{: u, s,
dist[u] s u ( ).}
u V :
dist[u]
prev[u] nil
dist[s] 0
H MakeQueue(V ) { dist}
H :
u DeleteMin(H)
(u, v) E:
dist[v] > dist[u] + l(u, v):
dist[v] dist[u] + l(u, v)
prev[v] u
DecreaseKey(H, v, dist[v])
4.4. 111
. 4.9. A; -
dist-. .
2
4 B D A: 0 D:
4
B: 4 E:
A 1 3 1
3 C: 2
2 C E
5
2
4 B D A: 0 D: 6
4
B: 3 E: 7
A 1 3 1
3 C: 2
2 C E
T
5
2
4 B D A: 0 D: 5
4
B: 3 E: 6
A 1 3 1
3 C: 2
AF 2
4
C
B
5
2
E
D A: 0 D: 5
4
B: 3 E: 6
A 1 3 1
3 C: 2
2 C E
5
2
B D
DR
A 1
3
2 C E
dist[u] , -
u. , , -
.1
prev: u
, ( )
, .
. 4.9 -
.
1
:
, ( ).
, -
. , .
. .
112 4.
-
. -
.
4.4.2.
s, R ,
.
.
v, s
, R. v?
s v; u -
. u R, u v?
u s, v. ( , -
T
.) v R
; , ( -
):
s v
u
AF
: v, , -
R R
(. 4.10). . , -
, R.
. 4.10. .
R
DR
u
s v
. , , -,
R ,
-, R v,
,
v. , -
. -
4.5. 113
, dist[v] -
, v ( ,
R, dist[v] ):
dist[s] 0, dist[]
R {} { }
R 6= V :
v 6 R dist[v]
v R
(v, z) E:
dist[z] > dist[v] + l(v, z):
dist[z] dist[v] + l(v, z)
(
)
T
(. 4.8). . ,
,
(1) d, R -
AF
d s,
d;
(2) u dist[u]
s u, , , R
( , dist[u] = ).
-
, . -
.
4.4.3.
DR
. 4.8, ,
: ,
Inject Eject . , -
, -
. MakeQueue
, |V | Insert. |V | -
DeleteMin |V | + |E| Insert/DecreaseKey. ,
, , -
, . ,
O((|V | + |E|) log |V |).
4.5.
4.5.1.
( ), -
.
114 4.
4.5.2.
, -
( ) . -
:
(, ). -
, .
. . 4.11(a).
Insert : -
T
. , () -
, (. 4.11(b)(d)).
, blog2 nc, n
. DecreaseKey,
, ,
AF
.
DeleteMin . -
, -
( ,
, . . 4.11(b)(d)). -
O(log n).
. ,
j 2 j 2 j + 1, b j/2c (-
4.16).
DR
4.5.3. d-
; d- d.
n (logd n) = ((log n)/(log d)).
Insert (log d) , DeleteMin
O(d logd n). ( , ?)
. j -
d( j 1)/de, ( j 1)d + 2, , ( j 1)d +
+ (d + 1) = jd + 1 ( , n, . 4.16).
4.6.
4.6.1.
,
s v
, v. , -
4.6. 115
. 4.11. (a) 10 . .
(b)(d) 7 . (e)(h) DeleteMin -
, , .
(a) 3 (b) 3
10 5 10 5
11 12 6 8 11 12 6 8
15 20 13 15 20 13 7
T
(c) 3 (d) 3
10 5 7 5
AF 11 7 6 8 11 10 6 8
15 20 13 12 15 20 13 12
(e) (f ) 12
DR
7 5 7 5
11 10 6 8 11 10 6 8
15 20 13 12 15 20 13
(g) 5 (h) 5
7 12 7 6
11 10 6 8 11 10 12 8
15 20 13 15 20 13
116 4.
?
-
. .
Insert/ |V | DeleteMin
DeleteMin
DecreaseKey (|V | + |E|) Insert
O(|V |) O(1) O(|V |2 )
O(log |V |) O(log |V |) O((|V | + |E|) log |V |)
d log |V | log |V | log |V |
d- O O O (|V | d + |E|)
log d log d log d
O(log |V |) O(1) (.) O(|V | log |V | + |E|)
T
O(|V |2 ), -
O((|V | + |E|) log |V |). ?
, ( -
) ( ).
AF
|E| ( ) |V |2 . |E| , -
. -
, |E| |V |2 / log |V |.
d-. -
d, d
, d |E|/|V |. d, -
, .
, |E| = O(|V |), O(|V | log |V |),
. , |E| = (|V |2 ),
, , O(|V |2 ). ,
DR
|E| = |V |1+ -
O(|E|), !
, . -
, , -
, . -
Insert
, , (average)
O(1).
( 5) ,
(amortized) Insert O(1).
. . 4.12 S A
B, , A.
, , -
. :
4.6. 117
. 4.12.
.
A
3
S 2
4
B
dist[] . -
:
T
Update((u, v) E)
dist[v] min{dist[v], dist[u] + l(u, v)}
Update , v -
AF
u l(u, v). :
1. Update v ,
u v dist[u] -
.
2. dist[v] , s v
().
, Update ,
.
Update. -
. ,
DR
, - ?
, , s - t.
|V | 1 . (?)
s t
u1 u2 u3 uk
. 4.13.
.
ShortestPaths(G, l, s)
{: G(V, E) ,
{l e : e E}, s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
prev[u] nil
dist[s] 0
|V | 1 :
T
e E:
Update(e)
. 4.14. .
AF
8
S
10
A
1
S
0
0 0
1
2 3 4
0 0 0
5 6 7
0 0 0
G 4 B A 10 10 5 5 5 5 5
B 10 6 5 5 5
1 2 1 C 11 7 6 6
D 14 10 9
F 2 C E 12 8 7 7 7 7
F 9 9 9 9 9 9
DR
1 3 G 8 8 8 8 8 8 8
E D
1
: -
|V |, -
.
, ,
.
4.6.2.
(E, B) . 4.14 4,
A E B A.
. A E 2.
1, ,
0, 1, 2 .
4.7. 119
,
4.6.1 .
? , ,
s t |V | 1
.
,
( ). , (
: ), -
Update- - dist. -
|V | 1 -
, . ,
|V |- - ,
( , ,
T
|V | 1 ). , -
, ,
. - dist[u] -
. Update(u, v) dist[v],
dist[v] dist[u] + l(u, v). dist
AF
;
, , .
4.7.
, :
. , -
. (-
DR
. 4.15. -
.
DagShortestPaths(G, l, s)
{: G(V, E),
{l e : e E}, s V .}
{: u, s,
dist[u] s u.}
u V :
dist[u]
prev[u] nil
dist[s] 0
G
u V :
(u, v) E:
Update(u, v)
120 4.
) -
, .
, ,
( ) . -
,
-
.
( ),
,
(. 4.15).
, ,
. ,
T
, -
.
AF
4.1. A.
1 2 1
A B C D
8 6
4 6 2 4
1
E F G H
5 1 1
(a) ,
DR
.
(b) .
4.2. , -
:
A 2
2
4 C D
7 6
B 1 3
S 5
2 F
4 6
G H 2
1
3 E
1 1
I
121
4.3. . , ,
G = (V, E) ( -
) 4. O(|V |3 ).
, (
).
4.4. -
.
(v, w)
w v .
level[v] level[w] + 1, level
( ). :
ff
T
.
ff -
, -
.
AF
, , -
.
4.5. - -
. , -
.
4.6. , {u, prev[u]}, -
, .
4.7. G = (V, E) (, ) -
DR
, s V T = (V, E 0 ), E 0 E. ,
, T
s.
4.8. . .
s t ,
. -
, -
.
? , ,
.
4.9. , -
s,
. , s, -
?
4.10. (, )
. , -
122 4.
k . ,
O(k|E|).
4.11. ,
(
, ). -
O(|V |3 ).
4.12. ,
G = (V, E) -
, , O(|V |2 ).
4.13. G = (V, E)
. e E -
l e . , s t,
T
L . -
, ( -
, L).
(a) , ,
s t.
AF
(b) , . -
s t? -
, O((|V | + |E|) log |V |).
4.14. G = (V, E) -
v0 V . ,
, v0 .
4.15. -
. G = (V, E)
DR
s V . t, -
s t, O((|V | + |E|) log |V |). ( s
.)
4.16. 4.5.2 n -
1, 2, , n.
(a) , j- b j/2c,
2 j 2 j + 1 ( n).
(b) ,
, d- ?
. 4.16 , . 1 , ,
. h, -
O(1):
ff |h| ;
ff h1 .
1
. R. E. Tarjan. Data Structures and Network Algorithms. Philadelphia, PA: Society for Industrial
and Applied Mathematics, 1983.
123
. 4.16. .
Insert(h, x)
BubbleUp(h, x, |h| + 1)
DecreaseKey(h, x)
BubbleUp(h, x, h1 (x))
DeleteMin(h)
|h| = 0:
null
:
T
x h[1]
SiftDown(h, h[|h|], 1)
x
MakeHeap(S)
AF
h |S|
x S:
h[|h| + 1] x
i |S| 1:
SiftDown(h, h[i], i)
h
BubbleUp(h, x, i)
{ x i h }
DR
p di/2e
i 6= 1 key(h[p]) > key(x):
h[i] h[p]; i p; p di/2e
h[i] x
SiftDown(h, x, i)
{ x i h }
c MinChild(h, i)
c 6= 0 key(h[c]) > key(x):
h[i] h[c]; i c; c MinChild(h, i)
h[i] x
MinChild(h, i)
2i > |h|:
0 { }
:
arg min{key(h[ j]): 2i j min{|h|, 2i + 1}}
124 4.
, h1
.
(c) , MakeHeap
n O(n). -
? (: ,
Pn
log(n/i).)
i=1
(d) , d- ?
4.17. , -
0, 1, , W , W
.
(a) , , -
T
O(W |V | + |E|).
(b) O((|V | + |E|) log W ).
4.18.
, , -
AF
. , ,
,
. best
:
best[u] = s u.
, best
S, A, B, C, D, E, F 0, 1, 1, 1, 2, 2, 3 ().
A D
DR
2 2 1 1
4 3
S C F
2 2 1 1
B E
, -
s best.
4.19. .
, ().
.
{l e : e E}, -
{c v : v V }.
. -
.
: G = (V, E); -
l e c v ; s V .
125
: cost, u cost[u]
s u.
, cost[s] = cs .
4.20. G = (V, E) V -
E . e E l e . -
, E 0 ,
. e0 E 0
l e0 . E 0 ,
s t G. -
.
4.21. -
T
. c1 , c2 , , cn . -
, c1 , c2 , c3 . ri, j
ci c j : ci -
ri, j c j .
ri, j r j,i < 1, , - .
AF
(a) , , ri, j , -
-
s t. (:
.)
. -
, - ci1 , ci2 , , cik ,
ri1 ,i2 ri2 ,i3 rik1 ,ik rik ,i1 > 1. , -
ci1 , -
. ( ,
!)
DR
(b) , -
. (: .)
4.22. . , -
, -
V . i, pi , -
i j ci j > 0 . -
, .
G = (V, E),
. -
C :
P
pj
(i, j)C
r(C) = P .
ci j
(i, j)C
r .
r ,
r, r > r .
126 4.
, r > 0. (i, j)
w i j = r ci j p j .
(a) , ,
r < r .
(b) , ,
r > r .
(c) ,
" > 0 C, r(C) r ". -
|V |, " R = max (p j /ci j ).
(i, j)E
T
AF
DR
5
-
, .
; ,
, . -
T
: , (greedy) , -
( ) -
, .
. () -
.
AF
5.1.
, .
, , (-
) , . -
(
). ?
1
DR
A C E
3 4 4
4 2 5
B D F
4 6
, ,
:
1. .
; -
. -
-
(minimum spanning tree, MST). ,
:
: G = (V, E), -
w e .
128 5.
: T = (V, E 0 ), E 0 E,
X
weight(T ) = we .
eE 0
-
16:
1
A C E
4
2 5
B D F
4
T
. ?
.
AF
2. n n 1 .
, ,
. n
. (
).
, n 1 .
:
3. G = (V, E),
|E| = |V | 1, .
DR
, G . , 1
, ( -
). , , , -
|V | 1, , .
, , ,
, .
4. -
,
.
( , -.) -
,
- -
. . -
, ,
. , (
).
5.1. 129
5.1.1.
(Kruskal)
;
, -
.
( , -
,
).
5.1 ()
:
BC, CD, BD, CF , DF , EF , AD, AB, CE, AC.
T
, : -
, BD , -
, . . -
14.
AF
. 5.1. , .
A
6
C
5
E A C E
4 1 3
5 2 4
B D F B D F
2 4
DR
,
.
5.1.2.
, , -
- ( -
).
? .
(cut) S V S.
V S V S ( V ,
S), V \ S.
. X -
G = (V, E). S V ,
X S V S. ,
e , S V S. X {e}
.
130 5.
, -
, X ,
X -
, .
? T ,
X . e ( , ).
e T , e
. 5.2. e () T ( )
. , (S, V S)
( e0 ).
S V S
T
e
AF e0
. e ,
e0 , ( , -
). T . e0 e
, . -
, ( e0 -
DR
e, ,
) X {e}, . (,
e0 X .)
. 5.3 . e0 ?
5.1.3.
, .
( ). ,
.
e ,
T1 T2 . e -
, T1 V T1 .
.
. -
. -
{u, v}, u v . -
. -
?
5.1. 131
(a)
1 3
A C E
2 2 2
2 3
B D F
1 4
(b)
T
A C E A C E
X : T:
B D F B D F
AF
(c)
:
A C E
T 0:
A C E
e
B D F B D F
S V S
(disjoint
DR
sets); . -
, -
MakeSet(x): {x}.
, , -
;
Find(x): x?
, x y,
Union(x, y): , x y.
,
, (. 5.4). |V |
MakeSet, 2|E| Find |V | 1 Union.
132 5.
. 5.4. .
Kruskal(G, w)
{: G = (V, E)
w e .}
{: X ( ).}
u V :
MakeSet(u)
X {}
E
{u, v} E :
Find(u) 6= Find(v):
T
{u, v} X
Union(u, v)
5.1.4. :
AF
(. 5.5).
. , -
, ; -
. ,
(representative), .
E H
B C D F
G A
,
.
MakeSet(x)
(x) x
rank(x) 0
5.1. 133
Find(x)
x 6= (x):
x (x)
x
, MakeSet O(1). -
Find , -
, . -
Union, , -
.
( ),
. ( -
). ,
. ,
T
. -
? ( ) ,
rank. (union by rank).1
Union(x, y)
AF
r x Find(x)
r y Find( y)
r x = r y : ,
rank(r x ) > rank(r y ):
(r y ) r x { r x r y }
:
(r x ) r y { }
rank(r x ) = rank(r y ): rank(r x ) rank(r y ) + 1
. 5.6.
DR
, (
). , rank
, . ,
:
1. x 6= (x), rank(x) < rank((x)).
k -
k 1. ():
2. k 2k -
.
( ) : k -
2k ( ). , -
1
,
. , Union rank
, ,
. . .
134 5.
. 5.6. .
.
A0 B0 C0 D0 E0 F0 G0
D1 E1 F1 G0
T
A0 B0 C0
E1
F1
A0 C0 G0
B0
Union(B, G):
DR
D2
E1 F1
A0
B0 C0 G0
, -
, , ,
. , k
, 1
k.
3. n, n/2k
k.
5.1. 135
, log2 n. ,
log2 n,
Find Union.
.
O(|E| log |V |) (, log |E| = O(log |V |),
|E| |V |2 ). -
. , .
. ,
. , -
, (, O(|E|)), -
. -
T
, ,
,
.
? -
? Find -
AF
, -
? (path compression)
. 5.7;
A3 A3
DR
B0 C1 E2 B0 C1 E2 F1 I0
D0 F1 G1 H0 D0 G1 H0 J0
I0 J0 K0 K0
A3
B0 C1 E2 F1 I0 K0 G1
D0 H0 J0
136 5.
Find
Find(x)
x 6= (x):
(x) Find((x))
(x)
, , : -
Find Union. -
(amortized cost) O(1)
O(log n).
() ?
Find ?
T
,
, . ,
, , . (
: , , -
, ,
AF
. , , -
.)
, -
, , .
: Find ( ) -
, Union (-
Find) -
. ,
, .
, ,
DR
. ,
,
. ,
,
. , 13 (. 133) .1
n , 0 log n -
3.
( , ):
{1}, {2}, {3, 4}, {5, 6, , 16}, {17, 18, , 216 = 65536}, {65537, , 265536 },
{k + 1, k + 2, , 2k }, k -
. log n, -
log, n, , -
1
. 2 k
( , k 1). k
, - .
k, 3
. . .
5.1. 137
.
. ,
; -
(S, S ). ? -
, , (
) . 1/|V |2 -
(S, S
) ( ,
S S ). O(|V |2 ) ( -
) , -
(, 99%, , -
O(|V |2 )) G.
T
O(|E||V |2 log |V |)
. -
, O(|V |2 log |V |),
(David Karger), .
AF
1/|V |2 ?
. , , -
. , ,
C ( G), -
. k ,
kC/2 ( k
C , -
). , -
,
DR
T
, - -
. log n (,
?). O(log n) ,
.
Find ( -
AF
, . ) . Find -
, -
.
?
, , : {k + 1, , 2k }
2k . ( )
.
O(log n) -
.
DR
5.1.5.
-
. , ()
:
X {} { }
:
S V , X
S V S
e E S V S
X X {e}
|X | |V | 1
-
, X , S
X .
, , -
, S ( 5.8).
5.2. 139
. 5.8. : X , S -
.
S V S
X e
T
, S v 6 S -
:
cost(v) = min w(u, v).
AF uS
,
( 5.9) . , -
. v -
cost[v], S v,
,
. (
).
5.9
.
(prev).
DR
5.2.
mp3-?
1. (, ) -
. -
s1 , s2 , , s T .
(, 44100 , -
-, 50- T = 50 60 44100 130 -
.
.)
2. , s t (quantize) -
. ( -
,
).
3. T -
.
140 5.
. 5.9. : -
. : , A.
cost/prev .
Prim(G, w)
{: G = (V, E) w e .}
{: , prev.}
u V :
cost[u]
prev[u] nil
u0
cost[u0 ] 0
H MakeQueue(V ) { cost}
T
H :
v DeleteMin(H)
{v, z} E:
z H cost[v] > w(v, z):
AF
cost[z] w(v, z)
prev[v] v
DecreaseKey(H, z, cost[z])
6 5
A C E A C E
4 1 3
5 2 4
B D F B D F
2 4
DR
S A B C D E F
{} 0/nil /nil /nil /nil /nil /nil
A 5/A 6/A 4/A /nil /nil
A, D 2/D 2/D /nil 4/D
A, D, B 1/B /nil 4/D
A, D, B, C 5/C 3/C
A, D, B, C, F 4/F
A, D, B, C, F, E
.
. , , 130 -
= {A, B, C, D}. -
(A 00, , D 11) 260 .
?
5.2. 141
. ,
, :
A 70
B 3
C 20
D 37
-
? , -
? , {0, 01, 11, 001},
001 . , -
(prefix-free): -
T
.
( ) -
; (?),
( 0, 1). 5.10
AF
A, B, C, D.
, (-
/ /). , ,
, -
. - ,
: ( . 5.10)
260 213 ( 17% ).
,
. , (
, )
DR
( ). ,
.
. 5.10. . .
0 1
[60]
A 0 A [70]
B 100
C 101 [23]
D 11 D [37]
B [3] C [20]
142 5.
,
f1 , f2 , , f n n ?
n
= f i ( i- )
X
i=1
( ).
( -
, ).
.
,
-; , -
-
T
. ,
( ) .
,
-
AF
, .
?
. , , -
( ), -
. , - x0, x1
, x? -
, . ( ,
, ,
, .)
DR
, .
- . -
, ,
. , ,
i j
.
, , -
( i j). f i + f j .
,
i j , f i + f j , -
. , -
( i j ) ,
( i j).
, ( - ) :
( f1 f2 ),
.
, f1 f2 ,
( f1 + f2 ) . -
5.3. 143
f1 + f2
f5 f3 f4
f1 f2
, (. 110).
T
O(n log n), ( 4.5.2).
Huffman( f )
{: f [1n].}
{: n .}
AF
{H f []}
i 1 n: Insert(H, i) f [i]
k n + 1 2n 1: { n 1 }
i DeleteMin(H)
j DeleteMin(H)
k i, j
f [k] f [i] + f [ j]
Insert(H, k) f [k]
: . 5.10
DR
5.3.
,
. -
,
(Horn formulas).
(Boolean variable), -
true () false (). -
- , ,
8 .
; , -
(literal). x ( x) x
, x .
( ):
1. , ( )
, .
144 5.
, ,
; ( , -
, 200 ):
0,15 0,30 0,20
0,10 0,05 0,30
0,70 0,25 0,30
0,05 0,40 0,20
? : -
, -
?
T
200 . -
290 , 380 400
( ).
.
,
AF
(), :
.
n p1 , p2 , , pn (
n = 4) m . m -
i mpi ; ,
, pi (
1/2k ). ( 5.19),
n
mpi log2 (1/pi ) ,
P
DR
i=1
n
1
H(p1 , , pn ) =
X
pi log2
pi
i=1
. -
p1 , , pn .
, -
, (
, , -
, ).
1 1
(1/2, 1/2) log2 2 + log2 2 = 1,
2 2
.
3 4
(3/4, 1/4) : log2 +
1 4 3
+ log2 4 = 0,81. ,
4
(,
) .
. 5.18 5.19.
5.3. 145
,
. ,
(z w) u
8
8 , . ( )
x, -
, x : .
2. , (-
) ,
(
u v y)
( ).
T
( -
),
true/false , -
. (satisfying
assignment).
AF
: true, -
, false. -
: false -
. true,
( - ). -
,
, .
, : - -
, .
DR
{: .}
{: , .}
false
:
{ , }
true
:
:
,
(w y z) x, (x z) w, x y, x, (x y) w, (w x y), (z ).
false , x true
x. , y true,
x y, .
146 5.
? ,
. ,
,
. , -
:
true,
true .
, -
- , -
.
; -
T
. , , -
. , ( 5.33)?
5.4.
AF
11 (. 5.11) - ; -
(, ) ;
,
30 . ?
(a) c (b) c
b b
d f d f
a e a e
k k
g g
h h
i i
j j
,
, 30 . x
S x (-
30 ). , S x
, .
5.4. 147
, :
: B S1 , , Sm B.
: Si , B.
: .
:
B :
Si
, :
a ( ). c,
j f , ,
. b, e i!
, , -
T
:
. , B n
k .
k ln n .
AF
, n t ,
t ( n0 = n). -
k . , ,
n t /k . ,
n 1
n t+1 n t t = n t 1 ,
k k
n t n0 (1 1/k) t . -
1 x ex x,
DR
x = 0 ( - -
, ).
y
ex x
1 x
148 5.
1 t
n t n0 1 < n0 (e1/k ) t = net/k ;
k
t = k ln n n t ne ln n = 1, ,
.
, ( ) -
, -
, ln n. : -
, ln n ( 5.34).
,
( , )?
, ,
( -
T
, 8) ,
.
AF
5.1. .
6 5 6
A B C D
1 2 2 5 4 7
5
E F G H
1 3 3
DR
(a) ?
(b)
?
(c) . ?
, .
5.2. -
.
1 2 3
A B C D
4 8 6 6 2 4
1
E F G H
5 1 1
(a) .
, ( ,
149
A). , -
cost.
(b) . -
( ) ,
.
5.3. .
: G.
: G ,
?
O(|V |)?
5.4. , n
T
k , n k .
5.5. G = (V, E) -
w e 0. ,
G, -
AF
s V .
(
e w e0 = w e + 1).
(a) ? (,
, , .)
(b) ? (, ,
, .)
5.6. , -
, .
DR
5.7. , -
?
5.8. G = (V, E) s,
. ,
s G -
? ( .)
5.9. G = (V, E), -
. ,
( ).
(a) G |V | 1 ,
.
(b) G e, e
.
(c) e G. e -
.
150 5.
(d) G , -
.
(e) e -
G, ,
.
(f) G e, e
MST.
(g) , , -
.
(h) -
.
(i) -
T
.
(j) r > 0 r- ,
r. G r- s t,
G r- s t.
AF
5.10. T G, H
G. , T H
H.
5.11. -
, {1}, , {8}, Union(1, 2),
Union(3, 4), Union(5, 6), Union(7, 8), Union(1, 4), Union(6, 7), Union(4, 5),
Find(1). .
-
.
DR
5.12.
, -
. m Union Find -
n , (m log n).
5.13. A, C, G, T -
31%, 20%, 9% 40% .
?
5.14. a, b, c, d, e 1/2, 1/4,
1/8, 1/16, 1/16 .
(a) ?
(b) 1 000 000
,
( )?
5.15.
( - ):
(a) {0, 10, 11};
151
T
17,3% r 4,8% y 1,6%
e 10,2% d 3,5% p 1,6%
t 7,7% l 3,4% b 1,3%
a 6,8% c 2,6% v 0,9%
o 5,9% u 2,4% k 0,6%
AF n
i
s
5,8%
5,5%
5,1%
m
w
f
2,1%
1,9%
1,8%
j
x
q
0,2%
0,2%
0,1%
h 4,9% g 1,7% z 0,1%
(a) .
(b) (
)?
(c) (. . 144)
DR
26
1
X
H= pi log2 .
pi
i=0
, , -
?
(d) ,
? , ,
?
5.19. . p1 , , pn n -
.
(a) , pi -
( 1/2k ). m
, i mpi . ,
n
1
X
mpi log2 .
pi
i=1
152 5.
(b) ( -
).
n
1
X
pi log2
pi
i=1
. ( n)
? ?
5.20. , -
, (perfect
matching), ,
.
T
5.21. .
: G = (V, E) -
w e .
: ,
.
AF
5.22.
, .
, e -
. MST, e.
(a) .
(b) ,
G = (V, E) {w e } -
:
DR
e E w e :
e G ():
G G e { e G}
G
(c) ,
, e.
?
(d) |E|?
5.23. G = (V, E) -
T = (V, E 0 ) ( , G T
). - e E c w(e)
b (e). , -
w
, . ,
, .
(a) e 6 E 0 w
b (e) > w(e).
153
(b) e 6 E 0 w
b (e) < w(e).
(c) e E 0 w
b (e) < w(e).
(d) e E 0 w
b (e) > w(e).
5.24.
.
: G = (V, E), w e , -
U V .
: ,
U ( ).
( .)
O(|E| log |V |) .
T
(: , -
U?)
5.25. (
) : Increment ( -
) Reset ( ). ,
AF
n Increment Reset, -
, O(n). ,
O(1).
5.26. .
x 1 , , x n --
x i = x j - x i 6= x j . -
, (,
n ). , -
DR
x 1 = x 2 , x 2 = x 3 , x 3 = x 4 , x 1 6= x 4
. , -
m n .
5.27. . n -
d1 , d2 , , dn . -
, G = (V, E)
. (
) .
(a) d1 , d2 , d3 , d4 , di 3 i
d1 + d2 + d3 + d4 , .
(b) d1 d2 dn v1 , , vn , -
d1 , , dn . , -
, v1
v2 , v3 , , vd1 +1 . .
ff v1 . , i < j n u V , -
{v1 , vi }, {u, v j } 6 E {v1 , v j }, {u, vi } E.
154 5.
ff , G G 0 = (V, E 0 ) ,
(v1 , vi ) E 0 .
ff , , ,
v1 v2 , v3 , , vd1 +1 .
(c) , ,
d1 , , dn (
) , -
.
n
n m= di .
P
i=1
5.28. , n . ,
, , ,
T
.
,
-
, .
AF
5.29. (prefix-free encoding)
( ),
() .
, k1 , , kn
2k1 + + 2kn 1. (:
.)
5.30. .
, .
0, 1 2. -
. ,
DR
n f1 , , f n
{0, 1, 2}, .
5.31. , -
f i ( i), ci ,
, i- -
l i , f i ci l i .
P
i
-
.
5.32. n . i
t i . -
-
. ,
i
, i t j . -
P
j=1
,
.
155
5.33. , (-
5.3) .
(: ,
.)
5.34. , n, ,
( 5.4),
(i) n ;
(ii) ;
(iii) log n .
, O(log n) .
5.35. , n ( )
n(n 1) .
T
AF
DR
6
(-
, , ). -
, . ,
-
T
.
, ,
.
6.1.
AF
4
. ,
.
, -
, ,
(. 6.1). ? -
. 6.1. .
DR
6 1
1 A B 2
2 4 6 1 1
S 4 1 E S C A B D E
2 C D 1 1 2
3
, S
. , D
B C,
dist[D] = min{dist[B] + 1, dist[C] + 3}.
. -
dist
( . 6.1), v ,
dist[v], . , dist
6.2. 157
:
dist[]
dist[s] 0
v V \ {s}
dist[v] min{dist[u] + l(u, v): (u, v) E}
, {dist[u]: u V } -
: - , -
, , , . -
,
, , -
. -
, .
: -
T
, -
. ? -
( A B , B A);
.
AF
6.2.
(longest in-
creasing subsequence) a1 , , an . -
ai1 , ai2 , , aik ( 1 i1 < i2 < < ik n) -
, .
, .
, 5, 2, 8, 6, 3, 6, 9, 7 2, 3, 6, 9:
DR
5 2 8 6 3 6 9 7
-
. ,
: i j ,
i < j ai < a j (. 6.2).
. 6.2. .
5 2 8 6 3 6 9 7
158 6.
, -
, .
, :
j 1 n
L[ j] 1 + max{L[i]: (i, j) E}
max L[ j]
j
L[ j] , j, , -
,
a j ( , ,
1 ). j -
, L[ j] L[]
1. ( j ,
T
). -
,
L[ j].
?
{L[ j]: 1 j n},
AF
,
. ,
,
L[ j] ? i
G R , -
( 3.5). L[ j] -
j, |E|
DR
O(n2 ); .
.
, -
, . (
4), L[ j], prev[j] i, -
. -
.
6.3.
, , -
. ?
, -
- ( SNOWY SUNNY).
S N O W Y S N O W Y
S U N N Y S U N N Y
: 3 : 5
6.3. 159
. -
,
, (edit distance) -
. ( -
3 ?)
L[ j]. -
? , -
. (i, j) i < j, -
a1 , a2 , , an .
T
L[ j] = 1 + max{L[1], L[2], , L[ j 1]}.
, L[5]
, .
AF L[1] L[2]
L[5]
L[3] L[4]
L[1]
L[n] (
?), .
? ,
. ( , -
.) -
.
, :
L[ j] L[ j 1]. , -
, .
, -
. ,
( ).
160 6.
, -
,
, , -
. , , -
, : U, O N W.
, -
; , -
1, -
. ,
: AC -
AB BC. .
? ,
.
T
?
( , ) -
, : ,
AF
. -
-
.
, ,
.
DR
,
. x[1m]
y[1n]. -
, x[1i], , y[1 j], -
E[i, j] (. 6.3). E[m, n].
E X P O N E N T I A L
P O L Y N O M I A L
, - E[i, j] -
. x[1i] y[1 j]?
, :
x[i] x[i]
y[ j] y[ j]
6.3. 161
1,
x[1i 1] y[1 j], -
. E[i 1, j], . -
1,
E[i, j 1]. 1, x[i] 6= y[ j], 0,
x[i] = y[ j], E[i 1, j 1]. , -
,
:
E[i, j] = min{1 + E[i 1, j], 1 + E[i, j 1], diff(i, j) + E[i 1, j 1]},
diff(i, j) = 0, x[i] = y[ j], 1 .
, EXPONENTIAL POLYNOMIAL E[4, 3] -
EXPO POL. -
:
T
O O
L L
E[4, 3] = min{1 + E[3, 3], 1 + E[4, 2], 1 + E[3, 2]}.
E[i, j] (. 6.4).
AF
? ,
E[i 1, j], E[i, j 1] E[i 1, j 1] , E[i, j].
, , ,
. , , .
, ,
.
(a) j1 j n (b) P O L Y N O M I A L
0 1 2 3 4 5 6 7 8 9 10
E 1 1 2 3 4 5 6 7 8 9 10
X 2 2 2 3 4 5 6 7 8 9 10
i1 P 3 2 3 3 4 5 6 7 8 9 10
O 4 3 2 3 4 5 5 6 6 8 9
i
N 5 4 3 3 4 4 5 6 6 8 9
E 6 5 4 4 4 5 5 6 6 8 9
N 7 6 5 5 5 4 5 6 6 8 9
m T 8 7 6 6 6 5 5 6 6 8 9
I 9 8 7 7 7 6 6 6 6 7 8
A 10 9 8 8 8 7 7 7 7 6 7
L 11 10 9 8 9 8 8 8 8 7 6
, ( ).
E[, 0] E[0, ] -
: E[0, j]
162 6.
j y, j.
E[i, 0] = i.
.
i 0 m:
E[i, 0] i
j 0 n:
E[0, j] j
i 1 m:
j 1 n:
E[i, j] min{E[i 1, j] + 1, E[i, j 1] + 1, E[i 1, j 1] + diff(i, j)}
E[m, n]
T
. O(1), -
, O(mn).
-
6:
E X P O N E N T I A L
AF P O L Y N O M I A L
, ,
.
(i, j) -
, :
(. . 6.5). , -
.
(i 1, j 1) (i, j) x[i] = y[ j] () -
0, 1.
s = (0, 0) t = (m, n).
. , -
. ,
, , .
, -
, , -
. -
.
6.4.
, -
. W .
6.4. 163
. 6.5. 6.
P O L Y N O M I A L
T
N
E
AF N
L
DR
- n w1 , , w n v1 , , vn .
?1
, , W = 10 ,
:
1 6 30
2 3 14
3 4 16
4 2 9
.
, 1
4 ( : 48).
1
, -
.
164 6.
.
ff x 1 , x 2 , , x n ,
x 1 , x 2 , , x i i < n.
x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10
.
ff x 1 , , x m y1 , , yn ,
x 1 , , x i y1 , , y j i < m j < n.
T
x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10
y1 y2 y3 y4 y5 y6 y7 y8
AF
O(mn).
ff x 1 , , x n , x i , , x j
i < j < n.
x1 x2 x3 x4 x5 x6 x7 x8 x9 x 10
O(n2 ).
ff , .
DR
?
,
.
( ), -
1 3 (: 46).
8 ,
, , . -
6.4. 165
( )
O(nW ), W , -
, log W , W .
. ,
. : -
w W (
) (,
1, 2, , j, j n). , -
, .
T
K[w] = w.
K[w] ? ,
w i, -
-
w w i . , K[w] K[w w i ] + vi -
AF
i. , i,
:
K[w] = max {K[w w i ] + vi },
i : w i w
, , 0. -
:
K[0] 0
w 1 W :
DR
K[w] max{K[w w i ] + vi : w i w}
K[W ]
W + 1.
O(n), O(nW ).
,
.
.
, -
. ,
- , . ,
0 j n: K[w, j]
, 1, , j -
W . : K[W, n].
K[w, j]
. . j ,
166 6.
{A, C, G, T} (), (-
).
(
3 ) 0,1%. -
, . -
, -
.
, -
. (
), . -
, .
T
?
1.
(, -
, ). -
AF
.
GenBank, ,
1010 .
BLAST,
, -
.
2. (DNA sequencing), -
, (-
) 500700 . ,
,
DR
?
, . -
, , -
. 2001
: Human Genome Consortium ( -
) Celera Genomics ( ).
3. ,
?
.
:
K[w, j] = max{K[w w j , j 1] + v j , K[w, j 1]}
( , w j w.) , -
K[w, j] K[, j 1].
W + 1 n + 1 -
. O(1). -
6.5. 167
: O(nW ).
j, w: K[0, j] 0; K[w, 0] 0
j 1 n:
w 1 W :
w j > w: K[w, j] K[w, j 1]
: K[w, j] max{K[w, j 1], K[w w j , j 1] + v j }
K[W, n]
6.5.
A B C D -
50 20, 20 1, 1 10 10 100 (. 6.6).
T
- . ,
. 6.6. A B C D = (A (B C)) D.
(a) (b)
AF
C
A B 1 10 D A BC D
50 20 20 1 10 100 50 20 20 10 10 100
(c) (d)
DR
A (B C) D (A (B C)) D
50 10 10 100 50 100
( A B 6= B A),
(A (B C) = (A B) C). , -
, (, ,
). ?
m n n p
O(mnp) . , mnp ,
A B C D:
A ((B C) D) 20 1 10 + 20 10 100 + 50 20 100 120200
(A (B C)) D 20 1 10 + 50 20 10 + 50 10 100 60200
(A B) (C D) 50 20 1 + 1 10 100 + 50 1 100 7000
, -
. , ( ,
168 6.
,
. -
, .
, , -
, , -
. ,
.
( )
- (. 1.5)
K[]. K[w]
, ,
T
.
(memoization).
{ - K[w] (w ).}
{ .}
AF
Knapsack(w)
w -:
K[w]
K[w] max{Knapsack(w w i ) + vi : w i w}
K[w] - w
K[w]
. -
O(nW ),
. , O(), -
DR
,
(-
).
, , . -
: , -
, -
, . , W w i
100. K[w] , w 100.
.
), , -
.
A1 , A2 , , An
m0 m1 , m1 m2 , , mn1 mn ?
, -
, , (
6.5. 169
) (. 6.7). -
n n ( 2.13),
.
D A D
C D A
T
AFA B B C B C
, .
?
Ai Ai+1 A j . , 1 i j n
C[i, j] = Ai Ai+1 A j .
, j i.
i = j : C[i, i] = 0. j > i -
C[i, j].
Ai Ak Ak+1 A j k i j.
DR
-
: C[i, k] + C[k + 1, j] + mi1 mk m j . -
k, :
( s ):
i 1 n: C(i, i) 0
s 1 n 1:
i 1 n s:
ji+s
C[i, j] min{C[i, k] + C[k + 1, j] + mi1 mk m j : i k < j}
C[1, n]
. -
O(n).
O(n3 ).
170 6.
6.6.
-
. -
.
-
: ; -
, (
), . , -
( ) .
, . 6.8 S T
T
. 6.8. S T : .
2
A B
AF S
1
5
5 1
4
T
2 1
C D
3
, , -
( ). -
:
DR
G, s t k. -
s t, k .
?
,
.
, -
,
. v i k -
d ist[v, i] s v,
i . dist[v, 0] ,
s, dist[s, 0] = 0. :
dist[v, i] = min {dist[u, i 1] + l(u, v)}.
(u,v)E
s t,
. -
4.6.1 ( )
6.6. 171
|V | , .
O(|V |2 |E|).
, O(|V |3 ).
,
? :
( ). , -
u v (u, v),
. ,
.
,
.
, V 1 n -
dist[i, j, k] i j,
T
{1, 2, , k}. dist[i, j, 0] i j, -
( , ).
,
k? i, j, -
AF
k i
j. : i j, k -
, k (
, ). -
, -
, i k k j:
k
dist[i, k, k 1]
i dist[k, j, k 1]
DR
j
dist[i, j, k 1]
, k ,
.
. , -
?
1 n, -
1 D = (di j ) .
, 1,
-
. (. 6.9)
(!) ?
. 6.9. 10.
T
2
A B
4 3
1
AF 2
C
3 2
2
D
4
E
, -
. -
, . 8,
.
DR
( (n 1)!), O(n!) (-
O(n)). , -
,
.
? ,
.
, 1,
j. -
? , ( j),
( ). -
.
S {1, 2, , n}, 1, j S
C[S, j] 1 j, -
1 j,
S .
|S| > 1 C[S, 1] = ,
1.
6.6. 173
C[S, j] . 1 j -
i S { j}. -
1 i S { j}, C[S { j}, i].
i j, di j , i:
|S|, :
C[{1}, 1] 0
s 2 n:
S {1, 2, , n} s, 1:
C[S, 1]
j S, j 6= 1:
T
C[S, j] min{C[S { j}, i] + di j : i S, i 6= j}
min C[{1, , n}, j] + d j1
j
2n n , -
. O(n2 2n ).
AF
, -
, : -
. , -
,
, , O(1)
. .
? : -
DR
, (),
. ,
, ,
.
.
, dist[i, j, k]
, dist[, , k + 1]. -
dist
|V | |V |, k, :
dist[i, j, k] dist[i, j, k 2]. (
, , -
, : prev[i, j], -
i j.
.)
, -
(. 6.5) ,
?
174 6.
6.7.
,
. , . 6.10 {1, 5} ,
{1, 4, 5} ( 4 5 ).
, , {2, 3, 6}.
. 6.10. 3.
1 2
5 6
T
3 4
-
AF
( , ). -
,
. -
? , (
) .
r .
, . I[u]:
u. -
DR
I[r].
, , -
, . ,
u. , , I[w] w,
u. I[u]? , u
, (. 6.11). -
u, u, -
u. , u
, -
. :
X X
I[u] = max 1 + I[w], I[w] .
w u w u
. -
, O(|V | + |E|).
175
. 6.11. I(u)
u. : u , .
T
AF
6.1. .
,
5, 15, 30, 10, 5, 40, 10
15, 30, 10 , 5, 15, 40 . -
:
DR
: a1 , a2 , , an .
: (
).
10, 5, 40, 10 55.
(: j {1, 2, , n} , -
j.)
6.2. , .
a1 < a2 < < an ,
. ( an ).
200 ,
( ). x
, (200 x)2 .
, -
.
, -
.
176 6.
6.3. -
. n , ,
m1 < m2 < < mn . :
ff n -
; 1 i n pi > 0
.
ff k -
, k .
-
.
6.4. s[1n] n, -
, (, -
T
). , ,
dict(w) = w 0 1.
(a) , -
, , s[1n]
. O(n2 ) (, dict
AF
O(1)).
(b) , -
, .
6.5. . (), 4
n .
, .
. -
, (
).
DR
(a) .
,
.
(b)
, . (: -
.)
6.6. a, b, c -
:
a b c
a b b a
b c b a
c a c c
, a b = b, ba = c. , -
, .
177
, , -
(, b b b bac) ,
, a. -
, b b b bac ,
((b(b b))(ba))c = a.
6.7. . -
, ACGTGTCAAAATCG -
ACGCA AAAA ( ACT
). , x[1n]
- (
).
O(n2 ).
T
6.8. x = x 1 x 2 x n y = y1 y2 ym .
(longest common substring), -
k, x i x i+1 x i+k1 = y j y j+1 y j+k1 i j.
, O(mn).
6.9. , -
AF
.
n n ( ). -
( -
). : 20 -
3, 10,
20 + 17 = 37. , ,
: 20 + 10 = 30.
, ,
.
DR
6.10. . n pi [0, 1]
i- . ,
0 k n p1 , , pn [0, 1] , k
( ). 1
O(n2 ). ,
[0, 1] O(1).
6.11. x = x 1 x 2 x n y = y1 y2 ym . -
(longest common subsequence),
k, x i1 x i2 x ik = y j1 y j2 y jk i1 <
< i2 < < ik j1 < j2 < < jk . O(mn).
6.12. n- P -
. (triangulation) P n 3 -
P. P n 2 -
.
1
O(n log2 n).
178 6.
. -
P . (: P -
1 n,
. 1 i < j n A[i, j]
i, i + 1, , j.)
6.13. n v1 , v2 , , vn ( ).
,
( ), , .
( , ). , n .
(a) , ( ,
) :
T
.
(b)
O(n2 ). v1 , , vn , -
O(n2 ), -
O(1) ( -
AF
).
6.14. . X Y , X Y
. n ;
i ai bi ci
( ai , bi , ci ).
().
X Y ?
. (
,
DR
.)
6.15. A B ( ),
n . , 50%
. A i , -
B j . , A .
(, i = n 1 j = n 3 7/8, -
B .)
6.16. ( ). -
n . vi i, di j
i j. d0 j d j0 -
j . ,
-
. -
.
,
O(n2 2n ). (: .)
179
6.17. v , x 1 , x 2 , , x n (
). (,
10 25 45 , 47 15).
-
O(nv), , .
6.18. ( 6.17), -
? (, 1, 5, 10, 20
16 = 1 + 5 + 10 31 = 1 + 10 + 20 , 40
( ). - O(nv).
6.19. ( 6.17): -
, k . (-
, 5 10 , k = 6, 55 ,
T
65 ).
6.20. .
, :
begin 5%
AF do
else
end
40%
8%
4%
if 10%
then 10%
while 23%
: -
,
.
. 6.12 , -
DR
, ( while
end, then while).
, -
.
cost = 1 (0,04) + 2 (0,40 + 0,10) + 3 (0,05 + 0,08 + 0,10 + 0,23) = 2,42.
(cost = 2,18).
.
: n ;
(p1 , p2 , , pn ).
:
.
6.21. (vertex cover) G = (V, E) -
S V , -
. , {A, B, C, D, E, F, G} {A, C, D, F }
, {C, E, F } .
180 6.
. 6.12.
do
do then if
end
T
3 ( : {B, E, G}).
A D
B E G
AF C F
:
: T = (V, E).
: T .
6.22. O(nt) .
: a1 , a2 , , an ;
DR
t.
: t a1 , a2 , , an ?
ai (
).
(: s
a1 , a2 , , ai .)
6.23. n ; i -
Mi . Mi ri (
1 ri ). , -
r1 r2 rn . -
mi Mi ; ,
. , mi -
, (1 ri )mi , -
1 (1 ri )mi ,
n
(1 (1 ri )mi ). Mi ci ,
Q
i=1
B (ci B
181
). B, r1 , , rn c1 , , cn
.
6.24. .
m n
O(mn). m n -
. ?
(a) , ,
. , -
-
O(n).
(b) , .
,
T
(0, 0) (n, m) .
(k, m/2) k. -
, k. (-
, m .)
(c) .
AF
FindPath((0, 0) (n, m))
k (. )
FindPath((0, 0) (k, m/2))
FindPath((k, m/2) (n, m))
, ,
O(nm), O(n).
6.25. (3-partition).
a1 , , an , -
DR
. ,
{1, , n} I, J, K ,
n
1
X X X X
ai = aj = ak = ai .
3
iI jJ kK i=1
(gap). ,
, . -
(|| + 1) (|| + 1) ( -
). ,
(, T) + (A, A) + (T, ) + (, C) + (G, G) + (C, C) + (C, A).
, , -
x[1n] y[1m] -
O(mn) .
6.27. . -
( 6.26) ,
. -
T
, , -
10 ,
. k c0 + c1 k,
c0 c1 ( c0 > c1 ). ?
AF
6.28. . -
, ,
. ,
x[1n] y[1m] (. 6.26)
x 0 y 0 x y,
. O(mn).
6.29. . , , -
. -
n, (l i , ri , w i ), 1 l i ri n -
[l i , ri ], w i .
DR
-
.
6.30. .
, -
, , -
. , -
, k = {A, C, G, T}.
,
, -
. , , -
- , ,
( ) -
.
,
. ,
: ,
s(u) u (
). k. -
T
( , s(u) s(v) ).
X
score(T ) =
(u,v)E(T )
(a) -
; .
AF
(b) (
n k) . (:
.)
DR
7
, -
, , -
T
. ,
ff (
s t, -
, );
AF
ff (
).
, -
, (
) .
.
, -
, :
DR
7.1.
() , -
,
ff , -
,
ff ( ) -
.
7.1. 185
7.1.1. :
.
1 , 6 . (-
x 1 x 2 ) , -
?
( x 1 , x 2 0):
(1) 200 300 ;
(2) 400 () .
?
:
x 1 + 6x 2 max
T
x 1 200
x 2 300
x 1 + x 2 400
x1, x2 0
AF
( linear
program); ,
- .
(x 1 , x 2 ) ; -
, -
. , -
,
(feasible solutions) ,
(. 7.1).
DR
(a) x2 (b) x2
-
400 400
: 1900
300 300
c = 1900
200 200 c = 1500
c = 1200
100 100
c = 600
x1 x1
0 100 200 300 400 0 100 200 300 400
186 7.
,
() . c
x 1 + 6x 2 = c, 1/6 (. . 7.1).
c -
. c, (-
) .
: ( -
, ).
,
: , -
, ( ).
, ( ), -
. , :
T
1) , , -
,
x 1, x 2;
, -
AF
(infeasible);
2) ,
; ,
x 1 + x 2 max
x1, x2 0
(unbounded) .
DR
, -
. - (simplex
method), 1947 .
7.6, : -
(0, 0)
-
. :
1900
300
200 1400
100
0 200
0 100 200
7.1. 187
- -
, . -
( ) ?
, . -
, () -
.
,
() -, 13 .
x 1 , x 2 , x 3 (
). x 1 x 2 ,
x 3 : -
T
400. , ,
, , x 2 + 3x 3 600.
?
:
x 1 + 6x 2 + 13x 3 max
AF x 1 200
x 2 300
x 1 + x 2 + x 3 400
x 2 + 3x 3 600
x1, x2, x3 0
. -
, -
. -
DR
(. 7.2;
x 3 ). -
, ?
c x 1 + 6x 2 + 13x 3 = c. c
( -
), -
. (0, 300, 100) -
3100 .
-? , -
, .
7.2
(
):
(0, 0, 0) (200, 0, 0) (200, 200, 0) (200, 0, 200) (0, 300, 100)
[0] [200] [1400] [2800] [3100]
, ,
, . ,
188 7.
. 7.2. -
.
x2
300
T
x1
AF 100
x3
,
.
DR
, (0, 300, 100) 3100 ,
: -
, 4. x 1 + 6x 2 + 13x 3 3100,
, 3100, -
.
(0, 1, 1, 4), -
?
7.4 , ,
, .
, ( -
)? , - - -
(. 7.6). , -
( , ),
-
.
7.1. 189
7.1.2. :
, -
. -
. .
:
d1 , d2 , , d12 440 920.
30 ,
20 2000 ;
.
? :
1. 80% .
, 30% .
T
2. 320 400
.
3. 8 .
.
,
AF
,
.
-
, . -
:
w i = i- (i = 1, , 12); w0 = 30;
x i = , i- ;
oi = , i- ;
DR
hi , f i = , i- ;
si = i- ; s0 = 0.
74 ( w0 s0 ). -
. :
w i , x i , oi , hi , f i , si 0, i = 1, , 12.
, ( ):
x i = 20w i + oi .
oi 6w i .
w i = w i1 + hi f i .
190 7.
,
, :
si = si1 + x i di .
i = 1, , 12.
:
s12 = 0.
, ? 1 :
X X X X X
2000 w i + 320 hi + 400 fi + 8 si + 180 oi min .
i i i i i
T
-.
, , .
( : // ). -
10,6 , 10,6 10,
11, ( -
AF
). ,
(
), .
( , ) -
: 8, -
, .
7.1.3. :
; -
DR
7.3. : A B,
B C, A C.
, ( ) ( -
). AB 3 -
, BC AC 2 -
4 .
( ); -
(,
, ). ?
: (, AB)
x AB , x AB
0
. -
, -
1
, -
.
7.1. 191
. 7.3. A, B C. -
.
12
6 11
b c
T
13
10 8
B C
. :
AF 0
3x AB + 3x AB
0
x AB + x AB
0
+ 2x BC + 2x BC
0
+ x BC + x BC 10
0
+ 4x AC + 4x AC max
[ (b, B)]
0
x AB + x AB + x AC + 0
x AC 12 [ (a, A)]
0
x BC + x BC + x AC + 0
x AC 8 [ (c, C)]
0
x AB + x BC + 0
x AC 6 [ (a, b)]
0
x AB + x BC + 0
x AC 13 [ (b, c)]
0
x AB + 0
x BC + x AC 11 [ (a, c)]
DR
0
x AB + x AB 2
0
x BC + x BC 2
0
x AC + x AC 2
0 0 0
x AB , x AB , x BC , x BC , x AC , x AC 0
(!),
- :
0 0 0
x AB = 0, x AB = 7, x BC = x BC = 1,5, x AC = 0,5, x AC = 4,5.
, . , , -
ac, .
:
. -
, (. 7.2).
: ,
?
192 7.
e
, : -
, , . -
, 6 ,
, , -
.
, -
-
. , -
:
LongestPath(G)
T
G
ShortestPath(G)
: x P, -
y Q , Q( y)
P(x)
AF
P.
P
y Q( y)
x Q P(x)
( , P = LONGEST PATH Q =
= SHORTEST PATH ?) -
, P
Q!
DR
( -
) ,
.
7.1.4.
:
1. .
2. .
3. .
-
.
1. , -
.
7.2. 193
n
2a. - ai x i b ,
P
i=1
(slack variable) s 0
n
X
ai x i + s = b,
i=1
s 0.
, , s, -
, .
, ( s 0)
( ).
2b. A = B A B A B.
T
3. -
, () x
x + x x + , x ( -
). ,
AF
x x + x .
-
( , ,
) -
, , -
, .
, :
x 1 + 6x 2 max x 1 6x 2 min
DR
x 1 200 x 1 + s1 = 200
x 2 300 x 2 + s2 = 300
x 1 + x 2 400 x 1 + x 2 + s3 = 400
x1, x2 0 x 1 , x 2 , s1 , s2 , s3 0
, -
. , -
( a = b a b
a b) , .
(. ).
7.2.
7.2.1.
7.4(a) ,
. s
t.
194 7.
, x 1 + 6x 2 , -
1 x1
c= x= ,
6 x2
c x c T x. ,
:
x1 200 1 0 200
x
x 2 300 0 1 1 300
x2
x 1 + x 2 400 1 1 400 .
T
| {z } | {z }
A x b
A : -
x
b.
, Ax b. ,
AF ai x bi i = 1, , m,
a1 , , am A.
- -
c T x max,
Ax b,
x 0.
DR
(
). 7.4(b) s t, -
7 . ?
(a) a 2 (b) a 2
d d
3 10 1 2 2 0 1 2
s b 1 1 t s b 1 0 t
3 1
4 5 4 5
c e c e
5 5
7.2. 195
7.2.2.
(network) G = (V, E),
(source) s (sink) t e E
(capacity) ce > 0.
s t, -
. (flow): ,
e f e ( ). -
:
1. : 0 f e ce
e E.
2. u, s t, :
X X
f wu =
T
fuz .
(w,u)E (u,z)E
(flow conservation),
.
, s
AF
t; (size) :
size( f ) =
X
fsu =
X
fut .
(s,u)E (u,t)E
: { f e | e E},
-
( ). -
.
, . 7.4 11 s x y , -
x y. fsa + fs b + fsc 27 : 11
DR
(, fsa 0), 11 (-
, fsa 3) 5 (, fsc + f d c = f ce ;
, s t). -
, -: ,
7 .
7.2.3.
-, ,
.
7.6, -
:
: s t
,
7.5 (a) (b), -
1, ,
196 7.
(c); (d), -
(, , ).
. 7.5. . (a)
. (b) . (c) . (d) .
(e) . (f) -
.
(a) (b)
a a
1 1
s 1 t s t
T
1 1
b
(c) (d)
a
AF s t s
1
0
1
1 1
b b
(e) (f)
a a
DR
1 1
s 1 t s 1 t
1 1
b b
: ,
. 7.5(e)?
. , , -
, . ,
. 7.5(f) b a, a b.
s t,
(u, v) :
1. (u, v) , -
.
2. (v, u) , -
.
7.2. 197
( )
. , , -
, , , (
T
). s t, -
.
7.6 ( ,
); .
AF
7.2.4.
, , -
, .
?
. . 7.4 ,
(L = {s, a, b} R = {c, d, e, t}):
L 2 R
DR
a d
3 10 1 2
s b 1 t
3 1
4 5
c e
5
L R, -
, -
L R, 7. ,
7 ! ( ,
, R = {t}: t
, 7 .)
(s, t)-
L R, s t.
198 7.
. 7.6. , . 7.4.
, .
.
(a) a d a 2
d
3 10 1 2
s b t s 3 b 1 1 t
4 5
c e c 5
e
(b) a 1
d a 1
d
1 1 2
T
1 10
2 1
s b 1 t s b 1 t
3 1
1
1 4 4
1
c 1
e c e
4
AF
(c)
s
2
a
b
2
d
1 t s
2
1
a
10
b
1
2
d
1
2
t
1 3 1
2
2 4 3
1
c 1
e c e
4
(d) a 2
d a 2
d
2 2 1 2
10
1
DR
s b 1 1 t s b 1 t
3 1
1
3 5 3 5
4
c 1
e c e
1
(e) a 2
d a 2
d
2 1 2 1 1
10
1 1
s b 1 t s 3 b 1 t
1
4 5 4 5
c 5
e c e
5
(f) a 2
d a 2
d
2 1 2 2 10 1 2
1
1 1
s b 1 t s b 1 1 t
2
4 5 4 5
c 5
e c 5
e
7.2. 199
-
L R; :
f (s, t)- (L, R)
:
size( f ) capacity(L, R).
, . -
,
. , ({s, b, c}, {a, d, e, t})
19. -
7, -
. ,
:
T
.
(s, t)-.
, -
AF
( ) . ? ,
t s
G f . L , s
G f , R : R = V L.
L R
e
s t
0
e
DR
,
size( f ) = capacity(L, R).
, L R, -
L R
R L. ( f e = ce f e0 = 0.) , (-
L R) -
.
, .
7.2.5.
O(|E|) , s t
. ? ( ,
?)
200 7.
, .
,
1, C|E|, C -
(?). : C -
? (, , )
?
7.31. , -
, -
C, s t. -
, , -
, ,
O(|V | |E|), .
O(|V | |E|2 )
T
.
7.3.
7.7 () -
AF
( ) ()1 . (,
) ?
: (perfect matching)
?
. 7.7. , .
?
DR
(
)! - s
- t -
.
1
, ,
(bipartite).
7.4. 201
(. 7.8) -
1. , -
, . ,
? ?
. 7.8. . -
.
s t
AF
? -
, ,
. ( 70%
30%!)
, , -
. -
, ,
.
: ,
DR
(
). , -
, : , -
-
. , (
8) -
.
7.4.
, ,
( -
). , ,
, . ,
:
, -
, .
202 7.
, , -
:
x 1 + 6x 2 max
x 1 200
x 2 300
x 1 + x 2 400
x1, x2 0
- (x 1 , x 2 ) = (100, 300) -
1900. ,
: ( 6),
T
x 1 + 6x 2 2000,
2000 .
( , )
AF
? , -
5 1
x 1 + 6x 2 1900.
, 1900 ! -
- ,
, , ?
, ,
DR
, ( -
) y1 , y2 , y3 :
y1 x1 200
y2 x 2 300
y3 x 1 + x 2 400
-, yi , -
. ,
-, ,
x 1 + 6x 2 , -
. , y1 + y3 = 1 y2 + y3 = 6. -
y1 + y3 1 y2 + y3 6,
7.4. 203
.1 :
y1 , y2 , y3 0
x 1 + 6x 2 200 y1 + 300 y2 + 400 y3 y + y3 1
1
y2 + y3 6
yi ? ,
, ( y1 , y2 , y3 ) = (5, 3, 6).
( 200 5 + 300 3 + 400 6 = 4300).
, 200 y1 + 300 y2 + 400 y3
.
:
T
200 y1 + 300 y2 + 400 y3 min
y1 + y3 1
y2 + y3 6
y1 , y2 , y3 0
AF
,
() . -
-
, .
:
1900, . -
. 7.9.
DR
. 7.9. ,
. ,
, .
( )
,
. -
, ,
1
y1 0 y2 0.
204 7.
.
:
ff y j -
; () -
.
ff x i (-
y j ): ( -
y j ) x i , -
.
ff -
yi ,
.
T
,
(. 7.10). , -
, . 7.11. -
-, ( -
AF
) :
. : A = (ai j ) -
,
.
. 7.10.
.
: :
DR
T
c x max y T b min
Ax b yT A cT
x0 y0
. 7.11.
( i I) ( i E), m = |I| + |E| . n -
x j ( j N ) . -
m = |I| + |E| . , ,
; .
: :
c1 x 1 + + cn x n max b1 y1 + + bm ym min
ai1 x 1 + + ain x n bi i I a1 j y1 + + am j ym c j j N
ai1 x 1 + + ain x n = bi i E ai j y1 + + am j ym = c j j 6 N
x j 0 j N yi 0 i I
7.5. 205
. -
, -
. s t
s t : ,
s t.
B S A
D C T
T
, : -
- ,
s t. ?
: s t, , -
AF
! (-
7.28) x u u:
x s x t max,
|x u x v | wuv {u, v}.
s t, -
, u v wuv .
,
. ,
DR
!
.
, -
, .
. ,
, -
-
( 7.25). , -
( -
), - -
, -
.
7.5.
. , ---
206 7.
.
{, , },
, . (-
, .)
G= 0 1 1
1 0 1
1 1 0
. -
, -
. ,
T
(mixed strategy) x 1 , -
x 2 x 3 .
x = (x 1 , x 2 , x 3 ) , 1. ,
y = ( y1 , y2 , y3 ).1
, , -
AF
, i, j, x i y j . ,
() ( )
Gi j P( i, j) =
X X
Gi j x i y j .
i, j i, j
, .
?
. , ,
( x = (1/3, 1/3, 1/3)).
DR
? -
, . ,
1 1 1
0 + (1) + 1 = 0.
3 3 3
0
( ). ( y1 , y2 , y3 ) -
, ,
. :
!
1 1
X X X X X
Gi j x i y j = Gi j y j = yj Gi j = y j 0 = 0,
3 3
i, j i, j j i j
,
G 0.
1
, , -
.
7.5. 207
, ,
,
( ) . -
: -
.
, -
-- ?
. , ,
, . , , -
,
( ). -
, , .
:
T
(
, ). -
. ,
, -
( , -
AF
, , ).
, . ( , -
.)
G= 3 1
2 1
,
x = (1/2, 1/2). ? -
1/2, 0. ,
DR
y = (0, 1).
, x = (x 1 , x 2 ), -
, : -
3x 1 2x 2 , x 1 + x 2 ,
, . y -
,
.
, x , -
, ,
min{3x 1 2x 2 , x 1 + x 2 }, :
(x 1 , x 2 ), min{3x 1 2x 2 , x 1 + x 2 }
x i
. -
, , x 1 x 2
z = min{3x 1 2x 2 , x 1 + x 2 }
208 7.
-
:
z max
z 3x 1 2x 2
z x 1 + x 2
, x 1 x 2 ,
z, :
z max
3x 1 + 2x 2 + z 0
x1 x2 + z 0
T
x1 + x2 = 1
x1, x2 0
, ,
, , y, -
. ,
AF
( y1 , y2 ), max{3 y1 y2 , 2 y1 + y2 } .
| {z }
y
:
w min
3 y1 + y2 + w 0
DR
2 y1 y2 + w 0
y1 + y2 = 1
y1 , y2 0
,
(. 7.11)! ,
, V .
? -
() , -
V , -
. () -
V , .
V (value) .
1/7, (3/7, 4/7) ,
(2/7, 5/7) .
( )
( -
) ,
7.6. - 209
(min-max theorem).
:
X X
max min Gi j x i y j = min max Gi j x i y j .
x y y x
i, j i, j
, -
( , )
: (
) .
7.6. -
- -
. ?
T
- -
-
:
v
AF
v v 0 :
v v0
-
(. 7.1 7.2). n
x 1 , , x n ?
x i Rn .
n x 1 , , x n ,
, -
( ,
). ,
DR
-
-
.1
?
7.6.1. n-
7.12 . -
, ,
-
. , A , -
,2 3 7 . , -
, 3 ,
6 ( ,
) - ,
, .
1
: -
( ),
.
210 7.
. 7.12. , .
x2
A
2
x 1 + 6x 2 + 13x 3 max
7
x 1 200 1
B C x 2 300 2
x 1 + x 2 + x 3 400 3
3
x 2 + 3x 3 600 4
x1 0 5
1
T
x1 x2 0 6
5
x3 0 7
6
AF 4
x3
.
. -
, ,
, .
DR
, ? -
n , n ,
. , -
n, -
, . :
n , -
.1
.
, n 1
.
, 7.12 A C -
{,
3 },
7 .
1
: -
. 7.12 B {, 2 ,
3 },
4
{,
2 , 4 }.
5 . -
, , .
7.6. - 211
7.6.2.
- :
1) , ( ,
);
2) , .
, ,
. - , -
, .
, .
c T x max
T
Ax b
x0
x = (x 1 , , x n ) .
. , , , -
, n {x 1 0, , x n 0} -
AF
. ( , -
.) -, ,
. :
, ci 0
i.
, ci 0 i, x 0
() . ,
ci > 0 - i, , -
, x i . (,
DR
,
x i .)
, -
, x i , ci > 0.
x i ? - . -
, x i 0
x i , - ,
, . -
n , .
, :
2x 1 + 5x 2 max
2x 1 x 2 4 1
x 1 + 2x 2 9 2
x 1 + x 2 3 3
x1 0 4
x2 0 5
212 7.
- , -
4 .
5 x 2 0, -
. x 2 ,
x 1 + x 2 3, -
x 2 = 3, , .
3 .
4
, , , -
. u - ?
-
. -
, ,
. , x -
y1 , , yn x ,
T
u:
u
y2 y1
AF x
, , ,
ai x bi , x , -
,
yi = bi ai x.
n yi , , -
x y x i y j .
, -
DR
yi . (, -
), -
.
1. y 0,
, u.
2. u y-.
3. cu + c T y, cu
u, c -
.
, ! -
7.13 .
- .
, ,
, -
0. ,
. -
,
7.6. - 213
. 7.13. -.
:
: {,
4 }
5 ( ).
2x 1 + 5x 2 max : 0.
2x 1 x 2 4 1
: x 2 .
x 1 + 2x 2 9 2
5 , 3
x 1 + x 2 3 3
. x 2 = 3.
x1 0 4
: {,
4 }:
3
x2 0 5
y1 = x 1 , y2 = 3 + x 1 x 2
( y1 , y2 ): : {,
4 }.
3
: 15.
T
15 + 7 y1 5 y2 max
y1 + y2 7 1
: y1 .
4 ,
2
3 y1 2 y2 3 2
. y1 = 1.
y2 0 3
: {,
2 }:
3
y1 0 4
z1 = 3 3 y 1 + 2 y 2 , z2 = y2
AF y1 + y2 3
(z1 , z2 ):
5
7 1 : {,
2 }.
3
22 z1 z2 max
3 3 : 22.
1 5
z1 + z2 6 1
: ci < 0.
3 3
z1 0 2
{,2 }
3 (
z2 0 3
).
1 2 (x 1 , x 2 ) = (1, 4).
z z 1 4
3 1 3 2
DR
1 1
z + z 4 5
3 1 3 2
{,
2 }
3
y1
{,
3 }
4
{,
1 }
2
x 2
{,
4 }
5 {,
1 }
5
, ,
( -
), . -
(. . 210), ,
. ,
( ).
214 7.
7.6.3.
- , -
.
. , -
?
: -
, .
: ,
. , -
, -!
, , -
(. 7.1.4):
T
c T x min, Ax = b x 0.
( - ; c -
.) , :
bi < 0, i- 1.
AF
:
ff m z1 , , zm 0, m
.
ff , zi i- .
ff z1 + z2 + + zm .
zi = bi i, .
-, .
. z1 + + zm -
DR
, zi , ,
.
zi (-) - -
!1
.
? zi , --
, . ,
: - zi ,
. , -,
.
. 7.12 B ,
(
1
: , . -
- , ,
. , -
, , . -
.
7.6. - 215
2 ,
, 3 ,
4 ).
5 , , -
, ({, 2 ,
3 },
4 {,
2 ,
3 },
5
{,
2 ,4 }
5 {,3 ,
4 }),
5 -
(0, 300, 100).
- : -
, ,
. -
-
.
( -
).
T
(perturbation):
. , -
. , -
, -
, 2 ,
3 ,
4 5 - ,
AF
.
. -
,
( , ). -
- . -
,
x i , ci -
. , x i , -
.
x i , .
DR
- .
7.6.4. -
-
c T x max, Ax 0 x 0,
n A m -?
, , -
. u
. , , n -
- .
n 1 , u
nm : , , -
.
, -
, -
. (
216 7.
n ), , ,
n n (
, ) -
. (. )
O(n3 ), : O(mn4 ) .
, -
. . n -
n , (n = 4):
x1 2x 3 =2
x2 + x3 =3
T
x1 + x2 x4 = 4
x 2 + 3x 3 + x 4 = 5
(, - -
), . -
AF
( 1) :
x1 2x 3 =2
x2 + x3 =3
x 2 + 2x 3 x 4 = 2
x 2 + 3x 3 + x 4 = 5
, x 1 -
( x 1 ).
x 2 , x 3 , x 4 : , -
DR
x 1 .
Gauss(E, X )
{: E n n X = {x 1 , , x n },
i- ei : ai1 x 1 + ai2 x 2 + + ain x n = bi .}
{: , .}
ai1 :
n = 1: b1 /a11
a p1
e1 e p
i 2 n:
ei ei (ai1 /a11 ) e1
(x 2 , , x n )
P Gauss(E {e1 }, X {x 1 })
x 1 (b1 a1 j x j )/a11
j>1
(x 1 , , x n )
7.7. : 217
( , , ,
.)
O(n2 ) , n
1; O(n3 ) . -
, -
,
. , -
.
, mn4 mn,
- . ,
( 7.6.2)
T
.
O((m + n)n).
, , -
( ) cu + c y, cu -
AF
u. -
: ci > 0 ( ,
, - ). ,
yi , , -
, yi .
, ( yi -
) , .
, - O(mn).
? , ,
, Cm+n
n
. -
DR
n. , -
. -
, - . -
,
- .
7.7. :
, -
. , ,
, ,
.
(
) . , -
, .
ff true
false.
218 7.
ff AND OR 2.
ff NOT 1.
, .
AND
NOT OR
T
AF AND OR NOT
.
: ? (
.)
-
.1 x g g, -
0 x g 1. -
DR
:
g g g g g
xg = 1 xg = 0
h h0 h h0 h
x g xh x g xh x g = 1 xh
x g x h0 x g x h0
x g x h + x h0 x g x h + x h0 1
1
,
, .
,
. ,
.
7.7. : 219
- ( -
).
,
. -
, , .
1979 -
, -
, , -
.
, , -
(-
T
). , -
. ,
( ) , ,
-
. -
AF
-, .
:
, ,
.
(Narendra Karmarkar), -
, ,
() -
. -
,
( ), -,
DR
. .
, ,
, -
- ,
-
.
-
0 false 1 true.
, x out , -
.
?
-
! :
,
. , -
.
220 7.
,
, , -
. -
, -
. ,
, , -
,
!
, NP-, , -
-
, -
( ), .
: -
T
? . -
? -
, . !
AF
7.1. :
5x + 3 y max
5x 2 y 0
x + y 7
x 5
x 0
DR
y 0
.
7.2. , -
. 15 , 8.
10 , 13. 4
, 1 , 2 -
3 .
, (-
) -
.
7.3. 100
60 . .
ff 1 2 ,
40 , 1000 . .
ff 2 1 , -
30 , 1200 . .
221
ff 3 3 ,
20 , 12000 . .
, -
.
7.4. ,
. ,
.
, .
-
, - 3000
() . ? (-
.) -
T
.
7.5. : -
, .
1 1,5 ;
70 . 2 1 -
AF
60 . 10 ,
20 . : 14
6 .
240 180 . -
. -
110000 . ,
.
(a) -
.
DR
(b) ,
.
?
7.6. , -
, -
( ).
7.7. a, b, -
x + y max
ax + b y 1
x, y 0
(a) ;
(b) ;
(c) .
222 7.
7.8. :
(1, 3), (2, 5), (3, 7), (5, 11), (7, 14), (8, 15), (10, 19).
a x + b y = c, -
( ). -
( ) ,
(maximum absolute error)
max |a x i + b yi c|.
1i7
7.9. -
( 3x 12 5x 1 x 2 ) -
.
x 1 , x 2 , -
T
, -
() .
7.10.
S T , .
AF 6
A
4
1
D 5
2 2 10 G
1
S B E 12
20
2 6 T
1
C F 4
5
DR
7.11. :
x + y max
2x + y 3
x + 3y 5
x, y 0
?
.
7.12.
x 1 2x 3 max
x1 x2 1
2x 2 x 3 1
x1, x2, x3 0
, (x 1 , x 2 , x 3 ) = (3/2, 1/2, 0) .
223
7.13. .
, -
, . , ,
.
(a) 2 2.
(b)
?
7.14. , , -
. -
, . : -
,
. -
( , ):
T
+2 0 3
1 2 +1
AF
?
7.15. , :
0 0 1 1
0 1 2 1
1 1 1 1
1 0 0 1
1 2 0 3
1 1 1 1
3 1
DR
0 2
0 2 1 1
(: (1/3, 0, 0, 1/2, 1/6, 0, 0, 0)
(2/3, 0, 0, 1/3).)
7.16. (1) , (2) -, (3) , (4) ,
(5) . (A) 15
, (B) 2 6 , (C) 4 -
, (D) 100 . (
100 ) . , (E)
50% (- ) .
.
() () () () ()
21 0,85 0,33 4,64 9,00
- 16 1,62 0,20 2,37 8,00
371 12,78 1,58 74,69 7,00
346 8,39 1,39 80,70 508,20
884 0,00 100,00 0,00 0,00
224 7.
-
, -
. , -
( -
). .
7.17. ( -
).
4
A C
7 9
2
S T
2
6 5
B D
T
3
(a) f .
(b) G f ( -
). , S,
, T .
AF
(c) (bottleneck edge), -
-
. .
(d) ( ) -
.
(e) .
(:
, .)
7.18. .
DR
.
(a) , -
.
(b) -
, .
(c) ,
.
(d) u ,
(1 "u ), "u
u.
, (a) (b) -
, (c) (d) -
.
7.19. - ,
. , , -
.
225
7.20. .
G = (V, E) -
{ce }. (s1 , t 1 ),
(s2 , t 2 ), , (sk , t k ), si , t i . k d1 ,
, dk . k f (1) , , f (k) :
ff f (i) si t i .
ff e f e(1) + f e(2) + + f e(k) -
ce .
ff f (i) di .
ff ( ) .
?
7.21. , -
T
.
, -
.
7.22. G = (V, E), -
AF
ce , f s t.
, -
: (u, v) cuv ,
cuv 1. , f
: fuv = cuv .
,
. ,
O(|V | + |E|).
7.23. G = (V, E) -
, , -
DR
S V : {u, v} E
u, v S.
,
. (:
- -
?)
7.24. .
,
.
.
G = (V1 V2 , E) ( V1 V2 ),
M E G ( ,
). -
M , M .
(alternating path) , -
-
M E M .
226 7.
(a) M
. .
E
A
F
B
G
C
H
D
I
T
(b) , M ,
.
(c) ,
O(|V | + |E|), .
AF
(d)
, O(|V | |E|).
7.25. . ,
.
A
1 2
S 1 T
DR
3 1
B
(a) S T -
.
(b) . -
,
S T .
. -
( 7.2).
(c) , , ye
e, x u u 6= s, t.
(d) , -
: ye
s t 1.
(e) ? ,
(s, t)-
227
,
.
7.26.
a11 x 1 + + a1n x n b1 ,
.........................
am1 x 1 + + amn x n bm
j- (forced-equal),
x = (x 1 , , x n ).
, a ji x i b j ,
P
i
x, ,
a ji x i < b j .
P
T
i
,
x 1 + x 2 2,
x 1 x 2 2,
AF x 1 1,
x 2 0
,
.
x (charac-
teristic), I, -
, x I, . -
(x 1 , x 2 ) = (1, 3), x 1 < 1 x 2 < 0,
x 1 + x 2 = 2 x 1 x 2 = 2.
(a) ,
DR
.
(b) ,
, -
, .
7.27. , ( 6.17)
. -
, -
, (
)? .
7.28. .
s t -
l e > 0.
(a) ,
P (s, t)- f , -
l e f e size( f ) = 1. -
e
.
228 7.
(b) .
(c) ,
x s x t max
x u x v luv (u, v) E.
(d) -
. 205. -
?
7.29. . -
. n ; i- si .
m ; j- p j , ,
T
L j {1, 2, , n}
.
-
. .
(a) ,
AF
{0, 1}. (
x i i- y j j-
. y j x i ?)
(b) ,
(
),
( ) -
. (: ,
, , ,
, .)
DR
7.30. . 7.3. ,
-
. , -
,
k k , - -
k .
. (: -
.)
7.31. -
.
1000 A 1000
S 1 T
1000 B 1000
229
(a) , -
,
! ( , , -
.)
, -
.
G = (V, E), s, t, {ce },
. , -
, 1, -
s t
. (fattest) s t -
.
(b) , s t
T
() .
(c) , G
|E| s t.
(d) ,
AF
, -
O(|E| log F ) -
, F . (:
5.4.)
,
,
O(|V | |E|) .
DR
8
NP-
8.1.
,
T
, ,
. ,
(n) ,
(, n, n2 n3 ) n.
, , ,
AF
(, , ) -
. , n! n
n , n nn2 -
, s t.
, -
,
(. ). , , -
- , -
.
, -
DR
: , -
, (
, , ,
, , , -
() -
. -
, , ,
. -
-
( ): ,
264 1 = 18 446 744 073 709 551 615 , -
! : , -
( ) .
1798 , -
8.1. 231
, ( -
) -
(, ).
1965 , , -
, 60-
. , .
: -
18 . ,
-
.
, -
: -
, , -
T
? :
, .
,
O(2n ). 1975
25 , 1983 31, 1995 38. , -
AF
45 . , -
( ) ,
( -
) .
O(n) O(n log n) -
100 10 , -
O(n2 ) 10 . -
O(n6 )
. :
DR
-
, -
. -
.
, , , -
, -
,
.
, , 10.
). -
, .
-
,
:
.
232 8. NP-
(Satisfiability, SAT) (. 3.28 5.3)
( , .),
.
:
(x y z) (x y) ( y z ) (z x) (x y z ).
(Boolean formula in
conjunctive normal form, CNF). 1 (-
) (clauses),
( , ) .
(, x) (x). -
(satisfying truth assignment) -
T
( , true false), ,
.
,
, , .
, true ,
AF
, , .
, ?
, , -
. (: ,
.)
? , , ,
n 2n , .
(search problem).
(instance) I, ,
( ),
DR
(solution) S , ;
. , -
.
, ( ) -
: ,
.
( .)
,
, .
, -
.
(search problem) C -
I ( ) S (),
|I|. , S
I, C (I, S) = true.
1
, ,
.
8.1. 233
-
, -
( ) . ,
()
.
(1) -
,
5.3.
(2) ,
: -
, (-
3.28). . 9.
T
( ), !
(traveling salesman problem, TSP) n 1,
AF
, n n(n 1)/2 , b.
, ,
, b ( -
, ). ,
(1), , (n) , -
b:
d(1),(2) + d(2),(3) + + d(n),(1) b.
. 8.1 ( ; , -
DR
).
. 8.1. , , -
16.
3 2 3 3
4
1
4
3 2
6
234 8. NP-
, -
: -
, . , -
, .
, ?
: -
, -
(, ), -
.
, -
. , ,
. ,
: -
T
,
( 8.1).
, , : , -
-, ? , -
,
AF
: ,
, ? , -
, .
, ( -
) -
. 6.6 ,
(n 1)! , -
, .
, .
DR
: P -
b T di j b.
(i, j)T
, .1
.
1735 , ( :
) , -
( ). ,
, ,
.
? ,
( ), -
1
, , , ,
.
8.1. 235
T
. ,
( -
). , , ,
.
:
AF
, , , -
, ( ), ( 3.26). -
, :
.
: (Euler path)
, ,
. ,
( ).
: -
DR
, , -
? : 64 ();
, -
(
2, 1). . 8.2 , -
.
?
, ,
.
, . -
: , -
, , .1 -
, -
.
1
,
XIX , -
.
. . .
236 8. NP-
. 8.2. .
T
,
AF
.
: , . , ,
: ,
, , (. ).
(cut) ,
. (minimum cut)
b b ( ) -
DR
. , . 8.3 3.
, n 1 : -
1, - -
. (
)
. (
. 137.)
( . 8.3) -
( , -
- ). , -
. -
(balanced cut) n b
S T , -
|S|, |T | n/3 S T b .
...
, -
. (,
8.1. 237
. 8.3. ?
). , -
,
T
. -
(, )
( ) .
-
, ,
AF
, . -
.
7, - ,
-
, ,
. , -
. -
DR
: -
, , ,
. ,
, ; -
8.2 ( ,
).
:
n ( , n n );
n , , , .
7.3 , , -
. (3D
T
Matching) . -
n n n ,
, , -
. (b, g, p) , b, g p
. n ,
AF
n .
. 8.4?
. 8.4. . -
.
DR
,
(independent set problem),
6.7, g, -
g , .
8.1. 239
. 8.5? ? 6.7
,
.
. 8.5. ?
T
AF
. -
(vertex cover problem) b
b , (
).
. 8.5 ? ? -
?
DR
, .
(longest path problem)?
240 8. NP-
G -
s t, g. s t -
g. , ,
( ).
( -
-) .
(knapsack problem),
6.4. w1 , , w n
v1 , , vn n . W g (
, -
T
, ). -
, W
g. ,
, .
6.4 -
AF
O(nW ). -
, , -
W , log W ( W ).
:
2n .
, .
,
: , 12
I I I I I I I I I I I I. , ,
, -
DR
8.2. NP- :
,
. :
(NP-) ( P)
3- 2- ( )
T
AF
, -
.
.
- (-
, - , , -
). :
, . -
, .
DR
P NP
. , -
C , I S
true , S I.
C (I, S) |I|. NP
.
, -
. , -
I |I| -
, , . ,
, P.
, -
? , , P 6= NP? -
, , -
( -
, ) , -
NP. : -
242 8. NP-
P NP?
, P (polyno-
mial). NP? no problem ( !),
nondeterministic polynomial time -
. NP -
, -
, . NP -
, (decision
problems), /. (: , -
?
.) -
.
T
NP ( -
), P NP -
, . , P 6= NP
P NP
AF
.
, P 6= NP
? ,
( ); ,
NP: -
, NP- .
DR
, (reductions), -
.
7 . -
. A -
B f h
: A I,
B f (I) S h
(. ). B f (I) , -
A I. f h,
B A ( -
).
S f (I)
f (I) h h(S) I
I f
B
f (I)
I
8.2. NP- : 243
A B
A, B.
, A
B, B .
A B
A B,
, ,
-
( 8.6). NP-
NP- , (-)
NP- NP-.
T
. 8.6. NP P. , -
. , NP- ( NP):
P 6= NP, (NP-) P. ,
AF
P 6= NP, ( P NP-).
NP
P NP-
DR
:
A B B C, A C.
, ,
f h (. . 242). ( fAB , hAB ) ( f BC , hBC )
A B B C, A C :
f BC fAB A C, hAB hBC
C A.
, NP- B ( -
, NP- A), B C,
C NP- ( NP- A C B).
244 8. NP-
.
NP-,
.
, , -
NP- . -
,
NP- . 8.3 ,
.
P NP- , -
.
T
( : -
). -
, , -
NP-. ( , NP.)
NP-, ; (,
AF
) , -
( ) (. -
10), NP- (, , ).
,
, NP-.
8.3.
NP- . 8.7, ,
.
DR
. 8.7. .
NP
3-
8.3. 245
,
.
(s, t)-
, -
, .
(s, t)-,
s t, s t,
. , ,
(s, t)-? , , .
(G = (V, E), s, t)
(s, t)- G 0 = (V 0 , E 0 ) : G 0
G x , x s t.
T
G G0
s s
AF t x t
:
DR
G = (V, E),
s, t
x
{s, x}, {x, t}
(s, t)-
G 0 = (V 0 , E 0 )
{s, x}, {x, t}
:
246 8. NP-
? .
1. .
x s t, -
G 0 {t, x}
{x, s} ( ). s
t.
2. .
,
(s, t)-. , , -
G (s, t)-, , G 0 .
: {t, x} {x, s} ,
.
T
, - ,
, . (
.)
(s, t)-. , -
AF
.
( ),
.
3-
. 3- -
, -
,
(x y z ) (x y z) (x y z) (x y).
DR
( ,
).
g g ,
. ?
. ,
true. : - -
x, x .
(,
,
). , ,
(, )
. -
( ).
?
(x y z) , -
x, y, z. , ,
. -
8.3. 247
, -
. ( :
-
, .) -
(-
). ,
, ( -
4).
, , .
, -
. , ,
8.8.
T
. 8.8. (x y z ) (x y z) (x y z) (x y).
1. G ,
. -
. ,
.
AF
2. g = 4.
y y y y
x z x z x z x
DR
, . -
-
( f . 242),
( h). , .
:
1. S, g G,
I.
S ,
x x, . S
, x, x true; S
x, x false; ,
, , x . S
248 8. NP-
g , ,
.
2. G g, I -
.
, , I , -
, G g.
(, ) -
S. ( , -
S ?)
3-
, , -
. , ,
T
-
. -
, - -
, .
: (a1 a2 ak )
AF
(a1 a2 y)(y a3 ak ), y , -
, -
. ,
(a1 a2 y1 ) (y 1 a3 y2 ) (y 2 a4 y3 ) (y k3 ak1 ak ),
yi . ( 3-)
I 0 . , I 0 I .
? , I
, I 0 , ,
DR
ai
yi ,
(a1 a2 ak )
.
(a1 a2 y1 )(y k3 ak1 ak )
, .
a1 , , ak : -
y1 , y2 yi , , -
. , (a1 a2 ak ).
, (a1 a2 ak ) ai . -
y1 , , yi2 true,
false. , .
,
3-. ,
, 3- -
.
8.3. 249
: 3-
, , -
. ,
- ,
.
- x k > 3 .
x 1 , x 2
. ,
. ,
(x 1 x 2 ) (x 2 x 3 )(x k x 1 ).
, ,
(
T
).
, -
.
AF
, . .
,
, S
G = (V, E) ( ) , -
V S G (. 8.9).
. 8.9. S , V S -
: S ,
S, V S -
.
DR
, (G, g) -
(G, |V | g).
,
. G -
g.
250 8. NP-
.
(complement) G = (V, E) G E
= (V, E), E -
( , G). S
G, S G:
G G.
,
, (G, g) (G,
g).
3-
3- -
: (, , ) -
, -
. -
T
.
,
, (
b, g, p boy, girl, pet).
AF p1
b0 g0
p0 p2
g1 b1
DR
p3
, b0 b1 , g0 g1
. (- p1 , p2 , p3 , p4 ,
.) ,
:
(b0 , g1 , p0 ), (b1 , g0 , p2 ) ( ),
(b0 , g0 , p1 ), (b1 , g1 , p3 ). , (- -
gadget)
.
( ): p0 p2 , p1 p3 .
3- -
,
x.
p x1 , b x0 , g x1 . , x = true, b x0
g x1 , x = false, g x0 .
8.3. 251
, -
. c = (x y z) bc g c . -
, -
.
: (1) x = true, (2) y = false, (3) z = true. (1)
(bc , g c , p x1 ), p x1 p1 x. -
, p1 , x = true. -
y z ( (bc , g c , p y0 )
(bc , g c , p y2 ), (bc , g c , pz1 ) (bc , g c , pz3 )).
bc g c , c -
.
:
, : -
T
( ). ,
,
, , -
.
, .
AF
:
. -
, ,
, -
(b x0 , g x1 , p x0 ) (b x1 , g x0 , p x2 ), x = true, (b x0 , g x0 , p x1 )
(b x1 , g x1 , p x3 ), x = false. , c
(-
bc , g c , -
).
: -
DR
, :
n m , 2n m
( : , -
,
). , : 2n m -
-, ( ,
).
, A
m n, x = (x 1 , , x n ), -
Ax = 1,
1 .
?
: ( )
, . -
252 8. NP-
? m , m , m ,
n . n x 1 , , x n , -
; x i = 1 , i- .
, , , -
x 1 , , x n , .
- . j1 , , jk .
, :
x j1 + x j2 + + x jk = 1.
, .
A:
T
1 0 0 0 0
0
0 0 1 1
0 1 1 0 0
1
0 0 0 1
A = 0 1 0 0 0
AF 0
1
0
0
0
0
0
1
1
0
1
0
1
0
1
0
0
1
0
0
A ,
, , , , , , ,
.
, -
DR
, .
-
: , -
0 1, -
, .
, :
.
:
1 0 0 0
0 0 0 1
A=
0 1 1 .
0
1 0 0 0
0 1 0 0
A, -
. -
8.3. 253
( ), -
: 18, 5, 4, 8,
111112 = 31. ,
.
. - -
31, -
(1, 1, 1, 1, 1): , 5 + 6 + 20 =
= 001012 + 001102 + 101002 = 111112 = 31. -
:
, (n + 1).
( n,
).
T
, (
) : f h (.
. 242) . , 3-
. -
AF
: , NP-,
(
). 8.10 -
.
( )
. x,
Ax b. (
),
( 7.1.4) -
x i x i 1 x i 0.
DR
,
. NP-
: -
, , -
.
G = (V, E)
C E E . , : (1)
, (2)
(e, e0 ) C .
. 8.10 ; -
. , ( ,
).
, -
,
.
254 8. NP-
. 8.10. ( C
{(e1 , e3 ), (e5 , e6 ), (e4 , e5 ), (e3 , e7 ), (e3 , e8 )}) .
e1
e2
e3
e8 e7 e5
e4
e6
T
, .
Ax = 1 ( A m n
AF
, m n )
(. . 8.11) , m + n .
x i ( x i = 0
x i = 1). x j1 + + x jk = 1 k -
k , . ,
-
.
, . -
A, , -
. (,
DR
m ) x i C
(e, e0 ), e ,
( 8.11), e0 ,
x i = 0 ( ). ,
, , .
.
?
. , -
, -
. , -
. -
, , ,
0, , , 1. -
, .
( ).
. -
,
- ( C ).
8.3. 255
. 8.11. .
T
AF
, . 8.12.
- G, -
a, b, c, d. , -
G , -
. , , -
DR
. ( ):
, , ,
( ) :
, ,
( ).
, ,
{a, b} {c, d}, (. 8.12(d)), -
.
, -
. -
, . -
({a, b}, {c, d}) C, . 8.12(a).
, {a, b} {c, d} -
. : , {a, b},
{a, f } (-
{a, b} ).
{c, d} ( ) {c, h}. -
,
256 8. NP-
. 8.12. , .
(a) f l m s
a b
g k n r
c d
h j p q
(b)
T
a b
AF c d
(c)
a b
c
DR
d
(d)
a b
C = {({a, b}, {c, d})}
c d
12 . , -
, C.
G = (V, E) -
: |V |; u v
1, {u, v} E, 1 + .
8.3. 257
1 . -
|V |.
, , -
|V |. -
,
|V | + (
1 + , |V | 1 1). ,
.
, , ?
, , = 1. = 1 -
: i, j, k
di j + d jk dik (, di j + d jk 1 + 1 = 2 dik ). ,
-
T
( ).
-
: .
, -
, -
AF
. , -
|V |,
|V | + , |V |. 9 ,
, ( P 6= NP) -
.
NP
. 8.7. -
, , ,
(= NP)
DR
. , . 8.7 -
NP-.
NP -
(circuit SAT).
(. . 8.13 7.7),
, -
:
ff AND OR, 2.
ff NOT, 1.
ff ( ), true
false.
ff ( 0), ?.
0 .
, -
( ), -
( false true = true). ,
true, false, true . 8.13 false.
258 8. NP-
. 8.13. .
AND
NOT OR
AND OR AND
T
AF true ? ? ?
,
, , -
true ( , ). ,
(false, true, true) . 8.13.
,
. -
( AND),
. , -
, . ( .)
DR
:
,
. ( -
): g -
, , -
:
g g g g g
(g) (g )
h1 h2 h1 h2 h
1 )
(g h (g h1 ) (g h)
2 )
(g h (g h2 ) )
(g h
(g h1 h2 ) (g h1 h
2 )
8.3. 259
( , ?) -
true, (g) -
g.
-
.
-
A .
? , , A,
, .
, . , -
. , A C ,
I S, S -
. , -
T
I ( , , , S
I, S).
7.7 , -
,
( ) , .
AF
C , S
I. .
, I A
, I, -
S. true -
, , S
I. , -
A I, . .
DR
NP ,
(,
). ,
, ( -
, , );
(unsolvable).
, .
x 3 yz + 2 y 4 z 2 7x y 5 z = 6
( -
) , .
1970
( , ,
), -
1936 ; -
260 8. NP-
(). -
, ( ,
). -
.
, ,
. , -
, .
Terminates(p, x), p x
, p x.
? -
, ,
, .
. -
T
. Terminates(p, x) . -
:
Paradox(z)
Terminates(z, z)
AF
z , z
, (z).
, . Paradox -
Paradox(Paradox).
?
. - ,
, .
: , (halting problem)
.
, -
DR
. , -
, , .
, ,
? ( -
, ?)
, .
8.1. . -
:
:
: , b.
: b, , -
.
261
:
: .
: , -
, .
, -
, -
.
8.2. . ,
, -
.
( )?
8.3. (stingy SAT) :
T
k ,
k true,
. , NP-.
8.4. 3- ,
AF
3.
(a) , 3- NP.
(b) NP- . -
?
NP- 3-
( , NP-).
,
G, , -
g. , , , -
DR
3-. ,
, , 3- NP-.
(c) NP-,
, 3.
-3. NP-
3-?
-3 3-.
G = (V, E) 3, b;
3- G |V | b. ,
C V G , -
V C G. , G
b ,
|V | b. NP- 3-.
(d) , 3- O(|V |4 ).
8.5. -
, -
. (: x i j ,
262 8. NP-
, i- j . -
, .)
8.6. 249 , 3- NP--
,
.
(a) , ,
.
(b) , NP-
, 4.
8.7. :
,
. , -
T
. (: , ,
, -
, , . 7.30.)
8.8. 4- (exact 4SAT)
AF
, , -
. , ,
. , NP-.
8.9. (hitting set) -
{S1 , S2 , , Sn } b. H -
b, Si ( Si H 6= i),
, . , NP-.
8.10. NP- . , -
NP-, -
DR
NP- .
(a) (subgraph isomorphism). -
G H , G H (
H , , -
G), ,
.
(b) (longest path). G g; G
g.
(c) (max SAT).
g , g .
(d) (dense subgraph). G a b;
a G, b .
(e) (sparse subgraph). G a b;
a G, G b .
(f) (set cover).
NP- .
263
T
8.12. k- (k-spanning tree) .
: G = (V, E).
: G, -
k.
AF
, k 2
(a) k- (
NP);
(b) k- NP-. (: k = 2
.)
8.13. -
NP-.
G = (V, E),
(a) L V , , -
DR
L ;
(b) L V , , -
L ;
(c) L V , ,
L;
(d) k, , k -
;
(e) k, , k
;
(f) k, , k -
.
(: , , -
NP-.)
8.14. NP- : -
G = (V, E) k k -
k, .
264 8. NP-
8.15. ,
NP-.
: G1 = (V1 , E1 ), G2 = (V2 , E2 ) b.
: V10 V1 , V20 V2 , -
() b
.
8.16. - ,
.
: i j ( 1 n)
0 1
(0 , 1 ). -
5 :
T
1 2 3 4 5
1 0,0 0,4 0,2 0,9 1,0
2 0,4 0,0 0,1 1,0 0,2
3 0,2 0,1 0,0 0,8 0,5
AF 4
5
0,9
1,0
1,0
0,2
0,8
0,5
0,0
0,2
0,2
0,0
2 3 ,
1 5 . :
. -
( ; , {1, 3, 5}
0,2 + 1,0 + 0,5 = 1,7). , . -
- (experimental cuisine):
: n, n n p 0.
DR
:
p.
, , -
3-.
8.17. , NP ,
O(2 p(n) ), n , p
( ).
8.18. , P = NP, RSA ( 1.4.2)
.
8.19. 2n (kite), n
, n , -
. (kite problem)
g ,
2g , . NP-
.
265
T
, -
, a b, k 1 a
k 1 b.)
(b) , .
(: .)
AF
8.22. -
( i j , i j). -
( ). -
,
.
E 0 E G = (V, E) -
(feedback arc set),
.
: G = (V, E) b -
DR
b.
(a) , NP-.
, .
G = (V, E) -
b. V = {v1 , , vn }. -
G 0 = (V 0 , E 0 ), V 0 2n w1 , w10 , , w n , w n0 ,
E 0 n + 2|E| () :
ff (w i , w i0 ) i = 1, 2, , n;
ff (w i0 , w j ) (w 0j , w i ) (vi , v j ) E.
(b) , G b, G 0
b.
(c) : G 0 -
b, G b. (:
b, -
,
, .)
266 8. NP-
T
(d) sc t c , -
, -
. , -
?
AF
DR
9
NP-
. -
, , .
? , -
, - -
T
( , -
, ) .
, ,
NP-, ?
, NP-. , -
AF
- (.
. 253 8.10), NP-
(, ). ? , -
, ,
, . - ?
, NP- -
, . , NP- -
, ( -
) (. 5.3). -
: ,
DR
(, -
) -
( 6.7).
, -
NP- . ,
, -
( ) (, -
). ,
, . , -
(. 9.1
) .
, ,
, , -
. , 5.4 , -
,
log n . , -
, (approximation algorithms),
NP- (. 9.2).
268 9. NP-
( ). ,
: NP- , -
P = NP.
, -
( , ),
, ,
, -
, . -
9.3.
9.1.
9.1.1.
T
, . ,
, (x 1 x 2 ), -
x 1 = x 2 = 0 ( ) .
?
(w, x, y, z) :
AF
(w x y z), (w x), (x y), ( y z ),
, w:
(z w), (w z ).
w=0 w=1
DR
w = 0 w = 1 ( -
), .
, , , :
w=0 w=1
x =0 x =1
: w = 0, x = 1 (w x)
, , . -
.
9.1. 269
, , -
, -
, , .
-
,
. ,
w = 0 x = 0, , w x, -
w x ,
, .
( y z), (y), ( y z ).
w = 0 x = 1
( ), ( y z ),
T
( ) ,
. ,
.
,
. -
AF
, .
- -
.
, . (
, ,
, , ,
.) 9.1 -
.
. 9.1. , .
DR
w=0 w=1
x =0 x =1 z=0 z=1
y =0 y =1
(z), (z ) ()
z=0 z=1
() ()
270 9. NP-
, ,
:
1) : ;
2) : ;
3) .
, -
; , (
); .
:
P0
S {P0 } { }
T
S :
P S S
P P1 , P2 , , Pk
Pi :
(Pi ) = :
AF
(Pi ) = : Pi
: Pi S
,
, -
-
. ( .)
, -
:
.
DR
, 2- -
( 9.1).
9.1.2.
(
), . -
, ( -
).
, .
, , -
. ,
, ,
. ?
.
P0
S {P0 } { }
_
9.2. 271
S :
( ) P S S
P P1 , P2 , , Pk
Pi :
Pi :
_ Pi
_(Pi ) < _:
Pi S
_
G = (V, E)
de . -
a b, S V ,
a b. [a, S, b] (
T
a ). , -
, b a,
V S. [a, {a}, a]
a V .
-
AF
[a, S, b] (b, x) x V S. -
x |V S|,
[a, S {x}, x].
-
[a, S, b]? ( -
), .
b a V S, -
:
1) a V S;
DR
2) b V S;
3) V S.
( , ?)
( ).
, . 9.2 , -
28 7! = 5040
. ( ).
9.2.
I
(, )
( ). opt(I) -
I. ,
opt(I) ( -
).
5.4 ( ) -
. I n -
272 9. NP-
(a) 1 1
F E F E
2 2
G D G D
1 1
1 1 1 1 1 1 1 1
5
H C H C
1 1 1 1
A B A B
2
T
(b) AF A
10 B F 8 H 8
10 C E 10 8 E G C G
13 14 8
10 D H 14 D F 10 8 B D
15 12
DR
11 E G G G C 8
14 14
11 F 8 D H
11 G 8 G
11 H 8 H
: 11 : 8
opt(I) log n. -
log n .
. A ,
I A (I).
9.2. 273
(approximation ratio) A
A (I)
A = max .
I opt(I)
A A -.
, A , A
( ).
,
( A > 1).
NP- , , -
A : , -
, (-
). ?
T
.
9.2.1.
, NP-.
AF
: G = (V, E).
: S V , .
: |S|.
-
. 9.3.
. 9.3. ( )
8.
DR
-
(. 5).
O(log n)-: -
, .
log n .
274 9. NP-
,
, (. 9.4).
, -
. -
, ( ,
, ).
T
AF
? , -
: -
, I -
opt(I). ,
. ( ,
,
NP- .)
: S -
DR
M ,
. ( , - e E S,
e M -
.) 2|M | -
( |M | , ).
2- :
M E
S = { M }
:
,
:
ff ;
ff ,
, .
A 2: ,
.
9.2. 275
9.2.2.
, -
(, ,
) .
.
,
.
- -
, . , , -
:
1. d(x, y) 0 x, y.
2. d(x, y) = 0 , x = y.
T
3. d(x, y) = d( y, x) x, y.
4. ( ) d(x, y) d(x, z) + d(z, y)
x, y, z.
(k-) k -
.
AF
k-
: X = {x 1 , , x n } d(, ); -
k.
: k C1 , , Ck .
: ,
max max d(a, b).
j a,bC j
. 9.5 : ( -
) .
DR
. 9.5. 4 . (
.)
NP-, -
. , k
,
. -
276 9. NP-
: , -
(. 9.6).
1 X
i 2 k:
i X , 1 , , i1 ,
x, min d(x, j )
j<i
k : Ci = { x X ,
i }
(a) (b)
T
2
4
1
AF 3
, ,
. . x X
1 , , k ( , ,
k + 1 ). r
x . X -
r. ,
2r.
DR
, r ? :
k + 1 1 , 2 , , k , x r.
(?) k
, r.
-
.
k , (1) X -
r , (2) -
r.
,
.
.
9.2.3.
-
k-. -
9.2. 277
: -
, 1,5-
. 2.
, :
-
? ,
,
. : -
().
, -
, , , -
. ,
.
T
, , ,
. . -
, ,
( , ;
AF
).
Wichita Wichita
( -
),
. : -
, , ,
, .
Wichita
Albuquerque Tulsa
Dallas
El Paso Houston
San Antonio
278 9. NP-
,
.
, -
? ,
, .
, . 257 ,
G C > 0 I(G, C) -
, :
() G , opt(I(G, C)) = n, n
G;
T
() G , opt(I(G, C)) n + C.
,
, .
, A -
AF
A . G -
I(G, C) , C = nA . -
A I(G, C). ,
() (): -
A opt(I(G, C)) = nA , opt(I(G, C)) >
> nA . , , G -
:
I(G, C) C = nA A
nA :
DR
G
: G
( 8.2), -
, .
, -
,
. , P 6= NP, -
.
9.2.4.
,
, : " > 0 -
,
1 ",
1/".
6 . n , -
w1 , , w n v1 , , vn ( ); -
9.2. 279
c -
W .
, O(nW )
.
O(nV ), V .
, W , V
.
O(nV ). V , -
. ,
T
, ".) , :
W
vmax max vi
i
AF
: vi
j
n v
i
"
k
vmax
O(nV )- {vi } {vi }
vi n/", -
O(n3 /"). , -
.
-
S K . S
DR
X vn X
n n
X
vi = i
vi 1 K n.
"vmax "vmax "vmax
iS iS iS
, S
. S :
"v "v
n
X X
vi vi max K n max = K "vmax K (1 ").
n "vmax n
iS iS
9.2.5.
.
. (-
, NP- ), -
. ,
( , ,
, P 6= NP). -
280 9. NP-
NP-
:
ff , () -
(, ).
ff , - -
> 1, > 1 . , ,
, k-
. (
;
.)
ff ,
1 (, ).
T
ff , , .
(, log n).
.
, -
AF
P 6= NP. P,
( NP-)
.
, -
, , -
.
9.3.
(local search) ,
DR
: -
, . :
s -
s s0 :
s s0
s
-
(neighborhood).
; -
.
9.3.1.
n (n 1)!
. ? -
? ,
. , ,
. 2-
9.3. 281
(2-change neighborhood) s ,
s . -
:
-
, , -
.
, -
. , -
T
O(n2 ) . , ,
, . , -
, ,
, .
, .
AF
: -
, 2-,
2- .
, -
DR
. : 3- -
.
O(n3 ) -
, : 3--
, . -
, , 4-,
. , -
. , ,
,
, . -
.
282 9. NP-
(a)
Wichita
Albuquerque Tulsa
Little Rock
Amarillo
Dallas
El Paso Houston
San Antonio
T
(b)
AF (i) (ii)
DR
(iii) (iv)
9.7
, 9.8 -
.
, .
, .
, -
, -
. ,
9.3. 283
. 9.8. .
T
AF
-
. ,
, -
.
.
DR
9.3.2.
-
. -
( 8).
: G = (V, E)
(0, 1/2].
: A B, -
|V |.
: (A, B).
9.9 16 ,
1. 0.
,
, -
. NP-.
, ,
284 9. NP-
. 9.9. = 1/2 (
).
T
= 1/2 ( ); ,
.
. -
(A, B) |A| = |B|. ( )
AF
, , -
(A {a} + {b}, B {b} + {a}), a A, b B.
.
DR
? , -
, . -
2.
9.3. 285
? ,
, .
.
9.3.3.
( ) -
(, ),
( ).
, . -
p, O(1/p) -
T
( , . -
1.34).
9.10 -
( 8 ). C84 = 70 ,
, , -
AF
35 .
. , -
. -
,
-
.
.
. 9.10 ( -
DR
) . -
, -
.
() :
.
. 9.10
. ?
(simulated annealing) -
T , :
s -
:
s0 s
cost(s0 ) cost(s)
< 0:
s s0
:
s s0 e/T
286 9. NP-
. 9.10. . 35 -
. , .
.
4 , 6
8 , 4 2 , 4
T
AF
8 , 3 8 , 3
DR
4 , 2
1 , 0
287
T (, e/T = 0) -
, . -
T .
T ?
: -
T , .
, -
.
, .
. 9.11.
. 9.11. .
T
AF
DR
. ,
(
). , , -
.
-
( ).
, , -
. , (annealing
schedule), ,
. -
.
9.1. ,
( ), -
, . ,
288 9. NP-
2 (-
2-) .
9.2. -
s. , ,
.
9.3. .
, ,
?
,
? ?
9.4. G = (V, E), -
d. ,
T
1/(d + 1) -
?
9.5. .
( )
AF
G = (V, E) .
5.1 , e -
T . e0 6= e ,
T 0 . , T T 0 -
(e, e0 ) .
(a) ,
(-
). ?
(b) T 0 , T .
, , T T 0 ,
DR
(cost) : -
T = T0 T1 T2 Tk = T 0
cost(Ti ) cost(Ti+1 ) i < k.
(c) , -
G.
T - G
(e, e0 ), cost(T ):
T T + e e0
T
, -
.
?
9.6. (minimum Steiner tree) -
G = (V, E) duv
289
(terminal nodes) V 0 V . -
, V 0 .
V 0 .
, (. 275). -
, 2-:
. (: -
T
.)
9.7. G =
= (V, E) s1 , , sk V .
,
AF
.
(a) ,
, k = 2.
(b) 2- k = 3.
(c) .
9.8. (maximum satisfiability) -
,
.
(a) , () -
DR
, -
.
(b) ,
0 1. -
m k j j- -
. , -
m
1 m
X
1 kj .
2 2
i=1
, 2- ( -
, ). -
, k,
1 + 1/(2k 1).
(c) (-
), ? (: -
, -
290 9. NP-
, ,
.)
T
S -
S 0 V , |(S 0 S) (S S 0 )| = 1 w(S 0 ) > w(S):
S S0
(a) , 2-.
(b) ?
AF
9.10. , -
. , -
9.5 . -, -
, -
.
(a) , 2- -
.
(b) dn/2e-, n -
DR
.
(c) , (n 1)- -
.
(d) A A- -
: x A s x
x ( ,
s ). ,
:
, . , NP-,
. ?
(e) , -
, -
. (, -
(n 1)-
.) , P 6= NP,
-
.
10
-
( ,
factoring). :
, -
T
!
, : -
.
-
, .
AF
1990- , -
. , ( -
, ) -
.
, , -
. ,
( RSA) -
.
DR
10.1. , ,
,
.1
( ) -
.
,
( ) , (
) .
, -
(ground state) |0, -
(excited state) |1. ,
, .
1
, - : ,
, .
. [ . .
. . .]
292 10.
-
(superpositions) :
0 |0 + 1 |1, 0 1 , -
: |0 |2 + |1 |2 = 1. , -
1 1 1 1
p |0 + p |1, p |0 p |1. 0 1
2 2 2 2
(amplitudes) |0 |1 . -
, , , , -
1 2i
p |0 + p |1 ( i , ,
p 5 5
, i = 1). , 0 |0 + 1 |1, -
(. -
10.1), (qubit).
T
. 10.1.
. , -
, |0 |1. (superposition principle) -
, (linear combinations)
: 0 |0 + 1 |1. , 0 |0 + 1 |1 -
AF
|0 |1. 0 1 -
, 1, :
0 |0 1 |1 . 0 1
, , -
!
DR
|0 |1 0 |0 + 1 |1
, ,
, ,
0 1 -
. : 0 1
. ,
? ,
.
, , (-
)
. , -
(measurement), . . 10.2.
. -
10.1. , , 293
. 10.2. -
, .
|0
|0 |2
0 |0 + 1 |1 |1
T
|1 |2
AF
|0 |2 |1 |2 (,
). ( ) -
, : -
0, -
(|0 = 1 |0 + 0 |1), 1 (|1). -
, ,
, -
.
-
. ( )
DR
,
k : k 1 .
|0, |1, , |k 1. -
0 |0 + 1 |1 + + k1 |k 1, |0 |2 + |1 |2 + + |k1 |2 = 1.
0 k 1, -
j | j |2 . , -
, -
.
n 2n -
(, ),
n .
,
( -
). -
00, 01, 10, 11 (
, ).
.
-
294 10.
X
| x |2 = 1.
x{0,1}2
(, {0, 1}2 2, -
{0, 1}n n.) -
, x {0, 1}2
| x |2 . x = jk, -
x: , , x = 10,
T
, .
. 0 |0 + 1 |1,
0 |0 + 1 |1. ,
AF
? : -
,
0 0 |00 + 0 1 |01 + 1 0 |10 + 1 1 |11.
-
, ? . ,
(entangled), -
. , -
1 1
, | = p |00 + p |11 ( ).
2 2
DR
-
(. 10.1). (entanglement)
; -
.
-
(partial measurement). , , .
, 0? ,
, |00 |2 + |01 |2 . :
?
: -
0,
, -
: , -
.
00 01
| = p |00 + p |01.
|00 | + |01 |
2 2
|00 |2 + |01 |2
10.1. , , 295
n ( n -
, , n = 500). , -
500 .
2500
() :
X
x |x
x{0,1}n
, 2500
500 ! ,
, , -
.
2500 .
T
? ? -
. ,
.
, -
? -
AF
.
, , . : -
,
n . (-
, x n
| x |2 , , -
|x.)
. 10.3. n ,
n , -
DR
2n , -
n ( ,
). -
-
.
x y
n n
296 10.
10.2.
. -
(-
n ).
n (-
) ; ,
, -
.
n , |x.
- ( P ),
n y | y. (
T
y
, -
, , , .) , -
n- y -
| y |2 .
, , : -
AF
, (-
, ). , y
. , -
, -
.
. ,
(), -
.
DR
() n -
, .
( ) .
, -
. 10.3 , -
(FFT).
, ,
. ,
, N -
, -
.
N
( ):
ff -
N .
ff
N .
10.3. 297
ff N -
.
ff , -
.
.
10.3.
2, M -
, ,
T
0 0
1 1 1 1
1
1 2
M 1
1
2 1 2 4 2(M 1) 2
1
. = p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. M 1 (M 1) j .
AF .
M 1
j
2j
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 (M 1) 2(M 1) (M 1)(M 1) M 1
p M (). -
2 M . , |i |2
, |i |2 .
O(M 2 ) . ,
, M , ,
O(M log M ) . (
.) , -
DR
-
O(log2 M ) .
, ,
? , -
m = log M ( 2m = M ).
MP1
| = j | j, j m- ,
j=0
j. ( , | j -
, j .)
-
, m = log M .
. (. 10.4, -
2.) ,
log M . ,
log2 M , -
.
298 10.
. 10.4. ()
M = 2m m = log2 M .
0 0
4 1
4
2 4
2
T
2
6 3
4 6
AF
1 4 4
1
5 5
4 5
2
DR
3 4
6
6
3
2
7 7
4 6 7
, ,
.
.
, -
, ( ) .
, m- , -
j | j |2 . -
,
(
).
10.4. 299
, -
, :
1
MP
: m = log2 M , | = j | j.
j=0
: O(m2 ) = O(log2 M )
,
1
MP
| = j | j.
j=0
: m- j ( , 0 j M 1)
P( j) = | j |2 .
, -
T
- -
, - . -
, , .
, . -
, , .
AF
10.4.
, 0 , 1 , , M 1 k,
k M . i = j i j (mod k), -
M /k k. ,
| k j,
, j , j+k , j+2k ,
DR
. 10.5. ( ).
0 3 6 9 M 6 M 3
1 5 9 M 7 M 3
(
) .
, (. ), :
-
k j, k
M . M /k,
M /k .
300 10.
|, k 0 (
0 , k , 2k , , M /k ). -
1, k/M :
p
/k1
MX q
k
| = | jk.
M
j=0
-
M /k 0:
k1
1
X jM
| = p .
k
T
k j=0
. , , -
, k:
M 1 p /k1
MX
1 k
X
j = p jl l = jik .
AF M
l=0
M
i=0
M /k -
jk . jk M , 1, -
p M .
M /k, j = 1/ k j ( j, M /k).
jk M , -
, (1 jk(M /k) )/(1 jk ),
, ( jk(M /k) = j M M ,
M = 1). p
DR
j = 1/ k j, M /k, j = 0 j.
k l < k,
/k1 q
MX
k
| = | jk + l,
M
j=0
-
M /k:
k1
1
X jM
| = p l j M /k .
k k
j=0
, (-
10.5 ,
).
( ), -
k , M /k.
-
10.5. 301
0,
, k
1/k.
. ,
M /k,
k !
-
.
. s ,
T
M 2M (k 1)M
0, , , ,
k k k
( k ). 1 k/2s
M /k.
AF
. ,
j M /k j 2 k. (
j) 1/ j 1/2 -
1/2s s .
j -
( , ,
). , -
k/2s .
, s -
DR
10.5.
, -
, ( ). -
, ,
?
10.5.1.
(AND,
NOT . .), .
. -
H, |0 |1 :
1 1 1 1
|0 H p |0 + p |1, |1 H p |0 p |1.
2 2 2 2
302 10.
,
0 1 .
0 |0 + 1 |1, -
:
0 + 1
H(0 |0 + 1 |1) = 0 H(|0) + 1 H(|1) = p |0 + 0p 1 |1.
2 2
, -
.
(controlled not,
cnot). . () -
, ( ).
, , -
. , cnot(|00) = |00 cnot(|10) = |11.
T
|00 |00 |10 |11
, cnot -
, 4 -
AF
.
( ) -
, .
. ( )
n . ,
2n . , , -
= x |x, -
P
x{0,1}n
. = x |x, -
P
DR
x{0,1}n
0 y + 1 y 0 y 1 y
, 0 y = p 1 y = p
2 2
(n 1)- y. ,
2n1 ( -
y ).
( , ).
10.5.2.
, , -
n ().
, -
,
.
:
n -
| |, -
|.
10.5. 303
-
. () , -
n- m-. (-
) n m . -
, n + m , .
x m , -
x f (x) (
).
x x
x C f (x)
0 f (x)
, -
. , -
|x, 0k - ,
|x, f (x) .
AF
. -
-
.
. 10.7.
10.5.3.
, 2.6.4
M .
DR
FFT M (: 0 , , M 1 , : 0 , , M 1 )
0
2
.. FFT M /2 j
.
M 2
1
j
3
.. FFT M /2 j+M /2
. j+n/2
M 1
304 10.
, .
M = 2m m . -
( m ). , -
-
, ,
, .
: -
m 1 .
-
. (
)
.
T
m 1
AF QFT M /2 QFT M /2
:
.
, , -
j M /2 + j ( j- -
) ( (M /2 + j)-). ,
M /2 + j ,
.
, -
DR
,
. , -
0x 1x, (-
) x M /2 + x.
-
.
, -
. ,
, (,
1) M /2 + j j .
1, , 2 , , M /21 :
, j
( ), 2 -
, , . -
, ,
,
|00, |01 |10 , |11
, (, 2 , 4 . .), -
10.6. 305
, ,
. (, -
, .)
( )
. 10.4; ,
, -
.
, . m
O(m) = O(log M ) ,
O(m2 ), O(log2 M ) .
10.6.
T
,
. , ( )
.
N . -
N x, x 2 1 (mod N ),
AF
x 6 1 (mod N ). (. 1.36 1.40.)
, N , -
( , ).
.
. x N .
(x + 1, N ) N , 1 N .
. x 2 1 (mod N ), x 2 1 = (x 1)(x + 1) -
N . (x 1) (x + 1) N
, N -
DR
, . (x + 1, N ) (
(x 1, N )) N .
. N = 15. 4
N , 42 = 16 1 (mod 15), 4 6 1 (mod 15). -
, (4 1, 15) = 3 (4 + 1, 15) = 5 -
15.
,
. x N
r, x r 1 (mod N ). , -
2 15 4.
N , -
, N (
). .
. N , -
. x 0 N 1,
N , . -
306 10.
1/2 r x N ,
x r/2 N .
-
. , N , -
. x N .
N , (x, N ), -
, (x, N ).
x N , 1/2
.
N .
. x = 2 N = 15 ( 4,
24 = 16 1 (mod 15)). x , x 2 = 4,
T
15, -
N , , (x + 1, N ) = 5.
, (factoring)
(order finding).
, -
AF
. N x
a 7 f (a) = x a mod N . r x N , r
f :
f (0) = f (r) = f (2r) = = 1, f (1) = f (r + 1) = f (2r + 1) = = x
. , f
( 1.2.2). ,
( N ),
f ,
r; -
DR
r
N
. , (. ).
. -
10.7.
10.7.
(. 10.6). -
,
, , .
, N
, .
: N ( -
).
: N .
10.7. 307
. 10.6. .
0 QFT M QFT M
f (a) =
x a mod N
0
M 1 M 1
1 P 1 P
p |a, 0 p |a, x a mod N
M a=0 M a=0
T
1. ( ) x 1
N 1. ( (x, N ) 6= 1, , x -
N .)
AF
2. M , N . ( ,
M N 2 ,
.)
3. s = 2 log N :
a. ,
M , N .
b. f (a) = x a mod N -
M (. ):
(i) -
DR
1
MP
1
p |a, 0.
a=0 M
(ii) f (a) = x a mod N , -
1
MP
1
p |a, x a mod N .
a=0 M
(iii) .
MP/r1
| = | j r + k,
r
j=0
M
k 0 r 1, r x N .
c. -
, 0 M 1. (,
, -
.)
g j1 , , js .
4. M /g , (N , x M /2g + 1).
N , , -
, 1.
308 10.
, f (a) = x a mod N
.
ff ( ), -
.
ff (-
m = log M ).
p
0 M 1 1/ M
. ( , |000 -
, , , -
.)
ff , -
T
f (a) = x a mod N .
( M -
), (
1). -
AF
,
MP
a=0
1
1
p |a, f (a).
M
ff . -
( ), -
.
, f r, -
f (k) k 0 M 1.
( ) -
a,
. f (0), f (1), f (2),
DR
r , -
( ,
),
r, .
(. ),
x, -
.
, . M -
, -
. , -
, M ( , ,
).
, :
,
M . ,
.
309
, ,
-
. 1970-
. -
, ,
. ( , T -
-
T .) -
.
.
T
?
, . -
,
( , ) -
. - , .
AF
-
15 ( !) (nuclear
magnetic resonance, NMR). -
.
, ?
, , -
-
.
, -
DR
...
N n = log N .
2 log N = O(n) ( 3), (
, 2.6.4,
, 1.2.3, )
( n) . -
-
.
1 1
10.1. | = p |00 + p |11 ( -
2 2
) ( , -
). :
(a) , () -
(. . 300) 0 |0 + 1 |1 0 |0 + 1 |1. -
310 10.
0 , 1 , 0 , 1 ( -
) , ( -
).
(b) ?
(c) , ?
(d) ,
?
10.2. ,
1 1
| = p |00 + p |11,
2 2
|00: , cnot
.
T
H
, 10, 01 11? (
, .)
AF
10.3. -
, p
1 P
M 1
| j?
M j=0
10.4. ( M ) | j.
10.5.
P . | =
= j | j l , |0 = j | j + l.
P
j j
| |. ,
DR
|0 | 0 , j0 = j l j . , -
MP /k1 q k1
1 P l j M /k
| = | jk + l | 0 = p
k
0
| j M /k.
j=0
M k j=0
10.6. , -
cnot, cnot, -
.
H H
H H
(b) , (and)
c-swap. c-swap,
a b?
(c) -
? ( , a, 0 a, a.)
(d) , C
Q, not c-swap -
C : C x y, Q
|x, y, z |x, 0, 0. ( z, -
, .)
(e) Q1, |x, y, z |x, 0, 0.
(f) , , not,
T
cnot c-swap, |x, 0, 0 |x, y, 0.
10.8. , N
p q, x N ,
(x, N ) = 1, 3/8 r
x N , , x r/2 -
AF
N .
(a) p , x (-
) p. , p -
1/2. ((: ,
. 1.3.))
(b) ( 1.37), -
, 3/4 x
N .
(c) , , ()
DR
x r/2 1 1/2.
1 2
:
T
G. H. Hardy, E. M. Wright. Introduction to the Theory of Numbers. Oxford
University Press, 1980.
-
1970- , RSA -
AF
. .
D. R. Stinson. Cryptography: Theory and Practice. Chapman and Hall, 2005.
:
R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge University
Press, 1995.
-
(Larry Carter) (Mark Wegman) 1979 . -
(Volker Strassen)
1969 . (Arnold Schonhage)
DR
:
n- O(n log n log log n) . -
(Martin Furer).
3
( ) -
(John Hopcroft) (Bob Tarjan)
1973 . -
.
(Rao Kosaraju).
4 5
1959 (Edsger
Dkstra, 19302002). -
1926 ,
313
(Otakar Boruvka). -
( ,
log n) .
(David Huffman),
1952 ( ).
7
- 1947 (George Danzig,
19142005). 1928 -
(John von Neumann),
. -
T
V. Chvatal. Linear Programming. W. H. Freeman, 1983.
:
M. J. Osborne, A. Rubinstein. A course in game theory. MIT Press, 1994.
8 9
AF
NP- (Steve Cook): 1971 -
, NP-.
(Dick Karp) NP- ( -
8), (
).
NP- ,
.
NP- :
M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the
DR
10
1994 -
(Peter Shor). ,
,
http://www.cs.berkeley.edu/~vazirani/quantumphysics.html
. ,
:
http://www.cs.berkeley.edu/~vazirani/cs191.html
| 291 72
() 12
() 12 - 85, 96
T
179, 239, 249
k- 275 273
log 136 26
mp3- 139 45
NP, 241 98
AF
NP- 244
O- 10, 11
P, 241
232
2- 102, 233
3- 233, 246, 248,
250
- 7 262, 289
136 269, 287
2027 257
21 233
21, 26
26 236, 245, 263
DR
92 292
93 294
63, 65
, 186 98
53
188 137
228 29, 32
226 -
98 299
110 294
19 301
128 291
- 46
T
16 NP 241
90 P 241
106 237, 275
76 239, 250
102 64, 292
AF
159
158
65
103
88
93
164 93
22 90
185 105
, 259 -
119
172, 233 106
DR
280
271 170
278 170
276
- 34
() 184 35, 36
230, 232 RSA 3638, 264
9, 231 130
- 292
31 110, 116
168 114, 116, 122
218 116
92
206
209 204
206 194
207 186
316
186 30
204 184
193
16 91
280 119, 156
120
239, 262 84
290 16
27
, 259 52
67 197
84 103
56 110, 113
T
93 114, 116
270 272
219
285
, 259
219
268
AF
-
127, 234
288
85
87, 90
87, 90
- 90
188, 210 90
103
106
30
146, 239
289
, 231 -
10
230
DR
-
157 209
- N 305
177 193
177 90
23 90
- 78
25
k- - 6174
57 271
238, 246, 138
249 292
174 260
84 15, 2731
- ( )
32, 47, 305 146
61 35
317
283 69
49 15
15, 28, 3133
244, 291, 305
129 59, 78
(s, t)- 197 55
199 5455
290
137, 236
236 274
105 200, 225, 238
159 200
- 238, 239, 250, 251
T
309 84
AES 36
87, 90 98
84 240, 252
87, 90 292
AF
84
114
90
90
299
205
50, 52 199
53 30
52 35
159 32
, 259 92
240 103
DR
165 177
278 , 72
165 , 259
240
17
192, 242 4952
59, 60, 167
88 61
93 302
166 237,
- 186 251253
209
210 , 291
209 8
- , 8
131
132 , 35
135 139
318
- 38 , 60
- 96
42
, 101, 234
228
102, 235
143
101
-
190, 220, 237, 253 9, 10
91 302
118 301
62 10
47 144, 151
T
AF
DR
T
AF
DR
119002, , ., 11. . (499) 241-74-83.
08.04.2014. Charter ITC. 7010 1/16.
. . . . 20. 1000. .
--8.
. 8 (495) 363-48-86.
http://capitalpress.ru
, , ., . 11.
. (499) 241-72-85. E-mail: biblio@mccme.ru