Algorithm
一碗风
矫情的人
展开
-
Adaboost算法与应用实例简析
Adaboost 算法wiki简介AdaBoost,是英文"AdaptiveBoosting"(自适应增强)的缩写,是一种机器学习方法,由YoavFreund和RobertSchapire提出。[1]AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法原创 2017-05-16 21:44:41 · 3538 阅读 · 0 评论 -
算法篇-2-分治思想-棋盘覆盖&归并排序&Strasssen矩阵乘法&循环赛安排
分治思想分治法基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些问题互相独立且与原问题相同。递归解决这些问子问题,然后各子问题结果合并得到原问题解。人们在大量实践中发现,再用分治法时,最好使子问题规模大致相同。即将一个问题分为大小相等的k个子问题的处理方法是比较有效的。(PS:以上为抄书) 根据以上可得一般分治算法设计模式Divide-and-conquer(P原创 2016-12-27 21:33:00 · 768 阅读 · 0 评论 -
算法篇-10-回溯法-工作分配&世界名画监视
本系列所有代码https://github.com/YIWANFENG/Algorithm-github工作分配n个工作分给n个人,将i工作给j号人所需费用为c[i][j],设计一算法为每人分配一工作,并且耗费最小。算法思路分析与相关公式:这题也是一简单的排列树问题,方式类似于旅行售货员问题,不同之处在于这里不需要判断是否有回路,所以变得更简单了。 程序源代码:原创 2016-12-27 21:49:29 · 3333 阅读 · 0 评论 -
算法篇-1-递归思想-整数划分&Fibonacci&Ackerman&Permutation&Hanoi
本系列所有代码https://github.com/YIWANFENG/Algorithm-github递归思想递归函数无非是自己调用自己而已,其必含2部分,第一结束条件,第二循环体,所以递归类似于一个循环,其实绝大部分递归都可以利用堆栈写成非递归方式。分治法的思想是将一个难以解决的大问题分隔为一些规模较小的相同问题,以便各个击破。其实分治思想所得方法大部分为递归实现,所以二者在一原创 2016-12-22 16:03:09 · 869 阅读 · 0 评论 -
算法篇-3-动态规划-矩阵连乘&最长公共子序列&最大字段和
本系列所有代码https://github.com/YIWANFENG/Algorithm-github动态规划其实动态规划和递归分治有异曲同工之妙。因为分治中将问题分为若干子问题,但是大部分情况下子问题互相独立,而如果动态规划中大多数子问题不独立(即重叠子问题性质),我们同分治一样,采取从上到下再到上分析,从下到上求解的方法,保留每一个子问题的解(动态规划问题要符合最优子结构),由子原创 2016-12-27 21:39:55 · 1270 阅读 · 0 评论 -
求解用g(X)的线性表达式最佳近似f(Y)的一种方式
在复习概率论时突然发现这一条,想到以后自己应该会用上,所以在这里记录下。这里是利用g(X) 的线性表达式近似表达f(Y),或许以后更多的是用g(X)的非线性表达式表达f(Y)吧,那么有时间也写写泰勒表达式吧。 首先用e表示这种关系的近似程度,在概率论中我们可以使用方差来表示。e = E{ (Y – (a+bX))^2} =E(Y^2) + b^2*E(X^2) +a^2 -2b*E(X原创 2017-07-10 09:38:50 · 1702 阅读 · 0 评论 -
高斯消元法求解线性方程组(分数精确表示)
原理可以参考https://zh.wikipedia.org/wiki/%E9%AB%98%E6%96%AF%E6%B6%88%E5%8E%BB%E6%B3%95这里给出使用分数表示计算过程的高斯消元法写法github地址:https://github.com/YIWANFENG/Algorithm-github#!/usr/bin/env python3.5# -*-codi...原创 2019-01-01 13:20:21 · 2703 阅读 · 1 评论 -
线性同余方程-扩展欧几里得算法
线性同余方程定义对于线性同余方程这个式子的意思即 (ax)%n = b 如果 x0 是方程的一个解,那么所有的解可以表示为:其中d = gcd(a,n)性质此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)用算法表示即 b%gcd(a,n) == 0 解法推理(扩展欧几里得算法求特解)由上面可知我们只要求出一个特解即可得通解。由裴蜀定理(对任何整数a...原创 2018-07-16 13:43:34 · 4628 阅读 · 0 评论 -
线性同余方程组-中国剩余定理or合并方程
线性同余方程组即若干个线性同余方程的组合。求解方式可以参考我们普通的方程组,先解式1,将式1的通解带入式2后化简,再解式2,如此重复即可得满足所有式子的解。例如 以上适合笔算,但是在程序中表述一般解法,就需要用到等式合并或者中国剩余定理线性方程组解法与推理方法一,合并线性同余方程以下为推导,红色圈出部分为编码时所用的结论。...原创 2018-07-16 13:44:35 · 5526 阅读 · 0 评论 -
PCA
Principal Component Analysis(PCA)算法。降维是对高维数据去除不重要特征与噪声,只保留重要特征的方法,会损失一定信息。目录优点:基本原理PCA推导基于最大化投影后方差基于最小投影距离PCA Code(python)Ref优点:减少变量数量,有利于发现规律。高维空间具有稀疏性,希望数据变得更加稠密,降低计算开销。某种程...原创 2019-02-11 13:40:22 · 411 阅读 · 0 评论 -
算法篇-7-贪心算法-Huffman编码&Dijkstra单源最短路径&Kruskal最小生成树
本系列所有代码https://github.com/YIWANFENG/Algorithm-githubhuffman编码题目:依据给定字符以及相应频率构造该字符的哈夫曼编码。 算法思路分析与相关公式:Haffman即前缀码,用一棵二叉树即可标示,树叶表示给定的字符,每个字符的前缀码就是从树根到该字符所在的树叶的一条道路。二叉树的每一路分支的路径我们在向右时即为1 ,向原创 2016-12-27 21:51:44 · 917 阅读 · 0 评论 -
算法篇-4-动态规划-凸多边形最优三角剖分&图像压缩最优分段&电路布线
本系列所有代码https://github.com/YIWANFENG/Algorithm-github凸多边形最优三角剖分多边形有一系列首尾相连的直线段组成,多边形的三角剖分是指将多边形分割成互不相交的三角形的弦的集合。(若vi与vj是多边形上不相邻的两个顶点,则线段vivj称为多边形的一条弦。在有n个顶点的凸多边形的三角剖分中,恰有n-3条弦和n-2个三角形。)给定凸多边形P=原创 2016-12-27 21:46:34 · 1712 阅读 · 0 评论 -
零和博弈-极大极小搜索&Alpha-Beta剪枝(井字游戏)
零和博弈概念二人利益对立完备信息博弈过程,在我们分析表达中就是对一个过程进行按规定双方交替操作,每次操作即搜索时选择对自己有利的情况(获益选最大,损失选最小),借助的数据结构自然是树。博弈树中每一层是某一方的走法选项。假设先手为MAX,后手为MIN。MAX可选的方案间为or关系(MAX自己掌握选项),MAX可选的方案对于可供 MIN选的方案为and关系(MAX无法决定,是MIN决定,也就是原创 2017-06-08 15:38:24 · 5887 阅读 · 5 评论 -
Kmeans算法及其示例
Kmeans算法Kmeans是简单的聚类分析算法。其常用在数据分析与人工智能中。简单说,Kmeans算法就是把一个集合中的东西分为若干子集,这几个子集内的元素具有空间相近或者特点相近。做法:1. 随机选取K各中心点,生成对应的k个簇。2. 遍历所有的数据点,依据“距离’”将每一个数据点划分到最近的中心点所在的簇。3. 计算每个簇所有的数据点的平均值原创 2017-05-25 14:48:07 · 25011 阅读 · 2 评论 -
算法篇-14-A*算法解决八数码问题
问题描述八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。1238 04765 (a)初始状态原创 2017-04-21 11:50:18 · 3422 阅读 · 0 评论 -
算法篇-13-随机化-线性同余&主元素问题&N皇后问题&素数测试
本系列所有代码https://github.com/YIWANFENG/Algorithm-github线性同余产生伪随机数算法思路分析以及相关数学公式:X(n+1) = (a * X(n) + c) % m这样的公式,其中: 模m, m > 0系数a, 0 增量c, 0 原始值(种子) 0 其中参数c, m, a比较敏感,或者说直接影响了伪随机数产生的质量原创 2016-12-28 12:39:57 · 1304 阅读 · 0 评论 -
算法篇-12-分支限界-限定价格内最小重量机器设计&运动员最佳组队
本系列所有代码https://github.com/YIWANFENG/Algorithm-github限定价格内最小重量机器设计题目:一个机器,由n个部件组成,每个部件都可从m各不同的供应厂商处购得,设w[i][j]是从j处购得部件i的重量,c[i][j]是价格。给出总价格不超过d的最小重量机器设计。 算法分析与相关公式:既然要最小重量,我们就选中以当前购物方案E的总重量原创 2016-12-28 12:33:36 · 1994 阅读 · 0 评论 -
算法篇-11-分支限界-布线&装载&旅行售货员
分支限界回溯法以深度优先搜索解空间树,分支限界法以广度优先搜索。即在当前结点处生成其所有子节点,然后从当前活结点的列表中选择下一个扩展结点重复如此,当然不要忘记了判断是否存在可行解。由于采用树的广度优先遍历,所以我们一般用队列实现。队列可分为一般队列FIFO与优先队列(人工指定优先级)。在选择扩展结点时我们一般加限界条件加以取舍。关于剪枝与限界策略即判断扩展结点的子树是否可存在原创 2016-12-28 12:27:27 · 1104 阅读 · 0 评论 -
算法篇-8-回溯法-N皇后&最优装载&01背包
本系列所有代码https://github.com/YIWANFENG/Algorithm-github回溯法思想回溯法运行起来类似于遍历,只不过会在遍历过程中去除一部分不可能的无效遍历()。解决的问题的答案一般可以由一个向量表示,例如V= {x1,x2,x3....},其中x1,x2,x3...的取值便为最优解。解空间即该问题所有可能的解的集合,在表示上分为子集树与排列树。原创 2016-12-27 21:52:26 · 728 阅读 · 1 评论 -
算法篇-6-贪心算法-活动安排&背包问题&多机调度
本系列所有代码https://github.com/YIWANFENG/Algorithm-github贪心算法思想贪心算法正如其名,只考虑某种意义上局部最优解法,而不从整体思考。其实基本是在目前这种情况下选择一个当前最优解,然后在选择这个最优解后,在问题中删除最优解(考虑最优解的影响),转化为同类子问题,不断递归求解。贪心求解需要具备两个性质:1.贪心选择性质:所求问题的整体原创 2016-12-27 21:51:10 · 1793 阅读 · 0 评论 -
算法篇-9-回溯法-罗密欧与朱丽叶&图的M着色&旅行售货员
本系列所有代码https://github.com/YIWANFENG/Algorithm-github罗密欧与朱丽叶走迷宫罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个m×n的迷宫中.每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗密欧位于迷宫的(p,q)方格中,他必须找出一条通向朱丽叶所在的(r原创 2016-12-27 21:50:27 · 3541 阅读 · 0 评论 -
算法篇-5-动态规划-01背包&流水作业调度&&整数线性规划&树的最大连通分支
本系列所有代码https://github.com/YIWANFENG/Algorithm-github0-1背包给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?且对于物品i只有装一次或者一次不装两种选择。 令m(i,j)表示后i到n (1m(n,j) = vn j>=wn;(2原创 2016-12-27 21:47:56 · 4238 阅读 · 0 评论 -
快速了解ML中的正规方程
目录正规方程特点与用法Python code推导正规方程正规方程干嘛的? 用来直接求解线性模型的最优解的方法,即如果你的拟合函数为(线性模型)对应的损失函数:那么可以直接得到h关于θ的最优解(这就是正规方程)X为训练集特征矩阵,为X的转置,训练集结果(标签)为y。特点与用法无需迭代计算。只适用于线性模型,不适合逻辑回归模型...原创 2019-02-28 19:25:01 · 500 阅读 · 0 评论