Cheat Sheets for Hard Problems

70

description

A very high-level overview of the modern toolkit involved in solving NP-hard problems.

Transcript of Cheat Sheets for Hard Problems

Page 1: Cheat Sheets for Hard Problems
Page 2: Cheat Sheets for Hard Problems

Cheat  Sheets  for  Hard  Problems

Page 3: Cheat Sheets for Hard Problems

Some problems tend to be harder than others.

Page 4: Cheat Sheets for Hard Problems

NP

Page 5: Cheat Sheets for Hard Problems

PNP

Page 6: Cheat Sheets for Hard Problems

PNP

NP-complete

Page 7: Cheat Sheets for Hard Problems

PNP

Page 8: Cheat Sheets for Hard Problems

X

solveTSP{blahblah

blahblahblah

}

Page 9: Cheat Sheets for Hard Problems

TSPX

solveTSP{blahblah

blahblahblah

}

Page 10: Cheat Sheets for Hard Problems

TSPX

solveTSP{blahblah

blahblahblah

}

Page 11: Cheat Sheets for Hard Problems
Page 12: Cheat Sheets for Hard Problems

Independent Set

Page 13: Cheat Sheets for Hard Problems

Independent Set

Clique

Page 14: Cheat Sheets for Hard Problems

Independent Set

Clique

Independent SetClique

Page 15: Cheat Sheets for Hard Problems

Independent SetClique

Page 16: Cheat Sheets for Hard Problems

Independent SetClique

Page 17: Cheat Sheets for Hard Problems

Independent SetClique

SolveIndSet { Return Clique( ); }G

Page 18: Cheat Sheets for Hard Problems

TSPX

solveTSP{blahblah

blahblahblah

}

Page 19: Cheat Sheets for Hard Problems

Did you say NP-complete?

Page 20: Cheat Sheets for Hard Problems

Did you say NP-complete?

Page 21: Cheat Sheets for Hard Problems

Travelling SalesmanSatisfiability

Integer Linear ProgrammingMinimum Vertex Cover

Maximum CliqueChromatic NumberIndependent Set

Max-Leaf Spanning TreeMinimum Degree Spanning Tree

Minimum Facility LocationMinimum Broadcast Time

Subset SumDominating Set

Steiner TreeLongest Path

Feedback Vertex SetEdge Dominating Set

3-Dimensional MatchingSet Packing

Minimum Unsplittable FlowMinimum Bandwidth

Minimum Multi-way cut....

Page 22: Cheat Sheets for Hard Problems

Travelling SalesmanSatisfiability

Integer Linear ProgrammingMinimum Vertex Cover

Maximum CliqueChromatic NumberIndependent Set

Max-Leaf Spanning TreeMinimum Degree Spanning Tree

Minimum Facility LocationMinimum Broadcast Time

Subset SumDominating Set

Steiner TreeLongest Path

Feedback Vertex SetEdge Dominating Set

3-Dimensional MatchingSet Packing

Minimum Unsplittable FlowMinimum Bandwidth

Minimum Multi-way cut....

Page 23: Cheat Sheets for Hard Problems
Page 24: Cheat Sheets for Hard Problems

Heuristics

Page 25: Cheat Sheets for Hard Problems

Heuristics

Page 26: Cheat Sheets for Hard Problems

Formal analysis?

Page 27: Cheat Sheets for Hard Problems

You have Polynomial Time.

Page 28: Cheat Sheets for Hard Problems

You have Polynomial Time.WORK BACKWARDS!

Page 29: Cheat Sheets for Hard Problems

Approximation & Randomized Algorithms

Page 30: Cheat Sheets for Hard Problems

A no-compromise situation?

Page 31: Cheat Sheets for Hard Problems

A no-compromise situation?

Page 32: Cheat Sheets for Hard Problems

A no-compromise situation?Exploit additional structure in the input.

Page 33: Cheat Sheets for Hard Problems

Parameterized & Exact Analysis

Page 34: Cheat Sheets for Hard Problems

Parameterized & Exact Analysis

Chromatic  Number  is  easy  on                                Graphs.Interval

Page 35: Cheat Sheets for Hard Problems

Parameterized & Exact Analysis

Chromatic  Number  is  easy  on                                Graphs.Planar*

Page 36: Cheat Sheets for Hard Problems

Parameterized & Exact Analysis

Chromatic  Number  is  easy  on                                Graphs.Bipartite

Page 37: Cheat Sheets for Hard Problems

Good solutions tend to involve a combination of several techniques.

Page 38: Cheat Sheets for Hard Problems

Vertex Cover

Page 39: Cheat Sheets for Hard Problems
Page 40: Cheat Sheets for Hard Problems
Page 41: Cheat Sheets for Hard Problems
Page 42: Cheat Sheets for Hard Problems
Page 43: Cheat Sheets for Hard Problems

Vertex Cover

Every edge has at least one end point in a vertex cover.

Page 44: Cheat Sheets for Hard Problems

Vertex Cover

Every edge has at least one end point in a vertex cover.

Page 45: Cheat Sheets for Hard Problems
Page 46: Cheat Sheets for Hard Problems
Page 47: Cheat Sheets for Hard Problems
Page 48: Cheat Sheets for Hard Problems
Page 49: Cheat Sheets for Hard Problems
Page 50: Cheat Sheets for Hard Problems
Page 51: Cheat Sheets for Hard Problems
Page 52: Cheat Sheets for Hard Problems
Page 53: Cheat Sheets for Hard Problems
Page 54: Cheat Sheets for Hard Problems

Is there a Vertex Cover with at most k vertices?

Page 55: Cheat Sheets for Hard Problems

A vertex with more than k neighbors.

Page 56: Cheat Sheets for Hard Problems

Throw away all vertices with degree (k+1) or more.

(And decrease the budget appropriately.)

Page 57: Cheat Sheets for Hard Problems

Throw away all vertices with degree (k+1) or more.

After all the high-degree vertices are gone...

(And decrease the budget appropriately.)

Page 58: Cheat Sheets for Hard Problems

...any vertex can cover at most k edges.

Page 59: Cheat Sheets for Hard Problems

...any vertex can cover at most k edges.

Suppose the current budget is (k-x).

Page 60: Cheat Sheets for Hard Problems

...any vertex can cover at most k edges.

Suppose the current budget is (k-x).

If the number of edges in the graph exceeds k(k-x)...?

Page 61: Cheat Sheets for Hard Problems

Lots of edges - no small vertex cover possible.

Few edges - brute force becomes feasible.

Page 62: Cheat Sheets for Hard Problems

Lots of edges - no small vertex cover possible.

Few edges - brute force becomes feasible.

win/winsituation

Page 63: Cheat Sheets for Hard Problems
Page 64: Cheat Sheets for Hard Problems
Page 65: Cheat Sheets for Hard Problems

Common Sense

Page 66: Cheat Sheets for Hard Problems

Common Sense

Approximate

Page 67: Cheat Sheets for Hard Problems

Common Sense

Approximate

Randomize

Page 68: Cheat Sheets for Hard Problems

Common Sense

Approximate

Randomize

Exploit Input Structure

Page 69: Cheat Sheets for Hard Problems

Common Sense

Approximate

Randomize

Exploit Input Structure