1、算法5特性
确定性、可行性、输入、输出、有穷性
2、算法好坏衡量标准
问题规模、基本运算、算法计算量函数
3、时间复杂度
上界:O(f(n))
下界:Ω(f(n))
确界:θ(f(n))
4、算法研究的几个主要步骤
设计(设计有效算法)->表示(能在计算机实现)->确认(合法输入=>正确结果;不合法输入=>正确应对)->分析(复杂度,优缺点 等)->实现和测试
5、算法评价
正确性、健壮性、简单性、高效性、最优性
6、分治法:
子问题相互独立,不包含公共子问题
7、动态规划法:
子问题重复、即有很多公共子问题
8、背包:
一般背包可用贪心法(0-1背包一般不用贪心法,因为用贪心有些情况无法求其最优解)
9、贪心法:
最优子问题(非整体最优解)
10、单源最短路径:
Dijkstra:有向非负,分两集合(已选集合 ; 未选集合),每次从未选顶点集合中选取 已选集合中到未选集合中的最短路径(即每一步均为当前最优解)。
11、最小生成树:(无向)
Prim:S(已选点集合)-V(未选点集合),从V中选取到S中的最短路径的点放到S中,直到V为空。
Kruskal:边按权值由小到大排序,根据点个数En分为n个非连通区(n为点数),然后把非连通区合成一连通区。
12、随机序列:
概率相等、不可预测、不可重现
13、Las Vegas:
不一定有解,有解必为正确解(一次使用求不出解时,多次调用此算法)
14、Monte Carlo:
解的正确性不小于P(1/2 < P < 1),多次执行可以增加其总的正确率
15、回溯法:
深度优先
16、分支限界法:
广度优先 或 最小耗费优先。