某储备粮的“学习笔记” - cs341
http://blog.gregwym.info/tag/cs341/
CS 341 Algorithm 复习小记
http://blog.gregwym.info/cs-341-algorithm-brief-review.html
2011-12-16T00:27:48+08:00Master TheoremT(n) = a * T(n / b) + f(n)
x = log_b(a)
T(n) = θ(n^x) if f(n) = O(n^(x-ε))
θ(n^x * lg(n)) if f(n) = θ(n^x)
θ(f(n)) if f(n) = Ω(n^(x+ε))
and a * f(n/b) <= c * f(n)
Greedy
At each step, make the "best" next choice.
Never backtrack or change past choices.
Never look ahead to see if this choice has negative consequences.
Greedy Proof, Type 1
Describe a greedy local choice strategy
Setup the configurations of the greedy solution G and the optimal solution O
Argue that O can become G by replacing each entry in OFor each replacement, show it is possible, because it consist the compatibilty and optimality The last two step involves induction
In basecase, focusing on how the first greedy choice can be used in an optimal solution
During induction,assume the first k choices in an optimal solution are made by the greedy algorithm, show that the k+1 choice can be made by the greedy algorithm as well
Greedy Proof, Type 2
Describe a greedy local choice strategy
Setup the configurations of the greedy solution G and the optimal solution O
Find out the difference between O and G
Try to reorder O to G and consists the optimality
Dynamic ProgrammingDynamic Programming calculates a solution based on the result of a previous calculation. It saves the previous result so that no duplicate calculation needed. Dynamic Programming Design Recipe
Find out the subproblem
give a score evaluation function
give a recursive difinition
State how an array can be used to evaluate the scores
dimension
evaluation order
basecase
final result
How to recover the solution
GraphRepresentations of Graphs
Pointers
vertices have pointers to adjacent vertices
Cannot determine whether an edge exists directly
Adjacency matrix
A matrix M, M[i, j] = 1 iff exists edge from i to j
waste a lot of space
Adjacency lists
Link-list like representation
继续ing...