算法
文章平均质量分 58
bcjz
技术打底,沟通护身
展开
-
算法:动态规划
什么是DPDynamic Process(DP)是指满足最优子结构、无后效性、和有重叠子问题三个性质的求得最优解的方法。有重叠子问题不是DP的必要条件,但如果不具备的话,会使得DP在解决问题的时候丢失优势。DP是求解决策过程最优化的方法,决策过程就是可能分成多个阶段的。最优子结构:问题是由多阶段构成,每个阶段的最优解会推到出整个问题的最优解 无后效性:后面的计算结果和决策不会影响之前阶段的决策 有重叠子问题:子问题之间不是独立的。这点和分治算法是不一样的,分治思想下的子问题是互相独立的,然后合成原创 2022-02-06 22:15:34 · 186 阅读 · 0 评论 -
算法:二分查找和二叉树
好的算法可能在数据规模不大的时候并无优势,但当我们处理大数据问题的时候,优势就极为明显了。二分查找二分查找有个前提条件是数组已经排序了,可以是数值排序,也可以是字母排序或其他的排序,但一定不能是杂乱无章的。二分查找相比较顺序查找而言,数据量越大,优势越明显,二分查找的时间复杂度是O(logN),底数是2,但对于算法复杂度而言,无论底数是多少,其复杂度都是O(logN)。那顺序查找的平均查找长度ASL是多少呢,假设每个元素出现的概率相等,那就是(1/n) * n*(1+n)/2 = (1+n)/2如.原创 2022-02-02 11:39:29 · 1510 阅读 · 0 评论 -
数据结构:网上公开课
解决问题的效率和什么有关数据组织的方式:数据结构和空间的利用率有关:例如递归虽然代码很简单符合代码书写的美学,但很容易占据系统空间,从而带来系统崩溃。因为要存储每次调用的函数参数和相关结果,函数调用非常占据系统空间。斐波那契数列如果通过递归来实现,我们会发现针对每一个函数进行了多次的冗余计算。ref: 递归的缺点ref: 递推为什么会占用系统空间和算法的巧妙程度有关系秦九韶算法解决多项式问题的算法复杂度O(n),朴素算法是O(n的平方...原创 2022-02-02 11:39:14 · 517 阅读 · 0 评论 -
算法:哈希表
定义Hash表是一个查找表,根据key可以直接找到对应的数值。算法的复杂度是O(1),常数算法复杂度。构建Hash表需要做两个工作选择好的hash函数处理冲突的方法因为很难找到一个都不会产生冲突的hash函数,冲突的解释是不同的key,相同的函数值。hash表是一个查找表。一般性介绍哈希函数的方法这对key是数值构建的方法有:直接地址、数据分析、平方取中法(减少冲突)、折叠法(适用key特别长)、除留余数法(对p进行限制,不能包含20以下的质因子)、随机数法(random为为随机函数,用原创 2022-01-30 17:51:06 · 1036 阅读 · 0 评论 -
算法:时间复杂度
时间复杂度算法复杂度用于比较多种算法的效率。算法复杂度公式以N为自变量,度量算法的复杂情况。如果一个算法的计算量不超过N的多项式函数,那么称这个算法是多项式函数复杂度的。如果一个问题存在一个多项式复杂度的算法,那么称这个问题为P(Polynomial)问题。Non-polynomial的问题是实际无法解决的问题,比N的多项式函数还要高,例如计算每一步围棋的最佳走法。值得注意的是,不是所有的问题都确定说一定找不到N的多项式函数复杂度算法,可能只是当前没有找到,这类问题被称为Nondeterministic原创 2022-01-28 15:01:32 · 1125 阅读 · 0 评论 -
算法:图模型
现实场景图模型在现实中有很多应用场景,例如交通网络、商业交易、通信网络等。一般有四种比较重要的图模型:无向图、有向图、加权图和加权有向图。所谓图是由一组顶点和能够将两个顶点相连接的边构成。图的相关概念如果两个顶点通过一条边相连,我们称这两个顶点相邻。子图是由一幅图所有边的子集构成。需要注意的是很多具体问题中是需要识别各种类型的子图。路径是由边顺序连接的一系列顶点。连通图:如果从这幅图的任意一个顶点都可以找到一条路径达到另外一个顶点,那这幅图是连通图。一个非连通图是由多个连通图构成,每一个连通图都是原创 2022-01-28 09:15:55 · 2990 阅读 · 0 评论 -
python包:seaborn
%matplotlib inline # 用于jupyterimport seaborn as sns; sns.set()sns.pairplot(iris, hue='species', size=1.5); # 直接画出各特征之间的散点图,并且通过颜色区分不同的类别原创 2022-01-09 23:08:56 · 560 阅读 · 0 评论 -
python包:scikit-learn
1. 安装scikit-learnscikit-learn是安装时使用的名字,真正在程序中import的时候,使用sklearn,如下面的例子所示。import from sklearn.linear_model import LinearRegression2. scikit-learn的使用场景https://zhuanlan.zhihu.com/p/2597326143. scikit-learn关键的模块4. scikit-learn线性回归实战...原创 2022-01-06 22:54:17 · 1593 阅读 · 0 评论 -
算法:学习算法评估实验方法和性能指标
模型泛化评估实验设计和性能度量指标实验设计有hold-out,k-fold cross validation,和自助法。最受欢迎的是CV,自助法一般用于样本量比较小的case下。性能指标评估性能指标中如果不引入非均等代价的概念,对于regression有均方误差,对于分类有precision(TP/TP + FP)、recall(TPR = TP/TP + FN)、PR曲线、ROC曲线、FPR(FP/TN + FP)。ROC更看重模型在完成正样本准确定位的同时,泛化能力是否更好。如果带入非均等代价的原创 2022-01-02 11:05:41 · 657 阅读 · 0 评论 -
算法:线性规划问题
线性规划问题线性规划问题应该是求解实际问题应用非常广泛的模型之一。通过约束条件确定了决策变量的可行域,在可行域(决策变量值组合)中找到使得目标函数最大(小)的一组或者多组。称之为线性规划的原因是目标函数中涉及到的决策变量都是一次方。solver in spicy for linear programing这个读明白了也就知道怎么用和解决了,很多数学的detail的东西可以不必太深究。...原创 2020-02-02 19:25:47 · 1052 阅读 · 0 评论