前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second edition)一书的作者所给,关于这3中二叉树在前面的博文算法设计和数据结构学习_4(<数据结构和问题求解>part4笔记)中已经有所介绍.这里不会去详细介绍它们的实现和规则,一是因为这方面的介绍性资料超非常多,另外这3种树的难点都在插入和删除部分,其规则本身并不多,但是要用文字和图形解释其实还蛮耗…
数据结构学习之字符串匹配算法(BF||KMP) 0x1 实验目的 ​ 通过实验深入了解字符串常用的匹配算法(BF暴力匹配.KMP.优化KMP算法)思想. 0x2 实验要求 ​ 编写出BF暴力匹配.KMP.优化KMP的代码模型 0x2 代码 0x2.1.1 BF暴力匹配 #include <iostream> #include <string> using namespace std; int BF1(string s1,string s2) { int len=s2.length(…
数据结构学习之栈求解n皇后问题 0x1 目的 ​ 深入掌握栈应用的算法和设计 0x2 内容 ​ 编写一个程序exp3-8.cpp求解n皇后问题. 0x3 问题描述 即在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求:(1)皇后的个数n由用户输入,其值不能超过20,输出所有的解.(2)采用类似于栈求解迷宫问题的方法. 0x4 代码 #include <iostream> #include <cstdio> #include <cstdlib…
catalogue . 个人理解 . 基本使用 . MNIST(multiclass classification)入门 . 深入MNIST . 卷积神经网络:CIFAR- 数据集分类 . 单词的向量表示(Vector Representations of Words) . 循环神经网络(RNN).LSTM(Long-Short Term Memory, LSTM) . 用深度学习网络搭建一个聊天机器人 0. 个人理解 在学习的最开始,我在这里写一个个人对deep leanring和神经网络的粗…
数据结构课上讲的KMP算法和我在ACM中学习的KMP算法是有区别的,这里我对课本上的KMP算法给出我的一些想法. 原理和之前的KMP是一样的https://www.cnblogs.com/wkfvawl/p/9768729.html,但是不同点在于之前的KPM中next数组存放的是到了该位时最大前后缀长度,而这里的KMP中next数组存放的是j下一步需要移动的位置. 个人觉得课本上的KMP算法强调位置,模式串上指针位置j,主串指针位置i,对于位置上的变化,更利于理解代码. 先贴出代码: #inc…
依旧转载自作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 特征点检测学习_2(surf算法) 在上篇博客特征点检测学习_1(sift算法) 中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高.后面有不少学者对其进行了改进,其中比较出名的就是本文要介绍的surf算法,surf的中文意思为快速鲁棒特征.本文不是专门介绍surf所有理论(最好的理论是作者的论文)的,只是对surf算法进行了…
在上篇博客特征点检测学习_1(sift算法) 中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高.后面有不少学者对其进行了改进,其中比较出名的就是本文要介绍的surf算法,surf的中文意思为快速鲁棒特征.本文不是专门介绍surf所有理论(最好的理论是作者的论文)的,只是对surf算法进行了下整理,方便以后查阅. 网上有些文章对surf做了介绍,比如: http://wuzizhang.blog.163.com/blog/static/78…
scratch编程与高中数学算法初步 一提到编程,大家可能觉得晦涩难懂,没有一定的英语和数学思维基础的人,一大串的编程代码让人望而步,何况是中小学生.   Scratch是一款由麻省理工学院(MIT)设计开发的青少年编程工具.其特点是:使用者可以不认识英文单词和复杂的代码.构成程序的命令和参数通过积木形状的模块来实现.用鼠标拖动模块到程序编辑栏就可以了.程序设计直观,可视,集游戏开发,绘画,音乐数学学习为一体. 未来的发展越来越智能化,创新成为时代的主题.学习编程旨在培养专注,创新.近几年来,我…
上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对应一个非负数n,如果n存在,则对应的二进制位的值为1,否则为0.这个时候,我们的第一个问题:我们在使用byte,int,short,long等这些数据类型在存储数据的时候,他们最小的都要占用一个字节的内存,也就是8个bit,也就是说,最小的操作单位是8个bit.根本就没有可以一个一个bit位操作的数…
在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类: 第一个是个体学习器之间存在强依赖关系: 另一类是个体学习器之间不存在强依赖关系. 前者的代表算法就是提升(boosting)系列算法.在boosting系列算法中, Adaboost是最著名的算法之一.Adaboost既可以用作分类,也可以用作回归.本文就对Adaboost算法做一个总结. 一 回顾boosting算法的基本原理 AdaBoost是典型的Boosting算法,属于Boosting家族的一员.…
深度学习 目标检测算法 SSD 论文简介 一.论文简介: ECCV-2016 Paper:https://arxiv.org/pdf/1512.02325v5.pdf  Slides:http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf 二.代码训练测试: https://github.com/weiliu89/caffe/tree/ssd  一.论文算法大致流程: 1.类似“anchor”机制: 如上所示:在 feature map…
[ML学习笔记] XGBoost算法 回归树 决策树可用于分类和回归,分类的结果是离散值(类别),回归的结果是连续值(数值),但本质都是特征(feature)到结果/标签(label)之间的映射. 这时候就没法用信息增益.信息增益率.基尼系数来判定树的节点分裂了,那么回归树采用新的方式是预测误差,常用的有均方误差.对数误差等(损失函数).而且节点不再是类别,而是数值(预测值),划分到叶子后的节点预测值有不同的计算方法,有的是节点内样本均值,有的是最优化算出来的比如Xgboost. XGBoost…
接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics or visualization Pre-process the data (such as denoising, normalization, feature selection, …) Try other distance metrics or distance-based voting Try other…
本章我们学习Rosenfeld细化算法,参考资料:http://yunpan.cn/QGRjHbkLBzCrn 在开始学习算法之前,我们先看下连通分量,以及4连通性,8连通性的概念: http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/connectivity.html 假设我们有二值图,背景像素值为0,前景像素值为1. 我们使…
      本章我们学习一下Hilditch算法的基本原理,从网上找资料的时候,竟然发现两个有很大差别的算法描述,而且都叫Hilditch算法.不知道那一个才是正宗的,两个算法实现的效果接近,第一种算法更好一些. 第一种算法描述参考paper和代码: Linear Skeletons from Square Cupboards Speedup Method for Real-Time Thinning Algorithm http://cis.k.hosei.ac.jp/~wakahara/Hi…
ospf学习-----SPF最短路径算法 常见的路由协议比如RIP.IGRP.BGP是距离矢量协议,OSPF和ISIS是数据链路状态协议.矢量协议路由器只知道本身和与自身相连的接口路由信息,矢量图只是一张方向图,在路由传播的过程中,容易造成环路.RIP路由器采用扁平化设计规避环路,BGP则采用As-path规避环路.OSPF是数据链路状态路由协议,采用的SPF算法,即最小生成树算法(Dijkstar),ospf内不存在路由环路,但是OSPF间传递路由信息的时候,却是矢量路由协议,也就是说OSPF…
<深度学习与计算机视觉 算法原理.框架应用>全书共13章,分为2篇,第1篇基础知识,第2篇实例精讲.用通俗易懂的文字表达公式背后的原理,实例部分提供了一些工具,很实用. <大数据架构详解:从数据获取到深度学习>从架构.业务.技术三个维度深入浅出地介绍了大数据处理领域端到端的知识. <深度学习与计算机视觉 算法原理.框架应用>PDF,带书签,347页. <大数据架构详解:从数据获取到深度学习>PDF,带书签,373页. 配套源代码. 网盘下载:http://1…
[原创]tarjan算法初步(强连通子图缩点) tarjan算法的思路不是一般的绕!!(不过既然是求强连通子图这样的回路也就可以稍微原谅了..) 但是研究tarjan之前总得知道强连通分量是什么吧.. 上百度查查: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为强连通…
<深入理解 Java 虚拟机>学习 -- 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( Young ) 又被划分为三…
<Redis深度历险:核心原理和应用实践>1.基础: 万丈高楼平地起——Redis基础数据结构 学习记录http://naotu.baidu.com/file/b874e2624d3f377be4fb7980bc9358e2?token=1b07c0fdc1a3575f…
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var ele = document.bodyd[ele] = 'This is body'console.log(d['[object HTMLBodyElement]']) 上段代码的原意是将DOM节点作为对象d的键,由于对象只接受字符串,所以ele被自动转为[object HTMLBodyElement…
date: 2018-11-19 13:41:29 updated: 2018-11-19 14:31:04 算法初步(julyedu网课整理) 1 O(1) 基本运算 O(logn) 二分查找 分治类问题基本上都有log O(n) 线性查找 O(n²) 冒泡排序:选择排序 O(n的3次方) Floyd最短路:普通矩阵乘法 O(nlogn) 归并排序和快速排序的期望复杂度: 基于比较排序的算法下界 原因:a1 a2 ...... an 等n个数 共有n!次种分布可能 比较一次 ai > aj 就…
1.数据结构是数据在计算机中的组织方式,类比图书在图书馆中的存储,应该如何分类,如何在书架上存取. 2.抽象数据结构是对一类的数据的一种组织方式的通用(抽象)描述,包括类型的名称,数据对象集和操作集.数据对象集定义了是什么样类型的数据,操作集定义了数据的处理方式. 3.评价算法的优劣使用时间复杂度T(N)和空间复杂度S(n).前者体现了算法占用的时间,后者体现了算法占用的存储空间,都和数据的规模有关. 4.测试程序运行时间的一个传统方法. #include <time.h> //clock()…
最近搞算法,觉得超级吃力的,一直以为数学好的,数学可以考试满分,算法一定没什么问题,贱贱地,我发现我自己想多了,还是自己的基础薄弱吧,今天我来补补最基础的知识. 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可…
  本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入…
  本篇是数据结构与算法的第三篇,本篇我们将来了解一下知识点: 队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列应用的简单举例 优先队列的设置与实现双链表实现 队列的抽象数据类型   队列同样是一种特殊的线性表,其插入和删除的操作分别在表的两端进行,队列的特点就是先进先出(First In First Out).我们把向队列中插入元素的过程称为入队(Enqueue),删除元素的过程称为出队(Dequeue)并把允许入队的一端称为队尾,允许出的的一端称为队头,没有任何元素的队列…
  本篇是数据结构与算法的第三篇,本篇我们将来了解一下知识点: 队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列应用的简单举例 优先队列的设置与实现双链表实现 队列的抽象数据类型   队列同样是一种特殊的线性表,其插入和删除的操作分别在表的两端进行,队列的特点就是先进先出(First In First Out).我们把向队列中插入元素的过程称为入队(Enqueue),删除元素的过程称为出队(Dequeue)并把允许入队的一端称为队尾,允许出的的一端称为队头,没有任何元素的队列…
导语 索引在数据库中的地位是及其的重要,同时要想完全的掌握索引并不是一件容易的事,需要对数据的查询原理以及计算机操作系统有深刻的认识,当然相关的算法和数据结构也是必须的.因此,这篇文章感到了一些压力,不过还是决定先拿出来总结一下,理一理索引,就当做学习笔记了. 索引的重要习性犹如一本字典的拼音检索和部首检索部分,想象一下你买了一本只有正文的字典,那该有多么抓狂.而且在一个软件系统中,通常数据的查询与修改往往占到了10:1的比例,也就是我们需要将大部分的精力投入到数据的查询上,其中很多工作是用来提…
目录 . 进程相关数据结构 ) struct task_struct ) struct cred ) struct pid_link ) struct pid ) struct signal_struct ) struct rlimit . 内核中的队列/链表对象 ) singly-linked lists ) singly-linked tail queues ) doubly-linked lists ) doubly-linked tail queues . 内核模块相关数据结构 ) st…
下面是一个对Redis官方文档<A fifteen minute introduction to Redis data types>一文的翻译,如其题目所言,此文目的在于让一个初学者能通过15分钟的简单学习对Redis的数据结构有一个了解. Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.它起步较晚,发展迅速,目前已被许多大型机构采用,比如Github,看看谁在用它.本文翻译自Redis的一篇官方文档:A fifteen mi…