SlideShare a Scribd company logo
1 of 893
Download to read offline
1 7
1.1. . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. . . . . . . . . . . . . . . . . . . . . 11
1.3. . . . . . . . . . . . . . . . . . 15
1.3.1. . . . . . . . . . 16
1.3.2. 17
I 24
25
2 26
2.1. . . . . . . . . . . . . . 26
2.2. . . . . . . . . . 30
3 39
3.1. . . . . . . . . . . . . . . . . . . . 39
3.2. . . . . . . . . . . . . . . . . . . . . . . . . 43
4 49
4.1. . . . . . . . . . . . . . . . . . . . . 50
4.2. . . . . . . . . . . . . . . . . . 53
4.3. . . . . . . . . . . . . . . . . . . . . . . . 56
? 4.4 4.1 . . . . . . . . . . . . . . . 59
4.4.1. . . . . . . . . . 59
4.4.2. . . . . . . . 63
5 71
5.1. . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2. . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3. . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2
5.5.1. . . . . . . . . . 87
5.5.2. . . 89
5.5.3. . . . . 91
6 96
6.1. . . . . . . . . . . . . . . . . . . . . 96
6.2. . . . . . . . . . . . . . . . . . . . . . . . . 102
6.2.1. . . . 103
6.3. . . . . . . . . . . . . 108
6.4. . . . . 113
6.5. . . . . . . . . . 118
6.6. . . . . . . . . . . . . . . . . . . 123
6.6.1. . . . . . . . . . . . . . 123
6.6.2. . . . . . . . . . . . . . . . . . . . 125
6.6.3. . . . . . . . . 126
II 132
133
7 136
7.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.2. . . . . . . . . . . 138
7.3. . . . . . . . . . . . . . . . . . . . . . 140
7.4. . . . . . . . . 143
7.5. . . . . . . . . . . . . . . . . . 143
8 148
8.1. . . . . . . . . . . . . . 148
8.2. . . . . . . . . . . . . . . . 151
8.3. . . . 155
8.4. . . . . . . . . . . . . . . . 157
8.4.1. . . . . . . . . . . . . 157
8.4.2. . . . . . . . . 158
9 166
9.1. . . . . . . . . . . . . . 166
9.2. . . . . . . . . . . . . . . . . . . 169
9.3. . . . . . . . . . . . . . . . . . . . 171
9.4. . . . . . . . . . . . . . . . 174
10 180
10.1. . . . . . . . . . . . . . . . . . . 181
10.2. . . . . . . . . . . 182
10.3. . . . . . . 185
3
III 192
193
11 197
11.1. . . . . . . . . . . . . . . . . . . . . . . 197
11.2. . . . . . . . . . . . . . . . . . . . . . 201
11.3. 206
11.4. . . . . . . . . . . . 210
12 - 217
12.1. . . . . . . . . . . . . . . . . . . . . . 217
12.2. - . . . . . . . . . . . . . . . . . . . . . . . . 219
12.3. - . . . . . . . . . . . . . . . . . . . . . . . 225
12.3.1. . . . . . . . . . . . . . . . . 226
12.3.2. . . . . . . . . . . . . . . . . . . . . . 227
12.3.3. . . . . . . . . . . . 228
12.4. . . . . . . . . . . . . . . . . . . . 231
13 242
13.1. ? . . . . . . . . . . 243
13.2. . . . . . . . . . . . . . . . . . 245
13.3. . . . . . . . . . . . . 248
? 13.4 . . . . . . . . . . 252
14 - 262
14.1. - . . . . . . . . . . . 262
14.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 264
14.3. . . . . . . . . . . . . . . . . . . . 267
14.4. . . . . . . . . . . . . . . . . . . . . . . . . . . 271
15 280
15.1. . . . . . . . . . 280
15.2. 285
15.3. . . . . . . . . . . . . . . . . . . . 288
IV 296
297
16 299
16.1. . . . . . . . . . . . 300
16.2. . 307
16.3. . . . . . . 312
16.4. . . . . . 317
4
17 326
17.1. . . . . . . . . . . . . . . . . . . 326
17.2. ? . . . . . . . . . . 330
17.3. . . . . . . . . . . . . . . . . . . . . . . 333
? 17.4 . . . . . . 341
17.4.1. . . . . . . . . . . . . . . . . . . . . . 341
17.4.2. 343
? 17.5 . . . . . . . . . . . . . . . . . . . 346
18 352
18.1. . . . . . . . . . . . . . . . . . . . . 353
18.2. . . . . . . . . . . . . . . . . . . . . 356
18.3. . . . . . . . . . . . . . . . . . . . . 359
18.4. . . . . . . . . . . . . . . . . . . 362
18.4.1. . . . . . . . . . . . . . . . 362
18.4.2. . . . . . . 365
V 372
373
19 - 376
19.1. - . . . . . . . . . . . . . . . . . . 379
19.2. - . . . . . . . . . . . 381
19.3. - . . . . . . . . . . . . . 388
20 394
20.1. . . . . . 395
20.1.1. . . . . . . . . . . . . . . 395
20.1.2. . . . . . . . . . . . . . . . . 397
20.2. . . . . . . . . . . 399
20.2.1. . . . . . . . . . . . . . . 400
21 413
21.1. . . . . . . . . . . . . . 414
21.2. , . . . 416
21.3. . . . . . . . . 425
21.4. . . . . . . . . . . . . . 429
22 434
22.1. . . . . 434
22.2. . . . . . . . . . . . . . 437
22.2.1. . . . . . . . . . . . . . . . . . . . . 441
23 452
23.1. . . . . . . . . . . . . 453
5
23.1.1. . . . . . . . . . . . . . . 453
23.1.2. . . . . . . . . . . . . . . . . . . 456
23.1.3. . . . . . . . . . . . . . . . . . . 464
23.1.4. . . . . . . . . . . . 471
23.1.5. . . . . . . . . . . . 473
24 481
24.1. . . . . . . . . . . . 482
24.2. . . . . . . . . . . . . . 486
25 493
25.1. . . . . . . . . . . . . . 497
25.2. - . . . . . . . . . . . . . . . 507
25.3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
25.4. . . . . 512
26 522
26.1. - . . . . . . . . . . . . . . . 529
27 546
27.1. . . . . . . . . . . . . . . . . . . . . . . 547
27.2. { . . . . . . . . . . . . . . . . 552
27.3. . . 562
27.4. . . . . . . . . . 565
27.5. - - - . . . . . . . . . . . . . . 574
28 586
28.1. . . . . . . . . . . . . . . . . . . . . 587
28.2. . . . . . . . . . . . . . . . . . 590
28.3. . . . . . . . . . . . . . . . 592
28.4. . . . . . . . . . . . . . . . . . . . . . . 594
28.5. . . . . . . . . . . . . . . . . . . . . 596
29 601
29.1. . . . . . . . . . 602
29.1.1. . . . . . . . . . . . 602
29.1.2. . . . . . 603
29.1.3. . . . . . . . . . . . . . . . . . . . . . 603
29.1.4. . . . . . . . . . . . . . . . . . . . 604
29.1.5. . . . . . . . . . . . . . . . . . . . 605
29.1.6. . . . . . . . . . . . . . . . . . . . . 605
29.2. C . . . . . . . . . . . . . . . . . . . 605
29.2.1. . . . . . . . . . . . . . . . 606
29.2.2. . . . . 607
29.2.3. -
. . . . . . . . . . . . 608
6
29.2.4. :
. . . . . . . . . . . . . . . . . . . . . 609
29.2.5. . . . . . . 610
29.3. . . . . . . . . . . . . . . . . . . 612
29.3.1. . . . . . . . . . . . . . 612
29.3.2. . . . . . . . . . . . . . . 614
29.3.3. . . . . . 614
29.3.4. . . . . . . . . . . . . . . 615
29.3.5. . . . . . . . . . . . . . . . . . . . . 616
29.4. . . . . . . . . . . . . . . . . . . 617
29.4.1. . . . . . . . . 617
29.4.2. . . . . . . . . . . . . . . 618
29.4.3. . . 618
29.4.4. . . . . . . . . . . . . 619
29.4.5. . . . . . . . . . . . . . . . . 619
29.4.6. . . . . . . . . . . . . . . . 620
29.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
29.6. . . . . . . . . . . . . . . . . . . . . . . . 623
30 625
30.0.1. -
(PRAM) . . . . . . . . . . . . . . . . . . . . 625
30.0.2. -
. . . . . . . . . . . . . . . . . . . . . . . . . 626
30.0.3. . . . . . . . . . . . . . . . . . . 627
30.0.4. . . . . . . . . . . . . . . . . . . . . . 627
30.1. . . . . . . . . . . . . . . . . . 628
30.1.1. . . . . . . . . . . . . . . . . . . 628
30.1.2. . . . . . . . . . . . . . . . . . . . 630
30.1.3. . . . . . . . . . . . . . . . . . . . . . . . 630
30.1.4. . . 631
30.1.5. . . . . . . . . . . . . . . 633
30.2. CRCW- EREW- . . . . . . . . . . . . . . . 636
30.2.1. . . . . . . . . . . 636
30.2.2. . . . . . . . . . . . 637
30.2.3. CRCW-
EREW- . . . . . . . . . . . . . . . . . . 639
30.3. . . . . 642
30.3.1. . . . . . . . . . . . . . . . . . . . . 645
30.4. . . 645
30.4.1. 646
30.4.2. . . . . . . . . . . . 647
30.4.3. . . . . . . . . . . . . . . . . . . . . . . . 647
30.4.4. . . . . . . . . . . . . . . . . . . . . 649
30.5. ( -
) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
7
30.5.1. -
. . . . . . . . . . . . . . . . . . . . . . . 650
30.5.2. 6- . . . . . . . . . . . . . 651
30.5.3. -
6- . . . . . . . . . . . . . . 653
30.5.4. . . . . . . . . . . . . . . . . . . . . 654
30.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
30.7. . . . . . . . . . . . . . . . . . . . . . . . 657
31 659
31.1. . . . . . . . . . . . . . . . . . 659
31.2. . . . . . . . 668
31.3. . . . . . . . . . . . . . . . . . . . . 675
31.4. -
. . . . . . . . . . . 679
33 p - p 712
33.1. . . . . . . . . . . 713
33.2. . . . . . . . . . . . . . . 718
33.3. . . . . . . . . . . . . . . . . . 722
33.4. . . . . . . 726
33.5. . . . . . . . . . . . . . 729
33.6. . . . . . . . . . . . . . . . . . . . . . 732
33.7. RSA . . . . . . . 735
33.8. . . . . . . . . . . . . . . . 741
34 757
34.0.1. . . . . . . . . . . 758
34.1. . . . . . . . . . . . . . . . . . . 759
34.2. | . . . . . . . . . . . . . . . 761
34.2.1. . . . . . . . . . . . . . . . . . . . . 764
34.3. . . . 765
34.3.1. . . . . . . . . . . . . . . . 765
34.3.2. . . . . . . . . . 766
34.3.3. . . . . . . . . . 770
34.4. | | . . . . . . . . 771
34.4.1. - , 771
34.4.2. . . . . . . . . . . . . . . . . . . . 773
34.4.3. - . . 774
34.4.4. KMP . . . . . . . . . . . . 776
34.5. | . . . . . . . . . . . . . . . . 777
34.5.1. - . . . . . . . . . . . . . 778
34.5.2. . . . . . . . . 780
34.5.3. . . . . . . . . . . . . . . . . . . . . 784
34.6. . . . . . . . . . . . . . . . . . . . . . . . . . 785
8
35 787
35.1. . . . . . . . . . . . . . . . . . . . . 788
35.2. ? . . . . . . . . . . . 793
35.3. . . . . . . . . . . . . . 798
35.4. . . . . . . . . . . . 804
35.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
36 NP- 811
36.1. . . . . . . . . . . . . . . . . . . 812
36.2. NP . . . . . 819
36.3. NP- . . . . . . . . . . . . . . . . 824
36.4. NP- . . . . . . . . . . . . . . . . . . . . . 837
36.4.1. . . . . . . . . . . . . . . . . . . . 837
36.4.2. . . . . . . . . . 839
36.4.3. . . . . . . . . . 842
36.4.4. . . . . . . . . . . . . . . 846
37 850
37.1. . . . . . . . . . . . . . 852
37.2. . . . . . . . . . . . . . . . . . . 854
37.2.1. ( -
) . . . . . . . . . . . . . . . . . . . . . 854
37.2.2. . . . . . . . . . . 856
37.3. . . . . . . . . . . . . . . 863
-
. -
,
.
-
.
260 , .
-
.
, -
| .
-
.
:
-
|
-
. ,
, .
.
,
. -
,
.
( 900): -
( 120). ,
(
| , -
10
).
-
, .
. -
-
-
.
:
, -
.
, , -
.
, -
, .
, , ,
. ,
, ,
.
, ? ,
, -
,
( ,
) ( - -
).
:
-
. ,
.
-
, -
. -
, -
.
-
, . ,
- ( -
. .), .
11
.
,
, .
( , -
, ). :
Introduction to Algorithms
MIT Labratory for Computer Science
545 Technology Square
Cambridge, Massachusetts 02139
-
,
algorithms@theory.lcs.mit.edu , Subject:
help . ,
.
, -
( 1997), , -
, , , -
( , . ).
, , -
: , !
, algor@mccme.ru
( , 121002, ., 11,
, ).]
. -
.
(Massachusetts Institute of Technology, Laboratory for
Computer Science) -
. -
. :
Baruch Awerbuch, Sha Goldwasser, Leo Guibas, Tom Leighton, Al-
bert Meyer, David Shmoys, Eva Tardos. , -
( : Microvax, Apple Macintosh, Sun Sparc-
station) William Ang, Sally Bemus, Ray Hirschfeld
Mark Reinhold TEX, -
.
Thinking Machines
12
.
,
. -
: Richard Beigel (Yale), Andrew Goldberg (Stanford), Joan
Lucas (Rutgers), Mark Overmars (Utrecht), Alan Sherman (Tufts,
Maryland), Diane Souvaine (Rutgers).
-
, . -
: Alan Baratz, Bonnie Berger, Aditi Dhagat, Burt Kaliski,
Arthur Lent, Andrew Moulton, Marios Papaefthymiou, Cindy Phillips,
Mark Reinhold, Phil Rogaway, Flavio Rose, Arie Rudich, Alan Sher-
man, Cli Stein, Susmita Sur, Gregory Troxel, Margaret Tuttle.
-
: (Denise Sergent),
(Maria Sensale), (Al-
bert Meyer), (Shlo-
mo Kipnis, Bill Niehaus, David Wilson), (Marios
Papaefthymiou, Gregory Troxel), (Inna Radzi-
hovsky, Denise Sergent, Gayle Sherman, Be Hubbard).
, Bobby
Blumofe, Bonnie Eisenberg, Raymond Johnson, John Keen, Richard
Lethin, Mark Lillibridge, John Pesaris, Steve Ponzio, Margaret Tuttle.
, -
Bill Aiello, Alok Aggrawal, Eric Bach,
Vasek Chvatal, Richard Cole, Johan Hastad, Alex Ishii, David Johnson,
Joe Kilian, Dina Kravets, Bruce Maggs, Jim Orlin, James Park, Thane
Plambeck, Herschel Safer, Je Shallit, Cli Stein, Gil Strang, Bob Tar-
jan, Paul Wang.
, Andrew Goldberg, Danny Sleator, Umesh Vazirani.
LATEX
( TEX). -
Apple Macintosh Mac Draw II -
(Joanna Terry, Claris Corporation Michael Mahoney, Advanced Com-
puter Graphics).
Windex, . -
BibTEX. -
-
Autologic
(Ralph Youngen,
). : Rebecca Daw, Amy Henderson ( -
LATEX), Jeannet Leendertse ( ).
-
MIT Press (Frank Sallow, Terry Ehling, Larry Cohen,
13
Lorrie Lejeune) McGraw-Hill (David Shapiro)
,
(Larry Cohen).
, (Nicole Cormen, Lina Lue
Leicerson, Gail Rivest) (Ricky, William Debby Leicerson
Alex Christopher Rivest)
(Alex Rivest
( 6.6.1). ,
.
,
1990
(Thomas H. Cormen)
(Charles E. Leiserson)
(Ronald L. Rivest)
:
MIT
, ( -
).
-
( . . ).
-
, -
,
:
K. , . , . , . , .
. , . , . , . , . -
, . , . , . , . , .
( )
. , . , . , . , . -
, . , . . , A. ( -
)
. ( )
. . ( )
1
,
, -
|
.
,
, -
, -
, ,
.
1.1.
(algorithm) | -
, (input),
, -
(output).
(computational problems). ,
, -
, , ,
.
(sorting prob-
lem)
-
. :
: n (a1 a2 ::: an).
: (a0
1 a0
2 ::: a0
n) -
, a0
1 6 a0
2 6 ::: 6 a0
n.
, h31 41 59 26 41 58i, -
h26 31 41 41 58 59i.
(instance) .
15
-
.
-
, , ,
( , ,
).
(correct), -
( )
, .
, (solves) -
. (
) .
( , |
.
33 .
, .)
,
|
, .
(pseu-
docode), -
( , , ). ,
, -
. , -
( , ),
, .
(insertion sort) -
. -
:
,
, ( . . 1.1)
Insertion-Sort, -
A 1::n] (
n, ). -
A length A].
(in place), (
).
Insertion-Sort A
.
16 1
. 1.1
Insertion-Sort(A)
1 for j 2 to length A]
2 do key A j]
3 . A j] A 1::j ;1].
4 i j ;1
5 while i > 0 and A i] > key
6 do A i+ 1] A i]
7 i i;1
8 A i + 1] key
. 1.2 Insertion-Sort A = h5 2 4 6 1 3i. -
j .
. 1.2 A = h5 2 4 6 1 3i.
j ( -
). A 1::j ; 1]
( ), A j + 1::n] | . for
j . A j]
17
( 2 )
( j ; 1- ) , -
. ( 4{7). 8 A j]
.
, :
1. .
, for ( 1) 2{8, -
while ( 5) 6{7, 8.
if-then-else. -
begin end . (
-
, ,
.)
2. while, for, repeat if, then, else
, .
3. . ( ).
4. i j e ( i j
e) j e i j (
).
5. ( i j key) -
( ).
6. : A i] i-
A. :: : A 1::j]
A, A 1] A 2] ::: A j].
7. (objects), -
( elds), , , -
(attributes).
]. ,
length, A
length A].
( ), .
, , -
. y x
f f y] = f x]. ,
f x] 3, f x] = 3,
f y] = 3, y x x y
.
nil, -
.
8. (by value): -
-
. -
18 1
, ,
| . , x | -
, x y, ,
, f x] 3 | .
1.1-1 . 1.2, ,
Insertion-Sort A = h31 41 59 26 41 58i.
1.1-2 Insertion-Sort , -
( -
).
1.1-3 :
: n A = ha1 a2 ::: ani v.
: i, v = A i],
nil, v A.
(linear search),
A v.
1.1-4 n- ,
n- A B. (
) (n+1)- C. -
-
.
1.2.
-
, , -
( , ), -
. , , -
.
(random-access machine, RAM), -
. ( -
-
.)
:
-
: ,
19
. -
. ( ,
, :
, .)
(input size)? -
.
( , ). -
, -
. -
, ( ,
).
(running time)
, |
, . ,
-
( - -
| x- ).
(call) (
) (execution),
.
, Insertion-Sort
( ) , -
. j 2 n (
n = length A] | ) ,
5, tj. ( ,
, -
, .)
Insertion-Sort(A)
1 for j 2 to length A] c1 n
2 do key A j] c2 n ;1
3 . A j] -
. A 1::j ;1]. 0 n ;1
4 i j ;1 c4 n ;1
5 while i > 0 and A i] > key c5
Pn
j=2 tj
6 do A i+ 1] A i] c6
Pn
j=2(tj ; 1)
7 i i; 1 c7
Pn
j=2(tj ; 1)
8 A i+ 1] key c8 n ;1
c, m , cm -
. (
20 1
!) ,
T(n) = c1n+ c2(n; 1)+ c4(n ; 1)+ c5
nX
j=2
tj +
+ c6
nX
j=2
(tj ; 1)+ c7
nX
j=2
(tj ;1) + c8(n;1):
,
n, , n .
Insertion-Sort , -
. 5
( A i] 6 key i = j ;1),
tj 1,
T(n) = c1n+ c2(n; 1)+ c4(n ; 1)+ c5(n;1) + c8(n;1) =
= (c1 + c2 + c4 + c5 + c8)n;(c2 + c4 + c5 + c8):
, T(n), -
n,
(linear function) n, . . T(n) = an + b
a b. ( -
c1 ::: c8.)
( ) ,
:
A j] A 1]:::A j ; 1].
tj = j. ,
nX
j=2
j = n(n + 1)
2 ;1
nX
j=2
(j ;1) = n(n ;1)
2
( . . 3), ,
T(n) = c1n + c2(n ;1)+ c4(n; 1)+ c5
n(n + 1)
2 ; 1 +
+ c6
n(n ; 1)
2 + c7
n(n;1)
2 + c8(n ; 1) =
= c5
2 + c6
2 + c7
2 n2 + c1 + c2 + c4 + c5
2 ; c6
2 ; c7
2 + c8 n ;
; (c2 + c4 + c5 + c8):
T(n) | (quadratic function), . .
T(n) = an2 + bn + c. ( a, b c -
c1{c8.)
21
, ,
. -
(worst-case running time),
. ? .
, ,
, -
, ( ) .
( -
) . ,
( ).
. , , -
n Insertion-
Sort. 5{8?
A 1::j ; 1]
A j], tj j=2, -
T(n) n.
-
(average-case running time, expexted running time) -
. ,
( -
), -
. (
, .)
Insertion-Sort
.
, i- -
ci. an2+bn+c.
,
(rate of growth, order of growth) n2, -
( )
n2. : T(n) = (n2) (
).
: , ,
(n2), | (n3), (
| ).
22 1
1.2-1 n :
,
.
, .
(selection sort). -
.
, - .
1.2-2 ( . 1.1-3).
,
( -
)?
? - ?
1.2-3 x1 x2 ::: xn. ,
(nlogn) , -
.
1.2-4 a0 a1 ::: an;1
x. -
, (n2).
(n), ?
:
n;1X
i=0
aixi = (:::(an;1x + an;2)x+ :::+ a1)x + a0:
1.2-5 n3=1000; 100n2 ; 100n + 3 -
- ?
1.2-6 , -
. ?
1.3.
, -
. -
, (incremental approach): -
.
, -
(divide-and-conquer approach),
.
23
1.3.1.
(recursive algorithms):
,
.
. -
. (
| , ). -
,
.
. -
. -
.
-
. -
, (
1 ).
.
Merge(A p q r). -
A p q r,
. , p 6 q < r
A p::q] A q + 1::r] , (merges)
A p::r].
( . 1.3-2), , Merge
(n), n | (n = r;p+1).
. ,
.
?
( )
. , -
. , -
, (n).
Merge-Sort(A p r),
A p::r] A, -
. p > r
, .
q,
A p::q] ( dn=2e ) A q + 1::r]
( bn=2c ). bxc
x ( , x),
dxe | , x.
24 1
sorted sequence |
merge |
initial sequence |
. 1.3 A = h5 2 4 6 1 3 2 6i.
Merge-Sort(A p r)
1 if p < r
2 then q b(p + r)=2c
3 Merge-Sort(A p q)
4 Merge-Sort(A q + 1 r)
5 Merge(A p q r)
Merge-Sort(A 1 length A]). n = length A]
,
2,
4
n (
n=2). . 1.3.
1.3.2.
? -
, -
,
(recurrence equation). ,
.
. ,
n a , -
b . ,
D(n), | C(n).
25
T(n)
n ( ): T(n) = aT(n=b) + D(n) + C(n).
n,
. n,
, - -
. n ,
.
, (n)
. ( 4, -
.)
. ( )
(1), | (n). -
T(n) =
(
(1) n = 1,
2T(n=2)+ (n=2) n > 1.
4, T(n) =
(nlogn), log ( -
, , ,
). n -
,
(n2).
1.3-1 . 1.3, -
A = h3 41 52 26 38 57 9 49i.
1.3-2 Merge(A p q r).
1.3-3 ,
T(n) =
(
2 n = 2,
2T(n=2)+ n n = 2k k > 1,
T(n) = nlogn ( n, ).
1.3-4
: A 1::n], ( ) -
A 1::n ; 1], A n] -
A 1::n;1]. -
.
26 1
1.3-5 ( . 1.1-3), ,
, ,
, -
. (binary search).
, -
. , (logn).
1.3-6 , while 5{7
Insertion-Sort ( . 1.1) -
A 1::j ; 1] .
( . 1.3-5),
(logn).
(nlogn)?
1.3-7? S n ,
x. (nlogn) , x
S?
, -
| .
: , , -
, : -
.
-
, .
.
| (100 -
)
(1 )? -
, n
, , 2n2 .
50nlogn.
2 (106)2
108 = 20000 5 56
50 (106)log(106)
106 1000 17
.
, |
, -
. .
1 27
1.3-1
8n2 64nlogn .
n -
? ?
1.3-2 n ,
100n2 , , 2n ?
1-1
, n f(n)
. ,
t? , -
.
1 1 1 1 1 1 1
lognpn
n
nlogn
n2
n3
2n
n!
1-2
, n .
, -
. ,
.
. n k n=k. -
, (
) (nk).
. , -
(nlog(n=k)).
.
(nk+nlog(n=k)). k
n, - (nlogn)?
. k -
28 1
?
1-3
A 1::n] | n . -
(inversions) , . .
i < j, A i] > A j].
. h2 3 8 6 1i.
. -
n?
.
? .
. , -
n (nlogn). ( : -
.)
.
: , 4,5], 14], -
14], 105], 121, 122, 123],
142], 144, 145, 146], 164], -
, 167], 175], 201]. -
:
24,25], 90].
1968 -
121, 122, 123],
.
.
, -
- (al-Khow^arizm^, al-Khw^arizm^).
, 4] -
-
. -
.
123] -
. -
, (
). -
, (D.L.Shell),
-
.
,
, -
1938 . -
1 29
, (J. von Neumann), -
,
EDVAC 1945 .
I
, -
.
,
.
2 , -
( .), .
- , -
.
3
( -
).
4
. -
( 4.1),
. ,
, -
.
5 ,
, , , ,
.
6
. -
, (
) ,
.
2
1, ,
( ) -
n2, ( ) | nlgn.
,
n .
, -
.
,
(asymp-
totic e ciency). ,
,
, . ( .)
2.1.
-
, .
-
2 , T(n) -
n (n2). -
: c1 c2 > 0
n0, c1n2 6 T(n) 6 c2n2 n > n0. ,
g(n) | , f(n) = (g(n)) ,
c1 c2 > 0 n0, 0 6 c1g(n) 6 f(n) 6 c2g(n)
n > n0 ( . . 2.1). ( f(n) = (g(n)) :
.)
!!!!!!!!! 2.1 - : ]
f(n) = (g(n)), f(n) = O(g(n))
f(n) = (g(n)).
, -
: , f1(n) = (g(n)) f2(n) = (g(n)),
33
, f1(n) = f2(n)!
(g(n)) , f(n) g(n)
, . . -
n. , f g -
, n0 (
c1 c2 , n -
).
f(n) = (g(n)), , g(n) -
f(n).
: f(n) = (g(n)), g(n) = (f(n)).
1 , (1=2)n2 ; 3n =
(n2). , -
c1 c2 n0 ,
c1n2 6 1
2n2 ;3n 6 c2n2
n > n0. n2:
c1 6 1
2 ; 3
n 6 c2
,
c2 = 1=2. , ( ) n0 = 7 c1 =
1=14.
: -
, 6n3 6= (n2). , c2 n0,
6n3 6 c2n2 n > n0. n 6 c2=6 n > n0
| .
, -
,
n . -
,
( c1 c2). -
, f(n) = an2 + bn + c,
a b c | a > 0. -
, ,
f(n) = (n2). , -
c1 = a=4, c2 = 7a=4 n0 = 2 max((jbj=a)
p
jcj=a) ( ,
). ,
p(n) d -
p(n) = (nd) ( 2-1).
-
: (1) , -
. (
, .)
34 2
O- -
f(n) = (g(n)) :
. . , f(n) = O(g(n)),
c > 0 n0, 0 6 f(n) 6
cg(n) n > n0 , f(n) = (g(n)),
c > 0 n0, 0 6 cg(n) 6 f(n)
n > n0. :
, .
- , f g -
.
( . 2.1-5), :
2.1. f(n) g(n) f(n) =
(g(n)) , f(n) = O(g(n))
f(n) = (g(n)).
f(n) = O(g(n)) g(n) =
(f(n)) .
, an2 + bn + c = (n2) ( a).
an2 + bn + c = O(n2). : a > 0
an + b = O(n2) ( c = a + jbj n0 = 1). ,
an + b 6= (n2 an + b 6= (n2).
( , O )
. , 1
T(n) = 2T(n=2)+ (n)
. (n)
, ,
c1n c2n c1
c2 n.
, -
. ,
nX
i=1
O(i)
h(1) + h(2) + :::+ h(n), h(i) |
, h(i) = O(i). ,
n O(n2).
-
| 2n2 + 3n + 1 = 2n2 + (n) =
(n2). (2n2 + (n) = (n2))
: h(n) = (n)
, 2n2 + h(n) (n2).
35
o- !-
f(n) = O(g(n)) , n
f(n)=g(n) .
limn!1
f(n)
g(n) = 0 (2.1)
f(n) = o(g(n)) (
). , f(n) = o(g(n)),
" > 0 n0, 0 6 f(n) 6 "g(n)
n > n0. ( f(n) = o(g(n)) ,
f(n) g(n) n.)
: 2n = o(n2), 2n2 6= o(n2).
!- : ,
f(n) !(g(n)) ( ), -
c n0, 0 6
cg(n) 6 f(n) n > n0. , f(n) = !(g(n))
, g(n) = o(f(n)).
: n2=2 = !(n), n2=2 6= !(n2).
, :
:
f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)),
f(n) = O(g(n)) g(n) = O(h(n)) f(n) = O(h(n)),
f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)),
f(n) = o(g(n)) g(n) = o(h(n)) f(n) = o(h(n)),
f(n) = !(g(n)) g(n) = !(h(n)) f(n) = !(h(n)).
:
f(n) = (f(n)), f(n) = O(f(n)), f(n) = (f(n)).
:
f(n) = (g(n)) g(n) = (f(n)).
:
f(n) = O(g(n)) g(n) = (f(n)),
f(n) = o(g(n)) g(n) = !(f(n)).
:
f g a b:
f(n) = O(g(n)) a 6 b
f(n) = (g(n)) a > b
f(n) = (g(n)) a = b
f(n) = o(g(n)) a < b
f(n) = !(g(n)) a > b
36 2
, , : -
. ,
a b a 6 b, a > b, -
, ( ) f(n) g(n)
f(n) = O(g(n)), f(n) = (g(n)). , -
,
f(n) = n g(n) = n1+sinn (
g(n) 0 2). , -
a 6 b a < b a = b,
f(n) = O(g(n)) f(n) = o(g(n)) f(n) = (g(n)).
2.1-1 f(n) g(n)
n. , max(f(n) g(n)) = (f(n) + g(n)).
2.1-2 ,
(n+ a)b = (nb) (2.2)
a b > 0.
2.1-3 A -
O(n2) ?
2.1-4 , 2n+1 = O(2n)? 22n = O(2n)?
2.1-5 2.1.
2.1-6 f(n) g(n),
f(n) = O(g(n)), f(n) 6= o(g(n)) f(n) 6= (g(n)).
2.1-7 , f(n) = o(g(n)) f(n) = !(g(n))
.
2.1-8
, . ,
f(m n) = O(g(m n)), n0, m0 c,
0 6 f(m n) 6 cg(m n) n > n0 m > m0.
(g(m n)) (g(m n)).
2.2.
, f(n) (is monoton-
ically increasing), f(m) 6 f(n) m 6 n. ,
37
f(n) (is monotonically decreasing), -
f(m) > f(n) m 6 n. , f(n)
(is strictly increasing), f(m) < f(n) m < n.
, f(n) (is strictly decreasing),
f(m) > f(n) m < n.
x bxc (the oor of x)
, . . , -
x. dxe (the ceiling of x) -
, x. ,
x;1 < bxc 6 x 6 dxe < x+ 1
x. ,
dn=2e+ bn=2c = n
n. , x
a b
ddx=ae=be = dx=abe (2.3)
bbx=ac=bc = bx=abc (2.4)
( , , z
n n 6 z n 6 bzc ).
x 7! bxc x 7! dxe .
( ) d n (polyno-
mial in n of degree d)
p(n) =
dX
i=0
aini
(d | ). a0 a1 ::: ad
(coe cients) . , -
ad ( , d
| , -
).
n p(n)
(
38 2
), ad > 0 p(n) -
( n) p(n) =
(nd).
a > 0 n 7! na , a 6
0 | . , f(n) -
, f(n) = nO(1), , ,
f(n) = O(nk) k ( . . 2.2-2).
m, n a 6= 0
a0 = 1 (am)n = amn
a1 = a (am)n = (an)m
a;1 = 1=a aman = am+n:
a > 1 n 7! an .
00 = 1.
n 7! an , -
(exponential). a > 1
: b,
limn!1
nb
an = 0 (2.5)
, , nb = o(an). -
e = 2 71828:::,
ex = 1 + x + x2
2!
+ x3
3!
+ ::: =
1X
k=0
xk
k!
(2.6)
k! = 1 2 3 ::: k ( . ).
x
ex > 1 + x (2.7)
x = 0. jxj 6 1
ex :
1 + x 6 ex 6 1 + x + x2 (2.8)
, ex = 1 + x + (x2) x ! 0,
( n ! 1
x ! 0).
x limn!1
;
1+ x
n
n = ex.
39
:
lgn = log2 n ( ),
lnn = loge n ( ),
lgk n = (lgn)k
lglgn = lg(lgn) ( ).
,
,
lgn+k lg(n)+k ( lg(n+k)). b > 1 n 7! logb n
( n) .
a > 0, b > 0, c > 0
n ( 1):
a = blogb a
logc(ab) = logc a + logc b
logb an = nlogb a
logb a = logc a
logc b
logb(1=a) = ;logb a
logb a = 1
loga b
alogb c = clogb a
(2.9)
,
O(logn) , -
.
( , )
lg.
(
jxj < 1):
ln(1+ x) = x ; x2
2 + x3
3 ; x4
4 + x5
5 ;:::
x > ;1
x
1 + x 6 ln(1+ x) 6 x (2.10)
x = 0.
, f(n) (is poly-
logaritmically bounded), f(n) = lgO(1) n. (2:5) -
n = lgm a = 2c
limm!1
lgb m
(2c)lgm = limm!1
lgb m
mc = 0
, , lgb n = o(nc) c > 0. -
, -
.
40 2
n! ( , n factorial")
1 n. 0! = 1, n! =
n (n; 1)! n = 1 2 3 :::.
, n! 6 nn ( -
n). (Stirling's
approximation), ,
n! =
p
2 n n
e
n
(1+ (1=n)) (2.11)
,
n! = o(nn)
n! = !(2n)
lg(n!) = (nlgn):
:
p
2 n n
e
n
6 n! 6
p
2 n n
e
n
e1=12n: (2.12)
log n (
) : (iter-
ated logarithm). . -
i- , lg(i), :
lg(0) n = n lg(i)(n) = lg(lg(i;1) n) i > 0. (
, lg(i;1) n .) -
: lgi n lg(i) n ,
.
lg n i > 0, -
lg(i) n 6 1. , lg n | ,
lg, n , -
1.
lg n :
lg 2 = 1
lg 4 = 2
lg 16 = 3
lg 65536 = 4
lg 265536 = 5:
-
1080, 265536, n,
lg n > 5, .
41
(Fibonacci numbers) -
:
F0 = 0 F1 = 1 Fi = Fi;1 + Fi;2 i > 2 (2.13)
,
0 1 1 2 3 5 8 13 21 34 55 :::
.
(golden
ratio) ' ^':
' = 1 +
p
5
2 = 1 61803:::
^' = 1 ;
p
5
2 = ;0 61803:::
(2.14)
,
Fi = 'i ; ^'i
p
5
(2.15)
( . 2.2-7). j^'j <
1, j^'i=
p
5j 1=
p
5 < 1=2, Fi
'i=
p
5, .
Fi ( ) i.
2.2-1 , f(n)
g(n) f(n) + g(n) f(g(n)) -
. f(n) g(n) n,
f(n)g(n) .
2.2-2 , T(n) = nO(1) ,
k, T(n) = O(nk) ( ,
T(n) > 1).
2.2-3 (2.9).
2.2-4 , lg(n!) = (nlgn) n! = o(nn).
2.2-5? dlgne! ?
dlglgne! ?
2.2-6? ( n): lg(lg n) lg (lgn)?
42 2
2.2-7 (2.15).
2.2-8 : Fi+2 > 'i
i > 0 ( ' | ).
2-1
p(n) = a0+a1n+:::+adnd | d,
ad > 0. ,
. p(n) = O(nk) k > d.
. p(n) = (nk) k 6 d.
. p(n) = (nk) k = d.
. p(n) = o(nk) k > d.
. p(n) = !(nk) k < d.
2-2
, A O, o, , ! B
(k > 1, " > 0, c > 1 | ).
A B O o !
. lgk n n"
. nk cn
.
pn nsinn
. 2n 2n=2
. nlgm mlgn
. lg(n!) lg(nn)
2-3
. 30 -
( O( )) , -
( ):
lg(lg n) 2lg n (
p
2)lgn n2 n! (lgn)!
(3=2)n n3 lg2 n lg(n!) 22n
n1=lgn
lnlnn lg n n 2n nlglgn lnn 1
2lgn (lgn)lgn en 4lgn (n+ 1)!
plgn
lg lgn 2
p2lgn n 2n nlgn 22n+1
. f(n), -
gi (f(n) O(gi(n))
gi(n) O(f(n))).
2 43
2-4
f(n) g(n) -
n. ,
. f(n) = O(g(n)), g(n) = O(f(n))?
. f(n) + g(n) = (min(f(n) g(n)))?
. f(n) = O(g(n)) lg(f(n)) = O(lg(g(n))), lg(g(n)) > 0
f(n) > 1 n?
. f(n) = O(g(n)) 2f(n) = O(2g(n))?
. f(n) = O((f(n))2)?
. f(n) = O(g(n)) g(n) = (f(n))?
. f(n) = (f(n=2))?
. f(n) + o(f(n)) = (f(n))?
2-5
- -
. 1 ,
. f(n) g(n) | -
. , f(n) = 1(g(n)),
c, f(n) > cg(n) > 0 -
n.
. , f(n) g(n), -
n, f(n) = O(g(n)),
f(n) = 1(g(n)),
(g(n)) .
. -
1 ?
f(n) = O(g(n)) , -
f(n) . -
O0 , f(n) = O0(g(n)),
jf(n)j = O(g(n)).
. -
2.1?
:
, f(n) = ~O(g(n)),
c k, 0 6 f(n) 6 cg(n)lgk n
n.
. ~ ~
2.1.
2-6
,
. f(n) |
, f(n) < n. f(i)(n), f(0)(n) = n
f(i)(n) = f(f(i;1)(n)) i > 0.
c fc (n) -
44 2
i > 0, f(i)(n) 6 c. ( , fc |
f, n
, c.) , fc (n)
.
f(n) c
fc :
f(n) c fc (n)
. lgn 1
. n ;1 0
. n=2 1
. n=2 2
.
pn 2
.
pn 1
. n1=3 2
. n=lgn 2
121], O- -
(P. Bachmann, 1892). -
o(g(n)) (E. Landau) 1909 -
.
- - 124]: -
O- ( -
). .
121, 124] 33].
-
, , , .
, -
n ( ).
, -
: 1], 27].
( ., , 12]
192]). 121] -
, -
.
3
(for, while),
. , -
1.2, j-
, j.
nX
j=1
j
(n2).
( , 4 ).
3.1 .
3.2 -
-
.
3.1.
a1 + a2 + :::+ an
nX
k=1
ak:
n = 0 0.
, |
. ( , .)
.
(series)
a1 + a2 + a3 + ::: 1X
k=1
ak
46 3
limn!1
nX
k=1
ak:
, , (di-
verges) .
P1
k=1 jakj -
,
P1
k=1 ak (absolutely
convergent series) ,
. -
.
,
nX
k=1
(cak + bk) = c
nX
k=1
ak +
nX
k=1
bk
c
a1 ::: an b1 ::: bn.
,
.
nX
k=1
k = 1 + 2+ :::+ n
,
(arithmetic series). -
nX
k=1
k = 1
2n(n + 1) = (3.1)
= (n2): (3.2)
x 6= 1 (geometric ex-
ponential series)
nX
k=0
xk = 1 + x + x2 + :::+ xn
47
nX
k=0
xk = xn+1 ;1
x;1 : (3.3)
(
jxj < 1)
1X
k=0
xk = 1
1; x: (3.4)
1+1=2+1=3+:::+1=n+::: n-
(nth harmonic number)
Hn = 1 + 1
2 + 1
3 + :::+ 1
n =
nX
k=1
1
k = lnn + O(1): (3.5)
-
, . , -
(3.4) x,
1X
k=0
kxk = x
(1;x)2: (3.6)
a0 a1 ::: an -
nX
k=1
(ak ; ak;1) = an ; a0 (3.7)
( ). - -
telescoping series. ,
n;1X
k=0
(ak ; ak+1) = a0 ; an:
48 3
Pn;1
k=1
1
k(k+1). -
1
k(k+1) = 1
k ; 1
k+1, ,
n;1X
k=1
1
k(k + 1)
=
n;1X
k=1
1
k ; 1
k + 1
= 1 ; 1
n:
a1 ::: an
nY
k=1
ak:
n = 0 defn (product) -
1. :
lg
nY
k=1
ak =
nX
k=1
lgak:
3.1-1
Pn
k=1(2k ; 1).
3.1-2? , -
,
Pn
k=1 1=(2k ; 1) = ln(
pn) + O(1).
3.1-3? ,
P1
k=0(k ;1)=2k = 0.
3.1-4? P1
k=1(2k + 1)x2k.
3.1-5 ,
O-
.
3.1-6 , -
-
.
3.1-7
Qn
k=1 2 4k.
3.1-8? Qn
k=2(1 ;1=k2).
49
3.2.
, -
( ).
,
. : ,
Sn =
Pn
k=1 k n(n+1)=2. n =
1 . , Sn = n(n + 1)=2
n n + 1. ,
n+1X
k=1
k =
nX
k=1
k + (n+ 1) = n(n+ 1)=2+ (n+ 1) = (n+ 1)(n+ 2)=2:
. , -
,
Pn
k=0 3k O(3n).
, ,
Pn
k=0 3k 6 c 3n
c ( ). n = 0
P0
k=0 3k = 1 6
c 1 c > 1.
n, n + 1. :
n+1X
k=0
3k =
nX
k=0
3k + 3n+1 6 c3n + 3n+1 = 1
3 + 1
c c3n+1 6 c3n+1:
, (1=3+ 1=c) 6 1, . . c > 3=2.Pn
k=0 3k = O(3n), .
, -
, -
. ,
Pn
k=1 k = O(n). ,P1
k=1 k = O(1). -
n, n. ,
n+1X
k=1
k =
nX
k=1
k + (n+ 1) = O(n)+ (n+ 1) !]
= O(n+ 1):
, ,
O(n), n.
,
( ,
50 3
). , -Pn
k=1 k
nX
k=1
k 6
nX
k=1
n = n2:
nX
k=1
ak 6 namax
amax | a1 ::: an.
|
. ,Pn
k=0 ak , ak+1=ak 6 r
k > 0 r < 1. ak 6 a0rk,
:
nX
k=0
ak 6
1X
k=0
a0rk = a0
1X
k=0
rk = a0
1
1 ;r:
P1
k=1 k3;k.
1=3,
(k + 1)3;(k+1)
k3;k = 1
3
k + 1
k 6 2
3
k > 1. ,
(1=3)(2=3)k,
1X
k=1
k3;k 6
1X
k=1
1
3
2
3
k
= 1
3
1
1; 2
3
= 1:
, 1,
r < 1,
. , (k + 1)-
k- k
k+1 < 1.
1X
k=1
1
k = limn!1
nX
k=1
1
k = limn!1 (lgn) = 1:
r,
.
51
. Pn
k=1 k. -
,
Pn
k=1 k > n.
O(n2) , -
:
nX
k=1
k =
n=2X
k=1
k +
nX
k=n=2+1
k >
n=2X
k=1
0 +
nX
k=n=2+1
n
2
= n
2
2
:
(
, , -
).
-
, ( k0)
nX
k=0
ak =
k0X
k=0
ak +
nX
k=k0+1
ak = (1)+
nX
k=k0+1
ak:
, 1X
k=0
k2
2k
(k + 1)2=2k+1
k2=2k = (k + 1)2
2k2
1. ,
, .
(k > 3) 8=9,
1X
k=0
k2
2k =
2X
k=0
k2
2k +
1X
k=3
k2
2k 6 O(1)+ 9
8
1X
k=0
8
9
k
= O(1)
|
.
-
. , ,
Hn =
Pn
k=1
1
k. 1 n blgnc -
1+(1=2+1=3)+(1=4+1=5+1=6+1=7)+:::.
1 ( ), -
blgnc + 1 ( ). ,
1+ 1=2+ 1=3+ :::+ 1=n 6 lgn + 1: (3.8)
52 3
fPn
k=m f(k) :
nZ
m;1
f(x)dx 6
nX
k=m
f(k) 6
n+1Z
m
f(x)dx: (3.9)
, . 3.1, ( -
) ( -
) ( ). -
f:
n+1Z
m
f(x)dx 6
nX
k=m
f(k) 6
nZ
m;1
f(x)dx: (3.10)
:
nX
k=1
1
k >
n+1Z
1
dx
x = ln(n + 1) (3.11)
( )
nX
k=2
1
k 6
nZ
1
dx
x = lnn
nX
k=1
1
k 6 lnn + 1: (3.12)
3.2-1 ,
Pn
k=1
1
k2 -
( n).
3.2-2
blgncX
k=0
dn=2ke:
53
. 3.1
Pn
k=m f(k) . -
.
.
. ( ) ,
Rn
m;1
f(x)dx 6 Pn
k=m f(k). ( ) -
, ,
Pn
k=m f(k) 6 Rn+1
m f(x)dx.
54 3
3.2-3 , , n-
(lgn).
3.2-4
Pn
k=1 k3 .
3.2-5 -
-
(3.10)?
3-1
( r > 0 s > 0 ):
.
Pn
k=1 kr.
.
Pn
k=1 lgs k.
.
Pn
k=1 kr lgs k.
121] |
.
( -
12] 192]).
4
, -
,
-
. (recur-
rences). , 1, -
Merge-Sort
T(n) =
(
(1) n = 1,
2T(n=2)+ (n) n > 1.
(4.1)
( ), T(n) = (nlgn).
,
, . . (
O ) . - , ,
, -
( , substitution
method). - , ,
, (
, iteration method). , -
T(n) = aT(n=b)+ f(n)
a > 1, b > 1 | , f(n) | -
. -
(master theorem). -
,
.
-
, .
, Merge-
56 4
Sort (T(n) -
n):
T(n) =
(
(1) n = 1,
T(dn=2e)+ T(bn=2c)+ (n) n > 1.
(4.2)
, ,
, T(n) = (1) n. , -
(4.1)
T(n) = 2T(n=2)+ (n): (4.3)
, ( T(1)) -
,
T(n).
, , -
, ( ) ,
.
, ,
( . 4.1 4.5).
4.1.
: .
, ,
.
, -
. ,
T(n) = 2T(bn=2c)+ n (4.4)
(4.2) (4.3). , T(n) =
O(nlgn), . . T(n) 6 cnlgn c > 0. -
. bn=2c, . .
T(bn=2c) 6 cbn=2clg(bn=2c). ,
T(n) 6 2(cbn=2clg(bn=2c))+ n 6
6 cnlg(n=2)+ n = cnlgn ;cnlg2 + n = cnlgn ;cn+ n 6
6 cnlgn:
c > 1.
-
, . . n. -
, n = 1 -
, c ( lg1 = 0). -
,
57
n, . c ,
T(n) 6 cnlgn n = 2 n = 3. n
, n = 1
( bn=2c > 2 n > 3).
?
. -
.
.
T(n) = 2T(bn=2c+ 17) + n:
(4.4) 17
. , , -
: n
bn=2c + 17 bn=2c .
, T(n) = O(nlgn) ,
( . . 4.1-5).
. -
, . , -
(4.1) T(n) = (n) (
n), T(n) = O(n2) (
). -
,
, .
,
. ,
.
.
T(n) = T(bn=2c)+ T(dn=2e)+ 1:
, T(n) = O(n). -
. , , , T(n) 6 cn -
c.
T(n) 6 cbn=2c+ cdn=2e+ 1 = cn+ 1
c T(n) 6 cn.
,
O(n2), :
58 4
, ,
.
: T(n) 6 cn;b -
b c.
T(n) 6 (cbn=2c;b)+ (cdn=2e;b)+ 1 = cn; 2b+ 1 6 cn;b
b > 1. -
c .
:
, ( ) , -
? |
,
.
:
T(n) = O(n)
(4.4). , T(n) 6 cn, -
T(n) 6 2(cbn=2c)+ n 6 cn+ n = O(n):
, , , -
, cn c
c, O(n).
. , -
T(n) = 2T(bpnc) + lnn
,
. m = lgn,
T(2m) = 2T(2m=2) + m:
T(2m) S(m),
S(m) = 2S(m=2)+ m
(4.4). : S(m) = O(mlgm).
T(n) S(m),
T(n) = T(2m) = S(m) = O(mlgm) = O(lgnlglgn):
59
, , , -
T(n) n,
. ,
S(m) T(n) n, 2m.
4.1-1 , T(n) = T(dn=2e)+1 , T(n) =
O(lgn).
4.1-2 , T(n) = 2T(bn=2c) + n T(n) =
(nlgn), T(n) = (nlgn).
4.1-3 n = 1
(4.4), -
, ?
4.1-4 , (4.2)
(nlgn).
4.1-5 , T(n) = 2T(bn=2c + 17) + n T(n) =
O(nlgn).
4.1-6
T(n) = 2T(
pn) + 1, ( , ,
| ).
4.2.
, ? , -
( ), ,
.
T(n) = 3T(bn=4c)+ n:
, :
T(n) = n + 3T(bn=4c) = n + 3(bn=4c+ 3T(bn=16c))
= n + 3(bn=4c+ 3(bn=16c+ 3T(bn=64c)))
= n + 3bn=4c+ 9bn=16c+ 27T(bn=64c)
, , (2.4), bbn=4c=4c = bn=16c
bbn=16c=4c = bn=64c. ,
? i- -
T(bn=4ic), T(1), bn=4ic = 1, . .
60 4
i > log4 n. , bn=4ic 6 n=4i,
( , -
3log4 n ):
T(n) 6 n+ 3n=4+ 9n=16+ 27n=64+ :::+ 3log4 n (1)
6 n
1X
i=0
3
4
i
+ (nlog4 3)
= 4n + o(n) = O(n)
( log4 n + 1
, 3log4 n nlog4 3,
o(n), log4 3 < 1.)
-
.
:
, .
,
( ).
( -
). , -
, (
n = 4k ). , -
,
,
. 4.3, -
( . 4-5).
(recursion tree). ,
. 4.1
T(n) = 2T(n=2)+ n2:
, n | .
( ) ( ), T(n), -
T(n), T(n=2), T(n=4) . . -
T(n), -
. n2, | (n=2)2 +(n=2)2 =
n2=2, | (n=4)2 + (n=4)2 + (n=4)2 + (n=4)2 = n2=4. -
,
-
. , T(n) = (n2).
. 4.2 | -
T(n) = T(n=3)+ T(2n=3)+ n
61
Total=
. 4.1 T(n) = 2T(n=2) +n2
. -
( ) lgn ( lgn+ 1 ).
. 4.2 T(n) = T(n=3) +T(2n=3) +n.
62 4
( ).
n. ,
1. -
,
n ! (2=3)n ! (2=3)2n ! ! 1 k = log3=2 n
( k (2=3)kn = 1). T(n)
O(nlgn).
4.2-1 ( ) T(n) =
3T(bn=2c) + n,
T(n).
4.2-2 , , T(n) =
T(n=3)+ T(2n=3)+ n T(n) = (nlgn).
4.2-3 T(n) = 4T(bn=2c) + n
T(n).
4.2-4 T(n) = T(n ;
a) + T(a) + n, a > 1 | .
4.2-5 T(n) =
T( n)+T((1; )n)+n, | 0 < < 1.
4.3.
T(n) = aT(n=b)+ f(n) (4.5)
a > 1 b > 1 | , f |
( ) .
,
.
(4.5) ,
n a n=b,
( T(n=b)) -
.
f(n) ( 1.3.2 f(n) = C(n)+ D(n)).
, Merge-Sort a = 2, b = 2,
f(n) = (n).
, (4.5) -
: n=b .
63
T(n=b) T(bn=bc) T(dn=be). ,
, ,
.
4.1. a > 1 b > 1 | , f(n) | ,
T(n) n
T(n) = aT(n=b)+ f(n)
n=b dn=be, bn=bc. :
1. f(n) = O(nlogb a;") " > 0, T(n) =
(nlogb a).
2. f(n) = (nlogb a), T(n) = (nlogb a lgn).
3. f(n) = (nlogb a+") " > 0 af(n=b) 6
cf(n) c < 1 n,
T(n) = (f(n)).
? -
f(n) nlogb a -
, T(n) ( 1 3).
( 2), -
(nlogb a lgn) = (f(n)lgn).
. -
, f(n) , nlogb a: -
n" " > 0.
f(n) nlogb a ,
af(n=b) 6 cf(n)
, , .
, -
: , , f(n) ,
nlogb a, , -
.
2 3. , -
.
, -
.
T(n) = 9T(n=3)+ n:
a = 9, b = 3, f(n) = n, nlogb a = nlog3 9 = (n2).
64 4
f(n) = O(nlog3 9;") " = 1,
, T(n) = (n2).
T(n) = T(2n=3)+ 1:
a = 1, b = 3=2, f(n) = 1 nlogb a = nlog3=2 1 = n0 = 1.
2, f(n) = (nlogb a) = (1), ,
T(n) = (lgn).
T(n) = 3T(n=4)+ nlgn
a = 3, b = 4, f(n) = nlgn nlogb a =
nlog4 3 = O(n0 793). ( " 0 2) , -
. n af(n=b) =
3(n=4)lg(n=4) 6 (3=4)nlgn = cf(n) c = 3=4.
T(n) = (nlgn).
, : T(n) =
2T(n=2)+nlgn. a = 2, b = 2, f(n) = nlgn, nlogb a = n. ,
f(n) = nlgn , nlogb a, -
: f(n)=nlogb a = (nlgn)=n = lgn
n" " > 0. -
2 3
. 4.4-2.
4.3-1 ,
. T(n) = 4T(n=2)+ n
. T(n) = 4T(n=2)+ n2
. T(n) = 4T(n=2)+ n3.
4.3-2 A
T(n) = 7T(n=2)+n2, A0 | -
T0(n) = aT0(n=4)+n2. a
A0 , A?
4.3-3 , ,
T(n) = T(n=2)+ (1) ( , . . 1.3-5)
T(n) = (lgn).
4.3-4 , ( 3) -
: f,
", -
.
4.4 4.1 65
? 4.4 4.1
4.1 -
,
.
. -
n, b -
. -
, -
. .
-
: -
, b,
,
.
, ,
, : T(n)
, T(n) = O(n) n,
, n. ( ,
T(n) = n n = 1 2 4 8 ::: T(n) = n2 n.)
4.4.1.
T(n) , ( )
b > 1 ( )
(4.5), . .
T(n) = aT(n=b)+ f(n):
T :
( 4.2), ( -
4.3) ( 4.4).
4.2. a > 1, b > 1 | , f(n) |
, b.
T(n) | , b
T(n) = aT(n=b)+ f(n) n > 1, T(1) > 0.
T(n) = (nlogb a) +
logb n;1X
j=0
ajf(n=bj): (4.6)
66 4
. 4.3 T(n) = aT(n=b) + f(n)
a- logb n nlogb a. -
, (4.6).
.
,
T(n) = f(n)+ aT(n=b)
= f(n)+ af(n=b)+ a2T(n=b2)
= f(n)+ af(n=b)+ a2f(n=b2) + :::
+ alogb n;1f(n=blogb n;1) + alogb nT(1):
alogb n = nlogb a,
(nlogb a). ,
.
4.2
( . 4.3), a (
). f(n), a -
f(n=b), a2 f(n=b2) . .
j aj | f(n=bj). -
logb n ,
T(1) alogb n = nlogb a .
4.4 4.1 67
(4.6) , :
j- ajf(n=bj),
logb n;1X
j=0
ajf(n=bj):
,
.
nlogb a 1, -
(nlogb a).
, -
.
, | ,
.
(4.6).
4.3. a > 1, b > 1 | , f(n) | -
, b. -
g(n),
g(n) =
logb n;1X
j=0
ajf(n=bj) (4.7)
( n, b).
1. f(n) = O(nlogb a;") " > 0,
g(n) = O(nlogb a).
2. f(n) = (nlogb a), g(n) = (nlogb a lgn).
3. af(n=b) 6 cf(n) c < 1
n > b, g(n) = (f(n)).
. 1. -
f(n) = n , = logb a;"
f (4.7) : (
= logb a)
g(n) = f(n) + af(n=b)+ a2f(n=b2) + :::+ ak;1f(n=bk;1)
= n + a(n=b) + a2(n=b2) + :::+ ak;1(n=bk;1) (4.8)
-
k = logb n a=b 1,
< logb a b < a. -
(
). O(ak) = O(nlogb a).
.
68 4
2.
:
g(n) = f(n) + af(n=b)+ a2f(n=b2) + :::
= n + a(n=b) + a2(n=b2) + ::: (4.9)
= logb a -
1 . logb n, -
nlogb a logb n = (nlogb a lgn):
2 .
3. f ,
-
, c < 1.
c, -
( 1=(1 ; c))
( , -
). , g(n) = (f(n)) n,
b. .
, n b.
4.4. a > 1, b > 1 | , f(n) |
, b.
T(n) | , b
T(n) = aT(n=b)+ f(n) n > 1 T(1) > 0. :
1. f(n) = O(nlogb a;") " > 0, T(n) =
(nlogb a).
2. f(n) = (nlogb a), T(n) = (nlogb a)lgn.
3. f(n) = (nlogb a+") " > 0 af(n=b) 6
cf(n) c < 1 -
n, T(n) = (f(n)).
??????? ?
. 4.2 4.3.
T(n) = (nlogb a) + O(nlogb a) = (nlogb a):
T(n) = (nlogb a) + (nlogb a lgn) = (nlogb a lgn):
4.4 4.1 69
T(n) = (nlogb a) + (f(n)) = (f(n)):
, f(n) = (nlogb a+")
" > 0 ,
( . . 4.4-3).
4.4 .
4.4.2.
n, -
b. n=b -
T(n) = aT(dn=be)+ f(n) (4.10)
T(n) = aT(bn=bc) + f(n): (4.11)
, .
, .
n n=b n=b2 ::: -
ni, :
ni =
(
n i = 0,
dni;1=be i > 0.
(4.12)
( ). -
| , .
, logb n -
, n ( b)
.
, dxe 6 x + 1 ,
n0 6 n
n1 6 n
b + 1
n2 6 n
b2 + 1
b + 1
n3 6 n
b3 + 1
b2 + 1
b + 1
::::::::::::::::::::::
1 + 1=b + 1=b2 + ::: 6 1=(b ; 1), i = blogb nc
ni 6 n=bi + b=(b;1) 6 b + b=(b;1) = O(1).
70 4
(4.10),
T(n) = f(n0) + aT(n1)
= f(n0) + af(n1)+ a2T(n2)
6 f(n0) + af(n1)+ a2f(n2) + :::+
+ ablogb nc;1f(nblogb nc;1) + ablogb ncT(nblogb nc)
= (nlogb a) +
blogb nc;1X
j=0
ajf(nj): (4.13)
(4.6), n
b.
, .
, T(ndlogbne) .
, f(n) , . .
n, n0.
, n0.
.]
g(n) =
blogb nc;1X
j=0
ajf(nj): (4.14)
-
, ( -
), ( ) ( -
). -
, -
( ,
). , -
n=bi ni. -
, b=(b ; 1), -
. ,
f(nj) = O(nlogb a=aj) = O((n=bj)logb a), -
4.3 ( 2). , bj=n 6 1 j 6 blogb nc.
f(n) = O(nlogb a) , c
4 71
nj
f(nj) 6 c n
bj + b
b;1
logb a
= c nlogb a
aj 1+ bj
n
b
b;1
logb a
6 c nlogb a
aj 1+ b
b;1
logb a
= O nlogb a
aj :
, c(1 + b=(b ; 1))logb a | -
. , 2 .
1 .
f(nj) = O(nlogb a;") ,
2, .
, n
.
, , nj
n=bj.
4.4-1? ni (4.12), b|
.
4.4-2? , f(n) = (nlogb a lgk n), k > 0,
(4.5) T(n) = (nlogb a lgk+1 n).
b.
4.4-3? , 3 -
: (af(n=b) 6 cf(n) -
c < 1) , " > 0,
f(n) = (nlogb a+").
4-1
-
( , T(n) | -
n 6 2):
. T(n) = 2T(n=2)+ n3.
. T(n) = T(9n=10)+ n.
72 4
. T(n) = 16T(n=4)+ n2.
. T(n) = 7T(n=3)+ n2.
. T(n) = 7T(n=2)+ n2.
. T(n) = 2T(n=4)+
pn.
. T(n) = T(n;1) + n.
. T(n) = T(
pn) + 1.
4-2
A 1::n] 0 n, -
. , -
B 0::n] , A,
, ( -
O(n)). A
.
-
A: -
A.
, -
O(n).
4-3
, -
, |
. ,
, . -
. -
:
1. (1).
2. (N), N | .
3. , -
. (q ;p + 1),
A p::q].
.
( . 1.3-5). -
? ( -
, .)
. Merge-Sort -
1.3.1.
4-4
T(n) .
, T(n) | n 6 8.
. T(n) = 3T(n=2)+ nlgn.
4 73
. T(n) = 3T(n=3+ 5)+ n=2.
. T(n) = 2T(n=2)+ n=lgn.
. T(n) = T(n ;1) + 1=n.
. T(n) = T(n ;1)+ lgn.
. T(n) =
pnT(
pn) + n.
4-5
T(n) n, -
b. -
n?
. T(n) h(n) | , -
( -
), T(n) 6 h(n) n, -
b > 1. , , h
: h(n) = O(h(n=b)). ,
T(n) = O(h(n)).
. T T(n) =
aT(n=b) + f(n) n > n0 a > 1, b > 1 f(n) -
. T(n) n 6 n0,
T(n0) 6 aT(n0=b)+f(n0): , T(n)
.
. 4.1
f(n).
4.4.
4-6
(2.13).
. -
(generating function), -
(formal power series)
F =
1X
i=0
Fizi = 0 + z + z2 + 2z3 + 3z4 + 5z5 + 8z6 + 13z7 + :::
. , F(z) = z + zF(z)+ z2F(z).
. ,
F(z) = z
1 ;z ;z2 = z
(1 ;'z)(1 ; b'z) = 1p
5
1
1 ;'z ; 1
1 ; b'z
' = 1 +
p
5
2 = 1 61803:::
b' = 1;
p
5
2 = ;0 61803:::
74 4
. ,
F(z) =
1X
i=0
1p
5
('i ; b'i)zi:
. , Fi i > 0 'i=
p
5
. ( : jb'j < 1.)
. , Fi+2 > 'i i > 0.
4-7
n ,
, | . -
,
. -
,
.
A B
B A
B A
B A
B A
. , ,
, -
( ).
.
n , . ,
bn=2c , -
.
. . ,
(n) .
( .)
: -
n , -
. ,
, . ,
. -
O(n) . -
, -
. ,
, , . -
, -
:
.]
4 75
(L. Fibonacci)
1202 . (A. De Moivre)
( . 4-6). -
-
, 26], -
( . 4.4-2). 121] 140]
,
. -
164].
76 4
1257
5
, , -
, , ,
. , , -
( ).
5.1.
(set) (members, elements).
x S, x 2 S ( -
x S ). x S, x =2 S.
-
. , S = f1 2 3g -
1 2 3 . 2
, 4 | , 2 2 S, 4 =2 S.
, -
. A B (are equal),
.
A = B. , f1 2 3 1g= f1 2 3g= f3 2 1g.
-
:
? (empty set),
.
Z (integers) Z =
f::: ;2 ;1 0 1 2 :::g
R ( )
(real numbers)
N (natural numbers)
N = f0 1 2 :::g1
A
1 1 | .
78 5
B, ( x 2 A x 2 B), , A -
(subset) B A B. A
B, A
(proper subset) B A B. (
A B ,
.) A
A A. A B -
, A B B A. A, B C
A B B C A C. A
? A.
:
A ,
, B.
, fx : x 2
Z x=2 | g. x Z,
...
.
A B -
, -
(set operations):
(intersection) A B
A B = fx : x 2 A x 2 Bg:
(union) A B -
A B = fx : x 2 A x 2 Bg:
(di erence) A B -
AnB = fx : x 2 A x =2 Bg:
-
:
(empty set laws):
A ? = ? A ? = A:
(idempotency laws):
A A = A A A = A:
(commutative laws):
A B = B  A A B = B A:
79
??? n
. 5.1 , -
(5.2). A B C .
(associative laws):
A (B C) = (A B) C A (B C) = (A B) C:
(distributive laws):
A (B C) = (A B) (AC)
A (B  C) = (A B)  (A C)
(5.1)
(absorption laws):
A (A B) = A A (AB) = A
(DeMorgan's laws):
A n(B C) = (AnB) (AnC)
A n(B C) = (AnB) (AnC)
(5.2)
. 5.1 (5.1)
A, B C .
,
(universe). , ,
,
Z . U ,
(complement) A A =
U nA. A U :
A = A A A = ? A A = U:
(5.2) ,
A B U
A B = A B A B = AB:
A B (disjoint),
, . . AB = ?. ,
S = fSig
(partition) S,
80 5
Si (are pairwise disjoint),
. . Si Sj = ? i 6= j,
S, . .
S =
Si2S
Si
, S S,
s 2 S
Si .
S (car-
dinality), (size), jSj.
,
. -
: j?j = 0. ( nite)
| (in nite) -
.
, , -
, (countably in nite)
, , -
(uncountable). Z ,
R .
A B
jA Bj = jAj+ jBj; jABj (5.3)
,
jA Bj 6 jAj+ jBj
A B , jA  Bj = 0
: jA Bj = jAj+jBj. A
B, jAj 6 jBj.
n n- (n-
set) (sin-
gleton). k-
subset, k- ( - -
).
S
, S -
2S - (power set). ,
2fa bg = f? fag fbg fa bgg. S 2S -
2jSj .
a b (a b)
(a b) = fa fa bgg,
(a b) (b a).
81
.
, , (a b) = (c d)
(a = c) (b = d).]
(cartesian product) A
B ,
A, | B. : A B.
A B = f(a b) : a 2 A b 2 Bg
, fa bg fa b cg = f(a a) (a b) (a c) (b a) (b b) (b c)g.
A B
:
jA Bj = jAj jBj: (5.4)
n A1 A2 ::: An
n- (n-tuples)
A1 A2 ::: An = f(a1 a2 ::: an) : ai 2 Ai i = 1 2 ::: ng
( (a b c) ((a b) c),
(a b c d) ((a b c) d) ).
:
jA1 A2 ::: Anj = jA1j jA2j ::: jAnj
An = A A ::: A
n A
An jAjn. , n-
n ( . . 5.3).
5.1-1 -
(5.1).
5.1-2 -
:
A1  A2  :::An = A1 A2 ::: An
A1 A2 ::: An = A1  A2 ::: An:
82 5
5.1-3 (5.3), -
(principle of inclusion and exclusion):
jA1 A2 ::: Anj = jA1j+ jA2j+ :::+ jAnj
; jA1  A2j; jA1  A3j; :::
+ jA1  A2 A3j+ :::
+ (;1)n;1jA1  A2 ::: Anj
5.1-4 ,
.
5.1-5 , S n -
, - 2S 2n . ( -
, S 2n .)
5.1-6 n- , -
.
5.2.
(binary relation) R
A B -
A B. (a b) 2 R, aRb , a
R b.
A A A.
,
f(a b) : a b 2 N a < bg. n- -
(n-ary relation) A1 A2 ::: An
A1 A2 ::: An.
R A A (re ex-
ive),
aRa
a 2 A. , = 6 -
N, <
. R (symmetric),
aRb bRa
a b 2 A. ,
< 6 | . R
(transitive),
aRb bRc aRc
83
a b c 2 A. , < , 6 =
, R = f(a b) : a b 2 N a = b; 1g |
, 3R4 4R5, 3R5.
, , -
, -
(equivalence relation). R |
A, (equiv-
alence class) a 2 A a] = fb 2 A : aRbg
, a. , -
,
a b , a + b . -
( R) -
. , a + a ,
a+ b = b+ a, R ,
a + b b + c | , a+ c = (a + b)+ (b+ c) ; 2b -
, R .
4 4] = f0 2 4 6 :::g, 3
3] = f1 3 5 7 :::g.
:
5.1 ( ).
A
A. , -
A
.
. , -
, , -
A. -
a 2 a], a.
, a] b] , -
. c | , aRc, bRc, cRb ( -
) aRb ( ). , b] a]:
x | b, bRx aRx.
, a] b] a] = b].
.
R A -
,
aRb bRa a = b:
, 6 -
, a 6 b b 6 a a = b. -
, -
(partial order),
-
(partially ordered set). ,
84 5
-
, .
, ,
| x, yRx
y. -
: x (max-
imal), , . . xRy -
x = y. , -
( ),
(
).
(total order, linear or-
der), a b aRb, bRa
( | ).
, 6 -
, -
| ( ,
).
5.2-1 , -
Z , -
.
5.2-2 , n
a b (mod n) -
Z. ( , a b (mod n), q,
a;b = qn.)
?
5.2-3 ,
. ,
. ,
. , .
5.2-4 S | , R | -
S. , R ,
.
5.2-5 , -
, :
aRb bRa , aRa
. ?
85
5.3.
A B. (function), -
A B, f A B, -
: a 2 A
b 2 B, (a b) 2 f. A -
(domain) B
, -
codomain.
, f -
A B. -
A
B, B -
A. , -
f = f(a b) : a 2 N b = a mod 2g
f : N ! f0 1g,
a b 2 f0 1g,
a mod 2. f(0) = 0, f(1) = 1, f(2) = 0
. ,
g = f(a b) : a b 2 N a + b g
, ( ) (1 3) (1 5),
, ,
.
(a b) f, -
, , b (value)
(argument) a, b = f(a). -
, , -
. ,
f: N ! N f(n) = 2n, , f = f(n 2n) :
n 2 Ng. f g: A ! B (equal),
f(a) = g(a) a 2 A. ( , -
f: A ! B1 g: A ! B2
B1 6= B2, f(a) = g(a) a!)
( nite sequence) n -
f,
f0 1 2 ::: n;1g.
, . . hf(0) f(1) ::: f(n;1)i. -
(in nite sequence) ,
N
. , , -
(2.13), h0 1 1 2 3 5 8 13 21 :::i.
86 5
-
, -
. , f : A1 A2
::: An ! B, f(a1 a2 ::: an)
f((a1 a2 ::: an)). ai (ar-
gument) f,
n- (a1 a2 ::: an).
b = f(a) f : A ! B
a 2 A, b 2 B, b (image) a.
A0 A f(A0)
f(A0) = fb 2 B : b = f(a) a 2 A0g:
(range) f
, . . f(A). , -
f : N ! N, f(n) = 2n,
, -
f(N) = fm : m = 2n n 2 Ng.
f: A ! B (surjection), -
, B, . .
b 2 B a 2 A. -
, f : N ! N, f(n) = bn=2c, -
. f(n) = 2n ,
, f: N ! N, , -
-
. f : A ! B, ,
A B (onto B).
f: A ! B (injection), -
,
, . . f(a) 6= f(a0) a 6= a0. ,
f(n) = 2n N N, -
n
(n=2, n
). f(n) = bn=2c ,
( ) f(2) = f(3) = 1.
one-to-one function .
f: A ! B (bijection), -
. ,
f(n) = (;1)ndn=2e, ,
87
N Z, :
0! 0
1!;1
2! 1
3!;2
4! 2
...
, Z
N. -
, Z -
N. -
(one-to-one correspon-
dence), -
A B. , -
A , (permutation) -
A.
f , (inverse)
f;1
f;1(b) = a , f(a) = b:
, f(n) = (;1)ndn=2e
f;1(m) =
(
2m m > 0,
;2m;1 m < 0.
5.3-1 A B | , f : A ! B | -
. ,
. f | , jAj 6 jBj
. f | , jAj > jBj.
5.3-2 f : N ! N,
f(x) = x+1? Z! Z,
.
5.3-3 .
( ,
.)
5.3-4? f: Z! Z Z.
88 5
. 5.2 . ( ) -
(V E), V = f1 2 3 4 5 6g E =
f(1 2) (2 2) (2 4) (2 5) (4 1) (4 5) (5 4) (6 3)g. (2 2) -
. ( ) G = (V E), V = f1 2 3 4 5 6g
E = f(1 2) (1 5) (2 5) (3 6)g. 4 (
). ( ) ( ),
f1 2 3 6g.
5.4.
,
.
, -
,
. 23,
.
(directed graph)
(V E), V | , E | -
V, . . V V.
(digraph). -
V (vertex set)
(vertex
vertices). E (edge set) -
(edges). 5.2 ( ) -
f1 2 3 4 5 6g.
, | . ,
- (self-loops),
.
(undirected) G = (V E)
(V) (unordered) :
fu vg, u v 2 V u 6= v. -
(u v) fu vg
(u v) (v u)
. -
- ,
( ). . 5.2 ( ) -
f1 2 3 4 5 6g.
89
-
( -
). (u v) ,
(incident from, leaves) u (incident to,
enters) v. , . 5.2 ( ) ,
2 ((2 2) (2 4) (2 5)) ,
((1 2) (2 2)). (u v) -
, (incident on vertices) u
v. , . 2.5 ( ) , 2
( (1 2) (2 5)).
G (u v), , v
u (is adjacent to u).
, -
. v
u , u ! v.
5.2 ( ) 5.2 ( ) 2 -
1, 1 2
( (2 1) ).
(degree) -
. , . 5.2 ( )
2 2. -
(out-degree), -
, (in-degree),
. -
(degree) . , -
2 . 5.2 ( ) 2,
3 5.
k (path of length k) u v -
hv0 v1 v2 ::: vki,
v0 = u, vk = v (vi;1 vi) 2 E i = 1 2 ::: k. -
, k k . (con-
tains) v0 v1 ::: vk (v0 v1) (v1 v2) ::: (vk;1 vk).
v0 , vk |
, v0 vk. u u0
p u u0, , u0 -
u p (u0 is reachable from u via p).
( ) u p
u0.
(simple), -
. , . 5.2 ( ) h1 2 5 4i -
3, h2 5 4 5i , -
.
(subpath) p = hv0 v1 ::: vki ,
, . .
hvi vi+1 ::: vji i j, -
0 6 i 6 j 6 k.
90 5
(cycle) , -
-
. hv0 v1 ::: vki ,
( ),
. . v1 v2 ::: vk . -
1. , -
: k -
k (
k ). , . 5.2 ( ) h1 2 4 1i,
h2 4 1 2i h4 1 2 4i .
, h1 2 4 5 4 1i
. h2 2i, -
- (2 2). , -
- , (simple).
hv0 v1 ::: vki -
( ) , k > 3, v0 = vk
v1 v2 ::: vk . , . 5.2 ( ) -
h1 2 5 1i.
, , (acyclic).
(connected), -
-
. -
-
. -
(connected components) . , . 5.2 ( ) -
: f1 2 5g, f3 6g f4g. -
,
.
(strongly
connected), ( -
) . -
(strongly connected com-
ponents), -
u v v u .
, -
. . 5.2 ( )
: f1 2 4 5g, f3g f6g. ,
f3 6g , 3 -
6, .
G = (V E) G0 = (V0 E0)
(isomorphic),
f: V ! V0 ,
: (u v) 2 E
, (f(u) f(v)) 2 E0. , -
| ,
- . . 5.3 ( ) -
91
. 5.3 ( ) . ( ) : -
4, | .
G G0 V = f1 2 3 4 5 6g
V 0 = fu v w x y zg. f : V ! V0, f(1) = u,
f(2) = v, f(3) = w, f(4) = x, f(5) = y, f(6) = z, -
. , . 5.3 ( ) ,
5 7 . , -
, ,
4, | .
G0 = (E0 V0) (subgraph) G =
(E V), E0 E V 0 V. G = (E V)
V0,
, ,
. . G0 = (E0 V0),
E0 = f(u v) 2 E : u v 2 V0g
G -
V0 (subgraph of G induced by V0).
. 5.2 ( ) f1 2 3 6g . 5.2 ( )
(1 2), (2 2), (6 3).
G
(directed version),
fu vg
(u v) (v u), . -
, -
(undirected version),
, - (u v)
(v u) fu vg.
(neighbor) u , -
( ) ,
v u , v u
92 5
u v. v |
u v u .
.
(complete) , -
(
). (V E)
(bipartite), V -
V1 V2 , -
. -
(forest), -
( -
-
). - free
tree. (directed acyclic graph)
- dag ( ).
. ,
(multigraph),
, , -
, - . -
(hypergraph) ,
(hyperedges), -
, . -
-
.
5.4-1 , -
. . , -
,
(handshaking lemma): -
.
5.4-2 , k > 3 -
( ,
, , ).
5.4-3 , ( -
) u v,
u v. ,
, .
5.4-4 , (V E)
1: jEj >
jVj;1
93
5.4-5 , -
( ) .
, -
, -
?
5.4-6 . 5.2 ( )
. 5.2 ( ).
5.4-7? -
, -
? ( :
,
.)
5.5.
, -
. -
. -
11.4 23.1
.
5.5.1.
5.4, ( ,
free tree) -
. ,
( ) , (forest) -
, ( -
).
. . 5.4 ( ) . 5.4 ( )
. 5.4 ( ) , .
5.4 ( ) , ,
.
-
.
5.2 ( ). G = (V E) | -
. :
1. G ( ).
2. G -
.
3. G , ,
.
94 5
. 5.4 ( ) . ( ) . ( ) ,
, , .
. 5.5 u v
4. G jEj = jVj;1.
5. G jEj = jVj;1.
6. G , -
.
. (1) ) (2): ,
, , .
p1 p2 u
v ( . 5.5). ,
w | , x y |
, w p1 p2.
, ,
z. p0
w z ( x) p00 w z
( y). p0 p00 ( ),
z p1 w,
p2. ( p0
p00).
(2) ) (3) , , . (u v) | -
. ,
, u v | ,
.
(3) ) (4) , , jEj > jVj;1 ( . 5.4-
4). , jEj 6 jVj ; 1, .
n = 1 2 n;1 . G
n > 3 -
. G k > 2 -
95
( , ).
(3). -
,
jVj; k 6 jVj; 2. , jVj; 1
.
(4) ) (5) jEj = jVj;1. ,
. ,
( ).
,
( ). ,
|
,
.
(5) ) (6) G jEj = jVj ; 1.
G k -
. ,
, k -
. , k = 1 .
( , (1) ) (2)),
.
(6) ) (1) , -
. , . -
, u v. ,
(u v) . -
(u v),
| , u
v, .
5.5.2. .
, (rooted tree), ,
( )
, (root). -
- nodes .
5.6 ( ) 12
7.
x | r.
r x ,
, (ancestors) x. y
x, x (descendant) y. -
.
x, x, -
(proper ancestors) (proper
descendants) x. : -
96 5
= 4, 0, 1 . .
. 5.6 ( ) 4. :
( 7) , ( ,
1) , (
, 2) . .
. ( )
, ( 3),
.
-
, ,
.]
x ,
x, x . -
x (subtree rooted at x). ,
. 5.6 ( ) 8 8, 6, 5 9.
(y x) | x, y -
(parent) x, x y. -
(father) (son),
, - -
, | .
-
.]
, -
. , , -
siblings ,
, ( )
. , ,
(leaf, external node). , ,
(internal).
-
(degree). , , ,
, -
(
, ).
x (depth) -
x.
97
. 5.7 . ( ) , -
. - ,
| - . ( ) ( , -
7 5 , ).
, . ( )
(a), ,
. -
.
(height) .
(ordered tree)
: -
( , ,
. .). . 5.6 -
, .
5.5.3. .
(binary tree) -
,
( ),
: , -
(root), , -
(left subtree) , , -
(right subtree) .
, , (emp-
ty). nil. ,
(left child)
(right child) .
, ,
(child is absent).
. 5.7 ( ).
-
,
2. , ,
1 |
98 5
=3, 0, 1 . .
. 5.8 3 8 7
.
, -
. . 5.7 ( , ) ,
.
-
.
( , ). -
. 5.7 ( ).
: k-
(k-ary) k = 2. , -
(positional tree) ,
-
, . -
1, 2, 3 ,
( ) , -
(ith child is absent). k-
, k.
k- (complete k-ary tree) k-
,
k. ( -
.) . 5.8
3. ,
k- h.
0, k -
1, k2 k
kh h. ,
k- n logk n ( -
, ).
k- h
1 + k + k2 + :::+ kh;1 = kh ;1
k ; 1
( . (3.3)). , -
.
5 99
5.5-1 ( ), -
A, B C. -
A, B C A. ( )
A, B C A.
A, B C A.
5.5-2 , n > 7 c n
, n
, n .
5.5-3 G = (V E) | ,
v0,
v 2 V . , -
G .
5.5-4 , -
2 .
5.5-5 , n -
blgnc.
5.5-6? (internal path length)
, 0
2, . -
. n | , i e
| . , e = i + 2n.
5.5-7? 2;d, d |
. ,
1 ( , Kraft inequality)
5.5-8? , L -
,
L=3 2L=3].
5-1
k- (V E) -
c: V ! f0 1 ::: k ; 1g, c(u) 6= c(v)
u v. (
.)
. , 2- .
100 5
. , -
G :
1. G .
2. G 2- .
3. G .
. d |
G. , G (d + 1)- .
. , G O(jVj) , G
O(
p
jVj)- .
5-2
. ( ,
,
.)
. n > 2
( ).
. 6 ,
, ,
.
.
,
.
. n n=2 ,
,
.
5-3
, -
, ,
-
.
. , n
,
3n=4 .
. , 3=4 ( ) ,
,
3n=4 .
. ,
n A B ,
jAj = bn=2c, jBj = dn=2e, ,
, O(lgn).
5 101
(G. Boole) -
- ,
1854 . ( -
)
(G. Cantor) 1874{1895 . -
(G.W. Leibnitz) -
. -
. 1736 ,
(L. Euler) , -
.
94].
6
-
. ,
.
, -
.
6.1 (
). 6.2 -
-
. 6.3 -
, . 6.4 -
. -
6.5
( ). 6.6 -
:
, -
.
6.1.
,
. , n-
n . -
. ,
( . . 5.1).
, -
, -
.
(rule of sum) , jA Bj = jAj + jBj
A B ( -
(5.3)).
103
, , 26 + 10 = 36
, 26, 10.
(rule of product) , jA
Bj = jAj jBj A B, . (5.4). ,
28 4 ,
28 4 = 112 (
).
(string - ) -
-
S ( ). , 8 -
( ) 3:
000 001 010 011 100 101 110 111:
k k- (k-string). -
(substring) s0 s -
s. k-
(k-substring), k. , 010
3- 01101001 ( 4), 111
| .
k S
Sk, jSjk -
k. , 2k k. -
:
jSj jSj -
, | k , jSj jSj ::: jSj
(k ) .
(permutation) S -
, -
. ,
6 S = fa b cg :
abc acb bac bca cab cba:
n! n ,
n ,
n; 1 , n; 2 , . .
104 6
,
,
. S n
k, n.
n k k,
S. ( | k-permutation.)
n(n; 1)(n;2) (n ; k + 1) = n!
(n; k)! (6.1)
n , n;1 -
, k- , -
n; k + 1 .
, 12 = 4 3
fa b c dg:
ab ac ad ba bc bd ca cb cd da db dc:
-
(
n = k).
(k-combinations) n k k-
- n- .
, fa b c dg 4 6 -
fa bg fa cg fa dg fb cg fb dg fc dg:
n k k!
( n k), k-
k! , -
. (6.1) ,
n k
n!
k!(n;k)!: (6.2)
k = 0 1, (
, 0! = 1).
105
n k Ck
n
( )
;n
k :
Ck
n = n
k = n!
k!(n; k)!: (6.3)
k n ;k :
Ck
n = Cn;k
n : (6.4)
Ck
n (bi-
nomial coe cients), (binomial ex-
pansion):
(x + y)n =
nX
k=0
Ck
nxkyn;k (6.5)
( (x + y)n, , -
k x n ; k y,
k n, . . Ck
n).
x = y = 1
2n =
nX
k=0
Ck
n: (6.6)
( : 2n n -
: Ck
n k .)
(
).
-
. 1 6 k 6 n
Ck
n = n(n; 1) (n; k + 1)
k(k ;1) 1
= n
k
n;1
k ;1
n ;k + 1
1
> n
k
k
: (6.7)
106 6
k! > (k
e)k, -
(2.12),
Ck
n = n(n ;1) (n;k + 1)
k(k ;1) 1
6 nk
k!
(6.8)
6 en
k
k
: (6.9)
0 6 k 6 n ( . . 6.1-12)
Ck
n 6 nn
kk(n;k)n;k (6.10)
00 = 1. k = n, 0 6 6
1,
C n
n 6 nn
( n) n((1; )n)(1; )n
= 1 1
1;
1; !n
(6.11)
= 2nH( ) (6.12)
H( ) = ; lg ;(1; )lg(1; ) (6.13)
( ) , - (bi-
nary) entropy function. 0lg0 = 0,
H(0) = H(1) = 0.
6.1-1 k- n? ( -
, ,
.) n?
6.1-2 (boolean function) n m -
| , ftrue falsegn
ftrue falsegm. -
n ?
n m ?
6.1-3 n ( )
? , -
, .
107
6.1-4 -
f1 2 ::: 100g , ?
( .)
6.1-5
Ck
n = n
kCk;1
n;1 (6.14)
0 < k 6 n.
6.1-6
Ck
n = n
n; kCk
n;1
0 6 k < n.
6.1-7 k n, -
, . ,
,
Ck
n = Ck
n;1 + Ck;1
n;1:
6.1-8 6.1-7,
Ck
n n = 0 1 2 ::: 6 k 0 n -
(C0
0 , C0
1 C1
1 ,
).
(Pascal's triangle).
6.1-9
nX
i=1
i = C2
n+1:
6.1-10 , n > 0 Ck
n
( k 0 n) k =
bn=2c k = dn=2e ( n ,
| ).
6.1-11? , n > 0, j > 0, k > 0, j + k 6 n
Cj+k
n 6 Cj
nCk
n;j
, -
(6.3).
?
6.1-12? (6.10) k 6 n=2
, (6.4), k 6 n.
108 6
6.1-13? , ,
Cn
2n = 22n
p n(1+ O(1=n)): (6.16)
6.1-14? H( ), , -
= 1=2. H(1=2)?
6.2.
-
.
S, -
(sample space), | -
(elementary events).
. -
, -
, 2, -
( ) ( ):
S = f g
(event) S.
,
, . . f g.
S ( ) -
(certain event), ? -
(null event). A B -
(mutually exclusive), AB = ?. -
s 2 S fsg S.
.
S. , -
S,
. - (
-
). ,
(
) .
(probability distribution) -
S P, -
109
( -
, - probability axioms):
1. PA > 0 A.
2. PfSg = 1.
3. PfA Bg = PfAg+PfBg -
A B, , ,
Pf iAig =
X
i
PfAig:
( ) -
A1 A2 :::
PfAg A (probability of
the event A). , 2 -
, 1 -
.
.
Pf?g = 0. A B,
PfAg 6 PfBg. A S;A ( -
A), PfAg = 1;PfAg. A
B
PfA Bg = PfAg+ PfBg ;PfA  Bg (6.17)
6 PfAg+ PfBg: (6.18)
,
1=4. -
Pf g = Pf g+ Pf g+ Pf g
= 3=4:
: , ,
Pf g = 1=4, -
1; 1=4 = 3=4.
6.2.1.
-
(discrete). -
PfAg =
X
s2A
Pfsg
A,
-
. S ,
110 6
(uniform
probability distribution) S. -
, k
jSj, k=jSj. -
s 2 S .
-
( ipping a fair coin),
1=2. n , -
S = f gn,
2n . S -
n f g,
1=2n.
A = f k n ;k g
S jAj = Ck
n ,
Ck
n , k . , -
A PfAg = Ck
n=2n.
-
a b]. c d] a b]
Pf c d]g= d; c
b; a:
, ,
, , -
. , -
.
, 0, -
(c d] (c d) -
.
-
(continuous uniform probability distribu-
tion).
. , ,
. ,
?
111
. -
, (
) 1=3.
(conditional probability) A B
PfAjBg
PfAjBg = PfABg
PfBg (6.19)
( , PfBg 6= 0). :
B -
, ,
A.
(independent),
PfABg = PfAgPfBg
PfBg 6= 0
PfAjBg = PfAg:
,
1=2, ( -
) | 1=4. -
,
. :
1=2, -
1=4.
.
, -
,
, ( . .
1=2).
A1 A2 ::: An
(pairwise independent),
PfAi Ajg = PfAigPfAjg
1 6 i < j 6 n.
A1 A2 An -
(mutually independent), Ai1 Ai2 ::: Aik
( 2 6 k 6 n 1 6 i1 < i2 < < ik 6 n)
PfAi1 Ai2 :::Aikg = PfAi1 gPfAi2 g PfAikg:
112 6
| : , -
, -
,
.
(6.19) ,
A B, , -
PfA Bg = PfBgPfAjBg
= PfAgPfBjAg: (6.20)
PfAjBg,
PfAjBg = PfAgPfBjAg
PfBg (6.21)
(Bayes's theorem).
: B = (B A) (B A), B A
B A | ,
PfBg = PfB  Ag+ PfB Ag
= PfAgPfBjAg+ PfAgPfBjAg:
(6.21),
:
PfAjBg = PfAgPfBjAg
PfAgPfBjAg+ PfAgPfBjAg:
.
: ,
.
, . ,
. ,
?
. -
A | , B |
. PfAjBg.
: PfAg = 1=2, PfBjAg = 1, PfAg = 1=2 PfBjAg = 1=4,
,
PfBjAg = (1=2) 1
(1=2) 1 + (1=2) (1=4) = 4=5:
113
6.2-1 (Boole's inequality):
PfA1 A2 :::g 6 PfA1g+ PfA2g+ ::: (6.22)
A1 A2 :::.
6.2-2 , -
. ,
, ? (
.)
6.2-3 ( 1 10)
. ,
?
6.2-4? ,
p (0 < p < 1). -
, ,
. ( : -
, ,
.)
6.2-5? -
a=b, , -
? ( a b , 0 < a < b, -
lgb.)
6.2-6 ,
PfAjBg+ PfAjBg = 1:
6.2-7 , A1 A2 ::: An,
PfA1  A2 :::Ang =
= PfA1g PfA2jA1g PfA3jA1 A2g PfAnjA1 A2  An;1g:
6.2-8? n -
, k > 2
.
6.2-9? A B (condition-
ally independent) C,
PfABjCg = PfAjCg PfBjCg:
114 6
( ) ,
,
.
6.2-10? ,
( , , ).
,
, , .
, . -
, ?
6.2-11?
X, Y Z, . -
. , ,
.
X -
Y Z, , ,
, , , ,
. -
X, Y . X , ,
1=2 (
, Z). ?
6.3.
(discrete random variable) X |
,
S . -
-
. ( X -
.)
, ,
.
X x -
X = x fs 2 S : X(s) = xg
PfX = xg =
X
fs2S:X(s)=xg
Pfsg:
f(x) = PfX = xg
(probability
density function) X.
115
, PfX = xg > 0
P
x PfX = xg = 1.
-
. 36 , -
. , -
: Pfsg = 1=36. X,
, .
PfX = 3g = 5=36, X 3 5 -
( , (1 3), (2 3), (3 3), (3 2) (3 1)).
,
. X Y | -
,
f(x y) = PfX = x Y = yg
(joint probability density function) X Y. -
y
PfY = yg =
X
x
PfX = x Y = yg:
, x,
PfX = xg =
X
y
PfX = x Y = yg:
(6.19), -
PfX = xjY = yg = PfX = x Y = yg
PfY = yg :
(independent),
X = x Y = y
x y, , PfX = x Y = yg =
PfX = xgPfY = yg x y.
, -
,
, .
-
| (mean), -
(expected value, expectation). -
X
M X] =
X
x
xPfX = xg (6.23)
116 6
,
. -
X , ,
.
-
3 2
. X -
,
M X] = 6 Pf2 g+ 1 Pf1 1 g;4 Pf2 g
= 6(1=4)+ 1(1=2); 4(1=4)
= 1:
-
:
M X + Y ] = M X]+ M Y ] (6.24)
M X] M Y] .
.
X | , g(x) | .
g(X) (
). (
)
M g(X)] =
X
x
g(x)PfX = xg:
g(x) = ax, a | ,
M aX] = aM X]: (6.25)
( ): X Y
a
M aX + Y ] = aM X]+ M Y]: (6.26)
X Y -
,
M XY] =
X
x
X
y
xyPfX = x Y = yg
=
X
x
X
y
xyPfX = xgPfY = yg
= (
X
x
xPfX = xg)(
X
y
yPfY = yg)
= M X]M Y]:
117
, n -
X1 X2 ::: Xn, ,
M X1X2 Xn] = M X1]M X2] M Xn]: (6.27)
X -
(0 1 2 :::), -
:
M X] =
1X
i=0
iPfX = ig
=
1X
i=0
i(PfX > ig; PfX > i + 1g)
=
1X
i=1
PfX > ig: (6.28)
, PfX > ig i
i;1 (
PfX > 0g, ).
(variance) X
M X]
D X] = M (X ;M X])2]
= M X2 ;2XM X]+ M2 X]]
= M X2]; 2M XM X]]+ M2 X]
= M X2]; 2M2 X]+ M2 X]
= M X2]; M2 X]: (6.29)
M M2 X]] = M2 X] M XM X]] = M2 X] ,
M X] | ( )
(6.25), a = M X]. (6.29) :
M X2] = D X]+ M2 X] (6.30)
a
a2 :
D aX] = a2D X]:
X Y ,
D X + Y] = D X]+ D Y]:
118 6
, n
X1 ::: Xn :
D
"
nX
i=1
Xi
#
=
nX
i=1
D Xi]: (6.31)
(standard deviation) -
X .
X
, ,
. 2.
6.3-1 .
?
-
?
6.3-2 A 1::n] n
-
. ,
? ,
?
6.3-3 .
1 6. -
. ,
.
,
.
?
6.3-4? X Y | . -
, f(X) g(Y) f
g.
6.3-5? X | -
M X].
(Markov's inequality)
PfX > tg 6 M X]=t (6.32)
t > 0.
.]
6.3-6? S | , -
X X0, X(s) > X0(s)
119
s 2 S. , t,
PfX > tg > PfX0 > tg:
6.3-7 : -
?
6.3-8 , ,
0 1, D X] = M X]M 1;X].
6.3-9 (6.29), D aX] =
a2D X].
6.4.
|
(Bernouilli trials)
n , -
: (success), -
p, (failure), 1 ; p.
| -
| .
,
p ( q = 1;p).
? -
X | 1 2 :::,
PfX = kg = qk;1p (6.33)
( k, k ;1
, k- ). -
, (6.33),
(geometric distribution). . 6.1.
, p < 1, -
, (3.6):
M X] =
1X
k=1
kqk;1p = p
q
1X
k=0
kqk = p
q
q
(1;q)2 = 1=p: (6.34)
, 1=p ,
, , -
p.
120 6
. 6.1 p = 1=3 -
q = 1 ;p. 1=p = 3.
,
D X] = q=p2: (6.35)
: ,
. 36 -
, 6 2 -
. p 8=36 = 2=9,
1=p = 9=2 = 4 5 ,
.
n
p q = 1;p. -
X | n .
0 1 ::: n,
PfX = kg = Ck
npk(1; p)n;k (6.36)
k = 0 1 ::: n Ck
n
n k ,
pkqn;k. (6.36) (bino-
mial distribution).
121
. 6.2 b(k 15 1=3), n = 15 -
,
p = 1=3. np = 5.
b(k n p) = Ck
npk(1; p)n;k: (6.37)
6.2.
, -
(6.37) | k- (p+q)n. ,
p+ q = 1,
nX
k=0
b(k n p) = 1 (6.38)
( 2).
,
, (6.14)
(6.38). X | ,
b(k n p). q = 1 ;p. -
122 6
,
M X] =
nX
k=0
kb(k n p)
=
nX
k=1
kCk
npkqn;k
= np
nX
k=1
Ck;1
n;1pk;1qn;k
= np
n;1X
k=0
Ck
n;1pkq(n;1);k
= np
n;1X
k=0
b(k n;1 p)
= np: (6.39)
: Xi | i- (
0 q 1 p).
M Xi] = p 1+q 0 = p. , X = X1 +:::+Xn,
(6.26)
M X] = M
"
nX
i=1
Xi
#
=
nX
i=1
M Xi] =
nX
i=1
p = np:
. (6.29) -
, D Xi] = M X2
i ] ; M2 Xi]. Xi
0 1, M X2
i ] = M Xi] = p, , ,
D Xi] = p ; p2 = pq: (6.40)
(6.31):
D X] = D
"
nX
i=1
Xi
#
=
nX
i=1
D Xi] =
nX
i=1
pq = npq: (6.41)
6.2 , b(k n p) k
, k np, -
. , -
123
:
b(k n p)
b(k;1 n p) = Ck
npkqn;k
Ck;1n pk;1qn;k+1
= n!(k ;1)!(n; k + 1)!p
k!(n; k)!n!q
= (n;k + 1)p
kq (6.42)
= 1 + (n+ 1)p; k
kq :
1, (n + 1)p ; k ,
b(k n p) > b(k ; 1 n p) k < (n + 1)p ( ),
b(k n p) < b(k ; 1 n p) k > (n + 1)p ( ).
(n + 1)p | , :
(n+1)p (n+1)p;1 = np;q.
, k, np;
q < k < (n + 1)p.
-
.
6.1. n > 0, 0 < p < 1, q = 1 ; p, 0 6 k 6 n.
b(k n p) 6 np
k
k nq
n ;k
n;k
:
. (6.10),
b(k n p) = Ck
npkqn;k
6 n
k
k n
n ;k
n;k
pkqn;k
= np
k
k nq
n; k
n;k
:
6.4-1 2 .
6.4-2 6 -
3 3 ( )?
6.4-3 , b(k n p) = b(n; k n q), q = 1 ; p.
6.4-4 ,
b(k n p) 1=p2 npq, q = 1 ;p.
124 6
6.4-5? ,
n 1=n
1=e. ,
1=e.
6.4-6? n ,
. , , -
, Cn
2n=4n. ( .
,
n 2n .)
nX
k=0
(Ck
n)2 = Cn
2n:
6.4-7? , 0 6 k 6 n,
b(k n 1=2)6 2nH(k=n);n
H(x) | (6.13).
6.4-8? n . pi | -
i- , X -
. p > pi
i = 1 2 ::: n. ,
PfX < kg 6
k;1X
i=0
b(i n p)
k = 1 2 ::: n.
6.4-9? X,
n p1 ::: pn. X0 |
,
p0
1 ::: p0
n. p0
i > pi i. ,
PfX0 > kg > PfX > kg:
k = 0 ::: n
( : , -
: ,
-
. 3.3-6.)
6.5.
-
!
k
, k ( -
125
k ). ,
(tails) . -
,
(np) .
b(k n p). ( -
).
6.2. X | n
p.
PfX > kg =
nX
i=k
b(i n p) 6 Ck
npk:
. (6.15):
Ck+i
n 6 Ck
nCi
n;k:
,
PfX > kg =
nX
i=k
b(i n p)
=
n;kX
i=0
b(k + i n p)
=
n;kX
i=0
Ck+i
n pk+i(1 ;p)n;(k+i)
6
n;kX
i=0
Ck
nCi
n;kpk+i(1; p)n;(k+i)
= Ck
npk
n;kX
i=0
Ci
n;kpi(1; p)(n;k);i
= Ck
npk
n;kX
i=0
b(i n; k p)
= Ck
npk
Pn;k
i=0 b(i n;k p) = 1 (6.38).
,
6.3. X | n
p.
PfX 6 kg =
kX
i=0
b(i n p) 6 Cn;k
n (1; p)n;k = Ck
n(1 ;p)n;k:
126 6
: -
, , .
6.4. X | n
p q =
1 ;p.
PfX < kg =
k;1X
i=0
b(i n p)< kq
np; kb(k n p)
0 < k < np.
.
Pk;1
i=0 b(i n p) -
( . . 3.2). i = 1 2 ::: k -
(6.42)
b(i;1 n p)
b(i n p)
= iq
(n;i + 1)p < i
n ; i
q
p 6 k
n; k
q
p :
x = k
n ; k
q
p < 1
, b(i n p) 0 6 i 6 k
, x. -
( i = 0 i = k ; 1) b(k n p),
x + x2 + x3 + ::: = x=(1; x):
k;1X
i=0
b(i n p)< x
1 ;xb(k n p) = kq
np ;kb(k n p):
k 6 np=2 kq=(np ; k) 1,
b(k n p)
. n -
. p = 1=2 k = n=4. 6.4 ,
n=4
n=4 . ( , -
r 6 n=4 r
r .) 6.4
-
, 6.1.
:
127
6.5. X | n
p q =
1 ;p.
PfX > kg =
nX
i=k+1
b(i n p) < (n ;k)p
k ; np b(k n p)
np < k < n.
: -
.
6.6. n -
i- pi ( -
qi 1;pi). X
, = M X]. r > -
PfX ; > rg 6 e
r
r
:
. > 0 e x -
x,
PfX ; > rg = Pfe (X; ) > e rg
-
(6.32) ( ):
PfX ; > rg 6 M e (X; )]e; r: (6.43)
M e (X; )] . -
Xi, 1 i- -
0 .
X =
nX
i=1
Xi
X ; =
nX
i=1
(Xi ;pi):
, Xi .
e (Xi;pi)] ( . 6.3-4), -
(6.27) -
:
M e (X; )] = M
"
nY
i=1
e (Xi;pi)
#
=
nY
i=1
M e (Xi;pi)]:
128 6
:
M e (Xi;pi)] = e (1;pi)pi + e (0;pi)qi
= pie qi + qie; pi
6 pie + 1 (6.44)
6 exp(pie )
exp(x) : exp(x) = ex.
( , > 0, qi 6 1, e qi 6 e e; pi 6 1,
(2.7).) ,
M e (X; )] 6
nY
i=1
exp(pie ) = exp( e )
=
Pn
i=1 pi. , (6.43)
PfX ; > rg 6 exp( e ; r): (6.45)
= ln(r= ) ( . . 6.5-6),
PfX ; > rg 6 exp( eln(r= ) ;rln(r= ))
= exp(r; rln(r= )) = er
(r= )r = e
r
r
:
r > ,
r e ,
.]
6.6 -
. = M X] = np,
6.7. X | n
p.
PfX ;np > rg =
nX
k=dnp+re
b(k n p) 6 npe
r
r
:
6.5-1? : n -
, n
4n ?
129
6.5-2? ,
k;1X
i=0
Ci
nai < (a + 1)n k
na; k(a + 1)b(k n a=(a+ 1))
a > 0 0 < k < n.
6.5-3? , 0 < k < np, 0 < p < 1 q = 1 ; p,
k;1X
i=0
piqn;i < kq
np;k
np
k
k nq
n ; k
n;k
:
6.5-4? , 6.6 -
Pf ; X > rg 6 (n; )e
r
r
6.7
Pfnp ; X > rg 6 nqe
r
r
:
6.5-5? n -
i- pi ( qi
1 ; pi). X
, = M X]. , r > 0
PfX ; > rg 6 e;r2=2n:
6.5-6? , = ln(r= )
(6.45) .
6.6.
-
. : -
k , -
.
6.6.1.
(birthday paradox) -
: ,
130 6
?
,
, .
, 365 k -
.
, .
, -
1=365.
( ) ,
, -
2=365 . , k
,
1 ; 1
365 1 ; 2
365 ::: 1 ; k ; 1
365 :
, n | , Ai |
(i+ 1)-
i . Bi = A1 
A2  ::: Ai;1 i
.
Bk = Ak;1  Bk;1, (6.20)
PfBkg = PfBk;1gPfAk;1jBk;1g: (6.46)
: PfB1g = 1.
PfAk;1jBk;1g (n;k+1)=n,
n n ; (k ; 1) ( -
).
PfBkg = PfB1gPfA1jB1gPfA2jB2g PfAk;1jBk;1g
= 1 n; 1
n
n; 2
n ::: n; k + 1
n
= 1 1 ; 1
n 1 ; 2
n t::: 1 ; k ; 1
n
1 + x 6 ex (2.7) ,
PfBkg 6 e;1=ne;2=ne;(k;1)=n
= e;(1+2+3+:::+(k;1))=n
= e;k(k;1)=2n
6 1=2
;k(k ;1)=2n 6 ln(1=2). , k -
, 1=2 k(k;1) > 2nln2.
131
, k > (1 +
p
1+ (8ln2)n)=2.
n = 365, k > 23. ,
23 , 1=2 -
. , -
669 , 31
.
, -
. (i j), -
, Xij
Xij =
(
1 i j ,
0 .
, -
, 1=n, -
(6.23)
M Xij] = 1 (1=n) + 0 (1; 1=n) = 1=n
i 6= k.
Xij 1 6 i < j 6 k -
,
C2
k = k(k ; 1)=2, k(k ; 1)=2n. -p
2n ,
1.
, n = 365 k = 28 , -
, (28 27)=(2 365) 1 0356.
38 .
, : (1) k
X =
P
Xij > 0 1=2, (2) k
X 1. -
( , PfX > 0g >
1=2, M X] > 1=2, X -
). ,
(
pn).
6.6.2.
b , 1 b.
:
. ,
1=b ( |
132 6
). ,
.
? , -
, -
b(k n 1=b). n ,
n=b.
,
? -
1=b, 1=(1=b) = b.
, -
? -
. , , -
b. ni , -
, ,
i ; 1 i. ( , -
, , | ,
n1 = 1, n2 = 3.) -
n1 +n2 +:::+nb.
. -
i- , i;1 b
(b ; i + 1)=b. -
ni
b=(b;i+1). i
b(1=b+1=(b;1)+:::+1=2+1) = b(lnb+O(1)). ( . -
(3.5) .)
, blnb , -
.
6.6.3.
n . -
? -
, | (lgn).
,
O(lgn). Aik ,
k , i- . ,
PfAikg = 1=2k: (6.47)
k = 2dlgne k -
1=n2, ( i)
n, k ( - )
1=n.
:
n ( 1;1=n) -
2dlgne, d2lgne+n (1=n) = O(lgn).
133
rdlgne
r (
2;rlgn = n;r, -
n n;r = n;(r;1).) , n = 1000
2dlgne = 20 -
1=n = 1=1000, 3dlgne = 30
1=n2 = 10;6.
: -
(lgn).
b(lgn)=2c. (6.47)
1=2b(lgn)=2c > 1=pn,
1;1=pn.
, b(lgn)=2c
. ( ,
.) 2n=lgn ;1.
,
, ,
(1; 1=
pn)2n=lgn;1 6 e;(2n=lgn;1)=pn
= O(e;lgn) = O(1=n)
, 1 + x 6 ex (2.7), ,
(2n=lgn;1)=pn > lgn ; O(1).
, 1 ; O(1=n)
blgn=2c = (lgn), -
(1 ; 1=n) (lgn) =
(lgn).
6.6-1 b
, .
,
?
6.6-2?
, ,
?
.
6.6-3? , -
,
?
6.6-4?
k- n- ?
134 6
?
6.6-5? n n , ,
.
? ,
?
6.6-6? -
, , n
lgn; 2lglgn 1 ;1=n.
6-1
n
b .
. , ,
. , bn
.
. , -
. ,
(b+ n ; 1)!=(b; 1)! . ( : -
n b;1
.)
. , ,
. ,
Cn
b+n;1. ( : ,
( ).)
. , -
, Cn
b .
. ,
,
Cb;1
n;1.
6-2
-
A 1::n].
1 max ;1
2 for i 1 to n
3 do . A i] max.
4 if A i] > max
5 then max A i]
, -
6 135
5. , A -
( -
).
. x i , -
?
. A i]
i, 5?
. 5
i?
. si | , 1 0
, 5 i- .
M si]?
. s = s1+s2+ +sn |
5 . , M s] = (lgn).
6-3
-
. n
.
, -
, .
.
k , -
. ,
k, . , -
. ,
-
( 1=e), k n=e.
6-4
t- 2t ; 1.
(probabilistic counting,
R. Morris) ,
.
-
ni ( i 0 2t;1). :
t- i, , -
( Increment)
ni. , n0 = 0.
Increment , -
i, . , i
1 1=(ni+1;ni), -
. ( i = 2t ; 1, .)
: i
ni+1 ;ni .
136 6
ni = i i > 0, .
, , , ni =
2i;1 i > 0 ni = Fi (i- , . . 2.2).
, n2t;1 , -
.
. ,
n Increment,
n.
. ,
n Increment, -
n0 n1 :::.
ni = 100i.
-
(B.Pascal) (P.de Fermat), -
1654 , (C.Huygens, 1657). -
(J.Bernoulli, 1713) (A.De Moivre, 1730). -
(P.S.de Laplace), (S.-D.Poisson) (C.F.Gauss).
. .
. . ( ). 1933 . . -
. -
40] 99]. -
(P.Erdos).
: 121], 140] ( -
) 28],
41], 57], 66], 171] ( -
) 30], 100], -
179] ( ).
II
,
(sorting problem).
ha1 a2 ::: ani. -
ha0
1 a0
2 ::: a0
ni,
, : a0
1 6 a0
2 6 6
a0
n. ,
( , ).
.
(records),
, , -
. ,
, ( -
, , , , . .), -
-
.] , (
), (key), |
(satellite data).
: ,
( ) ,
. ( ,
, .)
, -
. ,
, ,
(
, ).
140 II
1 , -
n (n2) . , -
,
(in place). ( ,
, -
).
,
.
-
.
(heapsort). |
, ( , -
, 7).
(nlgn)
.
8 , -
(quicksort). (n2),
| (nlgn),
( ,
).
( , , -
)
, . 9
,
(nlgn),
( ). , -
.
-
, . 9 -
. -
(counting sort) n
1 k O(n+k),
k. k = O(n),
. -
, ,
, n , -
d k- ,
O(d(n+k)). , d , k O(n),
O(n). ,
, , -
,
O(n) n .
II 141
i- ,
, (nlgn), -
( 9).
( -
),
i- (
). 10
: O(n2) -
O(n) , ,
O(n) .
7{10
. -
( ,
i- ) -
( 6). ,
i- (
) , .
7
(heapsort). , -
O(nlgn) n , -
O(1) ( O(n) -
). ,
| -
.
, ( -
) -
. ,
( . . 7.5).
,
( , ).
( -
,
| , Lisp),
.
7.1.
(binary heap)
, -
, ( . 7.1).
.
i, bi=2c ( -
1 ), | 2i
2i+ 1. ,
A, length A]
heap-size A] ( ), heap-size A] 6 length A].
A 1] ::: A heap-size A]].
143
. 7.1 ( ) ( ).
. .
Parent(i)
return bi=2c
Left(i)
return 2i
Right(i)
return 2i+ 1
A 1] .
Left
Parent
(Left, Parent) Right ,
.
, , -
(heap property): i,
( . . 2 6 i 6 heap-size A]),
A Parent(i)] > A i]: (7.1)
,
. , (
) ( -
).
(height) -
(
). -
, , . ,
, ( , , ),
. (lgn),
n | ( . . 7.1-2).
, -
, , O(lgn).
144 7
.
:
Heapify -
(7.1). O(lgn).
Build-Heap ( -
) . O(n).
Heapsort , -
. O(nlgn).
Extract-Max ( ) Insert ( -
)
.
O(lgn).
7.1-1 h.
? ( .)
7.1-2 , n blgnc.
7.1-3 ,
.
7.1-4 ,
?
7.1-5 (
| ). ?
7.1-6 h23 17 14 6 13 10 1 5 7 12i?
7.2.
Heapify | . -
A i. , -
Left(i) Right(i) -
. i,
. :
i,
. ., A i]
.
145
. 7.2 Heapify(A 2) heap-size A] = 10. ( ) -
. i = 2 .
, A 2] A 4]. ( )
4. -
Heapify(A 4) 4
A 4] $ A 9] ( ).
, Heapify(A 9) .
Heapify(A i)
1 l Left(i)
2 r Right(i)
3 if l 6 heap-size A] A l] > A i]
4 then largest l
5 else largest i
6 if r 6 heap-size A] A r] > A largest]
7 then largest r
8 if largest 6= i
9 then A i] $ A largest]
10 Heapify(A largest)
Heapify . 7.2. 3{7
largest
A i], A Left(i)] A Right(i)]. largest = i, A i]
, .
A i] A largest] ( -
(7.1) i, ,
146 7
largest)
largest, .
Heapify. -
(1) , .
T(n) | , n -
. i n , -
Left(i) Right(i) 2n=3
( |
). ,
T(n) 6 T(2n=3)+ (1)
4.1 ( 2) , T(n) = O(lgn).
:
, O(lgn).
7.2-1 , . 7.2,
Heapify(A 3) h27 17 3 16 13 10 1 5 7 12 4 8 9 0i.
7.2-2 A i] , . -
Heapify(A i)?
7.2-3 i > heap-size A]=2.
Heapify(A i)?
7.2-4 Heapify, .
( -
.)
7.2-5 ,
Heapify n (lgn). ( : -
,
).
7.3.
A 1::n], -
, . -
Heapify, , -
. bn=2c + 1 ::: n
,
. ,
, Heapify.
,
147
( ) -
.
Build-Heap(A)
1 heap-size A] length A]
2 for i blength A]=2c downto 1
3 do Heapify(A i)
Build-Heap . 7.3.
, Build-Heap -
O(nlgn). , Heapify O(n)
, O(lgn).
, .
, Heapify
, (
). h n -
dn=2h+1e ( . . 7.3-3),
blgnc ( . 7.1-2), Build-
Heap
blgncX
h=0
l n
2h+1
m
O(h) = O
0
@n
blgncX
h=0
h
2h
1
A (7.2)
x = 1=2 (3.6),
:
1X
h=0
h
2h = 1=2
(1 ;1=2)2 = 2:
, Build-Heap
O n
1X
h=0
h
2h
!
= O(n):
7.3-1 , . 7.3,
Build-Heap A = h5 3 17 10 84 19 6 22 9i.
7.3-2 Build-Heap , -
i blength A]=2c 1 ( )?
7.3-3 , n
dn=2h+1e h.
148 7
. 7.3 Build-Heap.
Heapify 3.
149
7.4.
.
Build-Heap, -
. : -
(A 1]).
c A n], 1 -
( -
Left(1) Right(1)
, Heapify).
-
. ,
.
Heapsort(A)
1 Build-Heap(A)
2 for i length A] downto 2
3 do A 1] $ A i]
4 heap-size A] heap-size A] ;1
5 Heapify(A 1)
. 7.4.
for ( 2).
Heapsort O(nlgn). -
, ( ) O(n),
n ;1 for O(lgn).
7.4-1 , . 7.4,
Heapsort A = h5 13 2 25 7 17 20 8 4i.
7.4-2 A -
. ?
?
7.4-3 , Heapsort -
(nlgn).
7.5.
| , ( . 8) -
. -
150 7
. 7.4 Heapsort. -
Heapify.
.
.
|
.
(priority queue) | S,
. -
S hkey i, key | ,
(key).
| -
,
.
:
Insert(S x): x S
151
Maximum(S):
Extract-Max(S): .
, , -
. -
, -
( Extract-Max). -
Insert.
| -
(event-driven simulation).
, , -
. ,
, .
Extract-Min (
), | Insert.
. -
.
, Maximum
(1). ,
, :
Heap-Extract-Max(A)
1 if heap-size A] < 1
2 then :
3 max A 1]
4 A 1] A heap-size A]]
5 heap-size A] heap-size A]; 1
6 Heapify(A 1)
7 return max
O(lgn) ( Heapify
).
,
( ), :
Heap-Insert(A key)
1 heap-size A] heap-size A]+ 1
2 i heap-size A]
3 while i > 1 A Parent(i)] < key
4 do A i] A Parent(i)]
5 i Parent(i)
6 A i] key
Heap-Insert . 7.5.
O(lgn), -
lgn ( i
152 7
. 7.5 Heap-Insert.
15 ( ).
while ).
, n
O(lgn).
7.5-1 , . 7.5,
Heap-Insert(A 3) A = h15 13 9 5 12 8 7 4 0 6 2 1i.
7.5-2 , Heap-
Extract-Max .
7.5-3 , ( rst-in,
rst-out) . ( .
. 11.1).
7.5-4 Heap-Increase-Key(A i k) ( -
), A i] k,
k (A i] max(A i] k))
. | O(lgn).
7.5-5 Heap-Delete(A i) | -
i . O(lgn).
7 153
7.5-6 ,
O(nlgk) k -
( n | ).
( : .)
7-1
,
Heap-Insert. -
:
Build-Heap0(A)
1 heap-size A] 1
2 for i 2 to length A]
3 do Heap-Insert(A A i])
. Build-Heap Build-Heap0 -
. ?
( .)
. , Build-Heap0 -
(nlgn) ( n | ).
7-2 d-
d- (d-ary heap), -
d .
. , Par-
ent, Left Right?
. d- n n
d?
. Extract-Max. -
( n d)?
. Insert. ?
. Heap-Increase-Key ( . 7.5-4). -
?
202]
.
Build-Heap 69].
8
-
. n -
(n2),
: -
(nlgn), nlgn
. ,
-
.
8.1 -
.
8.2 ,
8.4. 8.3 -
, .
( -
) O(n2),
O(nlgn). ( , -
, ,
O(nlogn).) -
8.4,
.
8.1.
(quicksort), ,
( . . 1.3.1). -
A p::r] :
A ,
A p] ::: A q]
A q+1] ::: A r], q | p 6 q < r.
(partition).
A p::q] A q + 1::r].
155
A p::r] .
, Quicksort
:
Quicksort(A p r)
1 if p < r
2 then q Partition(A p r)
3 Quicksort(A p q)
4 Quicksort(A q + 1 r)
Quicksort(A 1 length A]).
| Partition, -
A p::r] :
Partition(A p r)
1 x A p]
2 i p;1
3 j r + 1
4 while true
5 do repeat j j ;1
6 until A j] 6 x
7 repeat i i+ 1
8 until A i] > x
9 if i < j
10 then A i] $ A j]
11 else return j
Partition . 8.1. x =
A p] A p::q] -
, x, A q+1::r] | ,
x. , ,
x, (A p::i]), ,
x | (A j::r]). -
: i = p ; 1, j = r + 1.
while ( 5{8)
( ). -
A i] > x > A j]. A i]
A j] ,
.
i > j.
A p] ::: A j] A j + 1] ::: A r] -
156 8
. 8.1 Partition.
, . ( ) -
, .
x = A p] = 5 . ( ) -
while ( 4{8). ( ) A i] A j] ( -
10). ( ) while. ( ) ( -
) while. i > j,
q = j. A j] ( )
, x = 5, A j] , x = 5.
. j.
,
. , , i j
p::r] . -
: , -
A p], , , A r]. ,
A r] | , -
i = j = r, q = j
| q < r, Quicksort
. Partition -
8-1.
Partition (n), n =
r ;p+ 1 ( . . 8.1-3).
8.1-1 , . 8.1,
Partition A = h13 19 9 5 12 8 7 4 11 2 6 21i.
8.1-2 A p::r] .
Partition?
8.1-3 , ,
Partition (n).
157
8.1-4 ( -
), ?
8.2.
,
. -
, O(nlgn),
.
, O(n2), -
.
,
n;1 , | 1. ( 8.4.1,
.) -
, .
(n),
T(n)
T(n) = T(n ;1) + (n)
T(1) = (1),
T(n) = T(n;1) + (n) =
nX
k=1
(k) =
nX
k=1
k
!
= (n2)
( | , . -
(3.2)). . 8.2.
( . . 4.2.)
,
(n2), .
, , -
( , -
(n)).
, -
. -
,
T(n) = 2T(n=2)+ (n)
, 4.1 ( 2), T(n) = (nlgn). -
8.3.
158 8
. 8.2 Quicksort ( -
Partition ,
). (n2
).
. 8.3 Quicksort ( -
). (nlgn).
8.4, ( -
)
. , , -
.
, ,
9 : 1.
T(n) = T(9n=10)+ T(n=10)+ n
( (n) n). -
8.4. n
, .
159
. 8.4 , -
9 : 1. (nlgn).
log10=9 n = (lgn),
- (nlgn),
. , -
( )
- ,
(nlgn).
:
,
, -
. , , -
. (
.)
| ,
, . -
. 8.2-5, 80
9 : 1.
, -
,
( . 8.5( )). -
,
(lgn), -
, (lgn),
| (nlgn). , -
( ,
160 8
. 8.5 ( ) : (n n;1 1) (n;1
). ( ) ,
.
).
8.2-1 , -
, Quicksort (nlgn).
8.2-2 . -
, Quicksort (n2).
8.2-3 ,
,
.
,
. , -
. ,
. , -
,
.
8.2-4 -
: 1; , 0 < 6 1=2. ,
;lgn=lg , -
;lgn=lg(1; ). ( .)
8.2-5? , 0 < 6 1=2
, -
161
, : 1; , 1;2 .
1=2?
8.3.
,
. , ,
| -
. , , (
) ( . . 8.2-3).
,
-
.
, -
. ,
,
( O(n) | .
. 8.3-4).
,
(
).
(randomized), -
(random-number generator).
, Random -
: Random(a b)
a b. , Random(0 1) -
0 1 1=2. -
. ,
(b;a+ 1) -
. ( -
(pseudorandom-number generator) |
, ,
.)
-
: 13.4-4 -
, , ,
| , -
( ) .
,
, ,
, , , -
. ,
162 8
( -
8.2, ).
, -
, Par-
tition. , A p::r]
A p] . -
,
-
.
. , -
O(nlgn),
, 8.4.
, , -
:
Randomized-Partition(A p r)
1 i Random(p r)
2 A p] $ A i]
3 return Partition(A p r)
Randomized-
Partition Partition:
Randomized-Quicksort(A p r)
1 if p < r
2 then q Randomized-Partition(A p r)
3 Randomized-Quicksort(A p q)
4 Randomized-Quicksort(A q + 1 r)
.
8.3-1 -
( ), -
?
8.3-2 Randomized-
Quicksort -
Random ? -
?
8.3-3? Random(a b),
, . . , 0 1.
163
-
?
8.3-4? ,
(n)
A 1::n].
8.4.
-
8.2 . -
(
Quicksort, Randomized-Quicksort),
Randomized-Quicksort.
8.4.1.
8.2 , -
, (n2). -
, ( ) .
.
, O(n2),
( . . 4.1). T(n) |
n. ,
,
T(n) = max16q6n;1
(T(q)+ T(n;q)) + (n) (8.1)
( ).
, T(q) 6 cq2 c
q, n.
T(n) 6 max16q6n;1
(cq2+c(n;q)2)+ (n) = c max16q6n;1
(q2+(n;q)2)+ (n):
q2 + (n;q)2 -
1 6 q 6 n ; 1 ( q -
, , . . 8.4-2).
12 + (n;1)2 = n2 ;2(n ; 1).
T(n) 6 cn2 ;2c(n;1) + (n) 6 cn2
c ,
. , -
(n2).
164 8
8.4.2.
8.2,
, , -
(lgn), | (nlgn). -
Randomized-
Quicksort, Parti-
tion,
( ).
, 3
Randomized-Partition Partition, -
A p]
A p::r]. ,
. -
, ,
, .
, , q, -
Partition, , -
, x = A p] (
(rank) x rank(x)).
n = r ; p + 1 | , , -
A p],
rank(x), 1 n, ( 1=n).
rank(x) > 1, , ,
rank(x);1 |
, x. rank(x) = 1,
(
i = j = p). , 1=n
2 3 ::: n;1 , 2=n |
.
Randomized-
Quicksort n T(n). ,
T(1) = (1).
Partition, (n),
q n ; q, q 2=n -
1 1=n | 2 ::: n ; 1.
165
T(n) = 1
n
0
@T(1)+ T(n;1) +
n;1X
q=1
(T(q)+ T(n;q))
1
A + (n) (8.2)
( , q = 1, ).
T(1) = (1) T(n) = O(n2),
1
n(T(1)+ T(n; 1)) = 1
n( (1)+ O(n2)) = O(n):
T(1) T(n ; 1) (8.2)
(n).
T(n) = 1
n
n;1X
q=1
(T(q)+ T(n; q))+ (n): (8.3)
T(k), k = 1 ::: n;1,
, :
T(n) = 2
n
n;1X
k=1
T(k) + (n): (8.4)
(8.4) , .
, T(n) 6 anlgn + b, a > 0 b > 0
, .
n = 1 , a b. n > 1
T(n) = 2
n
n;1X
k=1
T(k)+ (n)
6 2
n
n;1X
k=1
(aklgk + b)+ (n)
= 2a
n
n;1X
k=1
klgk + 2b
n (n ;1) + (n):
, :
n;1X
k=1
klgk 6 1
2n2 lgn ; 1
8n2: (8.5)
166 8
,
T(n) 6 2a
n
1
2
n2 lgn ; 1
8
n2 + 2b
n (n ;1) + (n)
6 anlgn; a
4n + 2b+ (n)
= anlgn+ b+ (n) + b; a
4n 6 anlgn+ b
a , a
4n (n)+b. ,
O(nlgn).
(8.5).
nlgn,
n;1X
k=1
klgk 6 n2 lgn:
|
1
2n2 lgn ; (n2).
lgk lgn, k
,
n;1X
k=1
klgk 6 lgn
n;1X
k=1
k = n(n ;1)
2 lgn 6 1
2n2 lgn:
, lgk lgn,
k 1
( k 6 n=2), (n=2)2=2 = n2=8.
,
n;1X
k=1
klgk =
dn=2e;1X
k=1
klgk +
n;1X
k=dn=2e
klgk
k < dn=2e lgk 6 lg(n=2) = lgn; 1.
n;1X
k=1
klgk 6 (lgn; 1)
dn=2e;1X
k=1
k + lgn
n;1X
k=dn=2e
k
= lgn
n;1X
k=1
k ;
dn=2e;1X
k=1
k 6 1
2
n(n; 1)lgn ; 1
2
n
2
;1 n
2
6 1
2n2 lgn ; 1
8n2
167
n > 2. (8.5) .
-
(
) . . .
(1) : N -
.
: ,
, ( )
.
(2) ? , -
(
1 N),
( -
). ( , -
:
,
. .)
(3) , -
1 N | (
) . -
.
(4) i, j f1 ::: Ng p(i j) -
, -
. , p(i i+1)= 1, -
(
).
(5) , p(i i + 2) = 2=3. ,
,
i, i + 1 i + 2 i + 1 .
, p(i i + k) = 2=(k + 1) ( i i + k
, k + 1 i i + 1 ::: i + k
).
(6) P
m(i j) -
i j.
, m(i j) = p(i j). , -
:
X
16i<j6n
2
j ;i + 1:
(7) , 1 +
1=2 + 1=3 + ::: + 1=k = O(lgk), O(N lgN)
.
, ( )
.
168 8
: (
): , ,
.]
8.4-1 , -
(nlgn).
8.4-2 , q2 + (n ; q)2 1 n ; 1]
.
8.4-3 ,
Randomized-Quicksort (nlgn).
8.4-4 -
, ( -
) -
. , , :
Randomized-Quicksort(A p r) , r;p+1 < k
( . . k ).
-
. , -
O(nk + nlg(n=k)). k?
8.4-5?
Z
xlnxdx = 1
2x2 lnx; 1
4x2
( )
( (8.5))
Pn;1
k=1 klgk.
8.4-6?
Randomized-Partition:
-
.
, ,
: 1 ; .
8-1
, Partition .
:
8 169
. i j
p::r].
. j
r ( . . ).
. -
A p::j] A j + 1::r].
8-2
Partition, ,
. (N. Lomuto). -
A p::i] A i + 1::j],
x = A r], | x.
Lomuto-Partition(A p r)
1 x A r]
2 i p ;1
3 for j p to r
4 do if A j] 6 x
5 then i i+ 1
6 A i] $ A j]
7 if i < r
8 then return i
9 else return i; 1
. , Lomuto-Partition -
.
. Partition Lomuto-Partition -
? ( -
.)
. , Lomuto-Partition, -
Partition, (n), n |
.
. Quicksort Partition
Lomuto-Partition.
, ?
. Randomized-Lomuto-Partition,
A r] -
Lomuto-Partition. ,
, Randomized-Lomuto-
Partition q, , -
Randomized-Partition p + r ;q.
8-3
-
:
170 8
Stooge-Sort(A i j)
1 if A i] > A j]
2 then A i] $ A j]
3 if i+ 1 > j
4 then return
5 k b(j ;i+ 1)=3c . .
6 Stooge-Sort(A i j ;k) . .
7 Stooge-Sort(A i+ k j) . .
8 Stooge-Sort(A i j ;k) . .
. , Stooge-Sort -
.
.
Stooge-Sort
.
. Stooge-Sort
( -
, , ).
?
8-4
Quicksort (
). -
, (
,
-
tail recursion):
Quicksort0(A p r)
1 while p < r
2 do . .
3 q Partition(A p r)
4 Quicksort0(A p q)
5 p q + 1
. , Quicksort0 -
.
, -
, -
. , -
, -
.
O(1), -
(stack depth) .
. , Quicksort0
(n).
8 171
. Quicksort0 ,
(lgn) ( (nlgn)
).
8-5
Randomized-Quicksort ,
.
|
(median-of-3 method): -
.
,
A 1::n] n > 3. A0 1::n] -
( ).
pi = Pfx = A0 i]g, x | ,
.
. pi ( i = 2 3 ::: n ; 1) i n
( , p1 = pn = 0).
. (A0 b(n +
1)=2c]) , ? -
n ! 1?
. x -
, x = A0 i], n=3 6 i 6 2n=3.
, -
? ( : .)
. ,
(nlgn) (
nlgn).
98]. -
174] -
.
165].
9
, -
n O(nlgn).
(merge sort) (heap sort)
, -
. -
O(nlgn) : -
n ,
(nlgn).
,
,
(comparison sort).
9.1 , -
n (nlgn) .
: -
, -
, .
9.2, 9.3 9.4 -
( ,
), . ,
(nlgn) , -
,
.
9.1.
, , -
, -
( ).
,
.
173
. 9.1 , -
. -
3! = 6, 6 .
: . 9.1
(decision tree),
1.1.
n a1 ::: an. -
ai : aj, ,
(1 6 i j 6 n). -
h (1) (2) ::: (n)i, | -
n ( . . 6.1 ).
-
,
.
,
. .
( ) .
ai : aj. , ai 6 aj,
. ,
, ,
a (1) a (2) ::: a (n),
, .
n!
( -
).
|
.
.
174 9
9.1. , -
n , (nlgn).
.
n ,
n!. h
2h , n! 6 2h. -
2 n! > (n=e)n,
(2.11), ,
h > nlgn ;nlge = (nlgn)
.
9.2. -
.
. O(nlgn) -
, .
9.1-1 -
?
9.1-2 lg(n!) =Pn
k=1 lgk , . 3.2.
9.1-3 , , -
,
n! n.
, 1=2 1=n?
1=2n?
9.1-4 ,
: - ai : aj
,
, : ai < aj,
ai = aj ai > aj. ,
n ,
(nlgn). , .
9.1-5 , -
n 2n;1 -
.
9.1-6 n ,
, k. -
. . (
175
). -
, (nlgk) -
. ( : -
n=k k.)
9.2.
(counting sort) ,
n |
( -
k). k = O(n), -
O(n).
, x
, -
x, x
( , , 17
x, x
18). -
,
, -
.
C 1::k] k . -
A 1::n], -
B 1::n].
Counting-Sort(A B k)
1 for i 1 to k
2 do C i] 0
3 for j 1 to length A]
4 do C A j]] C A j]]+ 1
5 . C i] , i.
6 for i 2 to k
7 do C i] C i]+ C i ;1]
8 . C i] , i
9 for j length A] downto 1
10 do B C A j]]] A j]
11 C A j]] C A j]];1
. 9.2. ( 1{2) -
C i] A, i ( -
3{4), ,
C 1] C 2] ::: C k], | , i
( 6{7). , 9{11 -
176 9
. 9.2 Counting-Sort, A 1::8],
, k = 6. ( ) A
C 3{4. ( )
C 6{7. ( { ) B -
C , 9{11.
,
. ( ) B .
A B. ,
n , -
A j] C A j]],
A A j] A -
, A j]
B C A j]] ( 11),
, A j],
.
.
1{2 6{7 O(k), 3{4
10{11 | O(n), , ,
O(k + n). k = O(n), O(n).
. 9.1
| ,
, .
,
(it is stable). ,
, -
, .
,
, ,
. , ,
, ht xi, t | 1 k,
x | , ,
.
177
, -
.
.
, .
9.2-1 . 9.2.,
Counting-Sort k = 7 A = h7 1 3 1 2 4 5 7 2 4 3i.
9.2-2 , Counting-Sort -
.
9.2-3 9 Counting-Sort :
9 for j 1 to length A]
, . -
?
9.2-4
-
. Counting-Sort ,
, B
( A C). ( : A
-
?).
9.2-5 n 1 k. , -
,
O(1)
a b? .
O(n+ k).
9.3.
(radix sort) -
(
). -
. 80
12 . -
, -
( 80 ),
0{9 0{9 -
.
,
178 9
329
457
657
839
436
720
355
)
720
355
436
457
657
329
839
"
)
720
329
436
839
355
457
657
"
)
329
355
436
457
657
720
839
"
. 9.3 -
. .
, (
, ).
,
10 , 0{9
.
( , | . .)?
, , |
. 10 ,
10 , |
,
( . 9.3-5).
, -
, 10 , -
. 10
: 0, -
1, . .
10 , , -
, . .
d- , d
. . 9.3 ,
, .
, , -
, : ,
, -
,
( , 10
).
, . , -
, .
,
: , | -
, | .
179
, ,
: , -
, .
. -
, n- A
d , 1 | ,
d | .
Radix-Sort(A d)
1 for i 1 to d
2 do A
i
( . . 9.3-3). -
.
1 k, k -
, | . n
d 0 k;1 (n+k)
d , -
(dn+kd). d k = O(n),
.
-
, -
. :
64- . -
-
216,
, Counting-Sort B
216 ( -
) ,
lgn 20 . -
, , -
, ( , -
) , -
. , ,
.
9.3-1 . 9.3, , -
( ) COW, DOG, SEA,
RUG, ROW, MOB, BOX, TAB, BAR, EAR, TAR, DIG, BIG, TEA,
NOW, FOX.
180 9
9.3-2
: , , -
, ? ,
-
.
?
9.3-3 , -
. -
?
9.3-4 , n
, n2, O(n).
9.3-5? -
, .
( ) d-
? -
?
9.4.
(bucket sort)
( ) . , -
: -
, ,
, -
0 1) ( -
. 6.2).
, | ( -
)
.]
, 0 1)
n , -
- (bucket), n
. -
0 1), , -
.
-
,
.
, n- A,
0 6 A i] < 1 i. -
B 0::n ; 1], ,
. , -
181
. 9.4 Bucket-Sort. ( ) A 1::10].
( ) B 0::9] 5. i -
, i.
, B 0] ::: B 9].
. 11.2.
Bucket-Sort(A)
1 n length A]
2 for i 1 to n
3 do A i] B bnA i]c]
4 for i 0 to n; 1
5 do B i] ( )
6 B 0] B 1] ::: B n;1] ( )
. 9.4
10 .
, -
, A i] A j].
, ,
-
,
.
.
, , ( ) O(n).
O(n). ,
-
.
B i] ni (ni | ).
,
-
i O(M n2
i]),
182 9
n;1X
i=0
O(M n2
i]) = O
n;1X
i=0
M n2
i]
!
: (9.1)
ni. -
, -
, ,
i, 1=n. ,
. 6.6.2 : n - , n - ,
p =
1=n. ni : -
, ni = k, Ck
npk(1 ; p)n;k,
M ni] = np = 1, D ni] = np(1;p) = 1;1=n.
(6.30) :
M n2
i ] = D ni]+ M2 ni] = 2 ; 1
n = (1):
(9.1), , -
O(n),
-
.
9.4-1 . 9.4, , -
Bucket-Sort A = h0:79 0:13 0:16 0:64 0:39
0:20 0:89 0:53 0:71 0:42i.
9.4-2 -
? ,
O(nlgn).
9.4-3? n
(xi yi), 1
( ,
- ). -
, -
(n).
( : , -
, ).
9.4-4? X | .
(probability distribution function) P(x) =
9 183
PfX 6 xg. , -
n , -
P. P -
O(1). -
,
n?
9-1
,
n
, , (nlgn). ,
A,
TA | . -
, -
.
. TA ,
. , n! -
1=n!, .
. D(T) -
T ( , -
, | -
). T | k > 1 ,
LT RT . ,
D(T) = D(LT)+ D(RT)+ k.
. d(m) | D(T)
T m . , d(k) = min16i6k;1fd(i)+
d(k;i)+kg. ( : LT 1 k ;1
.)
. , k ilgi + (k ;
i)lg(k ; i) 1 k ; 1
i = k=2. , d(k) = (klgk).
. , D(TA) = (n!lg(n!)), ,
n TA,
, (nlgn).
B,
. ,
: -
.
Random(1 r) r , -
. (
r .)
. B.
184 9
. -
T. , -
A, (
) T. ,
(
) (nlgn).
( . -
T, -
, T.)
9-2
. , -
, 0 1.
, -
O(1) (
,
).
. ( ) -
b- O(bn)? -
.
. n , -
1 k.
,
O(n + k), ( -
) O(k)? ( . k = 3.)
-
72]. -
123], , -
( ). -
- 23].
,
(1954 )
(H.H.Seward). , ,
. ,
1929
-
, (L.J.Comrie).
1956 , (E.J.Isaac)
9 185
(R.C.Singleton) .
10
:
n , i- ,
. -
i-
(order statistic). , (minimum) |
1, (maximum) | -
n. (median)
, ( )
. , n , |
i = (n + 1)=2, n ,
: i = n=2 i = n=2 + 1.
, , n,
i = b(n + 1)=2c i = d(n + 1)=2e. -
( ).
, ,
, ,
, , ,
.
(selection problem) -
:
: A n i,
1 6 i 6 n.
: x 2 A, i;1 -
A x.
O(nlgn): ,
i- . , ,
.
10.1 :
.
. 10.2
,
O(n)
(
). 10.3 ( -
187
) -
, O(n) .
10.1.
, n
? n;1 : -
,
. , ,
A n.
Minimum(A)
1 min A 1]
2 for i 2 to length A]
3 do if min > A i]
4 then min A i]
5 return min
, .
? , . -
-
n , | ,
. , -
,
n;1 , Minimum -
.
, | -
4. -
6-2 , (lgn).
-
. , -
( ,
) , . -
.
, ,
n ; 1 ,
2n ; 2 , . , -
, 3dn=2e ; 2 . , -
, -
: ,
188 10
, | .
-
( ,
).
10.1-1 , n
n + dlgne ; 2 . ( -
. .)
10.1-2? , -
n
d3n=2e; 2 . ( . -
: (1) ( -
, ) (2) ,
,
(3) , , -
(4) (
). a1 a2 a3 a4 |
. ?)
10.2.
,
, , ,
(n). -
Randomized-Select , -
.
8:
. ,
, , Randomized-Select |
. : -
(nlgn),
Randomized-Select (n).
Randomized-Select -
Randomized-Partition, 8.3,
( , , ) -
. Randomized-Select(A p r i)
i- A p::r].
189
Randomized-Select(A p r i)
1 if p = r
2 then return A p]
3 q Randomized-Partition(A p r)
4 k q ; p + 1
5 if i 6 k
6 then return Randomized-Select(A p q i)
7 else return Randomized-Select(A q + 1 r i;k)
Randomized-Partition 3
A p::r] A p::q] A q +
1::r], A p::q]
A q+1::r]. 4
A p::q]. , -
i- A p::r]. i 6 k,
( A p::q]),
( ) Randomized-
Select 6. i > k, k
(A p::q]) ,
(i; k)- A q + 1::r] ( 7).
Randomized-Select ( -
Randomized-Partition)
(n2), : ,
, -
. -
,
.
. -
n -
( ). T(n) | -
. 8.4,
Randomized-Partition 1
2=n, i > 1 -
1=n i 2 n ; 1. , T(n)
n ( , T(n)
T0(n) = max16i6n T(i) T0). -
, , i-
, -
190 10
. :
T(n) 6 1
n T(max(1 n; 1))+
n;1X
k=1
T(max(k n;k))
!
+ O(n)
6 1
n
0
@T(n;1) + 2
n;1X
k=dn=2e
T(k)
1
A + O(n)
= 2
n
n;1X
k=dn=2e
T(k) + O(n)
(
T(n; 1)=n
, T(n;1) = O(n2),
T(n; 1)=n O(n)).
, T(n) 6 cn, (
c, ). ,
T(j) 6 cj j < n. ,
, ,
T(n) 6 2
n
n;1X
k=dn=2e
ck + O(n)
6 2c
n
n
2
n=2 + 1 + n;1
2
+ O(n)
= 3cn
4
+ O(n) 6 cn
c , c=4 ,
O(n).
, , -
, .
10.2-1 Randomized-Select, -
.
10.2-2 , Randomized-
Select A =
h3 2 9 0 7 5 4 8 6 1i. ,
.
10.2-3 Randomized-Select -
, A ( ,
Randomized-Partition A p::r]
191
A p::q] A q + 1::r] ,
A p::q] A q + 1::r])?
10.3.
( ) Select, -
O(n) -
. Randomized-Select,
-
, , ,
. Select ( -
) Partition ( .
. 8.1), , -
, , .
Select i- -
n > 1 :
1. n bn=5c 5
( ) , .
2. dn=5e (
).
3. ( ) Select, x, -
dn=5e .
4. Partition, -
. k | -
(
, , n ;k).
5. ( ) Select, i- -
, i 6 k, (i;k)-
, i > k.
Select. -
, x
( . . 10.1). ,
, x. ,
dn=5e , x,
: , x,
.
3 1
2
ln
5
m
;2 > 3n
10 ; 6:
, x, , -
3n=10 ; 6 , x. ,
Select, ,
7n=10+ 6.
192 10
. 10.1 Select. ( n)
, | 5 , -
| . x.
. ,
x , x, x
, x. , x, .
T(n) | Select -
n . ,
O(n) ( O(n) -
O(1)),
T(dn=5e), , , | ,
T(b7n=10+6c) ( , ,
T(n) n). ,
T(n) 6 T(dn=5e) + T(b7n=10+ 6c) + O(n):
n (1=5 +
7=10 = 9=10) , -
, T(n) 6 cn c.
. , ,
T(m) 6 cm m < n,
T(n) 6 c(dn=5e)+ c(b7n=10+ 6c)+ O(n)
6 c(n=5+ 1) + c(7n=10+ 6) + O(n)
6 9cn=10+ 7c+ O(n) =
= cn;c(n=10;7) + O(n):
c cn
n > 70 ( , c(n=10 ; 6) ,
O(n)). ,
n > 70 ( , n
dn=5e b7n=10+ 6c n).
c ( ), , T(n)
cn n 6 70,
. , Select
( ).
193
, Select Randomized-Select, -
9 -
, -
.
, -
, -
, (nlgn) ( -
9.1), ( 9-1).
10.3-1 Select ,
, -
? ,
.
10.3-2 x | Select (
n ). , n > 38 -
, x ( , x)
dn=4e.
10.3-3 , -
O(nlgn) .
10.3-4? i- -
. ,
-
, , .
10.3-5 - , -
.
, , -
.
10.3-6 k- (k-th quantiles) n
k ; 1 , -
: -
, k ( ,
) .
, O(nlgk) k-
.
10.3-7 , k
S k ,
. O(jSj).
194 10
. 10.2 , -
?
10.3-8 X 1::n] Y 1::n] | .
, O(lgn) -
, .
10.3-9 ,
,
n . -
( , . 10.2).
-
, , -
, . ,
.
10-1 i
n i -
( ).
-
, n i
.
. i .
. i
Extract-Max.
10 195
. 10.3 i-
( ),
i .
10-2
n x1 ::: xn, xi
( ) wi,
1. (weighted median)
xk,
X
xi<xk
wi 6 1
2
X
xi>xk
wi 6 1
2:
. , 1=n,
.
. n
O(nlgn) ?
. Select ( 10.3),
(n) ?
(post-o ce location problem)
. n p1 ::: pn n
w1 ::: wn p ( -
pi),
Pn
i=1 wid(p pi)
( d(a b) -
a b).
. , ( |
, d(a b) = ja;bj)
.
. ( |
), a =
(x1 y1) b = (x2 y2) L1- : d(a b) = jx1 ;
x2j+jy1;y2j ( Manhattan
distance, - ,
)
10-3 i- i
T(n) | Select,
n T(n) = (n),
n, , .
i n, i-
.
196 10
. , i-
n , Ui(n) ,
Ui(n) =
(
T(n) n 6 2i,
n=2 + Ui(bn=2c) + T(2i+ 1) .
( : bn=2c i
.)
. , Ui(n) = n + O(T(2i)log(n=i)).
. , , i, Ui(n) = n+ O(lgn).
, 7,
i .]
. i = n=k, k > 2 , Ui(n) = n +
O(T(2n=k)lgk).
-
, , , 29].
97]. 70] -
, -
.
III
-
, . -
, -
( , -
dynamic) .
. , -
, -
, , -
. , , -
(dictionary). -
. , -
, 7 ,
( -
). , -
, .
| , -
.
(key), ,
| (satellite da-
ta), .
, -
, .
, -
, ( )
.
,
,
200 III
( ,
)
( , -
, ).
, ,
, -
.
, -
,
.
,
.
(queries), -
, , (mod-
ifying operations). :
Search(S k) ( ). , S
k S -
k. S , -
nil.
Insert(S x) S , -
x ( ,
, x, ).
Delete(S x) S , -
x ( , x | ,
).
Minimum(S) S -
( , ).
Maximum(S) S -
.
Successor(S x) ( )
S, x (
). x |
, nil.
Predecessor(S x) ( ) -
, x ( x |
, nil).
Successor Predecessor -
,
III 201
. , -
Successor Predecessor , Minumum(S)
Successor,
. .
-
, . ,
14 , -
O(lgn),
n | .
III
11{15 ,
.
. , -
( )
7.
11
: , ,
. , -
,
. -
.
12 - , -
Insert, Delete Search.
- (n), , -
- ,
( ) O(1).
,
.
13 . -
.
(n),
-
O(lgn).
.
14 - .
: -
O(lgn).
-
( - )
19. -
.
202 III
, .
15
- ,
( , -
).
11
-
: , , , -
. , -
.
11.1.
| ,
, Delete,
, . ,
(stack) ,
:
| (last-in, rst-out | LIFO).
(queue), , , -
: -
| ( rst-in, rst-out, FIFO).
. ,
.
Push,
-
Pop (push , pop |
). ,
-
. |
| , .]
. 11.1 ,
n S 1::n].
top S], -
. S 1::top S]],
204 11
. 11.1 S. -
. ( ) S 4 , | 9.
( ) Push(S 17) Push(S 3). ( )
, Pop(S) 3 (
). 3 - S,
| 17.
S 1] | ( ) S top S]] | -
, .
top S] = 0, (is empty). top S] = n,
(over ow), -
n.
|
| - ( - ?), -
under ow.
.
( , ,
) :
Stack-Empty(S)
1 if top S] = 0
2 then return true
3 else return false
Push(S x)
1 top S] top S]+ 1
2 S top S]] x
Pop(S)
1 if Stack-Empty(S)
2 then error under ow"
3 else top S] top S];1
4 return S top S]+ 1]
Push Pop . 11.1.
O(1).
205
Enqueue, -
Dequeue. ( ,
Dequeue, .)
, : |
. ( , -
, - .)
, (head) (tail).
, , ,
, -
, , ,
.
. 11.2 , , -
n ; 1 , Q 1::n].
head Q] | , tail Q] | -
, -
. -
, head Q], head Q] + 1, ::: ,
tail Q];1 ( , : n -
1). head Q] = tail Q], .
head Q] = tail Q] = 1. ,
(under ow) head Q] = tail Q]+1,
, -
(over ow).
Enqueue Dequeue -
( 11.1-4
).
Enqueue(Q x)
1 Q tail Q]] x
2 if tail Q] = length Q]
3 then tail Q] 1
4 else tail Q] tail Q]+ 1
Dequeue(Q)
1 x Q head Q]]
2 if head Q] = length Q]
3 then head Q] 1
4 else head Q] head Q]+ 1
5 return x
Enqueue Dequeue . 11.2.
206 11
. 11.2 , Q 1::n]. - -
. ( ) 5 ( -
Q 7::11]). ( ) Enqueue(Q 17), En-
queue(Q 3) Enqueue(Q 5). ( ) De-
queue(Q) ( 15). -
6.
O(1).
11.1-1 . 11.1,
Push(S 4), Push(S 1), Push(S 3), Pop(S), Push(S 8) Pop(S)
, S 1::6].
.
11.1-2 A 1::n]
n? Push Pop
O(1).
11.1-3 . 11.2,
Enqueue(Q 4), Enqueue(Q 1), Enqueue(Q 3), Dequeue(Q),
Enqueue(Q 8) Dequeue(Q) , -
Q 1::5]. .
11.1-4 Enqueue Dequeue, -
under ow.
11.1-5
. -
, | . , -
(deque, double-ended queue |
207
), -
. , -
O(1).
11.1-6 ,
. Enqueue Dequeue
?
11.1-7 , .
?
11.2.
( - linked list)
, -
, , ,
. -
, , -
( ).
, ,
, -
-
, .
, . 11.3, -
(doubly linked list) | ,
: key ( ) next ( ) prev (
previous | ). ,
. x | ,
next x] , prev x] |
. prev x] = nil, x -
: (head) . next x] = nil, x |
, , (tail).
,
, L -
head L] . head L] = nil, .
.
(singly linked) -
prev. (sorted)
, -
, | , -
(unsorted) . (circular list)
prev , next
.
,
208 11
. 11.3 ( ) L 1 4 9 16. -
| -
( ).
next prev nil
( ) head L] . ( ) -
List-Insert(L x), key x] = 25,
25 , next
| 9. ( )
List-Delete(L x), x |
4.
.
List-Search(L k) L (
) , k.
, , nil,
. , , L |
. 11.3 , List-Search(L 4)
, List-Search(L 7) nil.
List-Search(L k)
1 x head L]
2 while x 6= nil and key x] 6= k
3 do x next x]
4 return x
n (
) (n) .
List-Insert x L,
( . 11.3 ).
209
List-Insert(L x)
1 next x] head L]
2 if head L] 6= nil
3 then prev head L]] x
4 head L] x
5 prev x] nil
List-Insert O(1) (
).
List-Delete x L, -
. -
x. x,
-
List-Search.
List-Delete(L x)
1 if prev x] 6= nil
2 then next prev x]] next x]
3 else head L] next x]
4 if next x] 6= nil
5 then prev next x]] prev x]
. 11.3 .
List-Delete O(1) -
,
(n).
, -
List-Delete :
List-Delete0(L x)
1 next prev x]] next x]
2 prev next x]] prev x]
, L
nil L], next prev
. (
sentinel | ) . -
nil. -
: next nil L]] prev nil L]]
, prev next
210 11
. 11.4 L, nil L] ( -
). head L] next nil L]]. ( ) .
( ) . 11.3 ( 9 | , 1 | ). ( )
List-Insert0(L x), key x] = 25. ( )
1. 4.
nil L] ( . 11.4).
next nil L]] | , head L]
. L , -
nil L] | .
List-Search nil nil L]
head L] next nil L]]:
List-Search0(L k)
1 x next nil L]]
2 while x 6= nil L] and key x] 6= k
3 do x next x]
4 return x
List-Delete0, -
. , :
List-Insert0(L x)
1 next x] next nil L]]
2 prev next nil L]]] x
3 next nil L]] x
4 prev x] nil L]
List-Insert0 List-Delete0
. 11.4.
, -
. (
, ),
.
. -
, -
211
.
, .
11.2-1 ,
, O(1)?
.
11.2-2 .
Push Pop O(1).
11.2-3
. Enqueue Dequeue
O(1).
11.2-4 Insert, Delete
Search
. ?
11.2-5 Union ( ) -
(
). -
, O(1), -
.
11.2-6 ,
( ),
. ,
1 ( ).
?
11.2-7 ,
(n)
. (
) O(1).
11.2-8? -
, next prev -
np x]. , k- -
nil . np x]
np x] = next x] XOR prev x], XOR | -
2 ( ). ,
.
Search, Insert Delete? ,
O(1).
212 11
. 11.5 . 11.3 ,
(key next prev). - .
,
. L |
.
11.3.
,
, .
,
.
, , -
( ). ,
. 11.5 ,
, . 11.3 : key ,
next prev | . -
(key x] next x] prev x]) -
x. x.
nil ,
( , 0 ;1). . 11.3
4 16 -
, 16 key 5,
4 | 2, next 5] = 2, prev 2] = 5.
key x]
: key x, key
x ( -
).
, -
. -
: -
213
. 11.6 , . 11.3 11.5, -
A.
. key, next prev 0, 1 2. -
| . -
.
, ,
,
.
.
. - A. -
A j ::k].
| j -
0::k ; j] | . ,
, . 11.3 11.5,
, key, next prev 0, 1 2.
prev i], i | (= A),
, A i+ 2] ( . . 11.6).
-
( ),
, ,
, .
. ,
. -
| (garbage collector), ,
,
. , , -
. , -
,
.
, -
214 11
. 11.7 Allocate-Object Free-Object. ( ) -
, . 11.5 ( - ) ( - ).
. ( )
Allocate-Object() ( 4), -
key 4] 25 List-Insert(L 4).
8 ( next 4]). ( ) -
List-Delete(L 5), Free-Object(5). 5 |
, 8.
, m,
n 6 m . n ; m ( ) -
(free).
, (free list).
next: , next i] -
, i. -
free.
L ( . 11.7). -
, 1 m]
L, .
: -
,
. -
-
Push Pop . -
Allocate-Object ( ) Free-Object ( -
) , free
( ) .
215
. 11.8 L1 ( - ) L2 ( - ), -
( ) .
Allocate-Object()
1 if free = nil
2 then error
3 else x free
4 free next x]
5 return x
Free-Object(x)
1 next x] free
2 free x
n -
. , Allocate-
Object .
-
( . 11.8).
-
( O(1)).
, -
next ( ).
11.3-1 . 11.5, -
h13 4 8 19 5 11i -
,
. 11.6 , -
.
11.3-2 Allocate-Object Free-Object
, .
11.3-3 Allocate-Object Free-Object
prev?
11.3-4 ( , -
) -
216 11
.
. Allocate-Object
Free-Object ,
1::m, m | . ( : -
.)
11.3-5 L m -
key, prev next n, -
.
Compactify-List ( ), -
L m m -
, (
). (m),
( )
O(1). .
11.4.
-
,
.
. -
, , -
.
.
, -
.
, , .
, .
. 11.9, -
T p, left right, -
, x -
. p x] = nil, x | x
, left x] right x] nil. T
root T] | . root T] = nil,
T .
217
. 11.9 T. x
p x] ( ), left x] ( ) right x] ( ).
.
,
k, -
,
child1 child2 ::: childk, left right. -
, : -
, ( | -
) .
,
k,
k:
.
? ,
. :
, -
, (
).
.
,
, .
| (left-child, right-sibling representation)
. 11.10. - -
p root T]
. p,
:
1. left-child x] x
218 11
. 11.10 T | .
x p x] ( ), left-child x] ( )
right-sibling x] ( ). .
2. right-sibling x] -
x ( )
x , -
left-child x] = nil. x |
, right-sibling x] = nil.
.
, 7
,
2. 22 ,
(
). -
.
11.4-1 ,
:
11 219
key left right
1 12 7 3
2 15 8 nil
3 4 10 nil
4 10 5 9
5 2 nil nil
6 18 1 4
7 7 nil nil
8 14 6 2
9 21 nil nil
10 5 nil nil
| 6.
11.4-2
, -
.
11.4-3 ( -
), ? ( -
.)
11.4-4 , -
,
| .
11.4-5?
, ,
( , -
) O(1),
( ).
11.4-6? -
, (
, | )
.
11-1
( ) -
III ( . 194) , -
.
220 11
, , ,
Search(L k)
Insert(L x)
Delete(L x)
Successor(L x)
Predecessor(L x)
Minimum(L)
Maximum(L)
11-2
(mergeable
heaps) ( ), -
: Make-Heap ( ),
Insert, Minimum, Extract-Min , , Union (
).
( -
) .
.
. .
. .
. , -
.
11-3
11.3-4 :
n- n -
. , -
( , key i] < key next i]] next i] 6= nil).
, -
o(n):
Compact-List-Search(L k)
1 i head L]
2 n length L]
3 while i 6= nil and key i] 6 k
4 do j Random(1 n)
5 if key i] < key j] and key j] < k
6 then i j
7 i next i]
8 if key i] = k
9 then return i
10 return nil
11 221
4{6
. 4{6 -
j. key i] < key j] < k,
, ,
i j. ( , -
,
.)
. , ? -
, ( ) -
.
? , -
,
.
| -
.
,
, .
. t > 0
Xt , (
) i k t -
.
. , t > 0
Compact-List-Search O(t +
E Xt]).
. , E(Xt) 6
Pn
r=1(1;r=n)t. ( : -
(6.28)).
. ,
Pn;1
r=0 5 6 nt+1=(t+ 1).
. , E(Xt) 6 n=(t + 1), ,
.
e. , -
Compact-List-Search O(
pn).
| ,
5] 121].
90]
-
. 121] , 1947
(A.M.Turing) .
222 11
, , , ,
. , -
. 1951
(G.M.Hopper) A-1, -
.
, -
IPL-II, 1956
, (A.Newell, J.C.Shaw, H.A.Simon). -
1957 IPL-III
.
12 -
,
, -
. -
-
( ).
- ,
( (n)), .
- O(1).
-
. , -
,
-
O(1)
( , . . 12.1). -
,
, : -
, . 12.2 -
, 12.3 | -
.
.
, |
( O(1)
).
12.1.
,
.
U = f0 1 ::: m ; 1g ( m ).
, .
T 0::m ; 1],
(direct-address table).
224 12 -
: universe of keys | -
, actual keys | , key | ,
satellite data | .
. 12.1 T -
. U = f0 1 ::: 9g. -
.
2, 3, 5 8 ( )
, ( - )
nil.
, , ( - slot position) -
U ( . 12.1: T k] |
, -
k k , T k] = nil).
:
Direct-Address-Search(T k)
return T k]
Direct-Address-Insert(T x)
T key x]] x
Direct-Address-Delete(T x)
T key x]] nil
O(1).
, T -
, . -
: -
. , ,
, .
12.1-1 -
,
. -
- 225
?
12.1-2 (bit vector) | (
). m
, m . , -
, , -
? -
O(1).
12.1-3 , -
,
? ,
O(1) ( ,
Delete
, ).
12.1-4? ,
, ,
.
- , ,
, . -
?
O(1), -
, O(1),
O(1). ( : , -
, -
, ).
12.2. -
: -
U , -
T jUj , . ,
jUj, .
, -
, - -
, . , -
(jKj), K | -
, - - O(1)
( , | ,
, -
).
k -
226 12 -
: universe of keys | -
, actual keys |
. 12.2 -
- . - k2 k5 | -
.
k, -
h(k) - (hash table) T 0::m;1],
h: U ! f0 1 ::: m; 1g
| , - (hash function).
h(k) - (hash value) k.
. 12.2: m,
jUj, .
, , , -
. , ,
(collision). , :
- .
- , -
. jUj > m -
, - .
,
,
, - .
- , , -
.
- - , -
( to hash"
, ). ,
- -
,
- .
( , ) .
| | 12.4.
- 227
: universe of keys | -
, actual keys |
. 12.3 . T j]
- j. , h(k1) = h(k4)
h(k5) = h(k2) = h(k7).
(chaining) ,
, -
, - ( . 12.3). -
j , -
- j -
, j nil.
, :
Chained-Hash-Insert(T x)
x T h(key x])]
Chained-Hash-Search(T k)
k T h(k)]
Chained-Hash-Delete(T x)
x T h(key x])]
O(1).
( ). -
, O(1) | -
, ( -
, x
,
).
228 12 -
-
.
T | - m , n
. (load factor) -
= n=m ( ,
). .
-
: - n ,
n,
(n), , -
- . ,
.
, -
- - .
, , -
12.3 ,
m
, .
(simple uniform hashing).
, k -
h(k), -
, k
T h(k)], -
.
: (
k ), |
.
12.1. T | - , -
. , -
. , ,
,
( - )
(1 + ).
. -
-
,
m ,
m . -
n=m = , -
, (1)
- .
- 229
12.2.
- (1 + ),
| .
.
, .
-
, -
,
.
: -
, ,
, -
(1 + ) ( : ,
)
:
-
, ,
,
, -
.
, -
, .
, n -
?
n ( ).
,
( . . 12.2-3),
, (
-
).
. i-
(1 + (i ; 1)=m)
( . ), -
,
n,
1
n
nX
i=1
1 + i ;1
m
!
= 1 + 1
nm
nX
i=1
(i; 1)
!
=
= 1+ 1
nm
(n;1)n
2 =
= 1+ 2 ; 1
2m = (1 + ):
230 12 -
- -
, -
, ( -
) O(1). ,
n = O(m), = n=m = O(1) O(1 + ) = O(1).
- O(1) (
, . . 12.2-3), -
O(1) ( , ),
( -
) O(1).
12.2-1 h | - , -
n fk1 k2 ::: kng m
. ( -
, (i j), h(ki) = h(kj))?
12.2-2 - -
,
5 28 19 15 20 33 12 17 10 ( )?
9, - h(k) = k mod 9.
12.2-3 , -
( -
) O(1 + ),
.
12.2-4 ,
, -
.
, ,
, ?
12.2-5 - , -
- ( -
). ,
-
, , . ,
, -
O(1).
?
12.2-6 (
U) mn, m | - . ,
- 231
n - ,
-
(n).
12.3. -
, -
, - :
, .
- ?
- ( )
:
m - .
, -
P U ,
U ,
P. ,
X
k: h(k)=j
P(k) = 1
m j = 0 1 ::: m;1. (12.1)
, P , -
(
).
P . , ,
| , -
0 1). -
, - h(k) = bkmc (12.1).
-
, . , -
, -
.
( -
, pt pts). - ,
- .
- , -
-
, . ,
,
- -
.
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz
Kormen t algoritmy_postroenie_i_analiz

More Related Content

Viewers also liked

1 Executive Overview
1 Executive Overview1 Executive Overview
1 Executive Overviewrobertfast
 
Maabe metodologias de operacionalização parte ii-
Maabe  metodologias de operacionalização  parte ii-Maabe  metodologias de operacionalização  parte ii-
Maabe metodologias de operacionalização parte ii-paulafernandadiogo
 
4 Ian Russell Csiro
4 Ian Russell Csiro4 Ian Russell Csiro
4 Ian Russell CsiroFNian
 

Viewers also liked (6)

El Modernismo En Aranjuez
El Modernismo En AranjuezEl Modernismo En Aranjuez
El Modernismo En Aranjuez
 
1 Executive Overview
1 Executive Overview1 Executive Overview
1 Executive Overview
 
Tech
TechTech
Tech
 
Maabe metodologias de operacionalização parte ii-
Maabe  metodologias de operacionalização  parte ii-Maabe  metodologias de operacionalização  parte ii-
Maabe metodologias de operacionalização parte ii-
 
Strompreise
StrompreiseStrompreise
Strompreise
 
4 Ian Russell Csiro
4 Ian Russell Csiro4 Ian Russell Csiro
4 Ian Russell Csiro
 

Kormen t algoritmy_postroenie_i_analiz

  • 1. 1 7 1.1. . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2. . . . . . . . . . . . . . . . . . . . . 11 1.3. . . . . . . . . . . . . . . . . . 15 1.3.1. . . . . . . . . . 16 1.3.2. 17 I 24 25 2 26 2.1. . . . . . . . . . . . . . 26 2.2. . . . . . . . . . 30 3 39 3.1. . . . . . . . . . . . . . . . . . . . 39 3.2. . . . . . . . . . . . . . . . . . . . . . . . . 43 4 49 4.1. . . . . . . . . . . . . . . . . . . . . 50 4.2. . . . . . . . . . . . . . . . . . 53 4.3. . . . . . . . . . . . . . . . . . . . . . . . 56 ? 4.4 4.1 . . . . . . . . . . . . . . . 59 4.4.1. . . . . . . . . . 59 4.4.2. . . . . . . . 63 5 71 5.1. . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2. . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.3. . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
  • 2. 2 5.5.1. . . . . . . . . . 87 5.5.2. . . 89 5.5.3. . . . . 91 6 96 6.1. . . . . . . . . . . . . . . . . . . . . 96 6.2. . . . . . . . . . . . . . . . . . . . . . . . . 102 6.2.1. . . . 103 6.3. . . . . . . . . . . . . 108 6.4. . . . . 113 6.5. . . . . . . . . . 118 6.6. . . . . . . . . . . . . . . . . . . 123 6.6.1. . . . . . . . . . . . . . 123 6.6.2. . . . . . . . . . . . . . . . . . . . 125 6.6.3. . . . . . . . . 126 II 132 133 7 136 7.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.2. . . . . . . . . . . 138 7.3. . . . . . . . . . . . . . . . . . . . . . 140 7.4. . . . . . . . . 143 7.5. . . . . . . . . . . . . . . . . . 143 8 148 8.1. . . . . . . . . . . . . . 148 8.2. . . . . . . . . . . . . . . . 151 8.3. . . . 155 8.4. . . . . . . . . . . . . . . . 157 8.4.1. . . . . . . . . . . . . 157 8.4.2. . . . . . . . . 158 9 166 9.1. . . . . . . . . . . . . . 166 9.2. . . . . . . . . . . . . . . . . . . 169 9.3. . . . . . . . . . . . . . . . . . . . 171 9.4. . . . . . . . . . . . . . . . 174 10 180 10.1. . . . . . . . . . . . . . . . . . . 181 10.2. . . . . . . . . . . 182 10.3. . . . . . . 185
  • 3. 3 III 192 193 11 197 11.1. . . . . . . . . . . . . . . . . . . . . . . 197 11.2. . . . . . . . . . . . . . . . . . . . . . 201 11.3. 206 11.4. . . . . . . . . . . . 210 12 - 217 12.1. . . . . . . . . . . . . . . . . . . . . . 217 12.2. - . . . . . . . . . . . . . . . . . . . . . . . . 219 12.3. - . . . . . . . . . . . . . . . . . . . . . . . 225 12.3.1. . . . . . . . . . . . . . . . . 226 12.3.2. . . . . . . . . . . . . . . . . . . . . . 227 12.3.3. . . . . . . . . . . . 228 12.4. . . . . . . . . . . . . . . . . . . . 231 13 242 13.1. ? . . . . . . . . . . 243 13.2. . . . . . . . . . . . . . . . . . 245 13.3. . . . . . . . . . . . . 248 ? 13.4 . . . . . . . . . . 252 14 - 262 14.1. - . . . . . . . . . . . 262 14.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 264 14.3. . . . . . . . . . . . . . . . . . . . 267 14.4. . . . . . . . . . . . . . . . . . . . . . . . . . . 271 15 280 15.1. . . . . . . . . . 280 15.2. 285 15.3. . . . . . . . . . . . . . . . . . . . 288 IV 296 297 16 299 16.1. . . . . . . . . . . . 300 16.2. . 307 16.3. . . . . . . 312 16.4. . . . . . 317
  • 4. 4 17 326 17.1. . . . . . . . . . . . . . . . . . . 326 17.2. ? . . . . . . . . . . 330 17.3. . . . . . . . . . . . . . . . . . . . . . . 333 ? 17.4 . . . . . . 341 17.4.1. . . . . . . . . . . . . . . . . . . . . . 341 17.4.2. 343 ? 17.5 . . . . . . . . . . . . . . . . . . . 346 18 352 18.1. . . . . . . . . . . . . . . . . . . . . 353 18.2. . . . . . . . . . . . . . . . . . . . . 356 18.3. . . . . . . . . . . . . . . . . . . . . 359 18.4. . . . . . . . . . . . . . . . . . . 362 18.4.1. . . . . . . . . . . . . . . . 362 18.4.2. . . . . . . 365 V 372 373 19 - 376 19.1. - . . . . . . . . . . . . . . . . . . 379 19.2. - . . . . . . . . . . . 381 19.3. - . . . . . . . . . . . . . 388 20 394 20.1. . . . . . 395 20.1.1. . . . . . . . . . . . . . . 395 20.1.2. . . . . . . . . . . . . . . . . 397 20.2. . . . . . . . . . . 399 20.2.1. . . . . . . . . . . . . . . 400 21 413 21.1. . . . . . . . . . . . . . 414 21.2. , . . . 416 21.3. . . . . . . . . 425 21.4. . . . . . . . . . . . . . 429 22 434 22.1. . . . . 434 22.2. . . . . . . . . . . . . . 437 22.2.1. . . . . . . . . . . . . . . . . . . . . 441 23 452 23.1. . . . . . . . . . . . . 453
  • 5. 5 23.1.1. . . . . . . . . . . . . . . 453 23.1.2. . . . . . . . . . . . . . . . . . . 456 23.1.3. . . . . . . . . . . . . . . . . . . 464 23.1.4. . . . . . . . . . . . 471 23.1.5. . . . . . . . . . . . 473 24 481 24.1. . . . . . . . . . . . 482 24.2. . . . . . . . . . . . . . 486 25 493 25.1. . . . . . . . . . . . . . 497 25.2. - . . . . . . . . . . . . . . . 507 25.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 25.4. . . . . 512 26 522 26.1. - . . . . . . . . . . . . . . . 529 27 546 27.1. . . . . . . . . . . . . . . . . . . . . . . 547 27.2. { . . . . . . . . . . . . . . . . 552 27.3. . . 562 27.4. . . . . . . . . . 565 27.5. - - - . . . . . . . . . . . . . . 574 28 586 28.1. . . . . . . . . . . . . . . . . . . . . 587 28.2. . . . . . . . . . . . . . . . . . 590 28.3. . . . . . . . . . . . . . . . 592 28.4. . . . . . . . . . . . . . . . . . . . . . . 594 28.5. . . . . . . . . . . . . . . . . . . . . 596 29 601 29.1. . . . . . . . . . 602 29.1.1. . . . . . . . . . . . 602 29.1.2. . . . . . 603 29.1.3. . . . . . . . . . . . . . . . . . . . . . 603 29.1.4. . . . . . . . . . . . . . . . . . . . 604 29.1.5. . . . . . . . . . . . . . . . . . . . 605 29.1.6. . . . . . . . . . . . . . . . . . . . . 605 29.2. C . . . . . . . . . . . . . . . . . . . 605 29.2.1. . . . . . . . . . . . . . . . 606 29.2.2. . . . . 607 29.2.3. - . . . . . . . . . . . . 608
  • 6. 6 29.2.4. : . . . . . . . . . . . . . . . . . . . . . 609 29.2.5. . . . . . . 610 29.3. . . . . . . . . . . . . . . . . . . 612 29.3.1. . . . . . . . . . . . . . 612 29.3.2. . . . . . . . . . . . . . . 614 29.3.3. . . . . . 614 29.3.4. . . . . . . . . . . . . . . 615 29.3.5. . . . . . . . . . . . . . . . . . . . . 616 29.4. . . . . . . . . . . . . . . . . . . 617 29.4.1. . . . . . . . . 617 29.4.2. . . . . . . . . . . . . . . 618 29.4.3. . . 618 29.4.4. . . . . . . . . . . . . 619 29.4.5. . . . . . . . . . . . . . . . . 619 29.4.6. . . . . . . . . . . . . . . . 620 29.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 29.6. . . . . . . . . . . . . . . . . . . . . . . . 623 30 625 30.0.1. - (PRAM) . . . . . . . . . . . . . . . . . . . . 625 30.0.2. - . . . . . . . . . . . . . . . . . . . . . . . . . 626 30.0.3. . . . . . . . . . . . . . . . . . . 627 30.0.4. . . . . . . . . . . . . . . . . . . . . . 627 30.1. . . . . . . . . . . . . . . . . . 628 30.1.1. . . . . . . . . . . . . . . . . . . 628 30.1.2. . . . . . . . . . . . . . . . . . . . 630 30.1.3. . . . . . . . . . . . . . . . . . . . . . . . 630 30.1.4. . . 631 30.1.5. . . . . . . . . . . . . . . 633 30.2. CRCW- EREW- . . . . . . . . . . . . . . . 636 30.2.1. . . . . . . . . . . 636 30.2.2. . . . . . . . . . . . 637 30.2.3. CRCW- EREW- . . . . . . . . . . . . . . . . . . 639 30.3. . . . . 642 30.3.1. . . . . . . . . . . . . . . . . . . . . 645 30.4. . . 645 30.4.1. 646 30.4.2. . . . . . . . . . . . 647 30.4.3. . . . . . . . . . . . . . . . . . . . . . . . 647 30.4.4. . . . . . . . . . . . . . . . . . . . . 649 30.5. ( - ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
  • 7. 7 30.5.1. - . . . . . . . . . . . . . . . . . . . . . . . 650 30.5.2. 6- . . . . . . . . . . . . . 651 30.5.3. - 6- . . . . . . . . . . . . . . 653 30.5.4. . . . . . . . . . . . . . . . . . . . . 654 30.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 30.7. . . . . . . . . . . . . . . . . . . . . . . . 657 31 659 31.1. . . . . . . . . . . . . . . . . . 659 31.2. . . . . . . . 668 31.3. . . . . . . . . . . . . . . . . . . . . 675 31.4. - . . . . . . . . . . . 679 33 p - p 712 33.1. . . . . . . . . . . 713 33.2. . . . . . . . . . . . . . . 718 33.3. . . . . . . . . . . . . . . . . . 722 33.4. . . . . . . 726 33.5. . . . . . . . . . . . . . 729 33.6. . . . . . . . . . . . . . . . . . . . . . 732 33.7. RSA . . . . . . . 735 33.8. . . . . . . . . . . . . . . . 741 34 757 34.0.1. . . . . . . . . . . 758 34.1. . . . . . . . . . . . . . . . . . . 759 34.2. | . . . . . . . . . . . . . . . 761 34.2.1. . . . . . . . . . . . . . . . . . . . . 764 34.3. . . . 765 34.3.1. . . . . . . . . . . . . . . . 765 34.3.2. . . . . . . . . . 766 34.3.3. . . . . . . . . . 770 34.4. | | . . . . . . . . 771 34.4.1. - , 771 34.4.2. . . . . . . . . . . . . . . . . . . . 773 34.4.3. - . . 774 34.4.4. KMP . . . . . . . . . . . . 776 34.5. | . . . . . . . . . . . . . . . . 777 34.5.1. - . . . . . . . . . . . . . 778 34.5.2. . . . . . . . . 780 34.5.3. . . . . . . . . . . . . . . . . . . . . 784 34.6. . . . . . . . . . . . . . . . . . . . . . . . . . 785
  • 8. 8 35 787 35.1. . . . . . . . . . . . . . . . . . . . . 788 35.2. ? . . . . . . . . . . . 793 35.3. . . . . . . . . . . . . . 798 35.4. . . . . . . . . . . . 804 35.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 36 NP- 811 36.1. . . . . . . . . . . . . . . . . . . 812 36.2. NP . . . . . 819 36.3. NP- . . . . . . . . . . . . . . . . 824 36.4. NP- . . . . . . . . . . . . . . . . . . . . . 837 36.4.1. . . . . . . . . . . . . . . . . . . . 837 36.4.2. . . . . . . . . . 839 36.4.3. . . . . . . . . . 842 36.4.4. . . . . . . . . . . . . . . 846 37 850 37.1. . . . . . . . . . . . . . 852 37.2. . . . . . . . . . . . . . . . . . . 854 37.2.1. ( - ) . . . . . . . . . . . . . . . . . . . . . 854 37.2.2. . . . . . . . . . . 856 37.3. . . . . . . . . . . . . . . 863
  • 9. - . - , . - . 260 , . - . , - | . - . : - | - . , , . . , . - , . ( 900): - ( 120). , ( | , -
  • 10. 10 ). - , . . - - - . : , - . , , - . , - , . , , , . , , , . , ? , , - , ( , ) ( - - ). : - . , . - , - . - , - . - , . , - ( - . .), .
  • 11. 11 . , , . ( , - , ). : Introduction to Algorithms MIT Labratory for Computer Science 545 Technology Square Cambridge, Massachusetts 02139 - , algorithms@theory.lcs.mit.edu , Subject: help . , . , - ( 1997), , - , , , - ( , . ). , , - : , ! , algor@mccme.ru ( , 121002, ., 11, , ).] . - . (Massachusetts Institute of Technology, Laboratory for Computer Science) - . - . : Baruch Awerbuch, Sha Goldwasser, Leo Guibas, Tom Leighton, Al- bert Meyer, David Shmoys, Eva Tardos. , - ( : Microvax, Apple Macintosh, Sun Sparc- station) William Ang, Sally Bemus, Ray Hirschfeld Mark Reinhold TEX, - . Thinking Machines
  • 12. 12 . , . - : Richard Beigel (Yale), Andrew Goldberg (Stanford), Joan Lucas (Rutgers), Mark Overmars (Utrecht), Alan Sherman (Tufts, Maryland), Diane Souvaine (Rutgers). - , . - : Alan Baratz, Bonnie Berger, Aditi Dhagat, Burt Kaliski, Arthur Lent, Andrew Moulton, Marios Papaefthymiou, Cindy Phillips, Mark Reinhold, Phil Rogaway, Flavio Rose, Arie Rudich, Alan Sher- man, Cli Stein, Susmita Sur, Gregory Troxel, Margaret Tuttle. - : (Denise Sergent), (Maria Sensale), (Al- bert Meyer), (Shlo- mo Kipnis, Bill Niehaus, David Wilson), (Marios Papaefthymiou, Gregory Troxel), (Inna Radzi- hovsky, Denise Sergent, Gayle Sherman, Be Hubbard). , Bobby Blumofe, Bonnie Eisenberg, Raymond Johnson, John Keen, Richard Lethin, Mark Lillibridge, John Pesaris, Steve Ponzio, Margaret Tuttle. , - Bill Aiello, Alok Aggrawal, Eric Bach, Vasek Chvatal, Richard Cole, Johan Hastad, Alex Ishii, David Johnson, Joe Kilian, Dina Kravets, Bruce Maggs, Jim Orlin, James Park, Thane Plambeck, Herschel Safer, Je Shallit, Cli Stein, Gil Strang, Bob Tar- jan, Paul Wang. , Andrew Goldberg, Danny Sleator, Umesh Vazirani. LATEX ( TEX). - Apple Macintosh Mac Draw II - (Joanna Terry, Claris Corporation Michael Mahoney, Advanced Com- puter Graphics). Windex, . - BibTEX. - - Autologic (Ralph Youngen, ). : Rebecca Daw, Amy Henderson ( - LATEX), Jeannet Leendertse ( ). - MIT Press (Frank Sallow, Terry Ehling, Larry Cohen,
  • 13. 13 Lorrie Lejeune) McGraw-Hill (David Shapiro) , (Larry Cohen). , (Nicole Cormen, Lina Lue Leicerson, Gail Rivest) (Ricky, William Debby Leicerson Alex Christopher Rivest) (Alex Rivest ( 6.6.1). , . , 1990 (Thomas H. Cormen) (Charles E. Leiserson) (Ronald L. Rivest) : MIT , ( - ). - ( . . ). - , - , : K. , . , . , . , . . , . , . , . , . - , . , . , . , . , . ( ) . , . , . , . , . - , . , . . , A. ( - ) . ( ) . . ( )
  • 14. 1 , , - | . , , - , - , , . 1.1. (algorithm) | - , (input), , - (output). (computational problems). , , - , , , . (sorting prob- lem) - . : : n (a1 a2 ::: an). : (a0 1 a0 2 ::: a0 n) - , a0 1 6 a0 2 6 ::: 6 a0 n. , h31 41 59 26 41 58i, - h26 31 41 41 58 59i. (instance) .
  • 15. 15 - . - , , , ( , , ). (correct), - ( ) , . , (solves) - . ( ) . ( , | . 33 . , .) , | , . (pseu- docode), - ( , , ). , , - . , - ( , ), , . (insertion sort) - . - : , , ( . . 1.1) Insertion-Sort, - A 1::n] ( n, ). - A length A]. (in place), ( ). Insertion-Sort A .
  • 16. 16 1 . 1.1 Insertion-Sort(A) 1 for j 2 to length A] 2 do key A j] 3 . A j] A 1::j ;1]. 4 i j ;1 5 while i > 0 and A i] > key 6 do A i+ 1] A i] 7 i i;1 8 A i + 1] key . 1.2 Insertion-Sort A = h5 2 4 6 1 3i. - j . . 1.2 A = h5 2 4 6 1 3i. j ( - ). A 1::j ; 1] ( ), A j + 1::n] | . for j . A j]
  • 17. 17 ( 2 ) ( j ; 1- ) , - . ( 4{7). 8 A j] . , : 1. . , for ( 1) 2{8, - while ( 5) 6{7, 8. if-then-else. - begin end . ( - , , .) 2. while, for, repeat if, then, else , . 3. . ( ). 4. i j e ( i j e) j e i j ( ). 5. ( i j key) - ( ). 6. : A i] i- A. :: : A 1::j] A, A 1] A 2] ::: A j]. 7. (objects), - ( elds), , , - (attributes). ]. , length, A length A]. ( ), . , , - . y x f f y] = f x]. , f x] 3, f x] = 3, f y] = 3, y x x y . nil, - . 8. (by value): - - . -
  • 18. 18 1 , , | . , x | - , x y, , , f x] 3 | . 1.1-1 . 1.2, , Insertion-Sort A = h31 41 59 26 41 58i. 1.1-2 Insertion-Sort , - ( - ). 1.1-3 : : n A = ha1 a2 ::: ani v. : i, v = A i], nil, v A. (linear search), A v. 1.1-4 n- , n- A B. ( ) (n+1)- C. - - . 1.2. - , , - ( , ), - . , , - . (random-access machine, RAM), - . ( - - .) : - : ,
  • 19. 19 . - . ( , , : , .) (input size)? - . ( , ). - , - . - , ( , ). (running time) , | , . , - ( - - | x- ). (call) ( ) (execution), . , Insertion-Sort ( ) , - . j 2 n ( n = length A] | ) , 5, tj. ( , , - , .) Insertion-Sort(A) 1 for j 2 to length A] c1 n 2 do key A j] c2 n ;1 3 . A j] - . A 1::j ;1]. 0 n ;1 4 i j ;1 c4 n ;1 5 while i > 0 and A i] > key c5 Pn j=2 tj 6 do A i+ 1] A i] c6 Pn j=2(tj ; 1) 7 i i; 1 c7 Pn j=2(tj ; 1) 8 A i+ 1] key c8 n ;1 c, m , cm - . (
  • 20. 20 1 !) , T(n) = c1n+ c2(n; 1)+ c4(n ; 1)+ c5 nX j=2 tj + + c6 nX j=2 (tj ; 1)+ c7 nX j=2 (tj ;1) + c8(n;1): , n, , n . Insertion-Sort , - . 5 ( A i] 6 key i = j ;1), tj 1, T(n) = c1n+ c2(n; 1)+ c4(n ; 1)+ c5(n;1) + c8(n;1) = = (c1 + c2 + c4 + c5 + c8)n;(c2 + c4 + c5 + c8): , T(n), - n, (linear function) n, . . T(n) = an + b a b. ( - c1 ::: c8.) ( ) , : A j] A 1]:::A j ; 1]. tj = j. , nX j=2 j = n(n + 1) 2 ;1 nX j=2 (j ;1) = n(n ;1) 2 ( . . 3), , T(n) = c1n + c2(n ;1)+ c4(n; 1)+ c5 n(n + 1) 2 ; 1 + + c6 n(n ; 1) 2 + c7 n(n;1) 2 + c8(n ; 1) = = c5 2 + c6 2 + c7 2 n2 + c1 + c2 + c4 + c5 2 ; c6 2 ; c7 2 + c8 n ; ; (c2 + c4 + c5 + c8): T(n) | (quadratic function), . . T(n) = an2 + bn + c. ( a, b c - c1{c8.)
  • 21. 21 , , . - (worst-case running time), . ? . , , , - , ( ) . ( - ) . , ( ). . , , - n Insertion- Sort. 5{8? A 1::j ; 1] A j], tj j=2, - T(n) n. - (average-case running time, expexted running time) - . , ( - ), - . ( , .) Insertion-Sort . , i- - ci. an2+bn+c. , (rate of growth, order of growth) n2, - ( ) n2. : T(n) = (n2) ( ). : , , (n2), | (n3), ( | ).
  • 22. 22 1 1.2-1 n : , . , . (selection sort). - . , - . 1.2-2 ( . 1.1-3). , ( - )? ? - ? 1.2-3 x1 x2 ::: xn. , (nlogn) , - . 1.2-4 a0 a1 ::: an;1 x. - , (n2). (n), ? : n;1X i=0 aixi = (:::(an;1x + an;2)x+ :::+ a1)x + a0: 1.2-5 n3=1000; 100n2 ; 100n + 3 - - ? 1.2-6 , - . ? 1.3. , - . - , (incremental approach): - . , - (divide-and-conquer approach), .
  • 23. 23 1.3.1. (recursive algorithms): , . . - . ( | , ). - , . . - . - . - . - , ( 1 ). . Merge(A p q r). - A p q r, . , p 6 q < r A p::q] A q + 1::r] , (merges) A p::r]. ( . 1.3-2), , Merge (n), n | (n = r;p+1). . , . ? ( ) . , - . , - , (n). Merge-Sort(A p r), A p::r] A, - . p > r , . q, A p::q] ( dn=2e ) A q + 1::r] ( bn=2c ). bxc x ( , x), dxe | , x.
  • 24. 24 1 sorted sequence | merge | initial sequence | . 1.3 A = h5 2 4 6 1 3 2 6i. Merge-Sort(A p r) 1 if p < r 2 then q b(p + r)=2c 3 Merge-Sort(A p q) 4 Merge-Sort(A q + 1 r) 5 Merge(A p q r) Merge-Sort(A 1 length A]). n = length A] , 2, 4 n ( n=2). . 1.3. 1.3.2. ? - , - , (recurrence equation). , . . , n a , - b . , D(n), | C(n).
  • 25. 25 T(n) n ( ): T(n) = aT(n=b) + D(n) + C(n). n, . n, , - - . n , . , (n) . ( 4, - .) . ( ) (1), | (n). - T(n) = ( (1) n = 1, 2T(n=2)+ (n=2) n > 1. 4, T(n) = (nlogn), log ( - , , , ). n - , (n2). 1.3-1 . 1.3, - A = h3 41 52 26 38 57 9 49i. 1.3-2 Merge(A p q r). 1.3-3 , T(n) = ( 2 n = 2, 2T(n=2)+ n n = 2k k > 1, T(n) = nlogn ( n, ). 1.3-4 : A 1::n], ( ) - A 1::n ; 1], A n] - A 1::n;1]. - .
  • 26. 26 1 1.3-5 ( . 1.1-3), , , , , - . (binary search). , - . , (logn). 1.3-6 , while 5{7 Insertion-Sort ( . 1.1) - A 1::j ; 1] . ( . 1.3-5), (logn). (nlogn)? 1.3-7? S n , x. (nlogn) , x S? , - | . : , , - , : - . - , . . | (100 - ) (1 )? - , n , , 2n2 . 50nlogn. 2 (106)2 108 = 20000 5 56 50 (106)log(106) 106 1000 17 . , | , - . .
  • 27. 1 27 1.3-1 8n2 64nlogn . n - ? ? 1.3-2 n , 100n2 , , 2n ? 1-1 , n f(n) . , t? , - . 1 1 1 1 1 1 1 lognpn n nlogn n2 n3 2n n! 1-2 , n . , - . , . . n k n=k. - , ( ) (nk). . , - (nlog(n=k)). . (nk+nlog(n=k)). k n, - (nlogn)? . k -
  • 28. 28 1 ? 1-3 A 1::n] | n . - (inversions) , . . i < j, A i] > A j]. . h2 3 8 6 1i. . - n? . ? . . , - n (nlogn). ( : - .) . : , 4,5], 14], - 14], 105], 121, 122, 123], 142], 144, 145, 146], 164], - , 167], 175], 201]. - : 24,25], 90]. 1968 - 121, 122, 123], . . , - - (al-Khow^arizm^, al-Khw^arizm^). , 4] - - . - . 123] - . - , ( ). - , (D.L.Shell), - . , , - 1938 . -
  • 29. 1 29 , (J. von Neumann), - , EDVAC 1945 .
  • 30. I
  • 31. , - . , . 2 , - ( .), . - , - . 3 ( - ). 4 . - ( 4.1), . , , - . 5 , , , , , . 6 . - , ( ) , .
  • 32. 2 1, , ( ) - n2, ( ) | nlgn. , n . , - . , (asymp- totic e ciency). , , , . ( .) 2.1. - , . - 2 , T(n) - n (n2). - : c1 c2 > 0 n0, c1n2 6 T(n) 6 c2n2 n > n0. , g(n) | , f(n) = (g(n)) , c1 c2 > 0 n0, 0 6 c1g(n) 6 f(n) 6 c2g(n) n > n0 ( . . 2.1). ( f(n) = (g(n)) : .) !!!!!!!!! 2.1 - : ] f(n) = (g(n)), f(n) = O(g(n)) f(n) = (g(n)). , - : , f1(n) = (g(n)) f2(n) = (g(n)),
  • 33. 33 , f1(n) = f2(n)! (g(n)) , f(n) g(n) , . . - n. , f g - , n0 ( c1 c2 , n - ). f(n) = (g(n)), , g(n) - f(n). : f(n) = (g(n)), g(n) = (f(n)). 1 , (1=2)n2 ; 3n = (n2). , - c1 c2 n0 , c1n2 6 1 2n2 ;3n 6 c2n2 n > n0. n2: c1 6 1 2 ; 3 n 6 c2 , c2 = 1=2. , ( ) n0 = 7 c1 = 1=14. : - , 6n3 6= (n2). , c2 n0, 6n3 6 c2n2 n > n0. n 6 c2=6 n > n0 | . , - , n . - , ( c1 c2). - , f(n) = an2 + bn + c, a b c | a > 0. - , , f(n) = (n2). , - c1 = a=4, c2 = 7a=4 n0 = 2 max((jbj=a) p jcj=a) ( , ). , p(n) d - p(n) = (nd) ( 2-1). - : (1) , - . ( , .)
  • 34. 34 2 O- - f(n) = (g(n)) : . . , f(n) = O(g(n)), c > 0 n0, 0 6 f(n) 6 cg(n) n > n0 , f(n) = (g(n)), c > 0 n0, 0 6 cg(n) 6 f(n) n > n0. : , . - , f g - . ( . 2.1-5), : 2.1. f(n) g(n) f(n) = (g(n)) , f(n) = O(g(n)) f(n) = (g(n)). f(n) = O(g(n)) g(n) = (f(n)) . , an2 + bn + c = (n2) ( a). an2 + bn + c = O(n2). : a > 0 an + b = O(n2) ( c = a + jbj n0 = 1). , an + b 6= (n2 an + b 6= (n2). ( , O ) . , 1 T(n) = 2T(n=2)+ (n) . (n) , , c1n c2n c1 c2 n. , - . , nX i=1 O(i) h(1) + h(2) + :::+ h(n), h(i) | , h(i) = O(i). , n O(n2). - | 2n2 + 3n + 1 = 2n2 + (n) = (n2). (2n2 + (n) = (n2)) : h(n) = (n) , 2n2 + h(n) (n2).
  • 35. 35 o- !- f(n) = O(g(n)) , n f(n)=g(n) . limn!1 f(n) g(n) = 0 (2.1) f(n) = o(g(n)) ( ). , f(n) = o(g(n)), " > 0 n0, 0 6 f(n) 6 "g(n) n > n0. ( f(n) = o(g(n)) , f(n) g(n) n.) : 2n = o(n2), 2n2 6= o(n2). !- : , f(n) !(g(n)) ( ), - c n0, 0 6 cg(n) 6 f(n) n > n0. , f(n) = !(g(n)) , g(n) = o(f(n)). : n2=2 = !(n), n2=2 6= !(n2). , : : f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)), f(n) = O(g(n)) g(n) = O(h(n)) f(n) = O(h(n)), f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)), f(n) = o(g(n)) g(n) = o(h(n)) f(n) = o(h(n)), f(n) = !(g(n)) g(n) = !(h(n)) f(n) = !(h(n)). : f(n) = (f(n)), f(n) = O(f(n)), f(n) = (f(n)). : f(n) = (g(n)) g(n) = (f(n)). : f(n) = O(g(n)) g(n) = (f(n)), f(n) = o(g(n)) g(n) = !(f(n)). : f g a b: f(n) = O(g(n)) a 6 b f(n) = (g(n)) a > b f(n) = (g(n)) a = b f(n) = o(g(n)) a < b f(n) = !(g(n)) a > b
  • 36. 36 2 , , : - . , a b a 6 b, a > b, - , ( ) f(n) g(n) f(n) = O(g(n)), f(n) = (g(n)). , - , f(n) = n g(n) = n1+sinn ( g(n) 0 2). , - a 6 b a < b a = b, f(n) = O(g(n)) f(n) = o(g(n)) f(n) = (g(n)). 2.1-1 f(n) g(n) n. , max(f(n) g(n)) = (f(n) + g(n)). 2.1-2 , (n+ a)b = (nb) (2.2) a b > 0. 2.1-3 A - O(n2) ? 2.1-4 , 2n+1 = O(2n)? 22n = O(2n)? 2.1-5 2.1. 2.1-6 f(n) g(n), f(n) = O(g(n)), f(n) 6= o(g(n)) f(n) 6= (g(n)). 2.1-7 , f(n) = o(g(n)) f(n) = !(g(n)) . 2.1-8 , . , f(m n) = O(g(m n)), n0, m0 c, 0 6 f(m n) 6 cg(m n) n > n0 m > m0. (g(m n)) (g(m n)). 2.2. , f(n) (is monoton- ically increasing), f(m) 6 f(n) m 6 n. ,
  • 37. 37 f(n) (is monotonically decreasing), - f(m) > f(n) m 6 n. , f(n) (is strictly increasing), f(m) < f(n) m < n. , f(n) (is strictly decreasing), f(m) > f(n) m < n. x bxc (the oor of x) , . . , - x. dxe (the ceiling of x) - , x. , x;1 < bxc 6 x 6 dxe < x+ 1 x. , dn=2e+ bn=2c = n n. , x a b ddx=ae=be = dx=abe (2.3) bbx=ac=bc = bx=abc (2.4) ( , , z n n 6 z n 6 bzc ). x 7! bxc x 7! dxe . ( ) d n (polyno- mial in n of degree d) p(n) = dX i=0 aini (d | ). a0 a1 ::: ad (coe cients) . , - ad ( , d | , - ). n p(n) (
  • 38. 38 2 ), ad > 0 p(n) - ( n) p(n) = (nd). a > 0 n 7! na , a 6 0 | . , f(n) - , f(n) = nO(1), , , f(n) = O(nk) k ( . . 2.2-2). m, n a 6= 0 a0 = 1 (am)n = amn a1 = a (am)n = (an)m a;1 = 1=a aman = am+n: a > 1 n 7! an . 00 = 1. n 7! an , - (exponential). a > 1 : b, limn!1 nb an = 0 (2.5) , , nb = o(an). - e = 2 71828:::, ex = 1 + x + x2 2! + x3 3! + ::: = 1X k=0 xk k! (2.6) k! = 1 2 3 ::: k ( . ). x ex > 1 + x (2.7) x = 0. jxj 6 1 ex : 1 + x 6 ex 6 1 + x + x2 (2.8) , ex = 1 + x + (x2) x ! 0, ( n ! 1 x ! 0). x limn!1 ; 1+ x n n = ex.
  • 39. 39 : lgn = log2 n ( ), lnn = loge n ( ), lgk n = (lgn)k lglgn = lg(lgn) ( ). , , lgn+k lg(n)+k ( lg(n+k)). b > 1 n 7! logb n ( n) . a > 0, b > 0, c > 0 n ( 1): a = blogb a logc(ab) = logc a + logc b logb an = nlogb a logb a = logc a logc b logb(1=a) = ;logb a logb a = 1 loga b alogb c = clogb a (2.9) , O(logn) , - . ( , ) lg. ( jxj < 1): ln(1+ x) = x ; x2 2 + x3 3 ; x4 4 + x5 5 ;::: x > ;1 x 1 + x 6 ln(1+ x) 6 x (2.10) x = 0. , f(n) (is poly- logaritmically bounded), f(n) = lgO(1) n. (2:5) - n = lgm a = 2c limm!1 lgb m (2c)lgm = limm!1 lgb m mc = 0 , , lgb n = o(nc) c > 0. - , - .
  • 40. 40 2 n! ( , n factorial") 1 n. 0! = 1, n! = n (n; 1)! n = 1 2 3 :::. , n! 6 nn ( - n). (Stirling's approximation), , n! = p 2 n n e n (1+ (1=n)) (2.11) , n! = o(nn) n! = !(2n) lg(n!) = (nlgn): : p 2 n n e n 6 n! 6 p 2 n n e n e1=12n: (2.12) log n ( ) : (iter- ated logarithm). . - i- , lg(i), : lg(0) n = n lg(i)(n) = lg(lg(i;1) n) i > 0. ( , lg(i;1) n .) - : lgi n lg(i) n , . lg n i > 0, - lg(i) n 6 1. , lg n | , lg, n , - 1. lg n : lg 2 = 1 lg 4 = 2 lg 16 = 3 lg 65536 = 4 lg 265536 = 5: - 1080, 265536, n, lg n > 5, .
  • 41. 41 (Fibonacci numbers) - : F0 = 0 F1 = 1 Fi = Fi;1 + Fi;2 i > 2 (2.13) , 0 1 1 2 3 5 8 13 21 34 55 ::: . (golden ratio) ' ^': ' = 1 + p 5 2 = 1 61803::: ^' = 1 ; p 5 2 = ;0 61803::: (2.14) , Fi = 'i ; ^'i p 5 (2.15) ( . 2.2-7). j^'j < 1, j^'i= p 5j 1= p 5 < 1=2, Fi 'i= p 5, . Fi ( ) i. 2.2-1 , f(n) g(n) f(n) + g(n) f(g(n)) - . f(n) g(n) n, f(n)g(n) . 2.2-2 , T(n) = nO(1) , k, T(n) = O(nk) ( , T(n) > 1). 2.2-3 (2.9). 2.2-4 , lg(n!) = (nlgn) n! = o(nn). 2.2-5? dlgne! ? dlglgne! ? 2.2-6? ( n): lg(lg n) lg (lgn)?
  • 42. 42 2 2.2-7 (2.15). 2.2-8 : Fi+2 > 'i i > 0 ( ' | ). 2-1 p(n) = a0+a1n+:::+adnd | d, ad > 0. , . p(n) = O(nk) k > d. . p(n) = (nk) k 6 d. . p(n) = (nk) k = d. . p(n) = o(nk) k > d. . p(n) = !(nk) k < d. 2-2 , A O, o, , ! B (k > 1, " > 0, c > 1 | ). A B O o ! . lgk n n" . nk cn . pn nsinn . 2n 2n=2 . nlgm mlgn . lg(n!) lg(nn) 2-3 . 30 - ( O( )) , - ( ): lg(lg n) 2lg n ( p 2)lgn n2 n! (lgn)! (3=2)n n3 lg2 n lg(n!) 22n n1=lgn lnlnn lg n n 2n nlglgn lnn 1 2lgn (lgn)lgn en 4lgn (n+ 1)! plgn lg lgn 2 p2lgn n 2n nlgn 22n+1 . f(n), - gi (f(n) O(gi(n)) gi(n) O(f(n))).
  • 43. 2 43 2-4 f(n) g(n) - n. , . f(n) = O(g(n)), g(n) = O(f(n))? . f(n) + g(n) = (min(f(n) g(n)))? . f(n) = O(g(n)) lg(f(n)) = O(lg(g(n))), lg(g(n)) > 0 f(n) > 1 n? . f(n) = O(g(n)) 2f(n) = O(2g(n))? . f(n) = O((f(n))2)? . f(n) = O(g(n)) g(n) = (f(n))? . f(n) = (f(n=2))? . f(n) + o(f(n)) = (f(n))? 2-5 - - . 1 , . f(n) g(n) | - . , f(n) = 1(g(n)), c, f(n) > cg(n) > 0 - n. . , f(n) g(n), - n, f(n) = O(g(n)), f(n) = 1(g(n)), (g(n)) . . - 1 ? f(n) = O(g(n)) , - f(n) . - O0 , f(n) = O0(g(n)), jf(n)j = O(g(n)). . - 2.1? : , f(n) = ~O(g(n)), c k, 0 6 f(n) 6 cg(n)lgk n n. . ~ ~ 2.1. 2-6 , . f(n) | , f(n) < n. f(i)(n), f(0)(n) = n f(i)(n) = f(f(i;1)(n)) i > 0. c fc (n) -
  • 44. 44 2 i > 0, f(i)(n) 6 c. ( , fc | f, n , c.) , fc (n) . f(n) c fc : f(n) c fc (n) . lgn 1 . n ;1 0 . n=2 1 . n=2 2 . pn 2 . pn 1 . n1=3 2 . n=lgn 2 121], O- - (P. Bachmann, 1892). - o(g(n)) (E. Landau) 1909 - . - - 124]: - O- ( - ). . 121, 124] 33]. - , , , . , - n ( ). , - : 1], 27]. ( ., , 12] 192]). 121] - , - .
  • 45. 3 (for, while), . , - 1.2, j- , j. nX j=1 j (n2). ( , 4 ). 3.1 . 3.2 - - . 3.1. a1 + a2 + :::+ an nX k=1 ak: n = 0 0. , | . ( , .) . (series) a1 + a2 + a3 + ::: 1X k=1 ak
  • 46. 46 3 limn!1 nX k=1 ak: , , (di- verges) . P1 k=1 jakj - , P1 k=1 ak (absolutely convergent series) , . - . , nX k=1 (cak + bk) = c nX k=1 ak + nX k=1 bk c a1 ::: an b1 ::: bn. , . nX k=1 k = 1 + 2+ :::+ n , (arithmetic series). - nX k=1 k = 1 2n(n + 1) = (3.1) = (n2): (3.2) x 6= 1 (geometric ex- ponential series) nX k=0 xk = 1 + x + x2 + :::+ xn
  • 47. 47 nX k=0 xk = xn+1 ;1 x;1 : (3.3) ( jxj < 1) 1X k=0 xk = 1 1; x: (3.4) 1+1=2+1=3+:::+1=n+::: n- (nth harmonic number) Hn = 1 + 1 2 + 1 3 + :::+ 1 n = nX k=1 1 k = lnn + O(1): (3.5) - , . , - (3.4) x, 1X k=0 kxk = x (1;x)2: (3.6) a0 a1 ::: an - nX k=1 (ak ; ak;1) = an ; a0 (3.7) ( ). - - telescoping series. , n;1X k=0 (ak ; ak+1) = a0 ; an:
  • 48. 48 3 Pn;1 k=1 1 k(k+1). - 1 k(k+1) = 1 k ; 1 k+1, , n;1X k=1 1 k(k + 1) = n;1X k=1 1 k ; 1 k + 1 = 1 ; 1 n: a1 ::: an nY k=1 ak: n = 0 defn (product) - 1. : lg nY k=1 ak = nX k=1 lgak: 3.1-1 Pn k=1(2k ; 1). 3.1-2? , - , Pn k=1 1=(2k ; 1) = ln( pn) + O(1). 3.1-3? , P1 k=0(k ;1)=2k = 0. 3.1-4? P1 k=1(2k + 1)x2k. 3.1-5 , O- . 3.1-6 , - - . 3.1-7 Qn k=1 2 4k. 3.1-8? Qn k=2(1 ;1=k2).
  • 49. 49 3.2. , - ( ). , . : , Sn = Pn k=1 k n(n+1)=2. n = 1 . , Sn = n(n + 1)=2 n n + 1. , n+1X k=1 k = nX k=1 k + (n+ 1) = n(n+ 1)=2+ (n+ 1) = (n+ 1)(n+ 2)=2: . , - , Pn k=0 3k O(3n). , , Pn k=0 3k 6 c 3n c ( ). n = 0 P0 k=0 3k = 1 6 c 1 c > 1. n, n + 1. : n+1X k=0 3k = nX k=0 3k + 3n+1 6 c3n + 3n+1 = 1 3 + 1 c c3n+1 6 c3n+1: , (1=3+ 1=c) 6 1, . . c > 3=2.Pn k=0 3k = O(3n), . , - , - . , Pn k=1 k = O(n). ,P1 k=1 k = O(1). - n, n. , n+1X k=1 k = nX k=1 k + (n+ 1) = O(n)+ (n+ 1) !] = O(n+ 1): , , O(n), n. , ( ,
  • 50. 50 3 ). , -Pn k=1 k nX k=1 k 6 nX k=1 n = n2: nX k=1 ak 6 namax amax | a1 ::: an. | . ,Pn k=0 ak , ak+1=ak 6 r k > 0 r < 1. ak 6 a0rk, : nX k=0 ak 6 1X k=0 a0rk = a0 1X k=0 rk = a0 1 1 ;r: P1 k=1 k3;k. 1=3, (k + 1)3;(k+1) k3;k = 1 3 k + 1 k 6 2 3 k > 1. , (1=3)(2=3)k, 1X k=1 k3;k 6 1X k=1 1 3 2 3 k = 1 3 1 1; 2 3 = 1: , 1, r < 1, . , (k + 1)- k- k k+1 < 1. 1X k=1 1 k = limn!1 nX k=1 1 k = limn!1 (lgn) = 1: r, .
  • 51. 51 . Pn k=1 k. - , Pn k=1 k > n. O(n2) , - : nX k=1 k = n=2X k=1 k + nX k=n=2+1 k > n=2X k=1 0 + nX k=n=2+1 n 2 = n 2 2 : ( , , - ). - , ( k0) nX k=0 ak = k0X k=0 ak + nX k=k0+1 ak = (1)+ nX k=k0+1 ak: , 1X k=0 k2 2k (k + 1)2=2k+1 k2=2k = (k + 1)2 2k2 1. , , . (k > 3) 8=9, 1X k=0 k2 2k = 2X k=0 k2 2k + 1X k=3 k2 2k 6 O(1)+ 9 8 1X k=0 8 9 k = O(1) | . - . , , Hn = Pn k=1 1 k. 1 n blgnc - 1+(1=2+1=3)+(1=4+1=5+1=6+1=7)+:::. 1 ( ), - blgnc + 1 ( ). , 1+ 1=2+ 1=3+ :::+ 1=n 6 lgn + 1: (3.8)
  • 52. 52 3 fPn k=m f(k) : nZ m;1 f(x)dx 6 nX k=m f(k) 6 n+1Z m f(x)dx: (3.9) , . 3.1, ( - ) ( - ) ( ). - f: n+1Z m f(x)dx 6 nX k=m f(k) 6 nZ m;1 f(x)dx: (3.10) : nX k=1 1 k > n+1Z 1 dx x = ln(n + 1) (3.11) ( ) nX k=2 1 k 6 nZ 1 dx x = lnn nX k=1 1 k 6 lnn + 1: (3.12) 3.2-1 , Pn k=1 1 k2 - ( n). 3.2-2 blgncX k=0 dn=2ke:
  • 53. 53 . 3.1 Pn k=m f(k) . - . . . ( ) , Rn m;1 f(x)dx 6 Pn k=m f(k). ( ) - , , Pn k=m f(k) 6 Rn+1 m f(x)dx.
  • 54. 54 3 3.2-3 , , n- (lgn). 3.2-4 Pn k=1 k3 . 3.2-5 - - (3.10)? 3-1 ( r > 0 s > 0 ): . Pn k=1 kr. . Pn k=1 lgs k. . Pn k=1 kr lgs k. 121] | . ( - 12] 192]).
  • 55. 4 , - , - . (recur- rences). , 1, - Merge-Sort T(n) = ( (1) n = 1, 2T(n=2)+ (n) n > 1. (4.1) ( ), T(n) = (nlgn). , , . . ( O ) . - , , , - ( , substitution method). - , , , ( , iteration method). , - T(n) = aT(n=b)+ f(n) a > 1, b > 1 | , f(n) | - . - (master theorem). - , . - , . , Merge-
  • 56. 56 4 Sort (T(n) - n): T(n) = ( (1) n = 1, T(dn=2e)+ T(bn=2c)+ (n) n > 1. (4.2) , , , T(n) = (1) n. , - (4.1) T(n) = 2T(n=2)+ (n): (4.3) , ( T(1)) - , T(n). , , - , ( ) , . , , ( . 4.1 4.5). 4.1. : . , , . , - . , T(n) = 2T(bn=2c)+ n (4.4) (4.2) (4.3). , T(n) = O(nlgn), . . T(n) 6 cnlgn c > 0. - . bn=2c, . . T(bn=2c) 6 cbn=2clg(bn=2c). , T(n) 6 2(cbn=2clg(bn=2c))+ n 6 6 cnlg(n=2)+ n = cnlgn ;cnlg2 + n = cnlgn ;cn+ n 6 6 cnlgn: c > 1. - , . . n. - , n = 1 - , c ( lg1 = 0). - ,
  • 57. 57 n, . c , T(n) 6 cnlgn n = 2 n = 3. n , n = 1 ( bn=2c > 2 n > 3). ? . - . . T(n) = 2T(bn=2c+ 17) + n: (4.4) 17 . , , - : n bn=2c + 17 bn=2c . , T(n) = O(nlgn) , ( . . 4.1-5). . - , . , - (4.1) T(n) = (n) ( n), T(n) = O(n2) ( ). - , , . , . , . . T(n) = T(bn=2c)+ T(dn=2e)+ 1: , T(n) = O(n). - . , , , T(n) 6 cn - c. T(n) 6 cbn=2c+ cdn=2e+ 1 = cn+ 1 c T(n) 6 cn. , O(n2), :
  • 58. 58 4 , , . : T(n) 6 cn;b - b c. T(n) 6 (cbn=2c;b)+ (cdn=2e;b)+ 1 = cn; 2b+ 1 6 cn;b b > 1. - c . : , ( ) , - ? | , . : T(n) = O(n) (4.4). , T(n) 6 cn, - T(n) 6 2(cbn=2c)+ n 6 cn+ n = O(n): , , , - , cn c c, O(n). . , - T(n) = 2T(bpnc) + lnn , . m = lgn, T(2m) = 2T(2m=2) + m: T(2m) S(m), S(m) = 2S(m=2)+ m (4.4). : S(m) = O(mlgm). T(n) S(m), T(n) = T(2m) = S(m) = O(mlgm) = O(lgnlglgn):
  • 59. 59 , , , - T(n) n, . , S(m) T(n) n, 2m. 4.1-1 , T(n) = T(dn=2e)+1 , T(n) = O(lgn). 4.1-2 , T(n) = 2T(bn=2c) + n T(n) = (nlgn), T(n) = (nlgn). 4.1-3 n = 1 (4.4), - , ? 4.1-4 , (4.2) (nlgn). 4.1-5 , T(n) = 2T(bn=2c + 17) + n T(n) = O(nlgn). 4.1-6 T(n) = 2T( pn) + 1, ( , , | ). 4.2. , ? , - ( ), , . T(n) = 3T(bn=4c)+ n: , : T(n) = n + 3T(bn=4c) = n + 3(bn=4c+ 3T(bn=16c)) = n + 3(bn=4c+ 3(bn=16c+ 3T(bn=64c))) = n + 3bn=4c+ 9bn=16c+ 27T(bn=64c) , , (2.4), bbn=4c=4c = bn=16c bbn=16c=4c = bn=64c. , ? i- - T(bn=4ic), T(1), bn=4ic = 1, . .
  • 60. 60 4 i > log4 n. , bn=4ic 6 n=4i, ( , - 3log4 n ): T(n) 6 n+ 3n=4+ 9n=16+ 27n=64+ :::+ 3log4 n (1) 6 n 1X i=0 3 4 i + (nlog4 3) = 4n + o(n) = O(n) ( log4 n + 1 , 3log4 n nlog4 3, o(n), log4 3 < 1.) - . : , . , ( ). ( - ). , - , ( n = 4k ). , - , , . 4.3, - ( . 4-5). (recursion tree). , . 4.1 T(n) = 2T(n=2)+ n2: , n | . ( ) ( ), T(n), - T(n), T(n=2), T(n=4) . . - T(n), - . n2, | (n=2)2 +(n=2)2 = n2=2, | (n=4)2 + (n=4)2 + (n=4)2 + (n=4)2 = n2=4. - , - . , T(n) = (n2). . 4.2 | - T(n) = T(n=3)+ T(2n=3)+ n
  • 61. 61 Total= . 4.1 T(n) = 2T(n=2) +n2 . - ( ) lgn ( lgn+ 1 ). . 4.2 T(n) = T(n=3) +T(2n=3) +n.
  • 62. 62 4 ( ). n. , 1. - , n ! (2=3)n ! (2=3)2n ! ! 1 k = log3=2 n ( k (2=3)kn = 1). T(n) O(nlgn). 4.2-1 ( ) T(n) = 3T(bn=2c) + n, T(n). 4.2-2 , , T(n) = T(n=3)+ T(2n=3)+ n T(n) = (nlgn). 4.2-3 T(n) = 4T(bn=2c) + n T(n). 4.2-4 T(n) = T(n ; a) + T(a) + n, a > 1 | . 4.2-5 T(n) = T( n)+T((1; )n)+n, | 0 < < 1. 4.3. T(n) = aT(n=b)+ f(n) (4.5) a > 1 b > 1 | , f | ( ) . , . (4.5) , n a n=b, ( T(n=b)) - . f(n) ( 1.3.2 f(n) = C(n)+ D(n)). , Merge-Sort a = 2, b = 2, f(n) = (n). , (4.5) - : n=b .
  • 63. 63 T(n=b) T(bn=bc) T(dn=be). , , , . 4.1. a > 1 b > 1 | , f(n) | , T(n) n T(n) = aT(n=b)+ f(n) n=b dn=be, bn=bc. : 1. f(n) = O(nlogb a;") " > 0, T(n) = (nlogb a). 2. f(n) = (nlogb a), T(n) = (nlogb a lgn). 3. f(n) = (nlogb a+") " > 0 af(n=b) 6 cf(n) c < 1 n, T(n) = (f(n)). ? - f(n) nlogb a - , T(n) ( 1 3). ( 2), - (nlogb a lgn) = (f(n)lgn). . - , f(n) , nlogb a: - n" " > 0. f(n) nlogb a , af(n=b) 6 cf(n) , , . , - : , , f(n) , nlogb a, , - . 2 3. , - . , - . T(n) = 9T(n=3)+ n: a = 9, b = 3, f(n) = n, nlogb a = nlog3 9 = (n2).
  • 64. 64 4 f(n) = O(nlog3 9;") " = 1, , T(n) = (n2). T(n) = T(2n=3)+ 1: a = 1, b = 3=2, f(n) = 1 nlogb a = nlog3=2 1 = n0 = 1. 2, f(n) = (nlogb a) = (1), , T(n) = (lgn). T(n) = 3T(n=4)+ nlgn a = 3, b = 4, f(n) = nlgn nlogb a = nlog4 3 = O(n0 793). ( " 0 2) , - . n af(n=b) = 3(n=4)lg(n=4) 6 (3=4)nlgn = cf(n) c = 3=4. T(n) = (nlgn). , : T(n) = 2T(n=2)+nlgn. a = 2, b = 2, f(n) = nlgn, nlogb a = n. , f(n) = nlgn , nlogb a, - : f(n)=nlogb a = (nlgn)=n = lgn n" " > 0. - 2 3 . 4.4-2. 4.3-1 , . T(n) = 4T(n=2)+ n . T(n) = 4T(n=2)+ n2 . T(n) = 4T(n=2)+ n3. 4.3-2 A T(n) = 7T(n=2)+n2, A0 | - T0(n) = aT0(n=4)+n2. a A0 , A? 4.3-3 , , T(n) = T(n=2)+ (1) ( , . . 1.3-5) T(n) = (lgn). 4.3-4 , ( 3) - : f, ", - .
  • 65. 4.4 4.1 65 ? 4.4 4.1 4.1 - , . . - n, b - . - , - . . - : - , b, , . , , , : T(n) , T(n) = O(n) n, , n. ( , T(n) = n n = 1 2 4 8 ::: T(n) = n2 n.) 4.4.1. T(n) , ( ) b > 1 ( ) (4.5), . . T(n) = aT(n=b)+ f(n): T : ( 4.2), ( - 4.3) ( 4.4). 4.2. a > 1, b > 1 | , f(n) | , b. T(n) | , b T(n) = aT(n=b)+ f(n) n > 1, T(1) > 0. T(n) = (nlogb a) + logb n;1X j=0 ajf(n=bj): (4.6)
  • 66. 66 4 . 4.3 T(n) = aT(n=b) + f(n) a- logb n nlogb a. - , (4.6). . , T(n) = f(n)+ aT(n=b) = f(n)+ af(n=b)+ a2T(n=b2) = f(n)+ af(n=b)+ a2f(n=b2) + ::: + alogb n;1f(n=blogb n;1) + alogb nT(1): alogb n = nlogb a, (nlogb a). , . 4.2 ( . 4.3), a ( ). f(n), a - f(n=b), a2 f(n=b2) . . j aj | f(n=bj). - logb n , T(1) alogb n = nlogb a .
  • 67. 4.4 4.1 67 (4.6) , : j- ajf(n=bj), logb n;1X j=0 ajf(n=bj): , . nlogb a 1, - (nlogb a). , - . , | , . (4.6). 4.3. a > 1, b > 1 | , f(n) | - , b. - g(n), g(n) = logb n;1X j=0 ajf(n=bj) (4.7) ( n, b). 1. f(n) = O(nlogb a;") " > 0, g(n) = O(nlogb a). 2. f(n) = (nlogb a), g(n) = (nlogb a lgn). 3. af(n=b) 6 cf(n) c < 1 n > b, g(n) = (f(n)). . 1. - f(n) = n , = logb a;" f (4.7) : ( = logb a) g(n) = f(n) + af(n=b)+ a2f(n=b2) + :::+ ak;1f(n=bk;1) = n + a(n=b) + a2(n=b2) + :::+ ak;1(n=bk;1) (4.8) - k = logb n a=b 1, < logb a b < a. - ( ). O(ak) = O(nlogb a). .
  • 68. 68 4 2. : g(n) = f(n) + af(n=b)+ a2f(n=b2) + ::: = n + a(n=b) + a2(n=b2) + ::: (4.9) = logb a - 1 . logb n, - nlogb a logb n = (nlogb a lgn): 2 . 3. f , - , c < 1. c, - ( 1=(1 ; c)) ( , - ). , g(n) = (f(n)) n, b. . , n b. 4.4. a > 1, b > 1 | , f(n) | , b. T(n) | , b T(n) = aT(n=b)+ f(n) n > 1 T(1) > 0. : 1. f(n) = O(nlogb a;") " > 0, T(n) = (nlogb a). 2. f(n) = (nlogb a), T(n) = (nlogb a)lgn. 3. f(n) = (nlogb a+") " > 0 af(n=b) 6 cf(n) c < 1 - n, T(n) = (f(n)). ??????? ? . 4.2 4.3. T(n) = (nlogb a) + O(nlogb a) = (nlogb a): T(n) = (nlogb a) + (nlogb a lgn) = (nlogb a lgn):
  • 69. 4.4 4.1 69 T(n) = (nlogb a) + (f(n)) = (f(n)): , f(n) = (nlogb a+") " > 0 , ( . . 4.4-3). 4.4 . 4.4.2. n, - b. n=b - T(n) = aT(dn=be)+ f(n) (4.10) T(n) = aT(bn=bc) + f(n): (4.11) , . , . n n=b n=b2 ::: - ni, : ni = ( n i = 0, dni;1=be i > 0. (4.12) ( ). - | , . , logb n - , n ( b) . , dxe 6 x + 1 , n0 6 n n1 6 n b + 1 n2 6 n b2 + 1 b + 1 n3 6 n b3 + 1 b2 + 1 b + 1 :::::::::::::::::::::: 1 + 1=b + 1=b2 + ::: 6 1=(b ; 1), i = blogb nc ni 6 n=bi + b=(b;1) 6 b + b=(b;1) = O(1).
  • 70. 70 4 (4.10), T(n) = f(n0) + aT(n1) = f(n0) + af(n1)+ a2T(n2) 6 f(n0) + af(n1)+ a2f(n2) + :::+ + ablogb nc;1f(nblogb nc;1) + ablogb ncT(nblogb nc) = (nlogb a) + blogb nc;1X j=0 ajf(nj): (4.13) (4.6), n b. , . , T(ndlogbne) . , f(n) , . . n, n0. , n0. .] g(n) = blogb nc;1X j=0 ajf(nj): (4.14) - , ( - ), ( ) ( - ). - , - ( , ). , - n=bi ni. - , b=(b ; 1), - . , f(nj) = O(nlogb a=aj) = O((n=bj)logb a), - 4.3 ( 2). , bj=n 6 1 j 6 blogb nc. f(n) = O(nlogb a) , c
  • 71. 4 71 nj f(nj) 6 c n bj + b b;1 logb a = c nlogb a aj 1+ bj n b b;1 logb a 6 c nlogb a aj 1+ b b;1 logb a = O nlogb a aj : , c(1 + b=(b ; 1))logb a | - . , 2 . 1 . f(nj) = O(nlogb a;") , 2, . , n . , , nj n=bj. 4.4-1? ni (4.12), b| . 4.4-2? , f(n) = (nlogb a lgk n), k > 0, (4.5) T(n) = (nlogb a lgk+1 n). b. 4.4-3? , 3 - : (af(n=b) 6 cf(n) - c < 1) , " > 0, f(n) = (nlogb a+"). 4-1 - ( , T(n) | - n 6 2): . T(n) = 2T(n=2)+ n3. . T(n) = T(9n=10)+ n.
  • 72. 72 4 . T(n) = 16T(n=4)+ n2. . T(n) = 7T(n=3)+ n2. . T(n) = 7T(n=2)+ n2. . T(n) = 2T(n=4)+ pn. . T(n) = T(n;1) + n. . T(n) = T( pn) + 1. 4-2 A 1::n] 0 n, - . , - B 0::n] , A, , ( - O(n)). A . - A: - A. , - O(n). 4-3 , - , | . , , . - . - : 1. (1). 2. (N), N | . 3. , - . (q ;p + 1), A p::q]. . ( . 1.3-5). - ? ( - , .) . Merge-Sort - 1.3.1. 4-4 T(n) . , T(n) | n 6 8. . T(n) = 3T(n=2)+ nlgn.
  • 73. 4 73 . T(n) = 3T(n=3+ 5)+ n=2. . T(n) = 2T(n=2)+ n=lgn. . T(n) = T(n ;1) + 1=n. . T(n) = T(n ;1)+ lgn. . T(n) = pnT( pn) + n. 4-5 T(n) n, - b. - n? . T(n) h(n) | , - ( - ), T(n) 6 h(n) n, - b > 1. , , h : h(n) = O(h(n=b)). , T(n) = O(h(n)). . T T(n) = aT(n=b) + f(n) n > n0 a > 1, b > 1 f(n) - . T(n) n 6 n0, T(n0) 6 aT(n0=b)+f(n0): , T(n) . . 4.1 f(n). 4.4. 4-6 (2.13). . - (generating function), - (formal power series) F = 1X i=0 Fizi = 0 + z + z2 + 2z3 + 3z4 + 5z5 + 8z6 + 13z7 + ::: . , F(z) = z + zF(z)+ z2F(z). . , F(z) = z 1 ;z ;z2 = z (1 ;'z)(1 ; b'z) = 1p 5 1 1 ;'z ; 1 1 ; b'z ' = 1 + p 5 2 = 1 61803::: b' = 1; p 5 2 = ;0 61803:::
  • 74. 74 4 . , F(z) = 1X i=0 1p 5 ('i ; b'i)zi: . , Fi i > 0 'i= p 5 . ( : jb'j < 1.) . , Fi+2 > 'i i > 0. 4-7 n , , | . - , . - , . A B B A B A B A B A . , , , - ( ). . n , . , bn=2c , - . . . , (n) . ( .) : - n , - . , , . , . - O(n) . - , - . , , , . - , - : .]
  • 75. 4 75 (L. Fibonacci) 1202 . (A. De Moivre) ( . 4-6). - - , 26], - ( . 4.4-2). 121] 140] , . - 164].
  • 77. 5 , , - , , , . , , - ( ). 5.1. (set) (members, elements). x S, x 2 S ( - x S ). x S, x =2 S. - . , S = f1 2 3g - 1 2 3 . 2 , 4 | , 2 2 S, 4 =2 S. , - . A B (are equal), . A = B. , f1 2 3 1g= f1 2 3g= f3 2 1g. - : ? (empty set), . Z (integers) Z = f::: ;2 ;1 0 1 2 :::g R ( ) (real numbers) N (natural numbers) N = f0 1 2 :::g1 A 1 1 | .
  • 78. 78 5 B, ( x 2 A x 2 B), , A - (subset) B A B. A B, A (proper subset) B A B. ( A B , .) A A A. A B - , A B B A. A, B C A B B C A C. A ? A. : A , , B. , fx : x 2 Z x=2 | g. x Z, ... . A B - , - (set operations): (intersection) A B A B = fx : x 2 A x 2 Bg: (union) A B - A B = fx : x 2 A x 2 Bg: (di erence) A B - AnB = fx : x 2 A x =2 Bg: - : (empty set laws): A ? = ? A ? = A: (idempotency laws): A A = A A A = A: (commutative laws): A B = B A A B = B A:
  • 79. 79 ??? n . 5.1 , - (5.2). A B C . (associative laws): A (B C) = (A B) C A (B C) = (A B) C: (distributive laws): A (B C) = (A B) (AC) A (B C) = (A B) (A C) (5.1) (absorption laws): A (A B) = A A (AB) = A (DeMorgan's laws): A n(B C) = (AnB) (AnC) A n(B C) = (AnB) (AnC) (5.2) . 5.1 (5.1) A, B C . , (universe). , , , Z . U , (complement) A A = U nA. A U : A = A A A = ? A A = U: (5.2) , A B U A B = A B A B = AB: A B (disjoint), , . . AB = ?. , S = fSig (partition) S,
  • 80. 80 5 Si (are pairwise disjoint), . . Si Sj = ? i 6= j, S, . . S = Si2S Si , S S, s 2 S Si . S (car- dinality), (size), jSj. , . - : j?j = 0. ( nite) | (in nite) - . , , - , (countably in nite) , , - (uncountable). Z , R . A B jA Bj = jAj+ jBj; jABj (5.3) , jA Bj 6 jAj+ jBj A B , jA Bj = 0 : jA Bj = jAj+jBj. A B, jAj 6 jBj. n n- (n- set) (sin- gleton). k- subset, k- ( - - ). S , S - 2S - (power set). , 2fa bg = f? fag fbg fa bgg. S 2S - 2jSj . a b (a b) (a b) = fa fa bgg, (a b) (b a).
  • 81. 81 . , , (a b) = (c d) (a = c) (b = d).] (cartesian product) A B , A, | B. : A B. A B = f(a b) : a 2 A b 2 Bg , fa bg fa b cg = f(a a) (a b) (a c) (b a) (b b) (b c)g. A B : jA Bj = jAj jBj: (5.4) n A1 A2 ::: An n- (n-tuples) A1 A2 ::: An = f(a1 a2 ::: an) : ai 2 Ai i = 1 2 ::: ng ( (a b c) ((a b) c), (a b c d) ((a b c) d) ). : jA1 A2 ::: Anj = jA1j jA2j ::: jAnj An = A A ::: A n A An jAjn. , n- n ( . . 5.3). 5.1-1 - (5.1). 5.1-2 - : A1 A2 :::An = A1 A2 ::: An A1 A2 ::: An = A1 A2 ::: An:
  • 82. 82 5 5.1-3 (5.3), - (principle of inclusion and exclusion): jA1 A2 ::: Anj = jA1j+ jA2j+ :::+ jAnj ; jA1 A2j; jA1 A3j; ::: + jA1 A2 A3j+ ::: + (;1)n;1jA1 A2 ::: Anj 5.1-4 , . 5.1-5 , S n - , - 2S 2n . ( - , S 2n .) 5.1-6 n- , - . 5.2. (binary relation) R A B - A B. (a b) 2 R, aRb , a R b. A A A. , f(a b) : a b 2 N a < bg. n- - (n-ary relation) A1 A2 ::: An A1 A2 ::: An. R A A (re ex- ive), aRa a 2 A. , = 6 - N, < . R (symmetric), aRb bRa a b 2 A. , < 6 | . R (transitive), aRb bRc aRc
  • 83. 83 a b c 2 A. , < , 6 = , R = f(a b) : a b 2 N a = b; 1g | , 3R4 4R5, 3R5. , , - , - (equivalence relation). R | A, (equiv- alence class) a 2 A a] = fb 2 A : aRbg , a. , - , a b , a + b . - ( R) - . , a + a , a+ b = b+ a, R , a + b b + c | , a+ c = (a + b)+ (b+ c) ; 2b - , R . 4 4] = f0 2 4 6 :::g, 3 3] = f1 3 5 7 :::g. : 5.1 ( ). A A. , - A . . , - , , - A. - a 2 a], a. , a] b] , - . c | , aRc, bRc, cRb ( - ) aRb ( ). , b] a]: x | b, bRx aRx. , a] b] a] = b]. . R A - , aRb bRa a = b: , 6 - , a 6 b b 6 a a = b. - , - (partial order), - (partially ordered set). ,
  • 84. 84 5 - , . , , | x, yRx y. - : x (max- imal), , . . xRy - x = y. , - ( ), ( ). (total order, linear or- der), a b aRb, bRa ( | ). , 6 - , - | ( , ). 5.2-1 , - Z , - . 5.2-2 , n a b (mod n) - Z. ( , a b (mod n), q, a;b = qn.) ? 5.2-3 , . , . , . , . 5.2-4 S | , R | - S. , R , . 5.2-5 , - , : aRb bRa , aRa . ?
  • 85. 85 5.3. A B. (function), - A B, f A B, - : a 2 A b 2 B, (a b) 2 f. A - (domain) B , - codomain. , f - A B. - A B, B - A. , - f = f(a b) : a 2 N b = a mod 2g f : N ! f0 1g, a b 2 f0 1g, a mod 2. f(0) = 0, f(1) = 1, f(2) = 0 . , g = f(a b) : a b 2 N a + b g , ( ) (1 3) (1 5), , , . (a b) f, - , , b (value) (argument) a, b = f(a). - , , - . , f: N ! N f(n) = 2n, , f = f(n 2n) : n 2 Ng. f g: A ! B (equal), f(a) = g(a) a 2 A. ( , - f: A ! B1 g: A ! B2 B1 6= B2, f(a) = g(a) a!) ( nite sequence) n - f, f0 1 2 ::: n;1g. , . . hf(0) f(1) ::: f(n;1)i. - (in nite sequence) , N . , , - (2.13), h0 1 1 2 3 5 8 13 21 :::i.
  • 86. 86 5 - , - . , f : A1 A2 ::: An ! B, f(a1 a2 ::: an) f((a1 a2 ::: an)). ai (ar- gument) f, n- (a1 a2 ::: an). b = f(a) f : A ! B a 2 A, b 2 B, b (image) a. A0 A f(A0) f(A0) = fb 2 B : b = f(a) a 2 A0g: (range) f , . . f(A). , - f : N ! N, f(n) = 2n, , - f(N) = fm : m = 2n n 2 Ng. f: A ! B (surjection), - , B, . . b 2 B a 2 A. - , f : N ! N, f(n) = bn=2c, - . f(n) = 2n , , f: N ! N, , - - . f : A ! B, , A B (onto B). f: A ! B (injection), - , , . . f(a) 6= f(a0) a 6= a0. , f(n) = 2n N N, - n (n=2, n ). f(n) = bn=2c , ( ) f(2) = f(3) = 1. one-to-one function . f: A ! B (bijection), - . , f(n) = (;1)ndn=2e, ,
  • 87. 87 N Z, : 0! 0 1!;1 2! 1 3!;2 4! 2 ... , Z N. - , Z - N. - (one-to-one correspon- dence), - A B. , - A , (permutation) - A. f , (inverse) f;1 f;1(b) = a , f(a) = b: , f(n) = (;1)ndn=2e f;1(m) = ( 2m m > 0, ;2m;1 m < 0. 5.3-1 A B | , f : A ! B | - . , . f | , jAj 6 jBj . f | , jAj > jBj. 5.3-2 f : N ! N, f(x) = x+1? Z! Z, . 5.3-3 . ( , .) 5.3-4? f: Z! Z Z.
  • 88. 88 5 . 5.2 . ( ) - (V E), V = f1 2 3 4 5 6g E = f(1 2) (2 2) (2 4) (2 5) (4 1) (4 5) (5 4) (6 3)g. (2 2) - . ( ) G = (V E), V = f1 2 3 4 5 6g E = f(1 2) (1 5) (2 5) (3 6)g. 4 ( ). ( ) ( ), f1 2 3 6g. 5.4. , . , - , . 23, . (directed graph) (V E), V | , E | - V, . . V V. (digraph). - V (vertex set) (vertex vertices). E (edge set) - (edges). 5.2 ( ) - f1 2 3 4 5 6g. , | . , - (self-loops), . (undirected) G = (V E) (V) (unordered) : fu vg, u v 2 V u 6= v. - (u v) fu vg (u v) (v u) . - - , ( ). . 5.2 ( ) - f1 2 3 4 5 6g.
  • 89. 89 - ( - ). (u v) , (incident from, leaves) u (incident to, enters) v. , . 5.2 ( ) , 2 ((2 2) (2 4) (2 5)) , ((1 2) (2 2)). (u v) - , (incident on vertices) u v. , . 2.5 ( ) , 2 ( (1 2) (2 5)). G (u v), , v u (is adjacent to u). , - . v u , u ! v. 5.2 ( ) 5.2 ( ) 2 - 1, 1 2 ( (2 1) ). (degree) - . , . 5.2 ( ) 2 2. - (out-degree), - , (in-degree), . - (degree) . , - 2 . 5.2 ( ) 2, 3 5. k (path of length k) u v - hv0 v1 v2 ::: vki, v0 = u, vk = v (vi;1 vi) 2 E i = 1 2 ::: k. - , k k . (con- tains) v0 v1 ::: vk (v0 v1) (v1 v2) ::: (vk;1 vk). v0 , vk | , v0 vk. u u0 p u u0, , u0 - u p (u0 is reachable from u via p). ( ) u p u0. (simple), - . , . 5.2 ( ) h1 2 5 4i - 3, h2 5 4 5i , - . (subpath) p = hv0 v1 ::: vki , , . . hvi vi+1 ::: vji i j, - 0 6 i 6 j 6 k.
  • 90. 90 5 (cycle) , - - . hv0 v1 ::: vki , ( ), . . v1 v2 ::: vk . - 1. , - : k - k ( k ). , . 5.2 ( ) h1 2 4 1i, h2 4 1 2i h4 1 2 4i . , h1 2 4 5 4 1i . h2 2i, - - (2 2). , - - , (simple). hv0 v1 ::: vki - ( ) , k > 3, v0 = vk v1 v2 ::: vk . , . 5.2 ( ) - h1 2 5 1i. , , (acyclic). (connected), - - . - - . - (connected components) . , . 5.2 ( ) - : f1 2 5g, f3 6g f4g. - , . (strongly connected), ( - ) . - (strongly connected com- ponents), - u v v u . , - . . 5.2 ( ) : f1 2 4 5g, f3g f6g. , f3 6g , 3 - 6, . G = (V E) G0 = (V0 E0) (isomorphic), f: V ! V0 , : (u v) 2 E , (f(u) f(v)) 2 E0. , - | , - . . 5.3 ( ) -
  • 91. 91 . 5.3 ( ) . ( ) : - 4, | . G G0 V = f1 2 3 4 5 6g V 0 = fu v w x y zg. f : V ! V0, f(1) = u, f(2) = v, f(3) = w, f(4) = x, f(5) = y, f(6) = z, - . , . 5.3 ( ) , 5 7 . , - , , 4, | . G0 = (E0 V0) (subgraph) G = (E V), E0 E V 0 V. G = (E V) V0, , , . . G0 = (E0 V0), E0 = f(u v) 2 E : u v 2 V0g G - V0 (subgraph of G induced by V0). . 5.2 ( ) f1 2 3 6g . 5.2 ( ) (1 2), (2 2), (6 3). G (directed version), fu vg (u v) (v u), . - , - (undirected version), , - (u v) (v u) fu vg. (neighbor) u , - ( ) , v u , v u
  • 92. 92 5 u v. v | u v u . . (complete) , - ( ). (V E) (bipartite), V - V1 V2 , - . - (forest), - ( - - ). - free tree. (directed acyclic graph) - dag ( ). . , (multigraph), , , - , - . - (hypergraph) , (hyperedges), - , . - - . 5.4-1 , - . . , - , (handshaking lemma): - . 5.4-2 , k > 3 - ( , , , ). 5.4-3 , ( - ) u v, u v. , , . 5.4-4 , (V E) 1: jEj > jVj;1
  • 93. 93 5.4-5 , - ( ) . , - , - ? 5.4-6 . 5.2 ( ) . 5.2 ( ). 5.4-7? - , - ? ( : , .) 5.5. , - . - . - 11.4 23.1 . 5.5.1. 5.4, ( , free tree) - . , ( ) , (forest) - , ( - ). . . 5.4 ( ) . 5.4 ( ) . 5.4 ( ) , . 5.4 ( ) , , . - . 5.2 ( ). G = (V E) | - . : 1. G ( ). 2. G - . 3. G , , .
  • 94. 94 5 . 5.4 ( ) . ( ) . ( ) , , , . . 5.5 u v 4. G jEj = jVj;1. 5. G jEj = jVj;1. 6. G , - . . (1) ) (2): , , , . p1 p2 u v ( . 5.5). , w | , x y | , w p1 p2. , , z. p0 w z ( x) p00 w z ( y). p0 p00 ( ), z p1 w, p2. ( p0 p00). (2) ) (3) , , . (u v) | - . , , u v | , . (3) ) (4) , , jEj > jVj;1 ( . 5.4- 4). , jEj 6 jVj ; 1, . n = 1 2 n;1 . G n > 3 - . G k > 2 -
  • 95. 95 ( , ). (3). - , jVj; k 6 jVj; 2. , jVj; 1 . (4) ) (5) jEj = jVj;1. , . , ( ). , ( ). , | , . (5) ) (6) G jEj = jVj ; 1. G k - . , , k - . , k = 1 . ( , (1) ) (2)), . (6) ) (1) , - . , . - , u v. , (u v) . - (u v), | , u v, . 5.5.2. . , (rooted tree), , ( ) , (root). - - nodes . 5.6 ( ) 12 7. x | r. r x , , (ancestors) x. y x, x (descendant) y. - . x, x, - (proper ancestors) (proper descendants) x. : -
  • 96. 96 5 = 4, 0, 1 . . . 5.6 ( ) 4. : ( 7) , ( , 1) , ( , 2) . . . ( ) , ( 3), . - , , .] x , x, x . - x (subtree rooted at x). , . 5.6 ( ) 8 8, 6, 5 9. (y x) | x, y - (parent) x, x y. - (father) (son), , - - , | . - .] , - . , , - siblings , , ( ) . , , (leaf, external node). , , (internal). - (degree). , , , , - ( , ). x (depth) - x.
  • 97. 97 . 5.7 . ( ) , - . - , | - . ( ) ( , - 7 5 , ). , . ( ) (a), , . - . (height) . (ordered tree) : - ( , , . .). . 5.6 - , . 5.5.3. . (binary tree) - , ( ), : , - (root), , - (left subtree) , , - (right subtree) . , , (emp- ty). nil. , (left child) (right child) . , , (child is absent). . 5.7 ( ). - , 2. , , 1 |
  • 98. 98 5 =3, 0, 1 . . . 5.8 3 8 7 . , - . . 5.7 ( , ) , . - . ( , ). - . 5.7 ( ). : k- (k-ary) k = 2. , - (positional tree) , - , . - 1, 2, 3 , ( ) , - (ith child is absent). k- , k. k- (complete k-ary tree) k- , k. ( - .) . 5.8 3. , k- h. 0, k - 1, k2 k kh h. , k- n logk n ( - , ). k- h 1 + k + k2 + :::+ kh;1 = kh ;1 k ; 1 ( . (3.3)). , - .
  • 99. 5 99 5.5-1 ( ), - A, B C. - A, B C A. ( ) A, B C A. A, B C A. 5.5-2 , n > 7 c n , n , n . 5.5-3 G = (V E) | , v0, v 2 V . , - G . 5.5-4 , - 2 . 5.5-5 , n - blgnc. 5.5-6? (internal path length) , 0 2, . - . n | , i e | . , e = i + 2n. 5.5-7? 2;d, d | . , 1 ( , Kraft inequality) 5.5-8? , L - , L=3 2L=3]. 5-1 k- (V E) - c: V ! f0 1 ::: k ; 1g, c(u) 6= c(v) u v. ( .) . , 2- .
  • 100. 100 5 . , - G : 1. G . 2. G 2- . 3. G . . d | G. , G (d + 1)- . . , G O(jVj) , G O( p jVj)- . 5-2 . ( , , .) . n > 2 ( ). . 6 , , , . . , . . n n=2 , , . 5-3 , - , , - . . , n , 3n=4 . . , 3=4 ( ) , , 3n=4 . . , n A B , jAj = bn=2c, jBj = dn=2e, , , O(lgn).
  • 101. 5 101 (G. Boole) - - , 1854 . ( - ) (G. Cantor) 1874{1895 . - (G.W. Leibnitz) - . - . 1736 , (L. Euler) , - . 94].
  • 102. 6 - . , . , - . 6.1 ( ). 6.2 - - . 6.3 - , . 6.4 - . - 6.5 ( ). 6.6 - : , - . 6.1. , . , n- n . - . , ( . . 5.1). , - , - . (rule of sum) , jA Bj = jAj + jBj A B ( - (5.3)).
  • 103. 103 , , 26 + 10 = 36 , 26, 10. (rule of product) , jA Bj = jAj jBj A B, . (5.4). , 28 4 , 28 4 = 112 ( ). (string - ) - - S ( ). , 8 - ( ) 3: 000 001 010 011 100 101 110 111: k k- (k-string). - (substring) s0 s - s. k- (k-substring), k. , 010 3- 01101001 ( 4), 111 | . k S Sk, jSjk - k. , 2k k. - : jSj jSj - , | k , jSj jSj ::: jSj (k ) . (permutation) S - , - . , 6 S = fa b cg : abc acb bac bca cab cba: n! n , n , n; 1 , n; 2 , . .
  • 104. 104 6 , , . S n k, n. n k k, S. ( | k-permutation.) n(n; 1)(n;2) (n ; k + 1) = n! (n; k)! (6.1) n , n;1 - , k- , - n; k + 1 . , 12 = 4 3 fa b c dg: ab ac ad ba bc bd ca cb cd da db dc: - ( n = k). (k-combinations) n k k- - n- . , fa b c dg 4 6 - fa bg fa cg fa dg fb cg fb dg fc dg: n k k! ( n k), k- k! , - . (6.1) , n k n! k!(n;k)!: (6.2) k = 0 1, ( , 0! = 1).
  • 105. 105 n k Ck n ( ) ;n k : Ck n = n k = n! k!(n; k)!: (6.3) k n ;k : Ck n = Cn;k n : (6.4) Ck n (bi- nomial coe cients), (binomial ex- pansion): (x + y)n = nX k=0 Ck nxkyn;k (6.5) ( (x + y)n, , - k x n ; k y, k n, . . Ck n). x = y = 1 2n = nX k=0 Ck n: (6.6) ( : 2n n - : Ck n k .) ( ). - . 1 6 k 6 n Ck n = n(n; 1) (n; k + 1) k(k ;1) 1 = n k n;1 k ;1 n ;k + 1 1 > n k k : (6.7)
  • 106. 106 6 k! > (k e)k, - (2.12), Ck n = n(n ;1) (n;k + 1) k(k ;1) 1 6 nk k! (6.8) 6 en k k : (6.9) 0 6 k 6 n ( . . 6.1-12) Ck n 6 nn kk(n;k)n;k (6.10) 00 = 1. k = n, 0 6 6 1, C n n 6 nn ( n) n((1; )n)(1; )n = 1 1 1; 1; !n (6.11) = 2nH( ) (6.12) H( ) = ; lg ;(1; )lg(1; ) (6.13) ( ) , - (bi- nary) entropy function. 0lg0 = 0, H(0) = H(1) = 0. 6.1-1 k- n? ( - , , .) n? 6.1-2 (boolean function) n m - | , ftrue falsegn ftrue falsegm. - n ? n m ? 6.1-3 n ( ) ? , - , .
  • 107. 107 6.1-4 - f1 2 ::: 100g , ? ( .) 6.1-5 Ck n = n kCk;1 n;1 (6.14) 0 < k 6 n. 6.1-6 Ck n = n n; kCk n;1 0 6 k < n. 6.1-7 k n, - , . , , Ck n = Ck n;1 + Ck;1 n;1: 6.1-8 6.1-7, Ck n n = 0 1 2 ::: 6 k 0 n - (C0 0 , C0 1 C1 1 , ). (Pascal's triangle). 6.1-9 nX i=1 i = C2 n+1: 6.1-10 , n > 0 Ck n ( k 0 n) k = bn=2c k = dn=2e ( n , | ). 6.1-11? , n > 0, j > 0, k > 0, j + k 6 n Cj+k n 6 Cj nCk n;j , - (6.3). ? 6.1-12? (6.10) k 6 n=2 , (6.4), k 6 n.
  • 108. 108 6 6.1-13? , , Cn 2n = 22n p n(1+ O(1=n)): (6.16) 6.1-14? H( ), , - = 1=2. H(1=2)? 6.2. - . S, - (sample space), | - (elementary events). . - , - , 2, - ( ) ( ): S = f g (event) S. , , . . f g. S ( ) - (certain event), ? - (null event). A B - (mutually exclusive), AB = ?. - s 2 S fsg S. . S. , - S, . - ( - ). , ( ) . (probability distribution) - S P, -
  • 109. 109 ( - , - probability axioms): 1. PA > 0 A. 2. PfSg = 1. 3. PfA Bg = PfAg+PfBg - A B, , , Pf iAig = X i PfAig: ( ) - A1 A2 ::: PfAg A (probability of the event A). , 2 - , 1 - . . Pf?g = 0. A B, PfAg 6 PfBg. A S;A ( - A), PfAg = 1;PfAg. A B PfA Bg = PfAg+ PfBg ;PfA Bg (6.17) 6 PfAg+ PfBg: (6.18) , 1=4. - Pf g = Pf g+ Pf g+ Pf g = 3=4: : , , Pf g = 1=4, - 1; 1=4 = 3=4. 6.2.1. - (discrete). - PfAg = X s2A Pfsg A, - . S ,
  • 110. 110 6 (uniform probability distribution) S. - , k jSj, k=jSj. - s 2 S . - ( ipping a fair coin), 1=2. n , - S = f gn, 2n . S - n f g, 1=2n. A = f k n ;k g S jAj = Ck n , Ck n , k . , - A PfAg = Ck n=2n. - a b]. c d] a b] Pf c d]g= d; c b; a: , , , , - . , - . , 0, - (c d] (c d) - . - (continuous uniform probability distribu- tion). . , , . , ?
  • 111. 111 . - , ( ) 1=3. (conditional probability) A B PfAjBg PfAjBg = PfABg PfBg (6.19) ( , PfBg 6= 0). : B - , , A. (independent), PfABg = PfAgPfBg PfBg 6= 0 PfAjBg = PfAg: , 1=2, ( - ) | 1=4. - , . : 1=2, - 1=4. . , - , , ( . . 1=2). A1 A2 ::: An (pairwise independent), PfAi Ajg = PfAigPfAjg 1 6 i < j 6 n. A1 A2 An - (mutually independent), Ai1 Ai2 ::: Aik ( 2 6 k 6 n 1 6 i1 < i2 < < ik 6 n) PfAi1 Ai2 :::Aikg = PfAi1 gPfAi2 g PfAikg:
  • 112. 112 6 | : , - , - , . (6.19) , A B, , - PfA Bg = PfBgPfAjBg = PfAgPfBjAg: (6.20) PfAjBg, PfAjBg = PfAgPfBjAg PfBg (6.21) (Bayes's theorem). : B = (B A) (B A), B A B A | , PfBg = PfB Ag+ PfB Ag = PfAgPfBjAg+ PfAgPfBjAg: (6.21), : PfAjBg = PfAgPfBjAg PfAgPfBjAg+ PfAgPfBjAg: . : , . , . , . , ? . - A | , B | . PfAjBg. : PfAg = 1=2, PfBjAg = 1, PfAg = 1=2 PfBjAg = 1=4, , PfBjAg = (1=2) 1 (1=2) 1 + (1=2) (1=4) = 4=5:
  • 113. 113 6.2-1 (Boole's inequality): PfA1 A2 :::g 6 PfA1g+ PfA2g+ ::: (6.22) A1 A2 :::. 6.2-2 , - . , , ? ( .) 6.2-3 ( 1 10) . , ? 6.2-4? , p (0 < p < 1). - , , . ( : - , , .) 6.2-5? - a=b, , - ? ( a b , 0 < a < b, - lgb.) 6.2-6 , PfAjBg+ PfAjBg = 1: 6.2-7 , A1 A2 ::: An, PfA1 A2 :::Ang = = PfA1g PfA2jA1g PfA3jA1 A2g PfAnjA1 A2 An;1g: 6.2-8? n - , k > 2 . 6.2-9? A B (condition- ally independent) C, PfABjCg = PfAjCg PfBjCg:
  • 114. 114 6 ( ) , , . 6.2-10? , ( , , ). , , , . , . - , ? 6.2-11? X, Y Z, . - . , , . X - Y Z, , , , , , , . - X, Y . X , , 1=2 ( , Z). ? 6.3. (discrete random variable) X | , S . - - . ( X - .) , , . X x - X = x fs 2 S : X(s) = xg PfX = xg = X fs2S:X(s)=xg Pfsg: f(x) = PfX = xg (probability density function) X.
  • 115. 115 , PfX = xg > 0 P x PfX = xg = 1. - . 36 , - . , - : Pfsg = 1=36. X, , . PfX = 3g = 5=36, X 3 5 - ( , (1 3), (2 3), (3 3), (3 2) (3 1)). , . X Y | - , f(x y) = PfX = x Y = yg (joint probability density function) X Y. - y PfY = yg = X x PfX = x Y = yg: , x, PfX = xg = X y PfX = x Y = yg: (6.19), - PfX = xjY = yg = PfX = x Y = yg PfY = yg : (independent), X = x Y = y x y, , PfX = x Y = yg = PfX = xgPfY = yg x y. , - , , . - | (mean), - (expected value, expectation). - X M X] = X x xPfX = xg (6.23)
  • 116. 116 6 , . - X , , . - 3 2 . X - , M X] = 6 Pf2 g+ 1 Pf1 1 g;4 Pf2 g = 6(1=4)+ 1(1=2); 4(1=4) = 1: - : M X + Y ] = M X]+ M Y ] (6.24) M X] M Y] . . X | , g(x) | . g(X) ( ). ( ) M g(X)] = X x g(x)PfX = xg: g(x) = ax, a | , M aX] = aM X]: (6.25) ( ): X Y a M aX + Y ] = aM X]+ M Y]: (6.26) X Y - , M XY] = X x X y xyPfX = x Y = yg = X x X y xyPfX = xgPfY = yg = ( X x xPfX = xg)( X y yPfY = yg) = M X]M Y]:
  • 117. 117 , n - X1 X2 ::: Xn, , M X1X2 Xn] = M X1]M X2] M Xn]: (6.27) X - (0 1 2 :::), - : M X] = 1X i=0 iPfX = ig = 1X i=0 i(PfX > ig; PfX > i + 1g) = 1X i=1 PfX > ig: (6.28) , PfX > ig i i;1 ( PfX > 0g, ). (variance) X M X] D X] = M (X ;M X])2] = M X2 ;2XM X]+ M2 X]] = M X2]; 2M XM X]]+ M2 X] = M X2]; 2M2 X]+ M2 X] = M X2]; M2 X]: (6.29) M M2 X]] = M2 X] M XM X]] = M2 X] , M X] | ( ) (6.25), a = M X]. (6.29) : M X2] = D X]+ M2 X] (6.30) a a2 : D aX] = a2D X]: X Y , D X + Y] = D X]+ D Y]:
  • 118. 118 6 , n X1 ::: Xn : D " nX i=1 Xi # = nX i=1 D Xi]: (6.31) (standard deviation) - X . X , , . 2. 6.3-1 . ? - ? 6.3-2 A 1::n] n - . , ? , ? 6.3-3 . 1 6. - . , . , . ? 6.3-4? X Y | . - , f(X) g(Y) f g. 6.3-5? X | - M X]. (Markov's inequality) PfX > tg 6 M X]=t (6.32) t > 0. .] 6.3-6? S | , - X X0, X(s) > X0(s)
  • 119. 119 s 2 S. , t, PfX > tg > PfX0 > tg: 6.3-7 : - ? 6.3-8 , , 0 1, D X] = M X]M 1;X]. 6.3-9 (6.29), D aX] = a2D X]. 6.4. | (Bernouilli trials) n , - : (success), - p, (failure), 1 ; p. | - | . , p ( q = 1;p). ? - X | 1 2 :::, PfX = kg = qk;1p (6.33) ( k, k ;1 , k- ). - , (6.33), (geometric distribution). . 6.1. , p < 1, - , (3.6): M X] = 1X k=1 kqk;1p = p q 1X k=0 kqk = p q q (1;q)2 = 1=p: (6.34) , 1=p , , , - p.
  • 120. 120 6 . 6.1 p = 1=3 - q = 1 ;p. 1=p = 3. , D X] = q=p2: (6.35) : , . 36 - , 6 2 - . p 8=36 = 2=9, 1=p = 9=2 = 4 5 , . n p q = 1;p. - X | n . 0 1 ::: n, PfX = kg = Ck npk(1; p)n;k (6.36) k = 0 1 ::: n Ck n n k , pkqn;k. (6.36) (bino- mial distribution).
  • 121. 121 . 6.2 b(k 15 1=3), n = 15 - , p = 1=3. np = 5. b(k n p) = Ck npk(1; p)n;k: (6.37) 6.2. , - (6.37) | k- (p+q)n. , p+ q = 1, nX k=0 b(k n p) = 1 (6.38) ( 2). , , (6.14) (6.38). X | , b(k n p). q = 1 ;p. -
  • 122. 122 6 , M X] = nX k=0 kb(k n p) = nX k=1 kCk npkqn;k = np nX k=1 Ck;1 n;1pk;1qn;k = np n;1X k=0 Ck n;1pkq(n;1);k = np n;1X k=0 b(k n;1 p) = np: (6.39) : Xi | i- ( 0 q 1 p). M Xi] = p 1+q 0 = p. , X = X1 +:::+Xn, (6.26) M X] = M " nX i=1 Xi # = nX i=1 M Xi] = nX i=1 p = np: . (6.29) - , D Xi] = M X2 i ] ; M2 Xi]. Xi 0 1, M X2 i ] = M Xi] = p, , , D Xi] = p ; p2 = pq: (6.40) (6.31): D X] = D " nX i=1 Xi # = nX i=1 D Xi] = nX i=1 pq = npq: (6.41) 6.2 , b(k n p) k , k np, - . , -
  • 123. 123 : b(k n p) b(k;1 n p) = Ck npkqn;k Ck;1n pk;1qn;k+1 = n!(k ;1)!(n; k + 1)!p k!(n; k)!n!q = (n;k + 1)p kq (6.42) = 1 + (n+ 1)p; k kq : 1, (n + 1)p ; k , b(k n p) > b(k ; 1 n p) k < (n + 1)p ( ), b(k n p) < b(k ; 1 n p) k > (n + 1)p ( ). (n + 1)p | , : (n+1)p (n+1)p;1 = np;q. , k, np; q < k < (n + 1)p. - . 6.1. n > 0, 0 < p < 1, q = 1 ; p, 0 6 k 6 n. b(k n p) 6 np k k nq n ;k n;k : . (6.10), b(k n p) = Ck npkqn;k 6 n k k n n ;k n;k pkqn;k = np k k nq n; k n;k : 6.4-1 2 . 6.4-2 6 - 3 3 ( )? 6.4-3 , b(k n p) = b(n; k n q), q = 1 ; p. 6.4-4 , b(k n p) 1=p2 npq, q = 1 ;p.
  • 124. 124 6 6.4-5? , n 1=n 1=e. , 1=e. 6.4-6? n , . , , - , Cn 2n=4n. ( . , n 2n .) nX k=0 (Ck n)2 = Cn 2n: 6.4-7? , 0 6 k 6 n, b(k n 1=2)6 2nH(k=n);n H(x) | (6.13). 6.4-8? n . pi | - i- , X - . p > pi i = 1 2 ::: n. , PfX < kg 6 k;1X i=0 b(i n p) k = 1 2 ::: n. 6.4-9? X, n p1 ::: pn. X0 | , p0 1 ::: p0 n. p0 i > pi i. , PfX0 > kg > PfX > kg: k = 0 ::: n ( : , - : , - . 3.3-6.) 6.5. - ! k , k ( -
  • 125. 125 k ). , (tails) . - , (np) . b(k n p). ( - ). 6.2. X | n p. PfX > kg = nX i=k b(i n p) 6 Ck npk: . (6.15): Ck+i n 6 Ck nCi n;k: , PfX > kg = nX i=k b(i n p) = n;kX i=0 b(k + i n p) = n;kX i=0 Ck+i n pk+i(1 ;p)n;(k+i) 6 n;kX i=0 Ck nCi n;kpk+i(1; p)n;(k+i) = Ck npk n;kX i=0 Ci n;kpi(1; p)(n;k);i = Ck npk n;kX i=0 b(i n; k p) = Ck npk Pn;k i=0 b(i n;k p) = 1 (6.38). , 6.3. X | n p. PfX 6 kg = kX i=0 b(i n p) 6 Cn;k n (1; p)n;k = Ck n(1 ;p)n;k:
  • 126. 126 6 : - , , . 6.4. X | n p q = 1 ;p. PfX < kg = k;1X i=0 b(i n p)< kq np; kb(k n p) 0 < k < np. . Pk;1 i=0 b(i n p) - ( . . 3.2). i = 1 2 ::: k - (6.42) b(i;1 n p) b(i n p) = iq (n;i + 1)p < i n ; i q p 6 k n; k q p : x = k n ; k q p < 1 , b(i n p) 0 6 i 6 k , x. - ( i = 0 i = k ; 1) b(k n p), x + x2 + x3 + ::: = x=(1; x): k;1X i=0 b(i n p)< x 1 ;xb(k n p) = kq np ;kb(k n p): k 6 np=2 kq=(np ; k) 1, b(k n p) . n - . p = 1=2 k = n=4. 6.4 , n=4 n=4 . ( , - r 6 n=4 r r .) 6.4 - , 6.1. :
  • 127. 127 6.5. X | n p q = 1 ;p. PfX > kg = nX i=k+1 b(i n p) < (n ;k)p k ; np b(k n p) np < k < n. : - . 6.6. n - i- pi ( - qi 1;pi). X , = M X]. r > - PfX ; > rg 6 e r r : . > 0 e x - x, PfX ; > rg = Pfe (X; ) > e rg - (6.32) ( ): PfX ; > rg 6 M e (X; )]e; r: (6.43) M e (X; )] . - Xi, 1 i- - 0 . X = nX i=1 Xi X ; = nX i=1 (Xi ;pi): , Xi . e (Xi;pi)] ( . 6.3-4), - (6.27) - : M e (X; )] = M " nY i=1 e (Xi;pi) # = nY i=1 M e (Xi;pi)]:
  • 128. 128 6 : M e (Xi;pi)] = e (1;pi)pi + e (0;pi)qi = pie qi + qie; pi 6 pie + 1 (6.44) 6 exp(pie ) exp(x) : exp(x) = ex. ( , > 0, qi 6 1, e qi 6 e e; pi 6 1, (2.7).) , M e (X; )] 6 nY i=1 exp(pie ) = exp( e ) = Pn i=1 pi. , (6.43) PfX ; > rg 6 exp( e ; r): (6.45) = ln(r= ) ( . . 6.5-6), PfX ; > rg 6 exp( eln(r= ) ;rln(r= )) = exp(r; rln(r= )) = er (r= )r = e r r : r > , r e , .] 6.6 - . = M X] = np, 6.7. X | n p. PfX ;np > rg = nX k=dnp+re b(k n p) 6 npe r r : 6.5-1? : n - , n 4n ?
  • 129. 129 6.5-2? , k;1X i=0 Ci nai < (a + 1)n k na; k(a + 1)b(k n a=(a+ 1)) a > 0 0 < k < n. 6.5-3? , 0 < k < np, 0 < p < 1 q = 1 ; p, k;1X i=0 piqn;i < kq np;k np k k nq n ; k n;k : 6.5-4? , 6.6 - Pf ; X > rg 6 (n; )e r r 6.7 Pfnp ; X > rg 6 nqe r r : 6.5-5? n - i- pi ( qi 1 ; pi). X , = M X]. , r > 0 PfX ; > rg 6 e;r2=2n: 6.5-6? , = ln(r= ) (6.45) . 6.6. - . : - k , - . 6.6.1. (birthday paradox) - : ,
  • 130. 130 6 ? , , . , 365 k - . , . , - 1=365. ( ) , , - 2=365 . , k , 1 ; 1 365 1 ; 2 365 ::: 1 ; k ; 1 365 : , n | , Ai | (i+ 1)- i . Bi = A1 A2 ::: Ai;1 i . Bk = Ak;1 Bk;1, (6.20) PfBkg = PfBk;1gPfAk;1jBk;1g: (6.46) : PfB1g = 1. PfAk;1jBk;1g (n;k+1)=n, n n ; (k ; 1) ( - ). PfBkg = PfB1gPfA1jB1gPfA2jB2g PfAk;1jBk;1g = 1 n; 1 n n; 2 n ::: n; k + 1 n = 1 1 ; 1 n 1 ; 2 n t::: 1 ; k ; 1 n 1 + x 6 ex (2.7) , PfBkg 6 e;1=ne;2=ne;(k;1)=n = e;(1+2+3+:::+(k;1))=n = e;k(k;1)=2n 6 1=2 ;k(k ;1)=2n 6 ln(1=2). , k - , 1=2 k(k;1) > 2nln2.
  • 131. 131 , k > (1 + p 1+ (8ln2)n)=2. n = 365, k > 23. , 23 , 1=2 - . , - 669 , 31 . , - . (i j), - , Xij Xij = ( 1 i j , 0 . , - , 1=n, - (6.23) M Xij] = 1 (1=n) + 0 (1; 1=n) = 1=n i 6= k. Xij 1 6 i < j 6 k - , C2 k = k(k ; 1)=2, k(k ; 1)=2n. -p 2n , 1. , n = 365 k = 28 , - , (28 27)=(2 365) 1 0356. 38 . , : (1) k X = P Xij > 0 1=2, (2) k X 1. - ( , PfX > 0g > 1=2, M X] > 1=2, X - ). , ( pn). 6.6.2. b , 1 b. : . , 1=b ( |
  • 132. 132 6 ). , . ? , - , - b(k n 1=b). n , n=b. , ? - 1=b, 1=(1=b) = b. , - ? - . , , - b. ni , - , , i ; 1 i. ( , - , , | , n1 = 1, n2 = 3.) - n1 +n2 +:::+nb. . - i- , i;1 b (b ; i + 1)=b. - ni b=(b;i+1). i b(1=b+1=(b;1)+:::+1=2+1) = b(lnb+O(1)). ( . - (3.5) .) , blnb , - . 6.6.3. n . - ? - , | (lgn). , O(lgn). Aik , k , i- . , PfAikg = 1=2k: (6.47) k = 2dlgne k - 1=n2, ( i) n, k ( - ) 1=n. : n ( 1;1=n) - 2dlgne, d2lgne+n (1=n) = O(lgn).
  • 133. 133 rdlgne r ( 2;rlgn = n;r, - n n;r = n;(r;1).) , n = 1000 2dlgne = 20 - 1=n = 1=1000, 3dlgne = 30 1=n2 = 10;6. : - (lgn). b(lgn)=2c. (6.47) 1=2b(lgn)=2c > 1=pn, 1;1=pn. , b(lgn)=2c . ( , .) 2n=lgn ;1. , , , (1; 1= pn)2n=lgn;1 6 e;(2n=lgn;1)=pn = O(e;lgn) = O(1=n) , 1 + x 6 ex (2.7), , (2n=lgn;1)=pn > lgn ; O(1). , 1 ; O(1=n) blgn=2c = (lgn), - (1 ; 1=n) (lgn) = (lgn). 6.6-1 b , . , ? 6.6-2? , , ? . 6.6-3? , - , ? 6.6-4? k- n- ?
  • 134. 134 6 ? 6.6-5? n n , , . ? , ? 6.6-6? - , , n lgn; 2lglgn 1 ;1=n. 6-1 n b . . , , . , bn . . , - . , (b+ n ; 1)!=(b; 1)! . ( : - n b;1 .) . , , . , Cn b+n;1. ( : , ( ).) . , - , Cn b . . , , Cb;1 n;1. 6-2 - A 1::n]. 1 max ;1 2 for i 1 to n 3 do . A i] max. 4 if A i] > max 5 then max A i] , -
  • 135. 6 135 5. , A - ( - ). . x i , - ? . A i] i, 5? . 5 i? . si | , 1 0 , 5 i- . M si]? . s = s1+s2+ +sn | 5 . , M s] = (lgn). 6-3 - . n . , - , . . k , - . , k, . , - . , - ( 1=e), k n=e. 6-4 t- 2t ; 1. (probabilistic counting, R. Morris) , . - ni ( i 0 2t;1). : t- i, , - ( Increment) ni. , n0 = 0. Increment , - i, . , i 1 1=(ni+1;ni), - . ( i = 2t ; 1, .) : i ni+1 ;ni .
  • 136. 136 6 ni = i i > 0, . , , , ni = 2i;1 i > 0 ni = Fi (i- , . . 2.2). , n2t;1 , - . . , n Increment, n. . , n Increment, - n0 n1 :::. ni = 100i. - (B.Pascal) (P.de Fermat), - 1654 , (C.Huygens, 1657). - (J.Bernoulli, 1713) (A.De Moivre, 1730). - (P.S.de Laplace), (S.-D.Poisson) (C.F.Gauss). . . . . ( ). 1933 . . - . - 40] 99]. - (P.Erdos). : 121], 140] ( - ) 28], 41], 57], 66], 171] ( - ) 30], 100], - 179] ( ).
  • 137.
  • 138. II
  • 139. , (sorting problem). ha1 a2 ::: ani. - ha0 1 a0 2 ::: a0 ni, , : a0 1 6 a0 2 6 6 a0 n. , ( , ). . (records), , , - . , , ( - , , , , . .), - - .] , ( ), (key), | (satellite data). : , ( ) , . ( , , .) , - . , , , ( , ).
  • 140. 140 II 1 , - n (n2) . , - , (in place). ( , , - ). , . - . (heapsort). | , ( , - , 7). (nlgn) . 8 , - (quicksort). (n2), | (nlgn), ( , ). ( , , - ) , . 9 , (nlgn), ( ). , - . - , . 9 - . - (counting sort) n 1 k O(n+k), k. k = O(n), . - , , , n , - d k- , O(d(n+k)). , d , k O(n), O(n). , , , - , O(n) n .
  • 141. II 141 i- , , (nlgn), - ( 9). ( - ), i- ( ). 10 : O(n2) - O(n) , , O(n) . 7{10 . - ( , i- ) - ( 6). , i- ( ) , .
  • 142. 7 (heapsort). , - O(nlgn) n , - O(1) ( O(n) - ). , | - . , ( - ) - . , ( . . 7.5). , ( , ). ( - , | , Lisp), . 7.1. (binary heap) , - , ( . 7.1). . i, bi=2c ( - 1 ), | 2i 2i+ 1. , A, length A] heap-size A] ( ), heap-size A] 6 length A]. A 1] ::: A heap-size A]].
  • 143. 143 . 7.1 ( ) ( ). . . Parent(i) return bi=2c Left(i) return 2i Right(i) return 2i+ 1 A 1] . Left Parent (Left, Parent) Right , . , , - (heap property): i, ( . . 2 6 i 6 heap-size A]), A Parent(i)] > A i]: (7.1) , . , ( ) ( - ). (height) - ( ). - , , . , , ( , , ), . (lgn), n | ( . . 7.1-2). , - , , O(lgn).
  • 144. 144 7 . : Heapify - (7.1). O(lgn). Build-Heap ( - ) . O(n). Heapsort , - . O(nlgn). Extract-Max ( ) Insert ( - ) . O(lgn). 7.1-1 h. ? ( .) 7.1-2 , n blgnc. 7.1-3 , . 7.1-4 , ? 7.1-5 ( | ). ? 7.1-6 h23 17 14 6 13 10 1 5 7 12i? 7.2. Heapify | . - A i. , - Left(i) Right(i) - . i, . : i, . ., A i] .
  • 145. 145 . 7.2 Heapify(A 2) heap-size A] = 10. ( ) - . i = 2 . , A 2] A 4]. ( ) 4. - Heapify(A 4) 4 A 4] $ A 9] ( ). , Heapify(A 9) . Heapify(A i) 1 l Left(i) 2 r Right(i) 3 if l 6 heap-size A] A l] > A i] 4 then largest l 5 else largest i 6 if r 6 heap-size A] A r] > A largest] 7 then largest r 8 if largest 6= i 9 then A i] $ A largest] 10 Heapify(A largest) Heapify . 7.2. 3{7 largest A i], A Left(i)] A Right(i)]. largest = i, A i] , . A i] A largest] ( - (7.1) i, ,
  • 146. 146 7 largest) largest, . Heapify. - (1) , . T(n) | , n - . i n , - Left(i) Right(i) 2n=3 ( | ). , T(n) 6 T(2n=3)+ (1) 4.1 ( 2) , T(n) = O(lgn). : , O(lgn). 7.2-1 , . 7.2, Heapify(A 3) h27 17 3 16 13 10 1 5 7 12 4 8 9 0i. 7.2-2 A i] , . - Heapify(A i)? 7.2-3 i > heap-size A]=2. Heapify(A i)? 7.2-4 Heapify, . ( - .) 7.2-5 , Heapify n (lgn). ( : - , ). 7.3. A 1::n], - , . - Heapify, , - . bn=2c + 1 ::: n , . , , Heapify. ,
  • 147. 147 ( ) - . Build-Heap(A) 1 heap-size A] length A] 2 for i blength A]=2c downto 1 3 do Heapify(A i) Build-Heap . 7.3. , Build-Heap - O(nlgn). , Heapify O(n) , O(lgn). , . , Heapify , ( ). h n - dn=2h+1e ( . . 7.3-3), blgnc ( . 7.1-2), Build- Heap blgncX h=0 l n 2h+1 m O(h) = O 0 @n blgncX h=0 h 2h 1 A (7.2) x = 1=2 (3.6), : 1X h=0 h 2h = 1=2 (1 ;1=2)2 = 2: , Build-Heap O n 1X h=0 h 2h ! = O(n): 7.3-1 , . 7.3, Build-Heap A = h5 3 17 10 84 19 6 22 9i. 7.3-2 Build-Heap , - i blength A]=2c 1 ( )? 7.3-3 , n dn=2h+1e h.
  • 148. 148 7 . 7.3 Build-Heap. Heapify 3.
  • 149. 149 7.4. . Build-Heap, - . : - (A 1]). c A n], 1 - ( - Left(1) Right(1) , Heapify). - . , . Heapsort(A) 1 Build-Heap(A) 2 for i length A] downto 2 3 do A 1] $ A i] 4 heap-size A] heap-size A] ;1 5 Heapify(A 1) . 7.4. for ( 2). Heapsort O(nlgn). - , ( ) O(n), n ;1 for O(lgn). 7.4-1 , . 7.4, Heapsort A = h5 13 2 25 7 17 20 8 4i. 7.4-2 A - . ? ? 7.4-3 , Heapsort - (nlgn). 7.5. | , ( . 8) - . -
  • 150. 150 7 . 7.4 Heapsort. - Heapify. . . | . (priority queue) | S, . - S hkey i, key | , (key). | - , . : Insert(S x): x S
  • 151. 151 Maximum(S): Extract-Max(S): . , , - . - , - ( Extract-Max). - Insert. | - (event-driven simulation). , , - . , , . Extract-Min ( ), | Insert. . - . , Maximum (1). , , : Heap-Extract-Max(A) 1 if heap-size A] < 1 2 then : 3 max A 1] 4 A 1] A heap-size A]] 5 heap-size A] heap-size A]; 1 6 Heapify(A 1) 7 return max O(lgn) ( Heapify ). , ( ), : Heap-Insert(A key) 1 heap-size A] heap-size A]+ 1 2 i heap-size A] 3 while i > 1 A Parent(i)] < key 4 do A i] A Parent(i)] 5 i Parent(i) 6 A i] key Heap-Insert . 7.5. O(lgn), - lgn ( i
  • 152. 152 7 . 7.5 Heap-Insert. 15 ( ). while ). , n O(lgn). 7.5-1 , . 7.5, Heap-Insert(A 3) A = h15 13 9 5 12 8 7 4 0 6 2 1i. 7.5-2 , Heap- Extract-Max . 7.5-3 , ( rst-in, rst-out) . ( . . 11.1). 7.5-4 Heap-Increase-Key(A i k) ( - ), A i] k, k (A i] max(A i] k)) . | O(lgn). 7.5-5 Heap-Delete(A i) | - i . O(lgn).
  • 153. 7 153 7.5-6 , O(nlgk) k - ( n | ). ( : .) 7-1 , Heap-Insert. - : Build-Heap0(A) 1 heap-size A] 1 2 for i 2 to length A] 3 do Heap-Insert(A A i]) . Build-Heap Build-Heap0 - . ? ( .) . , Build-Heap0 - (nlgn) ( n | ). 7-2 d- d- (d-ary heap), - d . . , Par- ent, Left Right? . d- n n d? . Extract-Max. - ( n d)? . Insert. ? . Heap-Increase-Key ( . 7.5-4). - ? 202] . Build-Heap 69].
  • 154. 8 - . n - (n2), : - (nlgn), nlgn . , - . 8.1 - . 8.2 , 8.4. 8.3 - , . ( - ) O(n2), O(nlgn). ( , - , , O(nlogn).) - 8.4, . 8.1. (quicksort), , ( . . 1.3.1). - A p::r] : A , A p] ::: A q] A q+1] ::: A r], q | p 6 q < r. (partition). A p::q] A q + 1::r].
  • 155. 155 A p::r] . , Quicksort : Quicksort(A p r) 1 if p < r 2 then q Partition(A p r) 3 Quicksort(A p q) 4 Quicksort(A q + 1 r) Quicksort(A 1 length A]). | Partition, - A p::r] : Partition(A p r) 1 x A p] 2 i p;1 3 j r + 1 4 while true 5 do repeat j j ;1 6 until A j] 6 x 7 repeat i i+ 1 8 until A i] > x 9 if i < j 10 then A i] $ A j] 11 else return j Partition . 8.1. x = A p] A p::q] - , x, A q+1::r] | , x. , , x, (A p::i]), , x | (A j::r]). - : i = p ; 1, j = r + 1. while ( 5{8) ( ). - A i] > x > A j]. A i] A j] , . i > j. A p] ::: A j] A j + 1] ::: A r] -
  • 156. 156 8 . 8.1 Partition. , . ( ) - , . x = A p] = 5 . ( ) - while ( 4{8). ( ) A i] A j] ( - 10). ( ) while. ( ) ( - ) while. i > j, q = j. A j] ( ) , x = 5, A j] , x = 5. . j. , . , , i j p::r] . - : , - A p], , , A r]. , A r] | , - i = j = r, q = j | q < r, Quicksort . Partition - 8-1. Partition (n), n = r ;p+ 1 ( . . 8.1-3). 8.1-1 , . 8.1, Partition A = h13 19 9 5 12 8 7 4 11 2 6 21i. 8.1-2 A p::r] . Partition? 8.1-3 , , Partition (n).
  • 157. 157 8.1-4 ( - ), ? 8.2. , . - , O(nlgn), . , O(n2), - . , n;1 , | 1. ( 8.4.1, .) - , . (n), T(n) T(n) = T(n ;1) + (n) T(1) = (1), T(n) = T(n;1) + (n) = nX k=1 (k) = nX k=1 k ! = (n2) ( | , . - (3.2)). . 8.2. ( . . 4.2.) , (n2), . , , - ( , - (n)). , - . - , T(n) = 2T(n=2)+ (n) , 4.1 ( 2), T(n) = (nlgn). - 8.3.
  • 158. 158 8 . 8.2 Quicksort ( - Partition , ). (n2 ). . 8.3 Quicksort ( - ). (nlgn). 8.4, ( - ) . , , - . , , 9 : 1. T(n) = T(9n=10)+ T(n=10)+ n ( (n) n). - 8.4. n , .
  • 159. 159 . 8.4 , - 9 : 1. (nlgn). log10=9 n = (lgn), - (nlgn), . , - ( ) - , (nlgn). : , , - . , , - . ( .) | , , . - . 8.2-5, 80 9 : 1. , - , ( . 8.5( )). - , (lgn), - , (lgn), | (nlgn). , - ( ,
  • 160. 160 8 . 8.5 ( ) : (n n;1 1) (n;1 ). ( ) , . ). 8.2-1 , - , Quicksort (nlgn). 8.2-2 . - , Quicksort (n2). 8.2-3 , , . , . , - . , . , - , . 8.2-4 - : 1; , 0 < 6 1=2. , ;lgn=lg , - ;lgn=lg(1; ). ( .) 8.2-5? , 0 < 6 1=2 , -
  • 161. 161 , : 1; , 1;2 . 1=2? 8.3. , . , , | - . , , ( ) ( . . 8.2-3). , - . , - . , , ( O(n) | . . 8.3-4). , ( ). (randomized), - (random-number generator). , Random - : Random(a b) a b. , Random(0 1) - 0 1 1=2. - . , (b;a+ 1) - . ( - (pseudorandom-number generator) | , , .) - : 13.4-4 - , , , | , - ( ) . , , , , , , - . ,
  • 162. 162 8 ( - 8.2, ). , - , Par- tition. , A p::r] A p] . - , - . . , - O(nlgn), , 8.4. , , - : Randomized-Partition(A p r) 1 i Random(p r) 2 A p] $ A i] 3 return Partition(A p r) Randomized- Partition Partition: Randomized-Quicksort(A p r) 1 if p < r 2 then q Randomized-Partition(A p r) 3 Randomized-Quicksort(A p q) 4 Randomized-Quicksort(A q + 1 r) . 8.3-1 - ( ), - ? 8.3-2 Randomized- Quicksort - Random ? - ? 8.3-3? Random(a b), , . . , 0 1.
  • 163. 163 - ? 8.3-4? , (n) A 1::n]. 8.4. - 8.2 . - ( Quicksort, Randomized-Quicksort), Randomized-Quicksort. 8.4.1. 8.2 , - , (n2). - , ( ) . . , O(n2), ( . . 4.1). T(n) | n. , , T(n) = max16q6n;1 (T(q)+ T(n;q)) + (n) (8.1) ( ). , T(q) 6 cq2 c q, n. T(n) 6 max16q6n;1 (cq2+c(n;q)2)+ (n) = c max16q6n;1 (q2+(n;q)2)+ (n): q2 + (n;q)2 - 1 6 q 6 n ; 1 ( q - , , . . 8.4-2). 12 + (n;1)2 = n2 ;2(n ; 1). T(n) 6 cn2 ;2c(n;1) + (n) 6 cn2 c , . , - (n2).
  • 164. 164 8 8.4.2. 8.2, , , - (lgn), | (nlgn). - Randomized- Quicksort, Parti- tion, ( ). , 3 Randomized-Partition Partition, - A p] A p::r]. , . - , , , . , , q, - Partition, , - , x = A p] ( (rank) x rank(x)). n = r ; p + 1 | , , - A p], rank(x), 1 n, ( 1=n). rank(x) > 1, , , rank(x);1 | , x. rank(x) = 1, ( i = j = p). , 1=n 2 3 ::: n;1 , 2=n | . Randomized- Quicksort n T(n). , T(1) = (1). Partition, (n), q n ; q, q 2=n - 1 1=n | 2 ::: n ; 1.
  • 165. 165 T(n) = 1 n 0 @T(1)+ T(n;1) + n;1X q=1 (T(q)+ T(n;q)) 1 A + (n) (8.2) ( , q = 1, ). T(1) = (1) T(n) = O(n2), 1 n(T(1)+ T(n; 1)) = 1 n( (1)+ O(n2)) = O(n): T(1) T(n ; 1) (8.2) (n). T(n) = 1 n n;1X q=1 (T(q)+ T(n; q))+ (n): (8.3) T(k), k = 1 ::: n;1, , : T(n) = 2 n n;1X k=1 T(k) + (n): (8.4) (8.4) , . , T(n) 6 anlgn + b, a > 0 b > 0 , . n = 1 , a b. n > 1 T(n) = 2 n n;1X k=1 T(k)+ (n) 6 2 n n;1X k=1 (aklgk + b)+ (n) = 2a n n;1X k=1 klgk + 2b n (n ;1) + (n): , : n;1X k=1 klgk 6 1 2n2 lgn ; 1 8n2: (8.5)
  • 166. 166 8 , T(n) 6 2a n 1 2 n2 lgn ; 1 8 n2 + 2b n (n ;1) + (n) 6 anlgn; a 4n + 2b+ (n) = anlgn+ b+ (n) + b; a 4n 6 anlgn+ b a , a 4n (n)+b. , O(nlgn). (8.5). nlgn, n;1X k=1 klgk 6 n2 lgn: | 1 2n2 lgn ; (n2). lgk lgn, k , n;1X k=1 klgk 6 lgn n;1X k=1 k = n(n ;1) 2 lgn 6 1 2n2 lgn: , lgk lgn, k 1 ( k 6 n=2), (n=2)2=2 = n2=8. , n;1X k=1 klgk = dn=2e;1X k=1 klgk + n;1X k=dn=2e klgk k < dn=2e lgk 6 lg(n=2) = lgn; 1. n;1X k=1 klgk 6 (lgn; 1) dn=2e;1X k=1 k + lgn n;1X k=dn=2e k = lgn n;1X k=1 k ; dn=2e;1X k=1 k 6 1 2 n(n; 1)lgn ; 1 2 n 2 ;1 n 2 6 1 2n2 lgn ; 1 8n2
  • 167. 167 n > 2. (8.5) . - ( ) . . . (1) : N - . : , , ( ) . (2) ? , - ( 1 N), ( - ). ( , - : , . .) (3) , - 1 N | ( ) . - . (4) i, j f1 ::: Ng p(i j) - , - . , p(i i+1)= 1, - ( ). (5) , p(i i + 2) = 2=3. , , i, i + 1 i + 2 i + 1 . , p(i i + k) = 2=(k + 1) ( i i + k , k + 1 i i + 1 ::: i + k ). (6) P m(i j) - i j. , m(i j) = p(i j). , - : X 16i<j6n 2 j ;i + 1: (7) , 1 + 1=2 + 1=3 + ::: + 1=k = O(lgk), O(N lgN) . , ( ) .
  • 168. 168 8 : ( ): , , .] 8.4-1 , - (nlgn). 8.4-2 , q2 + (n ; q)2 1 n ; 1] . 8.4-3 , Randomized-Quicksort (nlgn). 8.4-4 - , ( - ) - . , , : Randomized-Quicksort(A p r) , r;p+1 < k ( . . k ). - . , - O(nk + nlg(n=k)). k? 8.4-5? Z xlnxdx = 1 2x2 lnx; 1 4x2 ( ) ( (8.5)) Pn;1 k=1 klgk. 8.4-6? Randomized-Partition: - . , , : 1 ; . 8-1 , Partition . :
  • 169. 8 169 . i j p::r]. . j r ( . . ). . - A p::j] A j + 1::r]. 8-2 Partition, , . (N. Lomuto). - A p::i] A i + 1::j], x = A r], | x. Lomuto-Partition(A p r) 1 x A r] 2 i p ;1 3 for j p to r 4 do if A j] 6 x 5 then i i+ 1 6 A i] $ A j] 7 if i < r 8 then return i 9 else return i; 1 . , Lomuto-Partition - . . Partition Lomuto-Partition - ? ( - .) . , Lomuto-Partition, - Partition, (n), n | . . Quicksort Partition Lomuto-Partition. , ? . Randomized-Lomuto-Partition, A r] - Lomuto-Partition. , , Randomized-Lomuto- Partition q, , - Randomized-Partition p + r ;q. 8-3 - :
  • 170. 170 8 Stooge-Sort(A i j) 1 if A i] > A j] 2 then A i] $ A j] 3 if i+ 1 > j 4 then return 5 k b(j ;i+ 1)=3c . . 6 Stooge-Sort(A i j ;k) . . 7 Stooge-Sort(A i+ k j) . . 8 Stooge-Sort(A i j ;k) . . . , Stooge-Sort - . . Stooge-Sort . . Stooge-Sort ( - , , ). ? 8-4 Quicksort ( ). - , ( , - tail recursion): Quicksort0(A p r) 1 while p < r 2 do . . 3 q Partition(A p r) 4 Quicksort0(A p q) 5 p q + 1 . , Quicksort0 - . , - , - . , - , - . O(1), - (stack depth) . . , Quicksort0 (n).
  • 171. 8 171 . Quicksort0 , (lgn) ( (nlgn) ). 8-5 Randomized-Quicksort , . | (median-of-3 method): - . , A 1::n] n > 3. A0 1::n] - ( ). pi = Pfx = A0 i]g, x | , . . pi ( i = 2 3 ::: n ; 1) i n ( , p1 = pn = 0). . (A0 b(n + 1)=2c]) , ? - n ! 1? . x - , x = A0 i], n=3 6 i 6 2n=3. , - ? ( : .) . , (nlgn) ( nlgn). 98]. - 174] - . 165].
  • 172. 9 , - n O(nlgn). (merge sort) (heap sort) , - . - O(nlgn) : - n , (nlgn). , , (comparison sort). 9.1 , - n (nlgn) . : - , - , . 9.2, 9.3 9.4 - ( , ), . , (nlgn) , - , . 9.1. , , - , - ( ). , .
  • 173. 173 . 9.1 , - . - 3! = 6, 6 . : . 9.1 (decision tree), 1.1. n a1 ::: an. - ai : aj, , (1 6 i j 6 n). - h (1) (2) ::: (n)i, | - n ( . . 6.1 ). - , . , . . ( ) . ai : aj. , ai 6 aj, . , , , a (1) a (2) ::: a (n), , . n! ( - ). | . .
  • 174. 174 9 9.1. , - n , (nlgn). . n , n!. h 2h , n! 6 2h. - 2 n! > (n=e)n, (2.11), , h > nlgn ;nlge = (nlgn) . 9.2. - . . O(nlgn) - , . 9.1-1 - ? 9.1-2 lg(n!) =Pn k=1 lgk , . 3.2. 9.1-3 , , - , n! n. , 1=2 1=n? 1=2n? 9.1-4 , : - ai : aj , , : ai < aj, ai = aj ai > aj. , n , (nlgn). , . 9.1-5 , - n 2n;1 - . 9.1-6 n , , k. - . . (
  • 175. 175 ). - , (nlgk) - . ( : - n=k k.) 9.2. (counting sort) , n | ( - k). k = O(n), - O(n). , x , - x, x ( , , 17 x, x 18). - , , - . C 1::k] k . - A 1::n], - B 1::n]. Counting-Sort(A B k) 1 for i 1 to k 2 do C i] 0 3 for j 1 to length A] 4 do C A j]] C A j]]+ 1 5 . C i] , i. 6 for i 2 to k 7 do C i] C i]+ C i ;1] 8 . C i] , i 9 for j length A] downto 1 10 do B C A j]]] A j] 11 C A j]] C A j]];1 . 9.2. ( 1{2) - C i] A, i ( - 3{4), , C 1] C 2] ::: C k], | , i ( 6{7). , 9{11 -
  • 176. 176 9 . 9.2 Counting-Sort, A 1::8], , k = 6. ( ) A C 3{4. ( ) C 6{7. ( { ) B - C , 9{11. , . ( ) B . A B. , n , - A j] C A j]], A A j] A - , A j] B C A j]] ( 11), , A j], . . 1{2 6{7 O(k), 3{4 10{11 | O(n), , , O(k + n). k = O(n), O(n). . 9.1 | , , . , (it is stable). , , - , . , , , . , , , ht xi, t | 1 k, x | , , .
  • 177. 177 , - . . , . 9.2-1 . 9.2., Counting-Sort k = 7 A = h7 1 3 1 2 4 5 7 2 4 3i. 9.2-2 , Counting-Sort - . 9.2-3 9 Counting-Sort : 9 for j 1 to length A] , . - ? 9.2-4 - . Counting-Sort , , B ( A C). ( : A - ?). 9.2-5 n 1 k. , - , O(1) a b? . O(n+ k). 9.3. (radix sort) - ( ). - . 80 12 . - , - ( 80 ), 0{9 0{9 - . ,
  • 178. 178 9 329 457 657 839 436 720 355 ) 720 355 436 457 657 329 839 " ) 720 329 436 839 355 457 657 " ) 329 355 436 457 657 720 839 " . 9.3 - . . , ( , ). , 10 , 0{9 . ( , | . .)? , , | . 10 , 10 , | , ( . 9.3-5). , - , 10 , - . 10 : 0, - 1, . . 10 , , - , . . d- , d . . 9.3 , , . , , - , : , , - , ( , 10 ). , . , - , . , : , | - , | .
  • 179. 179 , , : , - , . . - , n- A d , 1 | , d | . Radix-Sort(A d) 1 for i 1 to d 2 do A i ( . . 9.3-3). - . 1 k, k - , | . n d 0 k;1 (n+k) d , - (dn+kd). d k = O(n), . - , - . : 64- . - - 216, , Counting-Sort B 216 ( - ) , lgn 20 . - , , - , ( , - ) , - . , , . 9.3-1 . 9.3, , - ( ) COW, DOG, SEA, RUG, ROW, MOB, BOX, TAB, BAR, EAR, TAR, DIG, BIG, TEA, NOW, FOX.
  • 180. 180 9 9.3-2 : , , - , ? , - . ? 9.3-3 , - . - ? 9.3-4 , n , n2, O(n). 9.3-5? - , . ( ) d- ? - ? 9.4. (bucket sort) ( ) . , - : - , , , - 0 1) ( - . 6.2). , | ( - ) .] , 0 1) n , - - (bucket), n . - 0 1), , - . - , . , n- A, 0 6 A i] < 1 i. - B 0::n ; 1], , . , -
  • 181. 181 . 9.4 Bucket-Sort. ( ) A 1::10]. ( ) B 0::9] 5. i - , i. , B 0] ::: B 9]. . 11.2. Bucket-Sort(A) 1 n length A] 2 for i 1 to n 3 do A i] B bnA i]c] 4 for i 0 to n; 1 5 do B i] ( ) 6 B 0] B 1] ::: B n;1] ( ) . 9.4 10 . , - , A i] A j]. , , - , . . , , ( ) O(n). O(n). , - . B i] ni (ni | ). , - i O(M n2 i]),
  • 182. 182 9 n;1X i=0 O(M n2 i]) = O n;1X i=0 M n2 i] ! : (9.1) ni. - , - , , i, 1=n. , . 6.6.2 : n - , n - , p = 1=n. ni : - , ni = k, Ck npk(1 ; p)n;k, M ni] = np = 1, D ni] = np(1;p) = 1;1=n. (6.30) : M n2 i ] = D ni]+ M2 ni] = 2 ; 1 n = (1): (9.1), , - O(n), - . 9.4-1 . 9.4, , - Bucket-Sort A = h0:79 0:13 0:16 0:64 0:39 0:20 0:89 0:53 0:71 0:42i. 9.4-2 - ? , O(nlgn). 9.4-3? n (xi yi), 1 ( , - ). - , - (n). ( : , - , ). 9.4-4? X | . (probability distribution function) P(x) =
  • 183. 9 183 PfX 6 xg. , - n , - P. P - O(1). - , n? 9-1 , n , , (nlgn). , A, TA | . - , - . . TA , . , n! - 1=n!, . . D(T) - T ( , - , | - ). T | k > 1 , LT RT . , D(T) = D(LT)+ D(RT)+ k. . d(m) | D(T) T m . , d(k) = min16i6k;1fd(i)+ d(k;i)+kg. ( : LT 1 k ;1 .) . , k ilgi + (k ; i)lg(k ; i) 1 k ; 1 i = k=2. , d(k) = (klgk). . , D(TA) = (n!lg(n!)), , n TA, , (nlgn). B, . , : - . Random(1 r) r , - . ( r .) . B.
  • 184. 184 9 . - T. , - A, ( ) T. , ( ) (nlgn). ( . - T, - , T.) 9-2 . , - , 0 1. , - O(1) ( , ). . ( ) - b- O(bn)? - . . n , - 1 k. , O(n + k), ( - ) O(k)? ( . k = 3.) - 72]. - 123], , - ( ). - - 23]. , (1954 ) (H.H.Seward). , , . , 1929 - , (L.J.Comrie). 1956 , (E.J.Isaac)
  • 186. 10 : n , i- , . - i- (order statistic). , (minimum) | 1, (maximum) | - n. (median) , ( ) . , n , | i = (n + 1)=2, n , : i = n=2 i = n=2 + 1. , , n, i = b(n + 1)=2c i = d(n + 1)=2e. - ( ). , , , , , , , . (selection problem) - : : A n i, 1 6 i 6 n. : x 2 A, i;1 - A x. O(nlgn): , i- . , , . 10.1 : . . 10.2 , O(n) ( ). 10.3 ( -
  • 187. 187 ) - , O(n) . 10.1. , n ? n;1 : - , . , , A n. Minimum(A) 1 min A 1] 2 for i 2 to length A] 3 do if min > A i] 4 then min A i] 5 return min , . ? , . - - n , | , . , - , n;1 , Minimum - . , | - 4. - 6-2 , (lgn). - . , - ( , ) , . - . , , n ; 1 , 2n ; 2 , . , - , 3dn=2e ; 2 . , - , - : ,
  • 188. 188 10 , | . - ( , ). 10.1-1 , n n + dlgne ; 2 . ( - . .) 10.1-2? , - n d3n=2e; 2 . ( . - : (1) ( - , ) (2) , , (3) , , - (4) ( ). a1 a2 a3 a4 | . ?) 10.2. , , , , (n). - Randomized-Select , - . 8: . , , , Randomized-Select | . : - (nlgn), Randomized-Select (n). Randomized-Select - Randomized-Partition, 8.3, ( , , ) - . Randomized-Select(A p r i) i- A p::r].
  • 189. 189 Randomized-Select(A p r i) 1 if p = r 2 then return A p] 3 q Randomized-Partition(A p r) 4 k q ; p + 1 5 if i 6 k 6 then return Randomized-Select(A p q i) 7 else return Randomized-Select(A q + 1 r i;k) Randomized-Partition 3 A p::r] A p::q] A q + 1::r], A p::q] A q+1::r]. 4 A p::q]. , - i- A p::r]. i 6 k, ( A p::q]), ( ) Randomized- Select 6. i > k, k (A p::q]) , (i; k)- A q + 1::r] ( 7). Randomized-Select ( - Randomized-Partition) (n2), : , , - . - , . . - n - ( ). T(n) | - . 8.4, Randomized-Partition 1 2=n, i > 1 - 1=n i 2 n ; 1. , T(n) n ( , T(n) T0(n) = max16i6n T(i) T0). - , , i- , -
  • 190. 190 10 . : T(n) 6 1 n T(max(1 n; 1))+ n;1X k=1 T(max(k n;k)) ! + O(n) 6 1 n 0 @T(n;1) + 2 n;1X k=dn=2e T(k) 1 A + O(n) = 2 n n;1X k=dn=2e T(k) + O(n) ( T(n; 1)=n , T(n;1) = O(n2), T(n; 1)=n O(n)). , T(n) 6 cn, ( c, ). , T(j) 6 cj j < n. , , , T(n) 6 2 n n;1X k=dn=2e ck + O(n) 6 2c n n 2 n=2 + 1 + n;1 2 + O(n) = 3cn 4 + O(n) 6 cn c , c=4 , O(n). , , - , . 10.2-1 Randomized-Select, - . 10.2-2 , Randomized- Select A = h3 2 9 0 7 5 4 8 6 1i. , . 10.2-3 Randomized-Select - , A ( , Randomized-Partition A p::r]
  • 191. 191 A p::q] A q + 1::r] , A p::q] A q + 1::r])? 10.3. ( ) Select, - O(n) - . Randomized-Select, - , , , . Select ( - ) Partition ( . . 8.1), , - , , . Select i- - n > 1 : 1. n bn=5c 5 ( ) , . 2. dn=5e ( ). 3. ( ) Select, x, - dn=5e . 4. Partition, - . k | - ( , , n ;k). 5. ( ) Select, i- - , i 6 k, (i;k)- , i > k. Select. - , x ( . . 10.1). , , x. , dn=5e , x, : , x, . 3 1 2 ln 5 m ;2 > 3n 10 ; 6: , x, , - 3n=10 ; 6 , x. , Select, , 7n=10+ 6.
  • 192. 192 10 . 10.1 Select. ( n) , | 5 , - | . x. . , x , x, x , x. , x, . T(n) | Select - n . , O(n) ( O(n) - O(1)), T(dn=5e), , , | , T(b7n=10+6c) ( , , T(n) n). , T(n) 6 T(dn=5e) + T(b7n=10+ 6c) + O(n): n (1=5 + 7=10 = 9=10) , - , T(n) 6 cn c. . , , T(m) 6 cm m < n, T(n) 6 c(dn=5e)+ c(b7n=10+ 6c)+ O(n) 6 c(n=5+ 1) + c(7n=10+ 6) + O(n) 6 9cn=10+ 7c+ O(n) = = cn;c(n=10;7) + O(n): c cn n > 70 ( , c(n=10 ; 6) , O(n)). , n > 70 ( , n dn=5e b7n=10+ 6c n). c ( ), , T(n) cn n 6 70, . , Select ( ).
  • 193. 193 , Select Randomized-Select, - 9 - , - . , - , - , (nlgn) ( - 9.1), ( 9-1). 10.3-1 Select , , - ? , . 10.3-2 x | Select ( n ). , n > 38 - , x ( , x) dn=4e. 10.3-3 , - O(nlgn) . 10.3-4? i- - . , - , , . 10.3-5 - , - . , , - . 10.3-6 k- (k-th quantiles) n k ; 1 , - : - , k ( , ) . , O(nlgk) k- . 10.3-7 , k S k , . O(jSj).
  • 194. 194 10 . 10.2 , - ? 10.3-8 X 1::n] Y 1::n] | . , O(lgn) - , . 10.3-9 , , n . - ( , . 10.2). - , , - , . , . 10-1 i n i - ( ). - , n i . . i . . i Extract-Max.
  • 195. 10 195 . 10.3 i- ( ), i . 10-2 n x1 ::: xn, xi ( ) wi, 1. (weighted median) xk, X xi<xk wi 6 1 2 X xi>xk wi 6 1 2: . , 1=n, . . n O(nlgn) ? . Select ( 10.3), (n) ? (post-o ce location problem) . n p1 ::: pn n w1 ::: wn p ( - pi), Pn i=1 wid(p pi) ( d(a b) - a b). . , ( | , d(a b) = ja;bj) . . ( | ), a = (x1 y1) b = (x2 y2) L1- : d(a b) = jx1 ; x2j+jy1;y2j ( Manhattan distance, - , ) 10-3 i- i T(n) | Select, n T(n) = (n), n, , . i n, i- .
  • 196. 196 10 . , i- n , Ui(n) , Ui(n) = ( T(n) n 6 2i, n=2 + Ui(bn=2c) + T(2i+ 1) . ( : bn=2c i .) . , Ui(n) = n + O(T(2i)log(n=i)). . , , i, Ui(n) = n+ O(lgn). , 7, i .] . i = n=k, k > 2 , Ui(n) = n + O(T(2n=k)lgk). - , , , 29]. 97]. 70] - , - .
  • 197.
  • 198. III
  • 199. - , . - , - ( , - dynamic) . . , - , - , , - . , , - (dictionary). - . , - , 7 , ( - ). , - , . | , - . (key), , | (satellite da- ta), . , - , . , - , ( ) . , ,
  • 200. 200 III ( , ) ( , - , ). , , , - . , - , . , . (queries), - , , (mod- ifying operations). : Search(S k) ( ). , S k S - k. S , - nil. Insert(S x) S , - x ( , , x, ). Delete(S x) S , - x ( , x | , ). Minimum(S) S - ( , ). Maximum(S) S - . Successor(S x) ( ) S, x ( ). x | , nil. Predecessor(S x) ( ) - , x ( x | , nil). Successor Predecessor - ,
  • 201. III 201 . , - Successor Predecessor , Minumum(S) Successor, . . - , . , 14 , - O(lgn), n | . III 11{15 , . . , - ( ) 7. 11 : , , . , - , . - . 12 - , - Insert, Delete Search. - (n), , - - , ( ) O(1). , . 13 . - . (n), - O(lgn). . 14 - . : - O(lgn). - ( - ) 19. - .
  • 202. 202 III , . 15 - , ( , - ).
  • 203. 11 - : , , , - . , - . 11.1. | , , Delete, , . , (stack) , : | (last-in, rst-out | LIFO). (queue), , , - : - | ( rst-in, rst-out, FIFO). . , . Push, - Pop (push , pop | ). , - . | | , .] . 11.1 , n S 1::n]. top S], - . S 1::top S]],
  • 204. 204 11 . 11.1 S. - . ( ) S 4 , | 9. ( ) Push(S 17) Push(S 3). ( ) , Pop(S) 3 ( ). 3 - S, | 17. S 1] | ( ) S top S]] | - , . top S] = 0, (is empty). top S] = n, (over ow), - n. | | - ( - ?), - under ow. . ( , , ) : Stack-Empty(S) 1 if top S] = 0 2 then return true 3 else return false Push(S x) 1 top S] top S]+ 1 2 S top S]] x Pop(S) 1 if Stack-Empty(S) 2 then error under ow" 3 else top S] top S];1 4 return S top S]+ 1] Push Pop . 11.1. O(1).
  • 205. 205 Enqueue, - Dequeue. ( , Dequeue, .) , : | . ( , - , - .) , (head) (tail). , , , , - , , , . . 11.2 , , - n ; 1 , Q 1::n]. head Q] | , tail Q] | - , - . - , head Q], head Q] + 1, ::: , tail Q];1 ( , : n - 1). head Q] = tail Q], . head Q] = tail Q] = 1. , (under ow) head Q] = tail Q]+1, , - (over ow). Enqueue Dequeue - ( 11.1-4 ). Enqueue(Q x) 1 Q tail Q]] x 2 if tail Q] = length Q] 3 then tail Q] 1 4 else tail Q] tail Q]+ 1 Dequeue(Q) 1 x Q head Q]] 2 if head Q] = length Q] 3 then head Q] 1 4 else head Q] head Q]+ 1 5 return x Enqueue Dequeue . 11.2.
  • 206. 206 11 . 11.2 , Q 1::n]. - - . ( ) 5 ( - Q 7::11]). ( ) Enqueue(Q 17), En- queue(Q 3) Enqueue(Q 5). ( ) De- queue(Q) ( 15). - 6. O(1). 11.1-1 . 11.1, Push(S 4), Push(S 1), Push(S 3), Pop(S), Push(S 8) Pop(S) , S 1::6]. . 11.1-2 A 1::n] n? Push Pop O(1). 11.1-3 . 11.2, Enqueue(Q 4), Enqueue(Q 1), Enqueue(Q 3), Dequeue(Q), Enqueue(Q 8) Dequeue(Q) , - Q 1::5]. . 11.1-4 Enqueue Dequeue, - under ow. 11.1-5 . - , | . , - (deque, double-ended queue |
  • 207. 207 ), - . , - O(1). 11.1-6 , . Enqueue Dequeue ? 11.1-7 , . ? 11.2. ( - linked list) , - , , , . - , , - ( ). , , , - - , . , . 11.3, - (doubly linked list) | , : key ( ) next ( ) prev ( previous | ). , . x | , next x] , prev x] | . prev x] = nil, x - : (head) . next x] = nil, x | , , (tail). , , L - head L] . head L] = nil, . . (singly linked) - prev. (sorted) , - , | , - (unsorted) . (circular list) prev , next . ,
  • 208. 208 11 . 11.3 ( ) L 1 4 9 16. - | - ( ). next prev nil ( ) head L] . ( ) - List-Insert(L x), key x] = 25, 25 , next | 9. ( ) List-Delete(L x), x | 4. . List-Search(L k) L ( ) , k. , , nil, . , , L | . 11.3 , List-Search(L 4) , List-Search(L 7) nil. List-Search(L k) 1 x head L] 2 while x 6= nil and key x] 6= k 3 do x next x] 4 return x n ( ) (n) . List-Insert x L, ( . 11.3 ).
  • 209. 209 List-Insert(L x) 1 next x] head L] 2 if head L] 6= nil 3 then prev head L]] x 4 head L] x 5 prev x] nil List-Insert O(1) ( ). List-Delete x L, - . - x. x, - List-Search. List-Delete(L x) 1 if prev x] 6= nil 2 then next prev x]] next x] 3 else head L] next x] 4 if next x] 6= nil 5 then prev next x]] prev x] . 11.3 . List-Delete O(1) - , (n). , - List-Delete : List-Delete0(L x) 1 next prev x]] next x] 2 prev next x]] prev x] , L nil L], next prev . ( sentinel | ) . - nil. - : next nil L]] prev nil L]] , prev next
  • 210. 210 11 . 11.4 L, nil L] ( - ). head L] next nil L]]. ( ) . ( ) . 11.3 ( 9 | , 1 | ). ( ) List-Insert0(L x), key x] = 25. ( ) 1. 4. nil L] ( . 11.4). next nil L]] | , head L] . L , - nil L] | . List-Search nil nil L] head L] next nil L]]: List-Search0(L k) 1 x next nil L]] 2 while x 6= nil L] and key x] 6= k 3 do x next x] 4 return x List-Delete0, - . , : List-Insert0(L x) 1 next x] next nil L]] 2 prev next nil L]]] x 3 next nil L]] x 4 prev x] nil L] List-Insert0 List-Delete0 . 11.4. , - . ( , ), . . - , -
  • 211. 211 . , . 11.2-1 , , O(1)? . 11.2-2 . Push Pop O(1). 11.2-3 . Enqueue Dequeue O(1). 11.2-4 Insert, Delete Search . ? 11.2-5 Union ( ) - ( ). - , O(1), - . 11.2-6 , ( ), . , 1 ( ). ? 11.2-7 , (n) . ( ) O(1). 11.2-8? - , next prev - np x]. , k- - nil . np x] np x] = next x] XOR prev x], XOR | - 2 ( ). , . Search, Insert Delete? , O(1).
  • 212. 212 11 . 11.5 . 11.3 , (key next prev). - . , . L | . 11.3. , , . , . , , - ( ). , . 11.5 , , . 11.3 : key , next prev | . - (key x] next x] prev x]) - x. x. nil , ( , 0 ;1). . 11.3 4 16 - , 16 key 5, 4 | 2, next 5] = 2, prev 2] = 5. key x] : key x, key x ( - ). , - . - : -
  • 213. 213 . 11.6 , . 11.3 11.5, - A. . key, next prev 0, 1 2. - | . - . , , , . . . - A. - A j ::k]. | j - 0::k ; j] | . , , . 11.3 11.5, , key, next prev 0, 1 2. prev i], i | (= A), , A i+ 2] ( . . 11.6). - ( ), , , , . . , . - | (garbage collector), , , . , , - . , - , . , -
  • 214. 214 11 . 11.7 Allocate-Object Free-Object. ( ) - , . 11.5 ( - ) ( - ). . ( ) Allocate-Object() ( 4), - key 4] 25 List-Insert(L 4). 8 ( next 4]). ( ) - List-Delete(L 5), Free-Object(5). 5 | , 8. , m, n 6 m . n ; m ( ) - (free). , (free list). next: , next i] - , i. - free. L ( . 11.7). - , 1 m] L, . : - , . - - Push Pop . - Allocate-Object ( ) Free-Object ( - ) , free ( ) .
  • 215. 215 . 11.8 L1 ( - ) L2 ( - ), - ( ) . Allocate-Object() 1 if free = nil 2 then error 3 else x free 4 free next x] 5 return x Free-Object(x) 1 next x] free 2 free x n - . , Allocate- Object . - ( . 11.8). - ( O(1)). , - next ( ). 11.3-1 . 11.5, - h13 4 8 19 5 11i - , . 11.6 , - . 11.3-2 Allocate-Object Free-Object , . 11.3-3 Allocate-Object Free-Object prev? 11.3-4 ( , - ) -
  • 216. 216 11 . . Allocate-Object Free-Object , 1::m, m | . ( : - .) 11.3-5 L m - key, prev next n, - . Compactify-List ( ), - L m m - , ( ). (m), ( ) O(1). . 11.4. - , . . - , , - . . , - . , , . , . . 11.9, - T p, left right, - , x - . p x] = nil, x | x , left x] right x] nil. T root T] | . root T] = nil, T .
  • 217. 217 . 11.9 T. x p x] ( ), left x] ( ) right x] ( ). . , k, - , child1 child2 ::: childk, left right. - , : - , ( | - ) . , k, k: . ? , . : , - , ( ). . , , . | (left-child, right-sibling representation) . 11.10. - - p root T] . p, : 1. left-child x] x
  • 218. 218 11 . 11.10 T | . x p x] ( ), left-child x] ( ) right-sibling x] ( ). . 2. right-sibling x] - x ( ) x , - left-child x] = nil. x | , right-sibling x] = nil. . , 7 , 2. 22 , ( ). - . 11.4-1 , :
  • 219. 11 219 key left right 1 12 7 3 2 15 8 nil 3 4 10 nil 4 10 5 9 5 2 nil nil 6 18 1 4 7 7 nil nil 8 14 6 2 9 21 nil nil 10 5 nil nil | 6. 11.4-2 , - . 11.4-3 ( - ), ? ( - .) 11.4-4 , - , | . 11.4-5? , , ( , - ) O(1), ( ). 11.4-6? - , ( , | ) . 11-1 ( ) - III ( . 194) , - .
  • 220. 220 11 , , , Search(L k) Insert(L x) Delete(L x) Successor(L x) Predecessor(L x) Minimum(L) Maximum(L) 11-2 (mergeable heaps) ( ), - : Make-Heap ( ), Insert, Minimum, Extract-Min , , Union ( ). ( - ) . . . . . . . , - . 11-3 11.3-4 : n- n - . , - ( , key i] < key next i]] next i] 6= nil). , - o(n): Compact-List-Search(L k) 1 i head L] 2 n length L] 3 while i 6= nil and key i] 6 k 4 do j Random(1 n) 5 if key i] < key j] and key j] < k 6 then i j 7 i next i] 8 if key i] = k 9 then return i 10 return nil
  • 221. 11 221 4{6 . 4{6 - j. key i] < key j] < k, , , i j. ( , - , .) . , ? - , ( ) - . ? , - , . | - . , , . . t > 0 Xt , ( ) i k t - . . , t > 0 Compact-List-Search O(t + E Xt]). . , E(Xt) 6 Pn r=1(1;r=n)t. ( : - (6.28)). . , Pn;1 r=0 5 6 nt+1=(t+ 1). . , E(Xt) 6 n=(t + 1), , . e. , - Compact-List-Search O( pn). | , 5] 121]. 90] - . 121] , 1947 (A.M.Turing) .
  • 222. 222 11 , , , , . , - . 1951 (G.M.Hopper) A-1, - . , - IPL-II, 1956 , (A.Newell, J.C.Shaw, H.A.Simon). - 1957 IPL-III .
  • 223. 12 - , , - . - - ( ). - , ( (n)), . - O(1). - . , - , - O(1) ( , . . 12.1). - , , : - , . 12.2 - , 12.3 | - . . , | ( O(1) ). 12.1. , . U = f0 1 ::: m ; 1g ( m ). , . T 0::m ; 1], (direct-address table).
  • 224. 224 12 - : universe of keys | - , actual keys | , key | , satellite data | . . 12.1 T - . U = f0 1 ::: 9g. - . 2, 3, 5 8 ( ) , ( - ) nil. , , ( - slot position) - U ( . 12.1: T k] | , - k k , T k] = nil). : Direct-Address-Search(T k) return T k] Direct-Address-Insert(T x) T key x]] x Direct-Address-Delete(T x) T key x]] nil O(1). , T - , . - : - . , , , . 12.1-1 - , . -
  • 225. - 225 ? 12.1-2 (bit vector) | ( ). m , m . , - , , - ? - O(1). 12.1-3 , - , ? , O(1) ( , Delete , ). 12.1-4? , , , . - , , , . - ? O(1), - , O(1), O(1). ( : , - , - , ). 12.2. - : - U , - T jUj , . , jUj, . , - , - - , . , - (jKj), K | - , - - O(1) ( , | , , - ). k -
  • 226. 226 12 - : universe of keys | - , actual keys | . 12.2 - - . - k2 k5 | - . k, - h(k) - (hash table) T 0::m;1], h: U ! f0 1 ::: m; 1g | , - (hash function). h(k) - (hash value) k. . 12.2: m, jUj, . , , , - . , , (collision). , : - . - , - . jUj > m - , - . , , , - . - , , - . - - , - ( to hash" , ). , - - , - . ( , ) . | | 12.4.
  • 227. - 227 : universe of keys | - , actual keys | . 12.3 . T j] - j. , h(k1) = h(k4) h(k5) = h(k2) = h(k7). (chaining) , , - , - ( . 12.3). - j , - - j - , j nil. , : Chained-Hash-Insert(T x) x T h(key x])] Chained-Hash-Search(T k) k T h(k)] Chained-Hash-Delete(T x) x T h(key x])] O(1). ( ). - , O(1) | - , ( - , x , ).
  • 228. 228 12 - - . T | - m , n . (load factor) - = n=m ( , ). . - : - n , n, (n), , - - . , . , - - - . , , - 12.3 , m , . (simple uniform hashing). , k - h(k), - , k T h(k)], - . : ( k ), | . 12.1. T | - , - . , - . , , , ( - ) (1 + ). . - - , m , m . - n=m = , - , (1) - .
  • 229. - 229 12.2. - (1 + ), | . . , . - , - , . : - , , , - (1 + ) ( : , ) : - , , , , - . , - , . , n - ? n ( ). , ( . . 12.2-3), , ( - ). . i- (1 + (i ; 1)=m) ( . ), - , n, 1 n nX i=1 1 + i ;1 m ! = 1 + 1 nm nX i=1 (i; 1) ! = = 1+ 1 nm (n;1)n 2 = = 1+ 2 ; 1 2m = (1 + ):
  • 230. 230 12 - - - , - , ( - ) O(1). , n = O(m), = n=m = O(1) O(1 + ) = O(1). - O(1) ( , . . 12.2-3), - O(1) ( , ), ( - ) O(1). 12.2-1 h | - , - n fk1 k2 ::: kng m . ( - , (i j), h(ki) = h(kj))? 12.2-2 - - , 5 28 19 15 20 33 12 17 10 ( )? 9, - h(k) = k mod 9. 12.2-3 , - ( - ) O(1 + ), . 12.2-4 , , - . , , , ? 12.2-5 - , - - ( - ). , - , , . , , - O(1). ? 12.2-6 ( U) mn, m | - . ,
  • 231. - 231 n - , - (n). 12.3. - , - , - : , . - ? - ( ) : m - . , - P U , U , P. , X k: h(k)=j P(k) = 1 m j = 0 1 ::: m;1. (12.1) , P , - ( ). P . , , | , - 0 1). - , - h(k) = bkmc (12.1). - , . , - , - . ( - , pt pts). - , - . - , - - , . , , - - .