算法设计与分析---算法概述

算法概述

1.算法与程序

1.算法的概念:算法是由若干条指令组成的又穷序列,且满足4条性质:
1)输入:有0个或多个由外部提供的量作为算法的输入;
2)输出:算法至少产生一个量最为输出;
3)确定性:组成算法的每条指令是清晰的,是没有歧义的;
4)有限性:算法中每条指令的执行次数是有限的,执行的时间也是有限的;
2.程序于算法的区别:
程序可以不满足4),比如操作系统是一个程序而不是一个算法,操作系统是一个在无限循环中执行的程序;

2.算法复杂度分析

1.算法复杂度分为时间复杂度和空间复杂度,
2.时间复杂度指的是算法占用时间资源的多少;
3.空间复杂度指的是算法占用空间资源的多少;
4.复杂度以最坏复杂度为准!
如果一个问题的时间复杂度可以表示为多项式形式,那么时间复杂度就等于该多项式的最高阶
例如时间复杂度T(n)=4n^3+3logn+2;
则T(n)近似等于4*n^3;
符号化定义:

1)O(f)+O(g)=O(max(f,g));
2)O(f)+O(g)=O(f+g);
3)O(f)*O(g)=O(f*g);
4)如果g(N)=O(f(N))则有O(f)+O(g)=O(f);
5)O(Cf(N))=O(f(N))(C是正常数);
6)f=O(f);

3.NP完全性理论

1.图灵停机问题:
不能在多项式时间里解决该问题,即不存在常数k是该问题在O(n^k)内解决;
2.P类问题:
所有可以在多项式时间内求解的判定问题构成P类问题(多项式问题);
3.NP类问题:
非确定性多项式问题;
4.Cook定理:
布尔表达式的可满足性问题SAT是NP完全的;
5.NP完全问题树中几个经典的NP完全问题:
1)合取范式的可满足性问题CNF-SAT;
2)三元合取范式的可满足性问题3-SAT;
3)团问题CLIQUE;
4)顶点覆盖问题VERTEX-COVER;
5)子集和问题SUBSET-SUM;
6)哈密顿回路问题HAM-CYCLE;
7)旅行售货员问题TSP;

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115260940