Contents
1 Ú¯
1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Java . . . . . . . . . . . . . . . . . . . . .
1.2.1 Java8 . . . . . . . . . . . . . . . . . . . . .
1.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Java . . . . . . . . . . . . . . . . . . .
1.3 ê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 8ÜÚ . . . . . . . . . . . . . . . . . . . . . .
1.3.2 êÚÈ ä . . . . . . . . . . . . . . . . . . . . . .
1.3.3 6 . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Ú¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2 . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.3 Ú . . . . . . . . . . . . . . . . . . . . . . . .
1.4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.7 Ú¯ . . . . . . . . . . . . . . . . . . . . . .
1.4.8 Ú . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 ¼ê . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 CÚ . . . . . . . . . . . . . . . . . . . . .
1.5.2 . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 O ΩÚΘ . . . . . . . . . . . . . . . . . . . . . . . .
1.5.4 Ú . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 ê . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 . . . . . . . . . . . . . . . . . .
1.6.3 . . . . . . . . . . . . . . . . . . . . . . . . .
i
1
1
2
3
7
8
10
10
13
24
26
27
27
29
33
34
34
34
36
37
38
42
44
45
46
46
49
49
ii
CONTENTS
1.6.4 z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
2 êâÚ êâ
2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 ADT Ú E . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 ADT . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 ADT E . . . . . . . . . . . . . . . . . . . . . . . .
2.3 ADTÚ . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 ADT . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 List ADT . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 ADT . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.4 ADT . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.5
In-tree ADT . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Ú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 ADT . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 ADT . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 8ADT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 ADT . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 ÜADTDisjoint8Ü . . . . . . . . . . . . . .
2.5.3 ADT . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
53
53
54
54
56
56
56
57
63
66
68
69
69
73
73
73
74
75
79
79
80
83
79
3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 ¹eÚ . . . . . . . . . . . . . . . . .
3.2.2 «Method 99 . . . . . . . . . . . . . . . . . . .
3.2.3 . . . . . . . . . . . . . . . . . . . . . .
3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 ª . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 . . . . . . . . . . . . . . . . . . . .
3.5 . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1 Ú . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2 . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.3 . . . . . . . . . . . . . . . . . . . . . . . . . .
98
3.5.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.5.5 ä . . . . . . . . . . . . . . . . . . 102
3.5.6 . . . . . . . . . . . . . . . . . . . . . . . . 104
3.5.7 . . . . . . . . . . . . . . . . . . . . . . 104
95
85
87
94
94
85
88
91
CONTENTS
iii
3.6 ª . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.7.1 . . . . . . . . . . . . . . . . . . . . . 112
3.7.2 Chip and ConquerBe Conquered . . . . . . . . . . . 114
* . . . . . . . . . . . . . . . . . . . . 115
3.7.3
4
117
4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.2.2 Ú . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.2.3 . . . . . . . . . . . . . . . . . . 123
4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4 ¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.4.1 ¯ . . . . . . . . . . . . . . . . . . . . . . . . 125
4.4.2 Partition . . . . . . . . . . . . . . . . . . . . . . . 127
4.4.3 ¯ . . . . . . . . . . . . . . . . . . . . . . . . 129
4.4.4 ¯ . . . . . . . . . . . . . . . . . . 135
4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.5.2 z . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.7 . . . . . . . . . . . . . . . . . . . . . . . . 145
4.7.1 . . . . . . . . . . . . . . . . . . . . . . 145
4.7.2 . . . . . . . . . . . . . . . . . . . . . . . . 146
4.7.3 . . . . . . . . . . . . . . . . . . . . . . . . 147
4.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.8.2 . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.8.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.8.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.8.5 Ú . . . . . . . . . . . . . . . . . . . . . . 153
4.8.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 153
4.9 . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.10 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.10.2 Ú‘ . . . . . . . . . . . . . . . . . . . . . . . . 156
4.11 ê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
iv
CONTENTS
4.11.1 … . . . . . . . . . . . . . . . . . . . . . . 156
4.11.2 ê . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5 Selection and Adversary Arguments
163
5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Selection¯ . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.1.1
5.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.1.3 Adversary Arguments
. . . . . . . . . . . . . . . . . . . . 164
5.1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.2 maxÚmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.3 … . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 168
. . . . . . . . . . . 169
5.3.3 An Adversary Lowe-Bound Argument
5.3.4 maxÚsecondLargest . . . . . . . . 169
5.4 Selection¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.4.1 C . . . . . . . . . . . . . . . . . . . . . . 169
5.5 median . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.6 Designing Against an Adversary . . . . . . . . . . . . . . . . . . 169
6 8Ú
171
6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.2 ê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.3 Amortized . . . . . . . . . . . . . . . . . . . . . . . . . 172
6.4 ùç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
6.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.4.3 ùç . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.4.4 ùç Ú . . . . . . . . . . . . . . . . . . . . . 175
6.4.5 ùç . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.5.2 m . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.5.3 ¼ê . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.6 d ÚÜ . . . . . . . . . . . . . . . . . . . . 177
6.6.1 d . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.6.2 . . . . . . . . . . . . . . . . . . . . . . . . 178
6.6.3 Ü . . . . . . . . . . . . . . . . . . . . . . . . 179
6.6.4 Weighted Union . . . . . . . . . . . . . . . . . . . . . . . 180
CONTENTS
v
6.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
*wUnionÚcFind . . . . . . . . . . . . . . . . . . . 181
6.6.6
6.6.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.7 with a Decrease Key Operation . . . . . . . . . . . . 181
6.7.1 The Decrease Key Operation . . . . . . . . . . . . . . . . 182
7 ãÚã
183
7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.2 Ú« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2.2 ã . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.2.3 ã«Úêâ . . . . . . . . . . . . . . . . . . . . . 193
7.3 ã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
7.3.1 Depth-First Search . . . . . . . . . 196
7.3.2 Breadth-First Search . . . . . . . . . . . 200
7.3.3 Ú . . . . . . . . . . . . 203
7.4 ã . . . . . . . . . . . . . . . . . . . . . . . . 204
7.4.1 Ú . . . . . . . . . . . . . . . . . . . . . 204
7.4.2 Ó . . . . . . . . . . . . . . . . . 206
7.4.3 DFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.4.4 DFS e . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.4.5 DFS . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.4.6 Ãã . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.5 ã . . . . . . . . . . . . . . . . . . . . . . . . . 210
7.6 Ãã . . . . . . . . . . . . . . . . . . . . . . . . 210
7.7 Ãã . . . . . . . . . . . . . . . . . . . . . . . . . 210
7.7.1 !Ú . . . . . . . . . . . . . . . . . . . . 210
8 ãz¯Ú
211
8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.2 Prim’s . . . . . . . . . . . . . . . . . . . . . . . . 211
8.2.1 Ú . . . . . . . . . . . . . . . . . . 212
8.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.2.3 . . . . . . . . . . . . . . . . . . . . . . 214
8.2.4 Prim’s MST . . . . . . . . . . . . . . . . . . 215
8.2.5 . . . . . . . . . . . . . . . . 216
8.2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.2.7 Ú . . . . . . . . . . . . . . . . . . . . . 217
8.2.8 The Pairing Forest Interface . . . . . . . . . . . . . . . . . 217
vi
CONTENTS
8.2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.3.1 . . . . . . . . . . . . . . . . . . . . . . . . 218
8.3.2 Dijkstra’s . . . . . . . . . . . . . . . . . . . 219
8.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.4 Kruskal’s . . . . . . . . . . . . . . . . . . . . . . 221
8.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
9
223
9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
9.2 . . . . . . . . . . . . . . . . . . . . . . . . . 223
9.2.1 Ú . . . . . . . . . . . . . . . . . . . . . . . . . . 223
9.3 Warshall’s . . . . . . . . . . . . . . . . . . . . . 224
9.4 ã . . . . . . . . . . . . . . . . . . . . . . 224
9.5 . . . . . . . . . . . . . . . . . . . . . 225
10 y
227
10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
10.2 ¯ãÚ¦ . . . . . . . . . . . . . . . . . . . . . . 228
10.3 ¯ . . . . . . . . . . . . . . . . . . . . . . . . . 229
10.3.1 ¯ . . . . . . . . . . . . . . . . . . . . . . 229
10.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10.3.3 y . . . . . . . . . . . . . . . . . . . . . 230
10.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
11
237
11.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11.3 Knuth-Morris-Pratt . . . . . . . . . . . . . . . . . . . . . . . 237
11.4 Boyer-Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11.5 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12 ‘ªÚ
239
12.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
12.2 ‘ª¼ê . . . . . . . . . . . . . . . . . . . . . . . . . 239
12.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
12.2.2 Ի . . . . . . . . . . . . . . . . . . . . . . 240
12.2.3 . . . . . . . . . . . . . . . . . . . . . . 240
12.3 Ú . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
CONTENTS
vii
12.4 ¯ †ÚòÈ . . . . . . . . . . . . . . . . . . . . . . . . 240
12.4.1 ¯ † . . . . . . . . . . . . . . . . . . . . . . . . 241
12.4.2 òÈ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.4.3 êÚ Roots of Unity . . . . . . . . . . . . . 242
13 NP¯
243
13.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
13.2 PÚNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
13.2.1 ¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
13.2.2 ¯ . . . . . . . . . . . . . . . . . . . . . . . . 244
13.2.3 P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
13.2.4 NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
13.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . 252
13.3 NP¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
13.4 ԻPolynomial Reductions
. . . . . . . . . . . . . . . . . 254
13.4.1 NP¯ . . . . . . . . . . . . . . . . . . . 254
13.4.2 ¯ . . . . . . . . . . . . . . . . . . . . . 254
13.4.3 z¯Ú¯ . . . . . . . . . . . . . . . . . . . . . 254
13.5 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
13.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.7.1 . . . . . . . . . . . . . . . . . . . . . . 256
13.8 ã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.8.1 E . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.8.2 Cã . . . . . . . . . . . . . . . . . . . . . 256
13.8.3 Wigderson’sã . . . . . . . . . . . . . . . . . . . 256
13.9 TSP ¯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.9.2 C . . . . . . . . . . . . . . . . . . . . . . . . . 257
13.9.3 . . . . . . . . . . . . . . . . . . . . . . . . . 257
13.9.4 TSPC . . . . . . . . . . . . . . . . . . . 257
13.10DNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
13.10.1 DNA . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
13.10.2 AdlemanãÚDNA . . . . . . . . . . . . . . . . 258
13.10.3 Ú . . . . . . . . . . . . . . . . . . . . . . . . . . 258
14
259
14.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
14.2 PRAMÚ¦ . . . . . . . . . . . . . . . . . . . . . . . 259
viii
CONTENTS
14.2.1 PRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
14.2.2 ¦ . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
14.3 PRAM . . . . . . . . . . . . . . . . . . . . . . . . 260
14.3.1 E . . . . . . . . . . . . . . . . . . . . . . . . . 261
14.4 â . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
14.4.1 n bits or . . . . . . . . . . . . . . . . . . . . . . . 262
14.4.2 ê . . . . . . . . . . . . . 262