- 博客(24)
- 资源 (20)
- 收藏
- 关注
原创 MIT算法导论公开课之课程笔记
MIT算法导论公开课之第1课 课程简介及算法分析MIT算法导论公开课之第2课 渐进符号、递归及解法MIT算法导论公开课之第3课 分治法MIT算法导论公开课之第4课 快排及随机化算法MIT算法导论公开课之第5课 线性时间排序MIT算法导论公开课之第6课 顺序统计、中值MIT算法导论公开课之第7课 哈希表MIT算法导论公开课之第8课 全域哈希和完全哈希MIT算法导论公开...
2018-08-30 10:40:26
12218
8
原创 MIT算法导论公开课之第23课 高级课题、缓存参数无关算法(二)
静态搜索树将N个元素有序的存储在一个完全二叉树的N个结点中。数据存储方式: 在树位于中间层的边的位置将其分割为两部分。 递归的分割上一步骤分割后产生的所有子树,将所有子树线性的存储在内存之中。 Ex: 存储传输量: 缓存相关的算法考虑缓存相关的算法一般是用来确定优化的上界。B-搜索树排序用N个元素构建搜索树,然后中序遍历这棵树。存储...
2018-08-30 09:33:29
571
原创 MIT算法导论公开课之第22课 高级课题、缓存参数无关算法(一)
现代计算机存储层次模型 - 现代计算机有多级缓存的机制,越靠近CPU的缓存容量越小,速度越快。 这样设计的原因,一方面是靠近CPU的缓存制作成本高,价格昂贵,另一方面是极限速度受电荷传导速度限制,存储容量做大必定会降低存取速度。 - Cost to access=latency+amount/bandwidth 可知在存储层次上越远离CPU延迟(latency)越长,计...
2018-08-30 08:48:12
1272
1
原创 MIT算法导论公开课之第21课 高级课题、并行算法(二)
矩阵乘法A、B为n x n的矩阵,计算矩阵C=A·B,使用分治法(使用将矩阵分块的策略)。算法伪码:Mult(C,A,B,n)//C=A·B Temp matrix T[1~n,1~n] if n=1 C[1,1] ← A[1,1]·B[1,1] else <partition matrices>//O(1)...
2018-08-30 08:24:10
660
原创 MIT算法导论公开课之第20课 高级课题、并行算法(一)
并行算法对于串行算法,一般只有一种基础模型(随机存取机器模型),而在并行领域,有许多种不同的并行算法模型和并行化模型,没有一种最佳模型的共识。本节课讨论的模型基于动态多线程的多核机器,它是为共享内存的编程而设计的。Ex:Fib(n) if n<2 return n x ← spawn Fib(n-1) y ← spawn Fib(n...
2018-08-29 19:31:30
1040
原创 MIT算法导论公开课之第19课 最短路径算法、点的最短路径
单源点最短路径问题回顾1.未加权(或所有权值都相等)的图,使用BFS算法,时间为O(V+E)。2.无负权值边的图,使用Dijkstra算法,时间为O(E+V·lgV)。3.一般情况的图,使用Bellman-Ford算法,时间为O(V·E)。4.DAG(有向无环图),使用拓扑排序来得到顶点的顺序,运行一次Bellman-Ford算法,时间为O(V+E)。全对(All-pairs)...
2018-08-29 19:16:47
801
原创 MIT算法导论公开课之第18课 最短路径算法、Bellman和差分约束系统
Bellman-Ford 算法图G=(V,E),选取s∈V作为图的原点,此算法可计算最短路径δ(s,v)(v∈V)或报告出图中存在负权值的环路。Exercise在路径中存在负权值的环路时,将δ(s,v)设置为-∞。Bellman-Ford 算法伪码d[s] ← 0for each v∈V-{s} d[v] ← ∞for i ← 1 to |V|-1 ...
2018-08-29 19:00:11
1254
原创 MIT算法导论公开课之第17课 最短路径算法、Dijkstra算法、广度优先搜索
图的路径给定一个图G=(V,E)且每条边都通过函数w被赋予一个实数的权值。最短路径问题找到图中从顶点u到顶点v的最小权值的路径。最短路径权值问题:计算图中从顶点u到顶点v的路径的最小权值。δ(u,v)=min{w(P),P为从顶点u到顶点v的路径}(存在路径)δ(u,v)=∞(不存在路径)无最短路径的情况:1.图中存在权值和为负数的环形路径。...
2018-08-28 19:35:56
1203
1
原创 MIT算法导论公开课之第16课 贪婪算法、最小生成树
关于图的知识回顾(附录B)有向图(Digraph,Direct graph)G=(V,E),V为图的顶点集,E为边集,E∈V x V。无向图(Undirected graph)G=(V,E),E为无向的边集。|E|=O(V^2)连通图,对于图中的任意顶点,总有路径可以到达其他顶点,|E|>=|V|-1。对于连通图,则有lg|E|= O(lg(V^2))=O(lgV)=Ω(lg(|...
2018-08-28 18:10:58
1252
原创 MIT算法导论公开课之第15课 动态规划、最长公共子序列
动态规划(Dynamic programming): 动态规划是一种设计技巧,而不是一种特定的算法,就像分治法一样。最长公共子序列(Longest common subsequence)问题: 有两个序列,序列x[1~m],序列y[1~n],找到它们的最长公共子序列,子序列不需要在原序列中占用连续的位置(最长公共子串要求连续),子序列可能不唯一。Ex: x:A...
2018-08-28 17:49:37
1927
原创 MIT算法导论公开课之第14课 竞争性分析、自组织表
自组织表定义一个有n个元素的链表L。用户操作: 访问其中的元素Access(x)。 查找元素的位置Rank(x)(从表头到x的距离)。算法操作: 链表L可以通过交换相邻元素调整元素顺序,且置换代价为1。Ex: 在线算法 一个操作序列S每次只发送一步的操作请求,在线算法必须马上完成这步操作,不考虑后面的操作情况。离线算法: 离线算法可以预先看过操作序...
2018-08-24 19:21:09
713
原创 MIT算法导论公开课之第13课 平摊分析、表的扩增、势能方法
平摊分析(Amortized analysis)问题引入一个哈希表应该多大? 越大越好(哈希表越大搜索时间消耗越短)。 越小越好(哈希表越小占用存储空间越小)。 对于要存储n个元素的哈希表的大小最好为Θ(n)。当不知道要存储的元素数量时,如何设定哈希表的大小? 使用动态表的策略,当哈希表已满,再加入元素时(溢出),将哈希表扩大: 1.分配一个更大的...
2018-08-24 19:04:57
1837
原创 MIT算法导论公开课之第12课 跳跃表
动态搜索结构跳跃表(skip list)树堆(treap)红黑树(red black tree)B树(B tree)跳跃表一种简单、高效的动态搜索结构,使用了随机化算法。 插入删除操作的期望的运行时间为O(lgn),并且这种情况有很高的概率(≈1-1/n^α)。有序的链表 搜索一个排好序的链表所用时间为O(n),因为链表不支持随机访问。改...
2018-08-24 18:52:26
938
原创 MIT算法导论公开课之第11课 扩充的数据结构、动态有序统计和区间树
动态有序统计主要操作: OS-Select(i)//返回动态集中第i小的元素。 OS-Rank(x) //返回动态集排序序列中元素x的位置。新增数据: 在每个结点中保存其子树的结点个数。 size[x]=size[left[x]]+size[right[x]]+1 size[nil]=0 处理nil的通用技巧: 标记法,给空结...
2018-08-24 18:34:03
915
2
原创 MIT算法导论公开课之第10课 平衡搜索树
平衡搜索树一种搜索树结构,其维护一个n个元素的动态集,树高为O(lgn)。不同的平衡搜索树数据结构AVL trees2-3 trees2-3-4 treesB treesRed-black treesSkip listsTreaps红黑树红黑树是二叉搜索树,其每个结点都会附带一些额外的信息,被称为色域,红黑树的特性1.每个结点的色域值为黑色或红色,因此...
2018-08-23 19:46:10
776
2
原创 MIT算法导论公开课之第9课 二叉搜索树
二叉搜索树二叉搜索树(Binary Search Tree),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。Ex: 二叉搜索树排序(BST sort):将数组A排序T ← ∅for i ← 1 t...
2018-08-23 19:22:10
885
1
原创 MIT算法导论公开课之第8课 全域哈希和完全哈希
哈希的缺陷对于任意的哈希函数而言,都存在一个不好的键集,使得所有键值都会哈希映射到同一个槽中。解决方案: 随机选择哈希函数,使其与输入哈希运算的键值情况相独立。全域哈希(universal hashing)定义:设U为键值的全域,H为哈希函数的一个有限集,H的哈希函数将U的键映射到哈希表的槽{0,1,2,…,m-1}里,并且满足: 对任意的x、y∈U,且x≠y,|...
2018-08-23 18:54:12
1620
1
原创 MIT算法导论公开课之第7课 哈希表
符号表问题表S中有n条记录,每条记录都有一个键值,并且有其他的一些数据(卫星数据)。允许的操作: 1.插入数据(S,x):S ← S∪{x} 2.删除数据(S,x):S ← S - {x} 3.查询数据(S,k):存在键值k对应的数据x,则返回x,否则返回nil(空值)。插入删除操作将S变为一个动态集合。直接映射表假设键值来自一个有m个元素的集合U{0,1...
2018-08-23 18:37:06
1049
原创 MIT算法导论公开课之第6课 顺序统计、中值
顺序统计问题: 有n个无序的数,找到第k小的数(所有元素的值不相等)。朴素算法: 先排序,第k号元素即为第k小的数。 k=1时,即为最小值。 k=n时,即为最大值。 k=(n+1)/2向上或向下取整时,即为中位数。随机选择算法(随机化的分治算法): 定义函数Rand-Select(A,p,q,i)。 在数组A中获得第i小的数。 用分治...
2018-08-23 18:10:00
945
原创 MIT算法导论公开课之第5课 线性时间排序
排序算法的速度取决于所使用的计算机模型里允许的操作。常见排序快速排序(Θ(nlgn))(不稳定排序)(交换过程会破坏稳定性)堆排序 (Θ(nlgn))(不稳定排序)归并排序(Θ(nlgn))(稳定性排序)插入排序(Θ(n^2)) (稳定性排序)比较排序模型允许比较数的大小的操作。最快的时间复杂度为Θ(nlgn)。决策树模型Ex:对&amp;lt;a1,a2,a...
2018-08-22 19:45:16
933
原创 MIT算法导论公开课之第4课 快排及随机化算法
快速排序分治算法、“原地“排序、非常高效(通过微调)。步骤 1.选取一个关键数据 再根据其大小把原数组分为两个子数组,第一个数组中的数比关键数据小,第二个数组中的数比关键数据大。 2.递归的处理两个子数组的排序。 3.无。函数伪码partiton(A,p,q) x ← A[p] i ← p for j ← p+1 to q do...
2018-08-22 19:31:42
1267
原创 MIT算法导论公开课之第3课 分治法
分治法1. 将一个问题划分为若干个子问题。2. 递归的解决每一个子问题。3. 将子问题的解合并成为整个大问题的解。归并排序1. 将一个数组分为两个子数组。2. 递归的对每一个子数组进行排序。3. 合并两个有序子数组。运行时间 递归函数为T(n)=2T(n/2)+Θ(n)。 使用主方法,为case2 ,所以T(n)= Θ(nlgn)。二分查找在...
2018-08-22 19:16:17
2008
原创 MIT算法导论公开课之第2课 渐进符号、递归及解法
O符号(上界)f(n)=O(g(n)) (&amp;amp;lt;=)存在c&amp;amp;gt;0 n0&amp;amp;gt;0 当n&amp;amp;gt;=n0时 使得0&amp;amp;lt;=f(n)&amp;amp;lt;=cg(n)。O(g(n))表示符合上述条件的函数集,公式中的等号的作用类似于属于,所以等号不可逆。Ex f(n)=n^3+O(n^2) 存在h(n)属于O(
2018-08-21 19:55:56
3019
4
原创 MIT算法导论公开课之第1课 课程简介及算法分析
先修课程:离散数学、概率论、编程课程算法分析:算法分析是理论研究,是关于计算机性能和资源利用的研究(尤其关注性能)。比性能更重要的考虑因素:正确性、简洁性、可维护性、编程成本、稳定性、功能性、模块化、安全性、可扩展性、用户友好度。算法的重要性:算法将不可行变为可行。算法是一种描述程序行为的语言。排序问题:将一组数(A[1~n])按大小顺序(从小到大...
2018-08-21 18:42:17
3829
Xshell6 安装包
2019-01-03
《TensorFlow 实战Google深度学习框架》(第2版)
2018-11-09
《Python 学习手册》(第五版)(英文版)
2018-08-31
《Python机器学习及实践从零开始通往Kaggle竞赛之路》
2018-06-02
《简明Python教程》
2018-05-23
《挑战程序设计竞赛》(第2版)
2018-05-22
《深入理解OpenCV》
2018-04-20
《 Linux内核0.11完全注释》
2018-04-20
《 User Interface Design & Implementation》
2018-04-20
《ScipyLectureNotes》
2017-12-31
《An introduction to machine learning with scikit-learn》
2017-12-31
《Matplotlib-PyplotTutorial》
2017-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人