Randomized rounding is a technique used to design approximation algorithms for combinatorial optimization problems.

Examples:

References:

1. Start with the problem (e.g. MAX-SAT) you want to design an algorithm for.

2. Formulate the problem as an IntegerLinearProgram IP (for example).

3. Relax the IP to get a LinearProgram LP.

4. Design an algorithm taking the following form:

- a. Given a problem instance, compute a solution X* to the corresponding linear programming relaxation LP.
- b. "Randomly round" X* to an integer solution X' of the IP.

5. Use the ProbabilisticMethod? to show that the integer solution X' approximately meets the constraints of the IP with positive probability. Use the fact that the cost of the optimal fractional solution X* gives you a bound on OPT.

6. [Optional] Convert the randomized algorithm into a deterministic algorithm using the MethodOfConditionalProbabilities? .

Examples:

- MaxSATByRandomizedRounding - Goemans and Williamson's 3/4 approximation algorithm for MAX-SAT.
- MaxCutBySemidefiniteProgramming - Goemans and Williamson's MAX-CUT algorithm using SemidefiniteProgramming .

References:

- [Motwani and Raghavan's book on Randomized Algorithms]
- Section 4 of KleinAndYoung
- [Raghavan and Thompson's seminal paper]
- The ProbabilisticMethod?
- The MethodOfConditionalProbabilities?