
算法
LDawn_
Code More.
展开
-
C++从零开始 ------ 二叉树与 轮子的故事
C++从零开始 ------ 二叉树与 轮子的故事C++从零开始 ------ 二叉树与 轮子的故事轮子引入类二叉树C++从零开始 ------ 二叉树与 轮子的故事轮子引入一个优秀的程序员拿到一个新语言的第一件事往往就是造轮子 ,没有轮子的程序就像没有轮子的汽车,怎么跑都跑不动 。大家都喜欢Python,为什么呢?因为Python全部是轮子,C++跟Python一比,就是婴儿车对战高达(...原创 2019-11-23 19:58:59 · 456 阅读 · 0 评论 -
NP完全理论
NP完全理论P,NP,NPC,NP-HARD优化与判定问题:归约NPC问题的证明P,NP,NPC,NP-HARDP问题:多项式时间内可解NP问题:多项式时间内可构造并验证解NPC问题:任何NP问题都可以在多项式时间被归约到此问题,并且可以在多项式时间内构造并验证此问题的解(同时属于NP与NP-hrad)NP-hard问题:任何NP问题都可以在多项式时间被归约到此问题优化与判定问题:...原创 2019-06-18 15:52:04 · 1291 阅读 · 0 评论 -
动态规划------DP基础入门
动态规划------DP基础入门做题板子例子做题板子解答模板定义子问题定义目标写递归式与初始化条件伪代码分析时间复杂度1维子问题:输入:x[1...n]x[1...n]x[1...n]序列,字符串,数组子问题:x[1...i]/x[i...n]x[1...i]/x[i...n]x[1...i]/x[i...n]前缀或后缀复杂度:Θ(n)\Theta(n)Θ(n)...原创 2019-06-17 20:26:27 · 315 阅读 · 0 评论 -
MST与贪心策略
MST与贪心策略定理Prim算法Kruskal算法Dijkstra框架综合应用:约定定理割中最轻边(唯一)必在某个(全部)MST中(利用此结论可完成对Prim与Kruskal的证明)圈中最重边(唯一)必不在某个(全部)MST中证明:若在MST中,则去掉e后,MST被划分为X-Y,再取圈中另一可链接X-Y的边,加入MST中,立得一个更小的MST若所有圈/割的最重/轻边唯一 ⇒\Ri...原创 2019-06-17 12:18:20 · 756 阅读 · 0 评论 -
图遍历
图遍历基本概念DFSBFS综合应用基本概念边TE:遍历序指定的边BE:指向(非父)祖先节点DE:指向孙子CE:指向兄弟写伪代码的时候可以直接写if uv is BE:DFS有向图中(u,v)(u,v)(u,v)TE:指白BE:指灰DE:f[v]<d[u]f[v]<d[u]f[v]<d[u] 且指向黑CE:f[v]≥d[u]f...原创 2019-06-16 16:20:01 · 887 阅读 · 0 评论 -
算法设计与分析(上)
算法设计与分析(上)复习感想算法复杂度整理O(f(n))的大小关系O(logn)O(n)O(nlogn)O($n^2$)公式&数据结构整理平滑曲线:$\forall n, f(2n)\in\theta(f(n))$数列相关公式渐进符号公式Master定理 $T(n)=aT(\frac{n}{b})+f(n)$加强版Master定理:堆相关公式:红黑树:其他排序与逆序对的关系典型算法实现p...原创 2019-04-23 19:45:41 · 1056 阅读 · 0 评论 -
经典算法的平均复杂度分析
经典算法的平均复杂度分析改进的冒泡排序Quick Sort闭哈希查找失败查找成功查找开哈希表查找改进的冒泡排序由于没有改变相邻逆序对互换的本质,数组内平均有n2n^2n2的逆序对就决定了算法必然复杂度为O(n2)\Omicron(n^2)O(n2)Quick Sort设排好序的序列为Z[1:N],则认定指标随机变量如下:Xij=I{Zi与Zj在QS的过程中发生了比较}X_{ij}=I\{...原创 2019-04-23 19:43:01 · 2013 阅读 · 0 评论 -
算法复杂度下界证明---对手论证(adversary argument)基础篇
@[TOC](证明算法复杂度下界—对手论证(adversary argument))什么是对手论证?将算法设计者与算法分析者看作对手,同时扮演两个角色进行算法分析。算法设计者:尽量多的创造更多信息算法分析者:尽量少的给予信息,拥有着随时合理改变取值的能力只有这二者做到极致,对手论证才能成立。注:从分析者的角度可以忽视很多细节,凑出题目所要求的大小即可从同大小问题引入问题描述:...原创 2019-04-22 17:56:55 · 6182 阅读 · 3 评论 -
证明算法复杂度下界---决策树基础篇
证明算法复杂度下界---决策树基础篇几个约定需要用到的公式什么是决策树利用决策树证明比较排序的下界利用决策树证明Ksorted的下界题目说明:解题思路:答案:利用决策树证明螺丝螺母问题下界题目说明:解题思路:答案:几个约定基于易用性与通用性的考虑我们约定:任一可能的输入中,不会出现等价元素算法复杂度的结果是平滑的输入规模应为knk^nkn(k的取值应使得计算尽量方便)log(n!)=...原创 2019-04-21 21:29:39 · 3137 阅读 · 3 评论 -
堆以及堆排序的优化
堆以及堆排序的优化什么是堆?FixHeap()CreateHeap()堆排序的优化堆的泛化堆的性质什么是堆?堆结构+偏序关系任何关于堆的算法都要先保证其一,再尽力做好另一个FixHeap()先保证堆结构不被破坏,即将最后一个放在第一个的位置,然后再利用左右子树只需修一个树的局部完整性达到log(n)的效果CreateHeap()对左右子树递归的执行算法,然后fix头部即可,w(n)=...原创 2019-04-21 19:21:51 · 566 阅读 · 0 评论