Dynamic Programming
- Optimal substructure. The optimal solution to a problem consists of optimal solutions to subproblems.
- Overlapping subproblems. few subproblems in total, many recurring instances of each.
Bellman-Ford
shortest path, negative possible.
OPT[v,k]=min(OPT[v,k−1],OPT[u,v]+w(u,v))
Chain Matrix Multiplication
OPT[i,j]=OPT[i,k]+OPT[k+1,j]+combine
Min Cut
The set of vertices reachable from source s in the residual graph is one part of the partition. Cut capacity cap(A,B)=∑out Ac(e).
∣f∣=e out of X∑f(e)−e into X∑f(e)
- maxflow = Min cap(A,B).
Ford-Fulkerson
Given (G,s,t,c∈N+), start with f(u,v)=0 and Gf=G. While an augmenting path is in Gf, find a bottleneck. Augment the flow along this path and update the residual graph Gf. O(∣f∣(V+E)).
Edmond-Karp
Ford-Fulkerson, but choose the shortest augmenting path.
For any flow f and any (A,B) cut, ∣f∣≤cap(A,B). For any flow f and any (A,B) cut, ∣f∣=∑f(s,v)=∑u∈A, v∈Bf(u,v)−∑u∈A, v∈Bf(v,u)
Solving by Reduction
To reduce a problem Y to a problem X (Y≤pX) we want a function f that maps Y to X such that f is a polynomial time computable and ∀y∈Y is solvable if and only if f(y)∈X is solvable.
Reduction to NF
Describe how to construct a flow network. Claim "This is feasible if and only if the max flow is …". Prove both directions.
Bipartite to Max Flow
- Max Matching ⟹ Max Flow. If k edges are matched, then there is a flow of value k.
- Max matching ⟸ Max flow. If there is a flow f of value k, there is a matching with k edges.
- O(∣f∣(E′+V′))
- ∣f∣=V
- V′=2V+2
- E′=E+2V
- O(V(E+2V+2V+2))=O(VE+V2)=O(VE)
Circulation
- d(v)>0 if demand
- d(v)<0 if supply
- Capacity Constraint 0≤f(e)≤c(e)
- Conservation Constraint fin(v)−fout(v)=d(v).
- For every feasible circulation ∑v∈Vd(v)=0, there is a feasible circulation with demands d(v) in G if and only if the maximum s−t flow in G′ has value D=∑d(v)>0d(v).
Circulation with Demands and Lower Bounds.
- Capacity Constraint l(e)≤f(e)≤c(e)
- Conservation Constraint fin(v)−fout(v)=d(v)
- Given G with lower bounds, we subtract the lower bound l(e) from the capacity of each edge.
- Subtract f0in(v)−f0out(v)=L(v) from the demand of each node.
- Solve the circulation problem on this new graph to get a flow f.
- Add l(e) to every f(e) to get a flow for the original graph.
Existence of Linear Programming Solution.
- Given an Linear Programming problem with a feasible set and an objective function P.
- If S is empty, Linear Programming has no solution.``
- If S is unbounded, Linear Programming may or may not have the solution.
- If S is bounded, Linear Programming has one or more solutions.
Standard Form Linear Programming
- max(c1x1+⋯+cnxn)
- subject to
- a11x1+⋯+a1nxn≤b1
- all the way to
- am1x1+⋯+amnxn≤bm.
- Also, x1≥0,⋯,xn≥0.
Matrix Form Linear Programming
- max(cTx)
- subject to
- Ax≤b
- x≥0
- x∈R
Integer Linear Program
- all variables ∈N
- is NP-Hard
Dual Program
- min(bTy)
- subject to
- ATy≥c
- y≥0
- y∈R
Weak Duality
- The optimum of the dual is an upper bound to the optimum of the primal.
- OPT(primal)≤OPT(dual).
Strong duality
- Let P and D be primal and dual Linear Programming correspondingly. If P and D are feasible, then cTx=bTy.
If a standard problem and its dual are feasible, both are feasibly bounded. If one problem has an unbounded solution, then the dual of that problem is infeasible.
Possibilities of Feasibility
- P = set of poly-time solvable problems.
- NP = set of poly-time verifiable problems.
- Decision Knapsack is NP-complete, whereas undecidable problems like Halting problems are only NP-Hard (not NP).
- X is NP-Hard if ∀Y∈NP and Y≤pX.
- X is NP-complete if X is NP-Hard and X∈NP.
- If P = NP, then P = NP-complete.
- NP Problems can be solved in poly-time with NDTM.
- NP Problems can be verified in poly-time by DTM.
Polynomial Reduction
To reduce a decision problem Y to a decision problem X (Y≤pX), find a function f that maps Y to X such that f is poly-time computable and ∀y∈Y is YES if and only if f(y)∈X is YES.
Proving NP-Complete
Show X is in NP, Pick problem NP-complete Y, and show Y≤pX.
Conjunctive Normal Form SAT
- Conjunction of clauses.
- Literal: Variable or its negation.
- Clause: Disjunction of literals.
- 3-SAT. Each clause has at most three literals.
- (X1∨¬X3)∧(X1∨X2∨X4)∧⋯
Independent Set
- Independent Set is a set of vertices in a graph, no two of which are adjacent.
- The max independent set asks for the size of the largest independent set in a given graph.
Clique
- Complete graph = every pair of vertices is connected by an edge.
- The max clique asks for the number of vertices in its largest complete subgraph.
Vertex Cover
- Vertex Cover of a graph is a set of vertices that includes at least one endpoint of every edge.
- The min vertex cover asks for the size of the smallest vertex cover in a graph.
Hamiltonian Cycle
- A cycle that visits each vertex exactly once.
- Hamiltonian Path visits each vertex exactly once and doesn't need to return to its starting point.
Graph Coloring
- Given G, can you color the nodes with <k colors such that the end points of every edge are colored differently?