The course will offer the following themes:
• Introduction
Computational complexity of decision and optimization problems
NP-complete and NP-hard problems
Heuristic algorithms, quality of suboptimal solutions, (non)existence of a guarantee of quality
• Approximate solving of NP-hard problems
Approximation algorithms
Quality of approximate solutions
The class APX
Gap technique
Approximation schemes
The classes PTAS and FPTAS
Limits of approximate solving
• The design of approximation algorithms
Greedy method
Focusing on subproblems
Iterative partitioning
Dynamic programming
• Randomized solving of NP-hard problems
Las Vegas and Monte Carlo algorithms
The classes RP, co-RP, ZPP, PP, BPP
• The design of randomized algorithm
Random sampling
Establishing abundance of witnesses
Random reordering
Hashing
Load balancing