北航算法复习笔记

#算法复习笔记

一 决策和策略

决策是指某阶段状态给定以后,从该状态演变到下一状态某状态的选择;
由每阶段的决策组成的决策函数序列就称为全过程策略,建成策略

二 回溯法使用深度优先(dfs)搜索状态空间树

三 快速排序

基本思想:通过一趟排序将数据分割成独立的两部分,一部分的数据比另一部分的所有数据都小,然后递归知道整个数据为有序数据。

标准(常用)快速排序

基本思路:取第一个为基准数,然后定义两个哨兵分别为该数组第一个和最后一个,暂且定为i和j,首先j找从末尾寻找第一个比基准数小的数,然后j停下来,i从开头寻找第一个比基准数大的数,然后i停下来,如果i和j不相遇则交换i和j所指向的数,然后如果相遇,则将相遇所在的位置和基准数(也就是第一个数)交换,然后此时第一轮就结束了,该数组就会被分为两部分,然后继续递归该过程。
复杂度分析:

最优情况下:每一次的基准数恰好将整个数组平分,此时时间复杂度公示为T(n)=2T(n/2)+n;T(n/2)为平分后的子数组的时间复杂度,n为第一次比较的次数。这个递推公式的时间复杂度为nlogn。计算请参考链接https://blog.csdn.net/w36680130/article/details/81535128
最坏情况下:整个数组正好是倒序,这样就和冒泡排序一样了,时间复杂度正好为n^2
平均情况下:nlogn

随机化快速排序

相比较于标准快速排序,随机化就是每次的基准数都是在数组中随机选取,而不是固定选取第一个元素了,这样能尽可能的避免最坏情况的发生,但是其平局复杂度从长期望上来看仍然是nlogn。

np问题

p:能在多项式时间内解决的问题
np:能在多项式时间内对一个解进行验证的问题
npc:一类np问题的集合
若p2可以转化为p1,那么p1至少和p2一样难,即你会解二元一次方程就会解一元一次方程组
npc问题至少比np问题一样难,因为np问题都可以转化为npc问题。


3397473-b215c8c8dfe159f0.jpg.png

寻找最大值最小值

对于一个数组寻找最大值或最小值的时间复杂度为n,如果一下子求的话就是2n,最少的次数是3*(n/2),就是先将一对元素进行比较,把较大值和最大值比较,较小值和最小值比较,所以每两个数需要比较三次。

随机算法

Las Vegas算法:
* 采样越多,越有机会找到最优解
* 尽量找最好的,但不保证能找到
* e.g. 100把钥匙,每次找一把,找对的
* 要求必须给出最优解,对采样没有限制
Monto Carlo算法:
* 采样越多,越近似最优解
* 尽量找最好的,但不保证最好
* e.g.100个苹果,每次拿一个,找最大的
* 要求在有限采样内,必须给出一个解,但不是最优解

近似算法

基本概念:很多实际应用问题都是npc问题,这类问题不存在多项式时间算法。一般有以下三种处理方式:
* 如果问题的输入规模较小,可以利用搜索策略在指数时间内解决问题。
* 输入问题较大,既可以考虑用随机算法在多项式时间内“高概率”的精确求解问题
* 也可以考虑在多项式时间内求的问题的一个近似解
性能分析:
* 时间复杂度和空间复杂度:见 精确复杂度
* 近似精度:
* 近似比:设A是一个优化问题的近似算法,A具有近似比(ratio bound) p(n), 如果max{C_C_, CC} ≤ p(n)。其中n是输入大小,C是A产生的解的代价,C是优化解的代价。
* 相对误差:对于任意输入,近似算法的相对误差定义为|C - C
|/C,其中C是近似解的代价,C是优化解的代价。
* 相对误差界:一个近似算法的相对误差界为ε(n),如果|C-C|/C ≤ ε(n)。

减治策略

* 减去一个常量:
* 减去一个常量因子
* 减去的规模是可变的

1如果能不断的解决n-1规模的问题就能解决n规模的问题


2011061720235776.jpg

既可以递归的从上到下求解,也能非递归的从下往上构造
2一般来说减去的一个常数因子是2(即将原问题规模分为2),其实减常因子的减治法可以看做是分治的变种,只不过它只对划分子规模后的一个部分求解。


2011061720284663.jpg

3对于减可变规模的例子,那就更少了,因为效率越高的算法显然越难找到。
一个例子是欧几里得算法,前面也写过了:


2011061720302651.jpg

减去一个常量

* 插入排序、折半插入排序 时间复杂度都是n^2
* 拓扑排序 时间复杂度是 V+E

减去一个常量因子

* 折半查找是logn
* 计算两个整数的乘积(其实叫分治更好)

减去的规模是可变的

    * 欧几里得算法
    * 寻找数组第k大的数,类似于快速排序
    * **二叉查找树 logn
            * 若二叉树是平衡的,即高度为logn+1,则复杂度为logn
            * 若数据是有序的,二叉树的深度最大化为n,退化为顺序查找,时间复杂度为n
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352