ISBN: 3540441344
TITLE: Algorithmics for Hard Problems
AUTHOR: Hromkovic
TOC:

1 Introduction 1
2 Elementary Fundamentals 11
2.1 Introduction 11
2.2 Fundamentals of Mathematics 13
2.2.1 Linear Algebra 13
2.2.2 Combinatorics, Counting, and Graph Theory 30
2.2.3 Boolean Functions and Formulae 46
2.2.4 Algebra and Number Theory 55
2.2.5 Probability Theory 82
2.3 Fundamentals of Algorithmics 96
2.3.1 Alphabets, Words, and Languages 96
2.3.2 Algorithmic Problems 99
2.3.3 Complexity Theory 116
2.3.4 Algorithm Design Techniques 137
3 Deterministic Approaches 153
3.1 Introduction 153
3.2 Pseudo-Polynomial-Time Algorithms 156
3.2.1 Basic Concept 156
3.2.2 Dynamit Programming and Knapsack Problem 158
3.2.3 Maximum Flow Problem and Ford-Fulkerson Method 161
3.2.4 Limits of Applicability 172
3.3 Parameterized Complexity 174
3.3.1 Basic Concept 174
3.3.2 Applicability of Parameterized Complexity 175
3.3.3 Discussion 178
3.4 Branch-and-Bound 180
3.4.1 Basic Concept 180
3.4.2 Applications for MAX-SAT and TSP 181
3.4.3 Discussion 187
3.5 Lowering Worst Case Complexity of Exponential Algorithms 189
3.5.1 Basic Concept 189
3.5.2 Solving 3SAT in Less than 2^n Complexity 190
3.6 Local Search 194
3.6.1 Introduction and Basic Concept 194
3.6.2 Examples of Neighborhoods and Kernighan-Lin's Variable-Depth Search 198
3.6.3 Tradeoffs Between Solution Quality and Complexity 203
3.7 Relaxation to Linear Programming 214
3.7.1 Basic Concept 214
3.7.2 Expressing Problems as Linear Programming Problems 216
3.7.3 The Simplex Algorithm 223
3.7.4 Rounding, LP-Duality and Primal-Dual Method 233
3.8 Bibliographical Remarks 249
4 Approximation Algorithms 253
4.1 Introduction 253
4.2 Fundamentals 254
4.2.1 Concept of Approximation Algorithms 254
4.2.2 Classification of Optimization Problems 259
4.2.3 Stability of Approximation 260
4.2.4 Dual Approximation Algorithms 264
4.3 Algorithm Design 266
4.3.1 Introduction 266
4.3.2 Cover Problems, Greedy Method, and Relaxation to Linear Programming 268
4.3.3 Maximum Cut Problem and Local Search 276
4.3.4 Knapsack Problem and PTAS 279
4.3.5 Traveling Salesperson Problem and Stability of Approximation 288
4.3.6 Bin-Packing, Scheduling, and Dual Approximation Algorithms 313
4.4 Inapproximability 321
4.4.1 Introduction 321
4.4.2 Reduction to NP-Hard Problems 323
4.4.3 Approximation-Preserving Reductions 325
4.4.4 Probabilistic Proof Checking and Inapproximability 334
4.5 Bibliographical Remarks 343
5 Randomized Algorithms 347
5.1 Introduction 347
5.2 Classification of Randomized Algorithms and Design Paradigms 349
5.2.1 Fundamentals 349
5.2.2 Classification of Randomized Algorithms 351
5.2.3 Paradigms of Design of Randomized Algorithms 365
5.3 Design of Randomized Algorithms 369
5.3.1 Introduction 369
5.3.2 Quadratic Residues, Random Sampling, and Las Vegas 370
5.3.3 Primality Testing, Abundante of Witnesses, and One-Sided-Error Monte Carlo 375
5.3.4 Some Equivalence Tests, Fingerprinting, and Monte Carlo 392
5.3.5 Randomized Optimization Algorithms for MIN-CUT 399
5.3.6 MAX-SAT, Random Sampling, and Relaxation to Linear Programming with Random Rounding 407
5.3.7 3SAT and Randomized Multistart Local Search 415
5.4 Derandomization 419
5.4.1 Fundamental Ideas 419
5.4.2 Derandomization by the Reduction of the Probability Space Size 421
5.4.3 Reduction of the Size of the Probability Space and MAX-EKSAT 425
5.4.4 Derandomization by the Method of Conditional Probabilities 428
5.4.5 Method of Conditional Probabilities and Satisfiability Problems 430
5.5 Bibliographical Remarks 435
6 Heuristics 439
6.1 Introduction 439
6.2 Simulated Annealing 441
6.2.1 Basic Concept 441
6.2.2 Theory and Experience 445
6.2.3 Randomized Tabu Search 449
6.3 Genetic Algorithms 452
6.3.1 Basic Concept 452
6.3.2 Adjustment of Free Parameters 460
6.4 Bibliographical Remarks 466
7 A Guide to Solving Hard Problems 469
7.1 Introduction 469
7.2 Taking over an Algorithmic Tank or a Few Words about Money 470
7.3 Combining Different Concepts and Techniques 471
7.4 Comparing Different Approaches 474
7.5 Speedup by Parallelization 476
7.6 New Technologies 485
7.6.1 Introduction 485
7.6.2 DNA Computing 486
7.6.3 Quantum Computing 494
7.7 Glossary of Basic Terms 499
References 511
Index 533
END

