自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 强凸的强制性 coercivity

类似于平滑,强凸也会带来 强制性(这个翻译可能不准)。即:如果函数强凸,则满足:类比平滑,我们发现强制性都是关于梯度的累积的性质。接下来我们证明。已知函数强凸,我们知道是凸函数。那么函数g(x)满足单调性,即展开得到证毕!...

2022-02-08 15:37:59 1734

原创 强凸性带来的 距离最优值的上下界

与平滑性类似,强凸也会带来一个类似的上下界。我们先上结论:如果函数是,那么存在这么一个上下界这个界与平滑那个上下界简直不要太像,只是换了一下位置。接下来我们证明。已知函数强凸,有我们令,其中是函数最优值,则得到因为,于是证明了左边。接着证明右边,我们令上面的式子是恒成立的则而g(y) 要取最值,则带入g(y),我们可以求得这里我们没有对做y做任何限制,令右边即证...

2022-02-08 15:27:44 903 1

原创 smooth 函数性质 2: co-coercivity, 强制性

定义: 如果函数是,则满足:可以看到这是一个关于梯度的性质。接下来我们证明这个性质。为了证明这个性质,我们首先定义:可以看到这个函数的巧妙之处在于 最小值为, 很简单,对上式求导数,然后令其为零即可。只有时导数才是0。然后我们有:然后我们看,依然是一个平滑函数,因为相较于只增加了一个线性项,不改变平滑性。因此,利用平滑函数之差有界的特点,我们得到同理,我们也可以得到将第三个式子与第一个式子相加命题即证...

2022-02-07 16:35:52 1968

原创 Smooth 函数的性质-1 : 距离最优值的上下界

上一文中,我们聊了smooth性质对于确定步长的作用。这一次,我们一次性把 函数 平滑特性的几个有用的 性质 讲清楚。Claim 1 :如果函数 f 满足smooth, 则函数具备上下界这个上下界则可以比较明确地让我们知道,我们此时离最优解还有多远,接着我们来证明。Proof:因为函数是平滑的,所以我们有因为在最优值点的梯度为0 因此第二项直接消失了。 因此我们证明了上界。而上式的右边也可以看做是一个关于x的函数 g(x), 由于上式对任意x都满足,因此因此,令g(x

2022-01-21 15:28:30 1116

原创 关于梯度下降法的步长-从函数的 smooth 性质出发

我们在前面的时候提到了梯度下降法。我们简单说了一下步长。今天我们填上这个坑。我们根据函数的smooth 性质,聊一下这个步长该怎么取。首先我们回忆一下函数是smooth, 则函数满足:这个意思就是呢函数的值是会有一个上界的。梯度下降法中呢,我们自变量更新的规则有所以我们令有我们观察上面这个式子,如果我们希望梯度下降法每一步都有改进,则我们自然希望通常步长是大于0的,因此上式要满足则通常我们取步长为, 因此此时最大,函数的improvement最大。因此,如果.

2022-01-20 16:02:55 1091 1

原创 函数强凸 strong convexity

接着上一篇文章,我们接着说函数的强凸性。定义:若函数f(x)满足参数strong convex则通过这个式子我们可以看到,所谓的强凸就是比凸 多了最后项非零项,自然就比一般的凸更加严格了,所以强凸是不是也比较容易理解了。Claim 如果函数f(x)强凸,则函数为凸函数。是不是觉得这个claim 与平滑中的 claim很像,的确是的。我们先证明一下这个性质。Proof : 如果g(x)为凸函数,那么g(x)需要满足凸函数的性质即由于f(x)是强凸函数,因此命题得证。.

2022-01-17 16:38:56 6805 1

原创 函数平滑 smooth

今天我们聊一下凸优化中平滑的概念。首先说什么是平滑。平滑的定义是:满足上述式子的函数被称为-smooth 。实际上这个性质一看就与梯度有关系。为什么需要定义这个概念呢。其实就是与梯度有关。我们知道,在优化算法求解的过程中,函数的梯度理论上会逐渐趋近于0, 因此,我们通过平滑这个概念就可以看出函数梯度的变化程度,应该算是比较贴切的一个概念了。同时,上面这个公式在一些教材当中又被称作里普希茨连续。都是一个意思其实。Claim: 如果一个函数f(x)是-smooth,则函数是凸函数Pr

2022-01-17 16:25:02 7872

原创 关于梯度在优化算法中的介绍

可能每个人都听过优化老师说过 这么一句话,“所有的优化算法都是迭代算法”。想必不是每个人都能理解这句话是怎么来的。为了简单起见,我们就假设我们最小化函数f(x), x的定义域没有特殊的限制。根据泰勒公式,我们知道任何一个函数都可以利用泰勒级数进行近似。为了简单,我们对f(x)进行一阶近似,因此,原问题变为最小化函数那么根据迭代思路,我们下一次迭代取的x的数值应该满足如下关系:最后一项的作用就是一个惩罚项,意思是希望我们最新取的x的值,不要离当前的太远了。因此,我们最新的应该使得上式右

2022-01-14 21:06:37 261

原创 凸函数最优性条件

本文中,我们主要讨论一下凸函数什么时候可以取到最小值(通常这么讨论哈,可以是最大值)。老规矩,首先给出结论分为两种情况:凸函数取最小值,的条件为:这个条件的意思是什么呢?意思是 要么0 在次梯度集合中, 要么 负梯度方向在不可行方向集合中。具体的,第一个条件,我们先简单证明一下。如果函数 存在次梯度,更具凸函数定义2如果,即次梯度能取0则恒成立,则此时函数值最小上述情况对于x1 点是比较容易理解的,因为x1 这里所有方向都是可行方向。但是对于x2这一点..

2022-01-12 14:58:39 1220

原创 凸函数 3种定义的等价性

在证明等价性之前,我们需要先引入一个概念 就是 “单调”。如果一个函数是单调的,则满足然后我们开始证明三定义的等价性。首先我们写出如果函数是凸函数,则根据定义3,我们可以得到即梯度是单调的。现在我们假设函数是单调的,看看能不能推出函数是凸函数接着仿照上面的方式,我们可以得到这里我们整理一下上面的公式这里,我我们已知函数是单调的,可以得到这里因为t 是一个0-1 之间的数于是根据上面的不等式我们可以得到然后我们得到这是...

2022-01-12 14:36:48 1665

原创 凸函数-convex function

上一篇文章我们说了什么叫凸集。简单来说,凸集有点像一个类似于 “圆”的集合,毕竟任意两点都要在集合内部。今天我们就接着说凸函数。老规矩,我们先上凸函数的定义。凸函数的定义有三个,分别是:1. 2. 3. 上面定义3 的意思是说 函数f(x)的“二阶导数”大于等于0.但是这里自变量为矢量,因此求导是矩阵求导。因此称呼也要变一变,定义3的正确意思是 函数f(x)的hessian 矩阵是半正定的。前面就是感性的理解。定义1 和定义2 都表示函数是一个 “锅”的形状。如 定义1, 函

2022-01-10 10:41:44 1426

原创 一种特殊的凸集-锥

今天我们接着来说一种特殊的集合,锥老规矩,定义:C 是一个锥的条件是,,有可以看到锥的定义和凸集的定义特别像,只不过凸集要求两个点的直线在集合内。那我们来看看这个锥这个东西代表什么意思?这里代表一个矢量,同理也是一个矢量。 两个矢量的和,满足平行四边形法则,还要在集合里面,且时任意的比例变化情况下。从这个图中,我们可以看到,比例变化只能在其对应的那一条虚线上变化,同理也一样。因此,根据平行四边形法则,锥就是图中虚线所示的那一片区域。有了锥,还有一个伴随的概念叫做极锥。定义:.

2021-11-11 14:48:16 835

原创 第三节- 超平面

这一节我们来讲一个新的东西,叫做 超 平面( hyper-plane)。其实这个东西本身并不难理解。 只是我们在三维直角坐标系里面习惯了 直线 平面什么的,可能有些疑惑而已。老规矩,我们先甩出定义:超平面 hyperplane看起来,超平面是这样的一些‘ 点 ’, 满足关系Sx = b, 通常S 与 b呢又是常数。 这个东西看起来是不是和直线的定义有点像啊。 是的,本质上就是一个线性关系。其实以前高中定义的平面也是一个线性关系。我们说 ax + by +cz = d 是一个平...

2021-11-05 20:27:59 1455

原创 凸集 convex set

今天我们就很开心,因为我们正式开始接触第一个概念- 凸集啦凸集的定义如下:一个集合C中,任意两个点, 满足集合解释就是 任意两点之间的线段都在集合内部。注意: 定义中的就是限制了线段的意思。接着我们举一个凸集的例子:上面这个例子可以很好地说明凸集的意思了。至于我们为什么要定义凸集,我们后面会在说到优化问题求解算法的时候再具体说。当然有很多集合都是凸集。比如实数集合呀, 坐标轴的第一象限啊这些。如果你不是很确定一个集合是不是凸集,那么就用上面的定义去证明就ok了。..

2021-11-04 20:32:58 491

原创 凸优化的预备知识

本文中,我们对凸优化要求的基本知识进行基本的介绍。大家不要嫌烦,这已经是我能想到最少的了。1. 线性代数是空间的一组基,若换言之,任意一个向量w 都要能够被这组基 线性表示。于此,我们可以引出线性不相关。即若中,彼此都无法被剩余的k-1 个向量线性表示,则线性无关。线性无关,这里咱们举个例子:a = [1 0 0 ] b=[0 1 0] c= [ 0 0 1], 显然a,b,c是线性相关的。最后,根据上面的例子,我们给出,一组基的向量之间,彼此都是线性无关的。接着我.

2021-11-03 16:24:42 467

原创 前言- 写在凸优化开始之前

讲完算法设计,我们即将进入一个比较实用的数学-优化理论。这个系列的博客我会尽量简单地把这门课最重要的核心内容讲述出来。一些其他的内容可能会被省略一部分,主要还是希望大家能看清楚这门课的核心内容时讲什么东西。同时我还会结合在计算机上编程的操作,让大家尽量也可以动一动手。如果大家觉得有用的话,麻烦大家给我留下一个赞,谢谢各位!...

2021-10-23 14:41:47 107

转载 数据结构- 哈希表

最后是我们的哈希表。 这个东西我自己平时用不太多。所以我就转载一篇别人的博客,我觉得写的挺好的东西。 哈希表的核心就是在存储地址与存储内容之间建立一个映射关系,这样我们在找的时候就能够直接计算,而不用挨个挨个找,提高效率。 主要面临的困难就是会出现冲突,即不同的内容可能导致相同的地址。因此哈希表需要适当地冲突处理。数据结构 Hash表(哈希表)_积跬步 至千里-CSDN博客_哈希表最后就是这也是我们算法导论的最后一篇博客了。其实红黑树我也基本用的很少。我觉得应该有一个专门的框架可以直接实现红黑树

2021-09-24 16:21:53 57

原创 红黑树插入 - 其余的情况

今天我们接着讨论红黑树插入的其他情况,即父节点为红色的情况。Case 1 当前节点的父节点是红色,且当前节点的祖父节点的另一个子节点(叔叔节点)也是红色。 (01) 将“父节点”设为黑色。 (02) 将“叔叔节点”设为黑色。 (03) 将“祖父节点”设为“红色”。 (04) 将“祖父节点”设为“当前节点”(红色节点);即,之后继续对“当前节点”进行操作。 Case 2 当前节点的父节点是红色,叔叔节点是黑色,且当前节点是其父节点的右孩子

2021-09-24 16:16:24 61

原创 红黑树插入 - 父节点为黑色节点的四种情况

今天我们首先来说十二 情况中,四种最简单的情况- 父节点为黑色节点对应上一文中就是 46 76 88 这三个节点的四种情况。由于我们假设我们的节点默认为红色,因此,当我们插入之后,我们来看红黑树的性质:红黑树的定义有四条:每个节点颜色不是黑色,就是红色 根节点是黑色的 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点) 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节第一条满足, 第二条满足, 由于我们插入是红色节点,第四条不影响也满足。.

2021-09-24 15:41:13 494

原创 红黑树插入的12种基本情况

今天我们核心内容是看看,在插入操作时,红黑树有多少种情况。红黑树添加的基本情况与二叉平衡树类似,都一定是插入在叶子节点位置。因此,虚线位置为加入位置。很容易看出,一共有12种情况。这里,大家注意,这个图里面包含了红黑树所有的插入情况。这一点,大家需要记一下。后续文章中,我们会对12中情况分别进行讨论。最后,再一次提醒大家,面对一个比较难得东西,不要急,每天进步一点点,这样使你不会丧失兴趣,每一步要走稳!...

2021-09-15 16:35:22 240

原创 红黑树保持平衡的三种基本操作

上一篇文章我们提到了红黑树。这是一种比较复杂 数据结构。所以,咱么就只能一点一点地抽丝剥茧。遇到这种比较复杂的问题,咱们切记贪多求快,要一点一点的蚕食。当然了,我说的这个也只是针对大部分普通人。天赋异禀的小天才们不要对号入座哈。接着上一篇文章,我们今天来说一说红黑树保持平衡的基本三种操作。 1 变色: 红变黑 黑变红 2 左旋 3 右旋。 其中变色太简单,咱们就不说了。咱们说说左旋和右旋。旋转示意图如下:我们首先看右旋:原根节点的左孩子成为新的根节点, 原根节点变为新根节点的右孩子,注意..

2021-09-11 16:57:58 2440

原创 红黑树-面对大部头咱们使出堵门绝招~庖丁解牛

首先咱们要说一个事情是 红黑树其实就是一种特殊的二叉平衡树。 那咱们奇怪了,二叉平衡树哪里不好呢? 需要引入这么个改进版。 一般改进的东西肯定比不改进的东西牛,那么牛在哪里呢?回忆一下二叉平衡树的特点是 左节点的值小于 根节点 小于 右节点。那么,如果我们有 1 2 3 4 四个元素,插入二叉平衡树,可能出现下面的情况吗?这两种情况都可能出现吧。什么?还有左边这种情况?直觉上就觉得不太对吧。是的,少年,你的直觉是对的。左边这种情况效率就比较低。想想,如果我们要找 1. 左边这种情况找..

2021-09-05 14:47:49 82

原创 二分查找树(binary search tree)

今天开始我们就会进入一些数据结构的部分了。今天第一个要讲的是一类特殊的数据结构,二分查找树。二分查找树的特点如下:即根节点的数值一定小于左右子节点,其优势在于插入与查找时间较低为同样,我们比较关心二分查找树的创建 插入 删除首先说一下,我们在创建二分查找树的时候,也可以根据根节点数值小于子节点的规则一个一个的插入。所以创建与插入可以看成一起的。插入的时候也很简单,就是根据上述的特点,去找到一个比需要插入的值更小的根节点,然后看看插入到左节点还是右节点合适(还要考虑到后面的节点),直接插入即可。

2021-08-25 10:54:55 3551

原创 关于迪杰特斯拉算法基于最小堆的改进

迪杰特斯拉算法每一步需要选取离X最近的边添加入X集合中。而求解这个最小值如果能够很高效,那么可以进一步提高算法的效率。由于我们每一步选取最小的,因此我们可以计算出剩余节点离X中点的距离,然后用最小堆的数据结构来直接弹出最小值。最小堆求解最小值的算法复杂度为最小堆就是一种完全二叉树,但是要保证根节点小于左右节点。最大堆则反之。这里我们介绍最小堆的创建,插入与删除过程。创建- 先将所有元素按照二叉树结构随意插入。然后进行“自底向上调整”。假设元素为[9 3 7 6 5 1 10 2]..

2021-08-21 14:54:47 180

原创 继续讨论迪杰特斯拉算法正确性

上一文中我们谈到了单源路径算法 迪杰特斯拉算法。今天我们就来继续讲一下这个算法的正确性。如果有点忘记的同学们可以先点回去复习一下,尤其是注意一下迪杰特斯拉算法的贪婪规则。我们怎么证明该算法的正确性呢?老规矩,我们使用数学归纳法(一般想不到什么好办法,就用这个办法吧)。当X为空时,我们会选择与起点s点最近的点加入X,显然s到该点的最近路径选择是正确的。我们假设已经有一个X了,且所有X中节点对应的最短路径以及长度均正确存储在A[v], B[v]中。现在我们假设新加入一个点w时, 存在一条额外

2021-08-13 15:31:09 240

原创 最短路径算法-迪杰特斯拉算法(Dijkstra)

老规矩,我们首先给出该算法的具体流程:- X={s} %%记录有没有被探索过- A[s]=0 %% 该节点的最短路径-B[s]=[s]%% 保存该节点的最短路径- while x != v - among all edges (v,w)E, %% 边的集合 - pick one that minimize A[v] + 假设是 - add to X - set A[] = - set...

2021-08-11 16:07:31 826

转载 继续强联通分量-Tarjan算法

实际上Kosaraju算法在实际应用中存在一些不足。优点在于好理解。实际使用中Tarjan算法用的更多,执行效率更高。而Tarjan算法在理解了Kosaraju算法之后也是十分好理解的。关于Tarjan算法,我发现了一篇讲的特别好的博客。所以,这个算法我就直接转载了这位老兄的博客。https://blog.csdn.net/weixin_43843835/article/details/88381828有兴趣的话可以看看。讲的比较细致。...

2021-08-10 12:53:43 84

原创 DFS与强联通分量(strong connected component-Sccs)

今天我们来聊一下DFS计算有向图的强联通分量Sccs。老规矩,首先给出Sccs的定义。Sccs是一些节点的集合,该集合中任意两个节点u,v,存在路径u到v,同时也存在路径v到u。我们来看一个示意图我们看,a点存在一个到b的路径,b可以通过e点到达a。因此a b e构成了一个Sccs。那么我们如何求解一个图中的Sccs呢?首先,我们将上图中的Sccs缩成一个点,来看看。我们可以看到,将Sccs缩成一个点之后,示意图变简单了不少。如果我们对简化过后的示意图来进行搜索的话,我们..

2021-08-09 13:36:49 710

原创 DFS之拓扑排序应用

上一篇文章我们说了拓扑排序的基本思路。看起来是不是挺简单的。但是问题的关键在于,我们每一次要选择出度或者入度为0的点,如何高效选取呢?这里我们为了与DFS方便联系,我们目标就是找出度为0的点即sink node我们回忆一下,拓扑排序的基本思路,找sink node,然后将该点相关的边都删除。DFS算法什么时候停止?是不是找到sink node点的时候就不再继续向下探索了呢?将该点标记为explored之后,是不是就返回该节点的前向节点了呀。DFS将一个node标记为explored之后,是不

2021-08-04 08:33:06 469

原创 拓扑排序- 基本思路

所谓的拓扑排序的核心就是在一个有向图中,如果存在边u 到v, 则排序后u一定要在v的前面。其基本的排序思路如下所示:示意图如上所示。我们对这个图进行拓扑排序。我们的基本思路为:TopSort(G)- 找到一个入度为0 的点(没有前节点),输出- 删除与该点所有相连的边-重复上述步骤知道所有点被explored其执行步骤为实际上我们也可以在拓扑排序中每一步找出度为0的点,即没有后继节点输出。不过最后要将得到的序列反序。出度为0的节点一般叫做沉没节点(sin...

2021-08-03 11:23:20 1331

原创 图搜索算法之-深度优先 DFS

前面我们讲了BFS,本文我们讲一讲DFS。老规矩先给出DFS的伪代码DFS(graph G, start vertex s)- mark s as explored-for each edge (s,v) -if v unexplored -DFS(G,v)这里我们可以分析一下,BFS,在某个节点s,会将与s相连的所有节点v找出来,而这里我们看,只要有一个节点v与s相连,DFS就会以v作为新的起点开始往下找。所以看起来有一种打破砂锅问到...

2021-08-02 15:42:17 130

原创 BFS与connected components

上文中我们讲到了BFS与最短路径的关系。本文,我们聊一聊图的connected components。中文翻译好像是 等价类。等价类的意思是只要节点之间存在连通的边,则这些节点都被分在同一个类中。简单点说即图可以被分为多少块 pieces。如上图所示,这个图有三块。其实算法很简单。如下所示:- for i=1:N -if node i is not explored -BFS(G,i)我们说BFS(G,i)肯定能找到以i为...

2021-08-01 21:07:19 192

原创 BFS与最短路径计算

上一篇文章我们讲了广度优先搜索算法。我们提到了BFS算法有一种类似于 Layer-by-Layer 的节点搜索特点。本文中,我们继续聊一聊BFS计算最短路径的关系。BFS的流程在上一篇博客中讲了,所以我们就不多赘述了。今天我们就说一下如何在BFS的基础上实现最短路径的计算。还是沿用上一文中的示意图。这里我们假设每条边的长度都是1,当然如果每条边长度不一样,情况也是差不多的,只不过处理的时候稍微变换一点点,即只更新最短路径即可。初始的时候,我们假设s点的路径长度为P=0从s点开始BF.

2021-07-30 14:26:01 1533

原创 广度优先搜索算法BFS

本文我们主要讲BFS算法。BFS算法搜索的时候呈现出一种 按 层 搜索的特点,即节点看起来好像被分为不同的 layer了。具体我们还是举个例子来说明。老规矩我们先给出BFS算法的计算流程BFS(graph G, start vertex s)[all nodes are initited as unexplored]- mark s as explored- initiate Q as a empty FIFO queue, then add s into Q-whil...

2021-07-29 17:09:52 556

原创 一般性图搜索算法

图搜索算法是一类重要的基于图的算法。本文 给出一般化的图搜索算法的框架。图搜索算法的核心任务是从一个初始节点s,尽可能多的找到其他的点v。注意通常对于一个n个点,m条边的图,我们希望搜索算法的复杂度为,换言之,我们希望每一个点与边都不重复搜索两次。老规矩,图搜索算法的一般步骤如下:1. 初始化开始点s为explored,其他点为unexplored2. 循环直到找不到未被搜索的点3. 选择边(u,v),其中u explored,v unexplored4. ...

2021-07-27 17:25:09 1213

原创 最小割问题-Karger‘s algorithm

上一篇文章我们提到了最小割问题,最小割问题在研究网络最薄弱环节相关问题上具备广泛应用。而这个问题如今也依旧是一个open problem。而今天我们就介绍一种求解最小割问题的概率型算法-Karger's algorithm。 该算法是karger读博期间发现的一种非常简单的算法。其核心步骤就是我们随机在图上找两个点进行 constraction 合并操作。如下图所示:注意2,3由于合并为了一个点,所以2 3两点之间的边我们就当做没有了,同时要消除由于合并形成的自环。重复上述步骤到图只剩下两.

2021-07-21 10:41:10 3757 1

原创 基于图的第一个算法-最小割问题

上一篇博客我们提到了图与图的基本表示方法。今天我们开始接触第一个图的算法最小割问题。我们知道图就是由一些顶点和顶点之间的边所构成的。什么是割呢?其实所谓的割就是将图中的顶点二分的某一种具体的方法。即将图中顶点任意分成两部分都称为该图的一个割,注两个集合均不能为空。lemma 1: 某个图有n个顶点,则总共有个割。Proof: 每个顶点都有两个选择,但是注意两个集合都不能为空,因此共计种分法。最小割问题则是我们将图中顶点分成A B两个集合后,这样的边(头在A中,尾在B中,或者相反也行,无向图则

2021-07-17 17:46:16 792

原创 算法导论part-II 图的相关算法

从这一篇博客开始,我们逐渐会开始学习一些图的相关的算法了。首先我们明白一下什么时图。我们通常提到的图都是有两个组成部分:顶点,边。顶点是图的基本元素,而边则是代表顶点之间有没有连接关系。根据边的方向性,图又分为有向图和无向图两种。举个简单的例子,成都和北京,两个城市就可以看作是两个顶点。彼此间有飞机可以来往,既可以从成都到北京,又可以从北京到成都,因此这个关系可以表示为无向图。但是如果假设某一天打仗了。因为敌人的干扰,我们只能从成都到北京,而北京的飞机出不来。那么此时,就是一个有向图了。

2021-07-13 14:26:44 93

原创 确定性RS算法-D-RS算法

上篇博客我们分析了RS算法的复杂度。我们发现只要我们选择的pivot足够好,该算法的平均复杂度是线性的。那么我们就会考虑,我们有没有办法改进一下RS呢,让我们的算法的复杂度就是。于是就有了今天要讨论的这个算法D-RS。其实D-RS算法核心就是改进了RS算法的pivot的选择方式,保证了我们每一次都能选择到足够好的一个pivot。老规矩,我们先给出D-RS算法的流程:1. 先将数组分成5个元素一组,共计n/5个小组。2. 对这n/5个小组进行排序,并求出其对应的中位数,, k代表第k个小组

2021-07-12 16:10:41 1369

原创 RS算法复杂度分析

这篇博客我们接着上一篇博客的内容,我们来分析一下RS算法的复杂度。从上篇博客的lemma 1我们看到如果每一次都选择当前集合的中位数作为pivot,则RS算法复杂度为。但是实际上我们随机选择的话并不能保证总是能选到中位数。通常意义上,这样一个pivot被认为足够好,即该pivot落在当前集合的25%-75%之间。不难发现,如果我们选择了一个足够好的pivot,那么当前的集合在下一次迭代过程中任务规模至少下降25%。所以为了方便起见,我们设为一个代表第j次选到足够好的pivot所需要的随机挑选的次数的随机

2021-07-12 15:24:50 765

DRL-resources-update-1810.06339-DESKTOP-68734PK.pdf

这是一本非常好的deep learning入门书

2021-12-01

cvx-w64.rar-matlab

cvx是matlab下一个高效的凸优化问题求解器

2021-12-01

opti.rar-matlab

opti是一个matlab下高效的混合整数话求解器

2021-12-01

12.15-杨-lpsolve.zip混合整数求解器matlab

lpsolve是一个matlab下高效的混合整数规划求解器,可以解决整数规划,混合整数规划,线性规划等问题

2021-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除