精华内容
下载资源
问答
  • PCA算法步骤

    2020-02-03 15:30:33
    步骤一:数据中心化——去均值,根据需要,有的需要归一化——Normalized; 步骤二:求解协方差矩阵; 步骤三:利用特征值分解/奇异值分解 求解特征值以及特征向量; 步骤四:利用特征向量构造投影矩阵; 步骤五...

    步骤一:数据中心化——去均值,根据需要,有的需要归一化——Normalized;
    步骤二:求解协方差矩阵;
    步骤三:利用特征值分解/奇异值分解 求解特征值以及特征向量;
    步骤四:利用特征向量构造投影矩阵;
    步骤五:利用投影矩阵,得出降维的数据。

    展开全文
  • 初级算法学习步骤

    千次阅读 多人点赞 2018-07-29 18:51:51
    前言 零散整理一个多月终于整理完了。...一直没时间吧之前的总结整理出来,现在准备整理一下用java做算法的一些东西……学习了两个月左右算法,从啥都不会到小白再到算是初级……做一个总结,请高手多多指...

    前言

    零散整理一个多月终于整理完了。。。。

    这是一篇初级算法学习的步骤总结,或许可以帮助你怎么去接触算法

    阅读本文需要一定java语法基础和api文档查看基础,但算法其实看重的是思想而不是语言,所以都可以借鉴。

    本人大二,参加蓝桥杯。一直没时间吧之前的总结整理出来,现在准备整理一下用java做算法的一些东西……学习了两个月左右算法,从啥都不会到小白再到算是初级……做一个总结,请高手多多指点,也给之后想参加学校初级算法赛的同学或者是想入门一下算法的同学一点点借鉴。感谢大家评论指点。里面部分我举例的题目可以跳转到我之前写的博客里,这个陆续在做。

    目录

    前言

    学习顺序

    详细内容

    一、数组

    二、字符串

    三、数据结构:

    1、基础数组、线性表:

    2、链表:

    3、集合(java):

    4、向量:(可增长数组)

    5、栈:

    6、队列、双端队列、优先队列:

    7、哈希表(映射表):

    8、树:

    9、图:

    四、排序

    五、查找

    六、4个基本算法思想

    七、数学问题,数论问题,数据结构问题,几何问题,字符串问题,大数运算问题:

    1、数学问题:

    2、数据结构问题:

    3、数论问题:

    4、几何问题:

    5、大数运算问题:

    6、字符串问题:

    八、五大常用算法

    一、分治法

    二、动态规划法

    三、贪心算法

    四、回溯算法

    五、分支界定

    九、看书刷题


    学习顺序

    算法可以说是解决问题的步骤

    按常理来说学习算法要先掌握一定的数据结构。但因为数组也是一大数据结构,而且也是非常常用的东西,所以在最初,做一些用数组解决的问题(其实java里的数据结构也都是基于数组和类来实现各种数据结构)。

    比如一维数组里:计算两个数组的交集,用数组实现约瑟夫环等等;二维数组里(平面坐标初级):扫雷,边缘检测问题,生命游戏等等。之后进行对数据结构的掌握,会了常用数据结构之后,就可以进行深入的算法研究了。

    所以这里的建议的顺序是:

    1. 熟习数组相关操作
    2. 熟习字符串相关操作
    3. 认识基础数据结构:线性表、顺序表、链表、栈、队列、树、哈希表、图等。并且自己实现以上数据结构
    4. 掌握使用提供的数据结构API。
    5. 排序算法、查找算法。
    6. 四个基本算法思想:穷举,递推,递归,概率。
    7. 数学问题,数论问题,数据结构问题,几何问题,字符串问题,大数运算问题。
    8. 五大常用算法:分治、动态规划(DP),贪心,回溯,分支界定。
    9. 多看算法题和算法书。

     

    详细内容

    注:这里都是用java语言作为例子解答代码进行讲解,同时附带的也都是java的api使用说明,但其实算法对语言依赖性不大,重要的是思想。本文提供给大家一个学习方案作为参考。

    一、数组

    内容:熟习数组的常用操作,可以做一些基础题,可以上leetcode或者别的算法题网站,刷掉初级算法题库里的数组10几个题目,这样对一维和二维数组的掌握灵活度就比较高了。

    一个比较典型的二维数组逻辑题目:

    旋转二维数组给定一个n×n的二维矩阵表示一个图像,输出将图像旋转90度的样子。(不要用另一个矩阵来旋转)

    题目具体内容点击标题可以进去查看。

    其他数组例题:

    两个数组的交集,数组实现约瑟夫环,简易扫雷,生命游戏等等。

    其他数组的操作大家可以自行去看看别的题,锻炼一下数组的运用思想。

     

    二、字符串

    内容:字符串的操作,比如回文串判定、字符串翻转等等。同样建议上题库做一些相应练习。在java里对应的API:string,stringbuilder,stringbuffer。

     

    三、数据结构:

    此章内容具体参照:java数据结构和他的API

    内容:这一部分需要自己先去学习一遍数据结构,然后自己写出来。掌握之后,再去查看api文档,最后学会如何使用api里的数据结构写算法,下面介绍的主要是api的对应方式。

    1、基础数组、线性表:

    (1)数组:

    API:Arrays。

    (2)线性表:

    API:ArrayList。

    2、链表:

    链表是以节点类为基础的,每个节点类有一个成员变量是下一个节点。

    API:LinkedList。

    3、集合(java):

    API:Collections。

    这个接口提供了很多常用方法,具体如何使用可以参照帮助文档。

    4、向量:(可增长数组)

    API:Vector接口提供方法与数组类似,具体查看API帮助手册。

    5、栈:

    自己先基于数组去实现。

    API:Stack接口提供查看,移除,压入,查找,判空操作

    6、队列、双端队列、优先队列:

    (1)队列:

    API:Queue。

    (2)双端队列:

    API:Deque。

    (3)优先队列:

       API:PriorityQueue档。

    7、哈希表(映射表):

    API:

    (1)Hashmap提供了键—值对应的功能。

    (2)TreeMap提供了可排序的映射表。

    8、树:

    树没有api,可以用上面学过的东西去实现它。

    9、图:

    图也是没有api的,用之前学过的结构可以构造。

     

     

    四、排序

    内容:在排序里,需要了解这九大排序算法:

    1、冒泡排序:每两个交换,每轮吧最大的放后面;

    2、选择排序:每轮选出最大的放后面;

    3、插入排序:一个线性表,一开始只有一个元素,加一个排一个;

    4、希尔排序:

    5、快速排序:

    6、堆排序:

    7、合并排序:

    8、基数排序:

    9、计数排序:

     

    五、查找

    这个阶段要了解到查找算法在平时的应用,最基础的是直接查找和二分查找,但是有时候在不同场景会有一些优化。

    1、二分法:对排序好的数组用,Collections提供了此方法

    2、二分法的各种优化搜索:

    3、数据结构中的查找:

    (1)顺序表:同数组,序号或者关键字顺序、二分查找。

    (2)链表:关键字查找,只能一个个往后找,返回引用。

    (3)树:树或者二叉树遍历一个个找,二叉搜索树可以根据大小找,原理和二分法一样。平衡二叉树同而搜索树,红黑树效率高。

    (4)图:深度优先遍历查找。

     

    六、4个基本算法思想

    此章节具体参照:4个基本算法思想:穷举、递推、递归、概率

    内容:这4个基本算法思想是解决基础问题的很实用的方法。这里开始其实就已经是把所有需要的知识准备好了,之后就要开始解题了。

    1、穷举:暴力破解,n层for循环。枚举每一种可能。

    2、递推:简单的动态规划,根据递推公式,累加。

    3、普通递归:化解问题逐渐变小(从n到1)

    4、概率:使用random数量足够大的时候,得到近似结果。

     

    七、数学问题,数论问题,数据结构问题,几何问题,字符串问题,大数运算问题:

    内容:这一块需要了解的是零散问题的应用。每一块我举几个例子,推荐大家还是上刷题网站吧零散的题给刷掉,不推荐直接做各个算法难题,先做这些零散题会对之后系统做算法有一些帮助。

    以下我诺列一些题目,大家可以自己查查,刷题网站上也有。

    1、数学问题:

    1. 罗马数字转换
    2. Math函数的应用(自行查看api帮助文档)。
    3. 保留小数点的操作:例如String.format(“%.2f”,string)

    2、数据结构问题:

    约瑟夫环:具体点击这里

    括号匹配:具体点击这里

    链表排序、最短路径等等。

    3、数论问题:

    素数、完全数为代表的问题。

    4、几何问题:

    java里有API:抽象类shape——具体类line2d,Point2d提供了一些集合方法。

    5、大数运算问题:

    API:BigInteger,提供加减乘除模,大小比较,转化等运算。

    6、字符串问题:

    API:String大致包含这些方法:是否包含,比较(可不考虑大小写),第一次出现索引(前后),两个字符串的某个区域是否相等(regionmatches),replace替换,split([,])分割,substring删减,tochararray变成字符数组,tolow/toup,trim忽略前后空白,valueof把别的转换成字符串。

     

    八、五大常用算法

    五大算法:分治,回溯,贪心,DP(动态规划),分支界定

    内容在这一块是需要重点看看的,前4个是重点,也有非常多的经典例题。这一部分还是比较需要时间的,以下仅仅是介绍,点开链接具有详细的每个算法讲解。

     

    1、分治法

    首先看一下二分搜索:一串数,取中间的数并且平分两半,如果比中间数大,就去上半部分找,然后再两半……这样查找就是分治思想:把一个问题分解成若干个一样的小块。

    具体详情:分治算法——五大常用算法之一

    基本概念:

    把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题。直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

     

    2、动态规划法

    具体详情:动态规划——五大常用算法之一

    基本概念:

    动态规划(DP)就是:每走一步,都会根据之前的情况来决定这一步的走向,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。使用动态规划法一般会有一个递推公式(递推就是简单动态规划)。当然,最难找到的也是这个递推公式。

     

    3、贪心算法

    具体详情:贪心算法——五大常用算法之一

    基本概念:

    在对问题求解时,总是做出在当前看来是最好的选择。不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。

    贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。

    所以对所采用的贪心策略一定要仔细分析其是否满足无后效性

     

    4、回溯算法

    具体详情:回溯算法——五大常用算法之一

    基本概念

          回溯算法实际上一个类似枚举的搜索尝试过程(排列组合),主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

    回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

         许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。

     

    5、分支界定

    这个算法个人没有仔细研究,可能是因为学的较浅没有经常用到。下面内容做一个参考:

    基本描述

        类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。

     

    九、看书刷题

    推荐书本:算法笔记,java常用算法手册,剑指offer

    推荐网站:LeetCode等各大刷题网站

    展开全文
  • Floyd算法详解——包括解题步骤与编程

    万次阅读 多人点赞 2019-03-21 16:30:28
    Floyd算法一个经典的动态规划算法,它又被称为插点法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd算法是一种利用动态规划的思想寻找给定的加权图中多源...

    一、Floyd算法原理

    Floyd算法是一个经典的动态规划算法,它又被称为插点法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd算法是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,算法目标是寻找从点i到点j的最短路径。

    从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到j。所以,算法假设Dis(i,j)为节点u到节点v的最短路径的距离,对于每一个节点k,算法检查Dis(i,k) + Dis(k,j) < Dis(i,j)是否成立,如果成立,证明从i到k再到j的路径比i直接到j的路径短,便设置Dis(i,j) = Dis(i,k) + Dis(k,j),这样一来,当遍历完所有节点k,Dis(i,j)中记录的便是i到j的最短路径的距离。

    二、Floyd算法内容步骤

    (一)Floyd算法内容

    (二)Floyd算法步骤

    三、Floyd算法解题步骤

    以下纯手工操作~

    上面最后有个问题,更正一下,应该是

    eg:d13 = 45,R13 = 5,R15 = 5(或者)R51 = 1,也就是13之间经过5,然后再看15之间有没有经过其他点,如果经过了继续查表,由于通过R15或R51可以看出,他们之间没有经过其他点,所以最短路径为1-》5-》3,最短距离为45.

    四、Floyd算法编程

    编程求解几座城市之间的最短距离,以及最短距离所经过的城市。

    floyd.c:

    #include <string.h>   
    #include <stdio.h>  
    
    #define NUMS 12   
    #define INF 65535
    
    typedef struct  
    {   
        	char vertex[NUMS];   
        	int edges[NUMS][NUMS];   
        	int n,e;   
    }Graph;   
    
    void Dispath(int A[][NUMS],int path[][NUMS],int n); 
    
    void ReadGraph(Graph *G)   
    {   
    	int i,j;
    	FILE * fp = fopen("floyd.txt","rw");
    	G->n = NUMS;
    	G->e = NUMS * NUMS; 
    	for(i=0; i<NUMS; i++)
    	{
    		for(j=0; j<NUMS; j++)
    		{
    			fscanf(fp,"%d",&(G->edges[i][j]));
    			printf("%d \t",G->edges[i][j]);			
    		}
    		printf("\n");
    	}
    }   
    
    void Floyd(Graph G)
    {
    	int A[NUMS][NUMS],path[NUMS][NUMS];
    	int i,j,k;
    	for (i=0;i<G.n;i++)
    	{
    		for (j=0;j<G.n;j++)
    		{
    			A[i][j]=G.edges[i][j];
    			path[i][j]=-1;
    		}
    	}
    	for (k=0;k<G.n;k++)
    	{
    		for (i=0;i<G.n;i++)
    		{
    			for (j=0;j<G.n;j++)
    			{
    				if (A[i][j]>A[i][k]+A[k][j])
    				{
    					A[i][j]=A[i][k]+A[k][j];
    					path[i][j]=k;
    				}
    			}
    		}
    	}
    	Dispath(A,path,G.n);
    }
     
    void Ppath(int path[][NUMS],int i,int j)
    {
    	int k;
    	k=path[i][j];
    	if (k==-1)
    	{
    		return;
    	}
    	Ppath(path,i,k);
    	printf("%d,",k + 1);
    	Ppath(path,k,j);
    }
     
    void Dispath(int A[][NUMS],int path[][NUMS],int n)
    {
    	int i,j;
    	for (i=0;i<n;i++)
    	{
    		for (j=0;j<n;j++)
    		{
    			if (A[i][j]==INF)
    			{
    				if (i!=j)
    				{
    					printf("从%d到%d没有路径\n",i+1,j+1);
    				}
    			}
    			else
    			{
    				printf(" 从%d 到 %d => 最短路径长度为 : %d , 路径站点为 :",i+1,j+1,A[i][j]);
    				printf("%d,",i + 1);
    				Ppath(path,i,j);
    				printf("%d\n",j + 1);
    			}
    		}
    	}
    }
     
    int main()
    {
    	Graph G;
    	ReadGraph(&G);
    	Floyd(G);
    	return 0;
    }
    

    城市数据 floyd.txt 如下:

    0	20	65535	35	30	65535	65535	65535	65535	65535	65535	65535
    20	0	25	65535	65535	65535	65535	65535	65535	65535	65535	65535
    65535	25	0	5	65535	22	65535	65535	60	65535	75	65535
    35	65535	5	0	65535	20	65535	65535	40	65535	65535	65535
    30	65535	65535	65535	0	25	20	30	65535	65535	65535	65535
    65535	65535	22	20	25	65535	12	40	65535	65535	65535	65535
    65535	65535	65535	65535	20	65535	0	65535	65535	40	65535	65535
    65535	65535	65535	65535	30	12	65535	0	35	65535	65535	90
    65535	65535	65535	65535	65535	40	65535	35	0	30	35	45
    65535	65535	65535	65535	65535	65535	40	65535	30	0	10	20
    65535	65535	65535	65535	65535	65535	65535	65535	35	10	0	15
    65535	65535	65535	65535	65535	65535	65535	90	45	20	15	0
    

    其中 65535 表示不可直达,运行结果如下:

    展开全文
  • 学习朴素贝叶斯算法的5简单步骤

    千次阅读 2018-12-19 09:17:31
    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。 而朴素贝叶斯分类是贝叶斯分类中最简单,也是...给定一个水果,如果水果是黄色的,圆形的,直径约30厘米,则可以认为它...

     

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。

    而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

    本文将通过6个步骤带领你学习朴素贝叶斯算法。

     

    Step1

    什么是朴素贝叶斯算法?

    朴素贝叶斯算法是一种基于贝叶斯定理的分类技术,假设在预测变量之间具有独立性。

    给定一个水果,如果水果是黄色的,圆形的,直径约30厘米,则可以认为它是橘子。

    即使对于橘子描述的这些特征彼此依赖或依赖于其他特征的存在,但所有的这些特征都促成了这个水果是橘子的可能性,这就是它被称为“朴素”的原因。

    朴素贝叶斯模型易于构建,特别适用于非常大的数据集。

     

    贝叶斯定理提供了一种从P(c),P(x)和P(x | c)计算后验概率P(c | x)的方法。

     

    请看下面的等式:

     

     

    ·P(c | x)是给定预测值(x,属性)的类(c,目标)的后验概率。

    ·P(c )是先验概率。

    ·P(x | c)是给定类别的预测概率的似然性。

    ·P(x)是预测的先验概率。

     

    简单来说,贝叶斯定理是基于假设的先验概率、给定假设下观察到不同数据的概率,提供了一种计算后验概率的方法。

     

     

     

    Step2

    朴素贝叶斯算法如何工作

     

     

    让我们用一个例子来理解它。下面有一个关于天气和空气质量的训练数据集,根据天气记录的空气质量的好坏。

     

    现在,我们需要根据天气情况对空气质量的好坏进行分类。

     

    第1步:将数据集转换为频率表。

    第2步:通过找到阴天概率= 0.28和空气质量好概率为0.64的概率来创建似然表。

     

     

    第3步:现在,使用朴素贝叶斯方程计算每个类的后验概率。具有最高后验概率的类是预测的结果。

     

    问题:如果天气晴朗,空气质量会是好。这个陈述是正确的吗?

    我们可以使用上面讨论的后验概率方法来解决它。

    ·P(好|晴天)= P(晴天|好)* P(好)/ P(晴天)

    ·P(晴天|好)= 3/9 = 0.33

    ·P(晴天)= 5/14 = 0.36

    ·P(好)= 9/14 = 0.64

    ·P(好| 晴天)= 0.33 *0.64 / 0.36 = 0.60

    得出结论,天气晴朗空气质量好具有更高的概率。

    NaiveBayes使用类似的方法根据各种属性预测不同类别的概率。该算法主要用于文本分类,并且具有多个类的问题。

     

     

     

    Step3

    朴素贝叶斯的优点和缺点

     

     

    优点

    1)预测测试数据集很容易也很快,在多类预测中表现良好。

    2)算法简单,常用于文本分类。

    3)朴素贝叶斯模型有稳定的分类效率。

    4)适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。

     

     

    缺点

    1)如果分类变量具有在训练数据集中未观察到的类别,则模型将指定0(零)概率并且将无法进行预测。

    2)独立预测因子的假设无法实现,我们几乎不可能得到一组完全独立的预测变量。

    3)需要知道先验概率,且先验概率很多时候取决于假设。

    4)通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

    5)对输入数据的表达形式很敏感。

     

     

    step4  

    朴素贝叶斯算法的应用

     

    1、实时预测

    朴素贝叶斯是一个非常快速的学习分类器,因此,它可以用于实时预测。

    2、多类预测

    可以预测多类目标变量的概率。

    3、文本分类/垃圾邮件过滤/情感分析

    朴素贝叶斯分类器对于多类问题和独立性规则具有更高的成功率,因此,它被广泛用于文本分类、垃圾邮件过滤和情感分析。

    4、推荐系统

     朴素贝叶斯分类器和协同过滤一起构建一个推荐系统,这有助于预测用户是否愿意提供资源。

     

     

     

    Step5  

    在Python中使用Naive Bayes构建基本模型

    同样,scikit learn(python库)将帮助在这里用Python构建Naive Bayes模型。在scikit学习库下有三种类型的朴素贝叶斯模型:

     

    -高斯模型

    它用于分类,假设特征属于某个类别的观测值符合高斯分布。在处理连续的特征变量时,采用高斯模型。

     

    -多项式模型

    用于离散计数。例如,假设我们有文本分类问题。在这里我们可以考虑更进一步的bernoulli试验,而不是“在文档中出现的单词”,我们“计算文档中出现单词的频率”,你可以将其视为“观察到结果数x_i的次数”超过n次试验“。

     

    -伯努利模型

    与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0).

     

    根据你的数据集,您可以选择上面讨论的任何模型。以下是高斯模型的示例。

     

    Python 代码

    #从高斯朴素贝叶斯模型到入库
    
    sklearn. naive _ bayes 中导入 GaussianNB
    
    import numpy as np
    
    #分配预测变量和目标变量
    
    x= np.array([[-3,7],[1,5], [1,2], [-2,0],[2,3], [-4,0], [-1,1], [1,1], [-2,2], [2,7], [-4,1], [-2,7]])
    
    Y = np.array([3, 3, 3, 3, 4, 3, 3, 4, 3, 4,4, 4])
    
    #创建高斯分类器
    
    model = GaussianNB()
    
    # 使用训练集训练模型
    
    model.fit(x, y)
    
    #预测输出
    
    predicted= model.predict([[1,2],[3,4]])
    
    print predicted
    
    Output: ([3,4])

     

     以上就是学习朴素贝叶斯的五个简单步骤,现在就开始学习吧!

     

    欢迎关注公众号:DC学习助手,探索数据科学之旅

     

     

     

     

    展开全文
  • 设计一个算法的方法论

    千次阅读 2016-05-15 09:35:18
    抽取算法设计共性为6个步骤,结合近段时间设计的一个算法撰写了这个方法论。主要用于总结经验,提高自身的生产力;如果不小心启发了他人,也算是对业界的一点小贡献。
  • 算法的一般步骤

    千次阅读 2013-04-21 18:20:47
     按照自顶往下的设计原则,处理实际问题的算法设计是从理解问题入手自顶往下展开的,这是对问题的理解和分析逐层深入、逐步细化的一个过程,它符合人们对问题的认识规律。设计算法首先要做的是准确理解问题的要求,...
  • 给你一个算法应该怎么写程序(数学建模 matlab)

    万次阅读 多人点赞 2017-08-27 13:29:52
    本文写作初衷:有个可爱的学妹问我在看到一个算法编程时的步骤是什么,然而作为伪大神的我,感觉并不知道怎么回答,感觉我编程就俩字死磕,错了咋办?再来一遍!不行咋办?换个写法试试!还不行?百度!不过既然人家...
  • 算法分析一般步骤

    千次阅读 2019-02-25 10:50:05
    很多程序员都爱犯的一个毛病,就是刚开始动手写代码就想找到最优解,对那些已经被人解决过的问题,还可以通过网络获取最优化的解决方案,当进入一个全新的领域,这种想毕其功于一役的想法会限制人的能力,推迟项目...
  • 算法研究的步骤

    千次阅读 2019-06-10 07:13:10
    1. 决定一个完整和具体问题陈述,包括确定问题和API固有的基本抽象操作; Decide on a complete and specific problem statement, including identifying fundamental abstract operations that are intrinsic to ...
  • K-Means聚类算法的4个步骤流程!

    万次阅读 多人点赞 2016-11-14 16:38:47
    聚类分析是我们数据挖掘中常用的算法,常常用于没有分类,但又有相关相似性的样本研究当中,包括了K-Means、K-中心点和系统聚类三种算法,各自有各自的特点和适用环境。今天我们大圣众包根据网络资源详细介绍下K-...
  • 详细的KNN算法原理步骤

    千次阅读 2020-04-21 19:27:57
    KNN算法原理详解KNN算法1.1 解决监督学习中分类问题的一般步骤1.2什么是消极(惰性)的学习方法1.3 KNN算法 K最近邻法(K-Nearst-Neighbor,KNN),解决监督学习中的分类问题 1.1 解决监督学习中分类问题的一般步骤 –也...
  • 算法求解步骤:(仅仅为个人理解) 1、分析问题,建立模型 理解题目,属于哪类题型,与哪类题型类似 2、设计算法,建立初步求解 处理输入(采用哪种数据结构存储) 理清数据处理流程 3、正确性分析 算法...
  • meanshift算法步骤

    千次阅读 2013-09-22 14:39:55
    跟踪算法-meanShift CamShift算法研究(基于opencv) 2008-06-27 12:31 ...CamShift算法: ...CamShift算法,即"Continuously Apative Mean-Shift"算法,是...我把这个算法分解成三部分,便于理解: 1) Back Proj
  • 逻辑回归(Logistic Regression)是机器学习中的种分类模型,分类模型又有二分与多分类,逻辑回归通常用于二分类,用来完成 0/1 分类问题,逻辑词也代表了是(1)和非(0)。 什么场景可以应用逻辑回归算法? ...
  • A*算法计算步骤总结

    万次阅读 2018-11-09 11:44:10
    A*算法计算步骤总结 1,从点A开始,并且把它作为待处理点存入一个“开启列表”。开启列表就像一张购物清单。尽管现在列表里只有一个元素,但以后就会多起来。你的路径可能会通过它包含的方格,也可能不会。基本上,...
  • A*算法详解(个人认为最透彻的一个

    万次阅读 多人点赞 2019-04-18 16:47:21
    A* 寻路算法 原文地址: http://www.gamedev.net/reference/articles/article2003.asp 概述 虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。 搜索区域...
  • 本文将详细介绍人脸识别的4特点、4个步骤、5难点及算法的发展轨迹。 什么是人脸识别? 人脸识别是 计算机视觉-computer Vision 领域里很典型的应用。 人脸识别的目的就是要判断图片和视频(视频是由图片...
  • 算法学习总结(2)——温故十大经典排序算法

    万次阅读 多人点赞 2019-08-29 14:57:51
    一、什么是排序算法 1.1、排序定义 对一序列对象根据某个关键字进行排序。 1.2、排序术语 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;...时间复杂度:一个算法执行所耗费的时间。空间...
  • 蚂蚁算法蚁群算法-原理-思路-步骤-程序实现 ❀算法介绍 蚁群优化算法种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。...
  • 看了西关书的聚类算法算法原理很容易明白,接下来就是整理成自己的理解...核心对象:样本x_j的Δd邻域内至少包含MinPts样本,称x_j为核心对象 密度直达:x_j邻域内的样本x_i,称x_j由x_i密度直达 密度可达:...
  • Apriori算法详解之【、相关概念和核心步骤

    万次阅读 多人点赞 2013-06-09 10:39:06
    、Apriori算法简介: Apriori算法种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两阶段来挖掘频繁项集。 Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析...
  • 句话+一张图说清楚——银行家算法

    万次阅读 多人点赞 2018-05-08 21:10:44
    我相信用一句话可以讲清楚一个算法的核心思想,一张图可以描述整个算法的操作步骤。但本人能力有限,错误之处望大家指出,多谢。 一句话: 当一个进程申请使用资源的时候,银行家算法通过先 试探 分配给该进程...
  • 算法设计的步骤

    千次阅读 2008-04-09 08:44:00
    步:确定程序的入口(即已知条件),出口(条件).第二步:由第步画出示意图.第三步:综合运用正逆思维方式,分析解决问题.第四步:根据上面的分析,写出顶层较抽象的算法,分析边界情况.第五步:验证第四步的算法.第六步:...
  • K均值的算法步骤

    千次阅读 2007-12-25 13:56:00
    算法: K均值。用于划分的K均值算法,每簇的中心用簇中对象的均值表示 输入: K:簇的数目 D:包含N对象的数据集 输出:
  • R-CNN算法学习(步骤一:候选区域生成)

    万次阅读 多人点赞 2018-12-27 15:55:28
    R-CNN算法学习 ...总体分为 四个步骤(下文讲逐步骤分析): 1.候选区域生成: 一张图像生成1K~2K候选区域 (采用Selective Search 方法) 2.特征提取: 对每候选区域,使用深度卷积网络提取特征 (CNN)...
  • 数学建模中十大算法实现步骤与代码

    万次阅读 多人点赞 2017-09-11 12:53:33
    步骤数学建模中常用的方法:类比法、二分法、差分法、变分法、图论法、层次分析法、数据拟合法、回归分析法、数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划)、机理分析、排队方法、对策方法、决策...
  • 如何计算一个算法的时间复杂度

    万次阅读 热门讨论 2008-11-02 10:27:00
    学习算法的同学,如果不知道计算一个算法的时间复杂度该如何计算,其实是一件很丢脸的事情。最近选修了高级算法这门课,由于时间紧张,原本就想混过去算了,但是不料考试的时候有40%的题目是计算时间复杂度的,干脆...
  • 时间序列相关算法与分析步骤

    万次阅读 多人点赞 2018-03-31 11:56:53
    首先,从时间的角度可以把一个序列基本分为3类: 1.纯随机序列(白噪声序列),这时候可以停止分析,因为就像预测下一次硬币哪一面朝上一样毫无规律。 2.平稳非白噪声序列,它们的均值和方差是常数,对于这类序列...
  •  常用的算法的时间复杂度和空间复杂度 ,求解算法的时间复杂度,其具体步骤是:  ⑴ 找出算法中的基本语句;  算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。  ⑵ 计算...
  • 比如设备的硬件ID,像手机在生产过程中都会被赋予一个唯一的IMEI(International Mobile Equipment Identity)编号,用于唯一标识该台设备。像电脑的网卡,在生产过程中会被赋予唯一的MAC地址。这些设备唯一的标识符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 392,828
精华内容 157,131
关键字:

一个算法应包含有限个步骤