第1章算法概述算法是若干指令的有穷序列,满足性质:(1)输入(2)输出(3)确定性(4)有限性
算法复杂性分析主要包括空间复杂性和时间复杂性
算法复杂性分析(1)渐近上界记号OO(g(n))={f(n)|存在正常数c和n0使得对所有nn0有:0f(n)cg(n)}(2)渐近下界记号(g(n))={f(n)|存在正常数c和n0使得对所有nn0有:0cg(n)f(n)}(3)紧渐近界记号(g(n))={f(n)|存在正常数c1,c2和n0使得对所有nn0有:c1g(n)f(n)c2g(n)}定理1:(g(n))=O(g(n))(g(n))最常见的多项式时间算法的渐近时间复杂度O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)最常见的指数时间算法的渐近时间复杂度O(2n)<O(n
)<O(nn)通用分治递推式大小为n的原问题分成若干个大小为n/b的子问题,其中a个子问题需要求解,而cnk是合并各个子问题的解需要的工作量
NP完全性理论P是所有可在多项式时间内用确定算法求解的判定问题的集合
NP是所有可在多项式时间内用不确定算法求解的判定问题的集合
(NP难度)对于问题Q以及任意问题Q1NP,都有Q1∝Q,则Q是NP难度(NPhard)的
其中∝表示约化,Q1∝Q,表示Q1可以在多项式时间转化为问题Q,从而可通过调用问题Q的算法求解
(NP完全)对于问题QNP,Q是NP难度的,则称Q是NPC(NPcomplete)的
PNPNPC的关系第2章递归与分治策略分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之
2分治法的基本思想divide-and-conquer(P){if(|P|