【算法】fhqtreap初探】的更多相关文章

NOIP回来就一直想着学平衡树...平衡树写久了调不出来真的会头脑发热.jpg 大概只写了几道题... fhqtreap是不需要旋转的平衡树,仅使用分裂合并,一样可以保持平衡树的性质,并且可以非常简单地处理区间问题. fhqtreap的核心有两段代码,split(分裂)和merge(合并) split(x, l, r, k),表示把原x的子树以第k小数为界限,权值<=第k小数的数分在左子树,根为l,其他的分在右子树,根为r void split(int x, int &l, int &…
     图论,顾名思义就是有图有论.        图:由点"Vertex"和边"Edge "组成,且图分为有向图和无向图(本文讨论有向图),之前做毕业设计的时候研究"多谱流形聚类算法"的时候有研究"Graph".高维数据的聚类就涉及到Graph Cut算法,想象数据为欧式空间的点,数据与数据之间呈现这样或那样的联系,数据就是点,他们的联系由边来决定.PS:本次学习与聚类算法无关,聚类问题具体见之前写的博客.        …
介绍 fhqtreap为利用分裂和合并来满足平衡树的性质,不需要旋转操作的一种平衡树. 并且利用函数式编程可以极大的简化代码量. (题目是抄唐神的来着) 核心操作 (均为按位置分裂合并) struct fhq { int lc, rc, siz, rnd, val; //lc为左子树,rc为右子树,siz为子树大小(位置分裂即按siz分裂),rnd为随机值,val为该节点储存的值 }t[N]; #define lc (t[rt].lc) #define rc (t[rt].rc) //下方用到的…
嗯,今天好不容易把鸽了好久的缩点给弄完了--感觉好像--很简单? 算法的目的,其实就是在有向图上,把一个强连通分量缩成一个点--然后我们再对此搞搞事情,\(over\) 哦对,时间复杂度很显然是\(\Theta(n)\)的,懒得\(Proof\)了. 真是简明扼要的算法啊\(233\) 比较弱智的代码是下面的: #include <stack> #include <cstdio> #include <iostream> #define min Min #define m…
什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络深度学习的时代了,AI从业者可以不用了解像SVM这样的古董了.姑且不说SVM是否真的已经没有前途了,仅仅是SVM在数学上优美的推导就值得后来者好好欣赏一番,这也是笔者迄今为止见过机器学习领域最优美的数学推导. 和大多数二分类算法一样,SVM算法也是致力于在正例和反例之间找出一个超平面来将它们区分开来…
深度强化学习 基本概念 强化学习 强化学习(Reinforcement Learning)是机器学习的一个重要的分支,主要用来解决连续决策的问题.强化学习可以在复杂的.不确定的环境中学习如何实现我们设定的目标. 深度学习 深度学习(Deep Learning)也是机器学习的一个重要分支,也就是多层神经网络,通过多层的非线性函数实现对数据分布及函数模型的拟合.(从统计学角度来看,就是在预测数据分布,从数据中学习到一个模型,然后通过这个模型去预测新的数据) 深度强化学习 深度强化学习(Deep Re…
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可能分类不是很好. \(update\) on 10.9: 突然发现未公开,现在公开了. 关于我原来的博客,给一个博客链接吧. 图论 用最通俗的语言让你学会网络流 SPFA算法教学 初探tarjan算法(求强连通分量) dijkstra 详解 最大流与Dijkstra做费用流 浅析最近公共祖先(LCA…
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可能分类不是很好. \(update\) on 10.9: 突然发现未公开,现在公开了. 关于我原来的博客,给一个博客链接吧. 图论 用最通俗的语言让你学会网络流 SPFA算法教学 初探tarjan算法(求强连通分量) dijkstra 详解 最大流与Dijkstra做费用流 浅析最近公共祖先(LCA…
前言 Tensorflow这个词由来已久,但是对它的理解一直就停留在“听过”的层面.之前做过一个无线图片适配问题智能识别的项目,基于Tensorflow实现了GoogLeNet - Inception V3网络(一种包含22层的深层卷积神经网络),但是基本上也属于“盲人摸象”.“照葫芦画瓢”的程度.作为当今机器学习乃至深度学习界出现频率最高的一个词,有必要去了解一下它到底是个什么东西. 而PAI,作为一站式地机器学习和算法服务平台,它大大简化了模型构建.模型训练.调参.模型性能评估.服务化等一系…
接上一节Tarjan算法初探(2):缩点 在此首先提出几个概念: 割点集合:一个无向连通图G 若删除它的一个点集 以及点集中所有点相连的边(任意一端在点集中)后 G中有点之间不再连通则称这个点集是它的一个割点集合 割边集合:一个无向连通图G 若删除它的一个边集 G中有点之间不再连通则称这个边集是它的一个割边集合 图的点联通度:无向连通图的最小割点集合中元素的个数是一张无向连通图的点连通度 图的边联通度:无向连通图的最小割边集合中元素的个数是一张无向连通图的边联通度 割点:如果一个无向连通图的点连…
接上一节 Tarjan算法初探(1):Tarjan如何求有向图的强连通分量 Tarjan算法一个非常重要的应用就是 在一张题目性质在点上性质能够合并的普通有向图中将整个强连通分量视作一个点来把整张图变成一张DAG(即有向无环图) 而DAG的形态满足最优子结构经常与DP联系在一起 故缩点常作为一条桥梁将图论与DP相联系 缩点思想不难理解 这里主要说明一下代码的操作细节与流程: 1.使用Tarjan算法求出每个点属于哪一个强连通分量 2.枚举每一条点将每一个点对应性质合并到新的点上 3.枚举每一条边…
EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种含隐变量的极大似然估计要用EM算法解决,继而罗列了EM算法的简单过程,当然最后看到EM算法时内心是懵圈的,我们也简要的分析了一下,希望你在看了前一篇文章后,能大概知道E步和M步的目的和作用.为了加深一下理解,我们回过头来,重新看下EM算法的简单介绍: 输入:观测变量数据Y,隐变量数据Z,联合分布$P…
        数据结构上老师也没讲这个,平常ACM比赛时我也没怎么理解,只是背会了代码--前天在博客园上看见了一篇介绍KMP的,不经意间就勾起了我的回忆,写下来吧,记得更牢. 一.理论准备         KMP算法为什么比传统的字符串匹配算法快?KMP算法是通过分析模式串,预先计算每个位置发生不匹配的时候,可以省去重新匹配的的字符个数.整理出来发到一个next数组, 然后进行比较,这样可以避免字串的回溯,模式串中部分结果还可以复用,减少了循环次数,提高匹配效率.通俗的说就是KMP算法主要利用…
[edit by xingoo] kmp算法其实就是一种改进的字符串匹配算法.复杂度可以达到O(n+m),n是参考字符串长度,m是匹配字符串长度. 传统的算法,就是匹配字符串与参考字符串挨个比较,如果相同就比较下一个,如果不相同,就返回上一次的结果,再重新比较. 如图1 如果失败则字符串会重新用S(参考字符串)的第二个,与T(匹配字符串)的第一个比较,知道全部符合查找,或找不到为止. 此时发现S[5] != T[5],因此用S[1]与T[0]进行比较. 此时发现S[1]!=T[0],因此用S[2…
最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一章  引言 第二章  预备知识 第三章  直接聚类法 第四章  K-means 第五章  DBSCAN 第六章  OPTICS 作者: peghoty 出处: http://blog.csdn.net/itplus/article/details/10088429 欢迎转载/分享, 但请务必声明文章…
最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一章  引言 第二章  预备知识 第三章  直接聚类法 第四章  K-means 第五章  DBSCAN 第六章  OPTICS 作者: peghoty 出处: http://blog.csdn.net/itplus/article/details/10088625 欢迎转载/分享, 但请务必声明文章…
最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一章  引言 第二章  预备知识 第三章  直接聚类法 第四章  K-means 第五章  DBSCAN 第六章  OPTICS 作者: peghoty 出处: http://blog.csdn.net/itplus/article/details/10089323 欢迎转载/分享, 但请务必声明文章…
上一节,我们分析了LSH算法的通用框架,主要是建立索引结构和查询近似近期邻.这一小节,我们从p稳定分布LSH(p-Stable LSH)入手,逐渐深入学习LSH的精髓,进而灵活应用到解决大规模数据的检索问题上. 相应海明距离的LSH称为位採样算法(bit sampling),该算法是比較得到的哈希值的海明距离,可是一般距离都是用欧式距离进行度量的,将欧式距离映射到海明空间再比較其的海明距离比較麻烦.于是,研究者提出了基于p-稳定分布的位置敏感哈希算法,能够直接处理欧式距离,并解决(R,c)-近邻…
写在开始之前 最近突然对各路游戏的寻路算法很感兴趣,于是去学习了下游戏里的AI们是如何寻路的.网上相关内容很多,但同时有些说法也不一,制作自己的A* 算法时也有因不同的说法而困惑.整理多方资料并自己实践之后,以下是我对寻路算法,尤其是A* 算法的一些自己的总结.以下为自己的思考与想法,可能不准确之处,请指正. 我本次的模拟比较简单,下面简述一下模拟环境: 地图是棋盘式的格子地图: 各个点没有权值,或者说权值为1: 只能上下左右走,不支持斜着走: 未考虑终点被包住而到达不了的情况,发生此类情况时,…
我是一个数学工作者,专业方向是图论.研究图论已经十年有余.一个月前,一个偶然的机会让我萌生了一个念头,那就是我想尝试用C++写出我所学过的图论方面的算法.作为一个数学工作者,过去一直是纸上谈兵,我之前并没有真正写过多少程序.确实,只知道写证明的纯理论的数学工作者往往自视甚高地看不起工程中实际写程序的程序员(即使程序员圈子里也有不少厉害的数学工作者),另一个方向的鄙视链好像也一定程度上存在着.于是,我不想只作一个"思想上的巨人行动上的矮子",便有了这个系列的博客. 首先声明,我不是专业的…
July   二零一一年一月 本文主要参考:算法导论 第二版.维基百科. 一.Dijkstra 算法的介绍 Dijkstra 算法,又叫迪科斯彻算法(Dijkstra),算法解决的是有向图中单个源点到其他顶点的最短路径问题.举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离,Dijkstra 算法可以用来找到两个城市之间的最短路径. 二.图文解析 Dijkstra 算法 ok,经过上文有点繁杂的信息,你还并不对此算法了如指掌,清晰透彻.没关系,咱们来幅图,就好了.请允许我再…
写完这个就差不多了,准备干新项目了. 确实挺不擅长写东西,感觉都是罗列代码写点注释的感觉,这篇就简单阐述一下数据变动时DOM是如何更新的,主要讲解下其中的diff算法. 先来个正常的html模板: <body> <div id='app'> <div v-for="item in items">{{item}}</div> <div @click='click'>click me!</div> </div&g…
0. 社区划分简介 0x1:非重叠社区划分方法 在一个网络里面,每一个样本只能是属于一个社区的,那么这样的问题就称为非重叠社区划分. 在非重叠社区划分算法里面,有很多的方法: 1. 基于模块度优化的社区划分 基本思想是将社区划分问题转换成了模块度函数的优化,而模块度是对社区划分算法结果的一个很重要的衡量标准. 模块度函数在实际求解中无法直接计算得到全局最优解析解(类似深度神经网络对应的复杂高维非线性函数),所以通常是采用近似解法,根据求解方法不同可以分为以下几种方法: . 凝聚方法(down t…
1. PageRank的由来和发展历史 0x1:源自搜索引擎的需求 Google早已成为全球最成功的互联网搜索引擎,在Google出现之前,曾出现过许多通用或专业领域搜索引擎.Google最终能击败所有竞争对手,很大程度上是因为它解决了困扰前辈们的最大难题:对搜索结果按重要性排序.而解决这个问题的算法就是PageRank.毫不夸张的说,是PageRank算法成就了Google今天的地位. 1. 搜索引擎的核心框架 从本质上说,搜索引擎是一个资料检索系统,搜索引擎拥有一个资料库(具体到这里就是互联…
1. 关联分析是什么? Apriori和FP-growth算法是一种关联算法,属于无监督算法的一种,它们可以自动从数据中挖掘出潜在的关联关系.例如经典的啤酒与尿布的故事.下面我们用一个例子来切入本文对关联关系以及关联分析的讨论. 0x1:一个购物篮交易的例子 许多商业企业在日复一日的运营中积聚了大量的交易数据.例如,超市的收银台每天都收集大量的顾客购物数据. 例如,下表给出了一个这种数据集的例子,我们通常称其为购物篮交易(market basket transaction).表中每一行对应一个交…
1. 社团划分 0x1:社区是什么 在社交网络中,用户相当于每一个点,用户之间通过互相的关注关系构成了整个网络的结构. 在这样的网络中,有的用户之间的连接较为紧密,有的用户之间的连接关系较为稀疏.其中连接较为紧密的部分可以被看成一个社区,其内部的节点之间有较为紧密的连接,而在两个社区间则相对连接较为稀疏. 整个整体的结构被称为社团结构.如下图,红色的黑色的点集呈现出社区的结构, 用红色的点和黑色的点对其进行标注,整个网络被划分成了两个部分,其中,这两个部分的内部连接较为紧密,而这两个社区之间的连…
1. 聚类简介 0x1:聚类是什么? 聚类是一种运用广泛的探索性数据分析技术,人们对数据产生的第一直觉往往是通过对数据进行有意义的分组.很自然,首先要弄清楚聚类是什么? 直观上讲,聚类是将对象进行分组的一项任务,使相似的对象归为一类,不相似的对象归为不同类 但是,要达到这个目的存在几个很困难的问题 . 上述提及的两个目标在很多情况下是互相冲突的.从数学上讲,虽然聚类共享具有等价关系甚至传递关系,但是相似性(或距离)不具有传递关系.具体而言,假定有一对象序列,X1,....,Xm,所有相邻元素(X…
1. HMM背景 0x1:概率模型 - 用概率分布的方式抽象事物的规律 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测. 概率模型(probabilistic model)提供了一种描述框架,将学习任务归结于计算未知变量的概率分布,而不是直接得到一个确定性的结果. 在概率模型中,利用已知变量推测未知变量的分布称为“推断(inference)”,其核心是如何基于可观测变量推测出未知变量的条件分布. 具体来说,假定所关心的变量集合为…
catalogue . SOM简介 . SOM模型在应用中的设计细节 . SOM功能分析 . Self-Organizing Maps with TensorFlow . SOM在异常进程事件中自动分类的可行性设计 . Neural gas简介 . Growing Neural Gas (GNG) Neural Network . Simple implementation of the "growing neural gas" artificial neural network .…
1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b:P2:-P2 为了估计这个概率(我们事先是不知道这两枚硬币正面朝上的概率的),我们需要通过实验法来进行最大似然估计,每次取一枚硬币,连掷5下,记录下结果 硬币 结果 统计 Coin_a 正 正 反 正 反 3正-2反 Coin_b 反 反 正 正 反 2正-3反 Coin_a 正 反 反 反 反 1…