数据结构与算法导论
沈子恒
计算机视觉 自然语言处理 推荐系统 架构设计
展开
-
HashMap底层实现和原理
本文是在阅读知乎老刘作品后的整理。内容基于JDK1.7进行分析,1.8做的改动文章末尾进行讲解。1. 基本要义1.1 概述Hashmap在Map派生中的位置HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null键和null值,因为key不允许重复,因此只能有一个键为null,另外HashMap不能保...原创 2020-04-05 23:52:30 · 2324 阅读 · 1 评论 -
流式计算优化:时效性 [王方浩视角]
1. 背景-什么是流计算在传统的数据处理流程中,总是先收集数据,然后将数据放到数据库中,当人们需要的时候通过查询对应的数据进行处理。这样看起来没什么大问题,但是当我们遇到以下场景的时候就有问题了。比如:金融风控,双十一抢购,推荐系统等,这类系统有一个共同的特点,就是对时效性要求非常高。所谓“时光一逝不复返,往事只能回味“。我们举一个简单的例子,当前你的余额宝账户有3000块,你去商场消费了...原创 2019-07-29 22:09:23 · 873 阅读 · 0 评论 -
贝叶斯预测模型 (数学原理与推导)
1. 方差的两种计算方法对于方差计算的一个重要结论:2. 联合概率分布-条件概率分布当然,利用联合概率分布也很容易推出边缘概率分布;只需要对其他变量进行全积分即可!条件概率分布直观想象还是有难度的,很多时候我们仍然需要借助公式进行求解:需要注意的是,上面介绍的是推广情况。针对于特殊情况,例如X,Y是相对独立的。那么联合概率和条件概率将退化成非常简单的形式:...原创 2019-02-08 12:01:38 · 35605 阅读 · 0 评论 -
统计特性和概率估计-1 (数学推导与证明)
probabilistic & estimation:常用分布,共轭特性,最大似然估计,最大后验估计,指数族和自然参数 statistic properties:辅助机器学习算法证明,包括重要的切比雪夫不等式和马尔科夫不等式1. 概率&估计-Probabilistic & Estimation1.1 高斯分布与高阶矩1-D高斯情况:k-D高斯情况:多元高...原创 2019-02-06 23:42:42 · 13215 阅读 · 0 评论 -
Python-深拷贝-浅拷贝-时间消耗
1.深浅拷贝差别实验首先直接上结论:—–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 —–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。对于...原创 2018-08-28 15:54:04 · 2503 阅读 · 1 评论 -
关于BatchNorm的理解与讨论
参考论文:Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[J]. international conference on machine learning, 2015: 448-456.期刊水平:ICML2015参...原创 2018-07-27 21:31:48 · 12633 阅读 · 1 评论 -
matlab中定义类、面向对象编程
Matlab也可以写面向对象的代码,首先表现在可以定义类,可以继承,使用类(class)有很多好处,其中一个重要的好处便是解决变量名冲突和让函数、对象的结构清晰。class的static function可以在不定义类的实例直接调用类的成员函数,比如:classdef tools < handle methods (Static = true) functio...转载 2018-07-09 23:36:21 · 28702 阅读 · 2 评论 -
Unet项目解析(4): ./src/RetinaNN_predict.py
项目GitHub主页:https://github.com/orobix/retina-unet参考论文:Retina blood vessel segmentation with a convolution neural network (U-net) Retina blood vessel segmentation with a convolution neural network (U-...原创 2018-06-15 16:05:31 · 5150 阅读 · 8 评论 -
算法导论-排序算法-分治法
1.分治法原理所谓的分治指的就是分而治之,即将大规模的问题分解成几个较小规模的问题。通过对较小规模问题的求解达到对整个问题的的求解。当我们将问题分解成两个较小问题求解时的分治方法就是二分法。分支的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相似。找出个问题的解,然后把各问题的解组合成整个问题的的解。分治的具体过程:1.if 问题不可分,返回问题解。2.el...原创 2018-04-21 16:12:22 · 996 阅读 · 0 评论 -
循环与递归
1. 循环的效率高于递归相比较循环,递归的代码非常简洁。递归是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而且往栈里压入数据和弹出数据都需要时间。所以不难理解递归的实现效率不如循环。此外,递归中有可能很多计算都是重复的,从而对性能带来很大的负面影响。递归的本质是把一个问题分解成两个或者多个问题。如果多个问题存在相互重叠的部...原创 2018-05-09 20:52:49 · 10011 阅读 · 0 评论 -
uva_1585_Score
There is anobjective test result such as ``OOXXOXXOOO". An `O' means a correct answerof a problem and an `X' means a wrong answer. The score of each problem of thistest is calculated by itself and its...原创 2018-05-02 17:00:54 · 901 阅读 · 0 评论 -
两个大数相加_基于字符串的解决方案
# include <iostream># include <string>using namespace std;void BigNumbersPlus(char* num1, char* num2){ char* sum = new char[SIZE_MAX + 2]; int len1 = strlen(num1); int len2 = strle...原创 2018-04-24 15:34:47 · 987 阅读 · 0 评论 -
大话数据结构:线性表(3)
1.单链表的整表创建顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和大小的数组并赋值的过程。而单链表和顺序存储结构就不一样,他不像顺序存储结构那么集中,他可以很分散,是一种动态结构。对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。所以,创建单链表的过程就是一个动态生成链表的过程。即从“空表”的初始状态起,一原创 2016-05-31 16:51:30 · 581 阅读 · 0 评论 -
大话数据结构:线性表(2)
1.线性表的链式存储结构1.1 顺序存储结构不足的解决办法线性表的顺序存储结构最大的缺点是插入和删除时需要移动大量数据,这显然就需要消耗时间。本节讨论的链式存储结构可以很好滴解决这个问题。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这些存储单元可以使连续的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置。以前的顺序结构中,原创 2016-05-30 21:04:10 · 922 阅读 · 0 评论 -
大话数据结构:线性表(1)
1.线性表概述线性表,从名字上可以感觉到,就是具有像线一样的性质的表。具体表述为:零个或多个数据元素的有限序列。需要强调的是,首先线性表是一个序列,也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。然后,线性表强调是有限的。根据线性表的定义,我们可以猜测到线性表应该有一些什么样的操作。如线性表重置为空表的操作、根原创 2016-05-30 18:34:21 · 756 阅读 · 0 评论 -
大话数据结构与算法:算法初步1
1.算法的定义:什么是算法呢?算法是描述解决问题的方法。如今普遍认可的对算法的定义是:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。对于一个特定的问题,是可以有多个算法来解决的。那么我们就会想,有没有通用的算法呀?其实这个问题很弱智,就像问与没有包治百病的药啊!!!2.算法的特性: 算法具有5个基本特性:输入、输出、有穷性原创 2016-05-26 21:45:11 · 830 阅读 · 0 评论 -
大话数据结构与算法:基础篇
1.数据结构的重要性 数据结构是计算机软件相关专业的基础课程,几乎可以说,要想从事编程工作,无论是否是科班出身(比如我,标准的非科班人员,我是学医的,哈哈)都不可以绕过数据结构与算法这部分知识。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 If you give someone a program,you will frustr原创 2016-05-26 13:52:09 · 3320 阅读 · 0 评论