算法中的思想(第0篇)

  最近就快把本科的学分修完了,总算是有了一段自上大学以来最空闲的时间,之前也零散的接触过好多算法了,打算把这些算法中的重要思想整理一遍,后面会陆续发文章,主要参考到的博文和书将会在文章中列出来,如果有原文作者不满,可以与我联系撤下。

  另外,感觉《Introduction to the Design and Analysis of Algorithms —— A STRATEGIC
APPROACH》这本书写的非常好,将一些算法按照其中用到的思想做了一个分类,我也是主要参考这本书对算法做分类,书是台湾的老师用英语写的,读起来也相对容易理解。建议对算法有兴趣的同学们备一本。

  

  

  然后这里给出一个目录(后面会更新):

  第0篇,序文

  第1篇,算法的复杂度

时间: 2024-10-03 15:48:37

算法中的思想(第0篇)的相关文章

《数据结构与算法之美》 <03>数组:为什么很多编程语言中数组都从0开始编号?

提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊. 是的,在每一种编程语言中,基本都会有数组这种数据类型.不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构.尽管数组看起来非常基础.简单,但是我估计很多人都并没有理解这个基础数据结构的精髓. 在大部分编程语言中,数组都是从 0 开始编号的,但你是否下意识地想过,为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗? 你可以带着这个问题来学习接下来的内容. 如何实现随机访问? 什么是数

矩阵分解在协同过滤推荐算法中的应用

在协同过滤推荐算法总结中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结.(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题 在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户.比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品

谈谈算法的基本思想

David Berlinkshi说:有两种思想,象珠宝商放在天鹅绒上的宝石一样熠熠发光,一是微积分,另一个就是算法.如果说微积分及在其基础上建立的数学分析体系造就了现代科学,而算法则造就了现代世界. 算法是计算机科学的灵魂,更是每个程序员和软件工程师必需具有的核心知识.区分一个好的软件工程师和一个代码磨工(coder)的关键就在于看其是否能够分析并设计出高效率的算法.正如爱因斯坦所说的,并非所有能计算的东西都有价值.能计算的算法,也不一定是有价值的.除正确性外,算法的效率对一个程序而言至关重要.

排序算法的基本思想和OC代码实现

算法的基本思想和OC代码实现 一 .冒泡排序   (平均时间复杂度 o(N*N))  基本思想:两个数比较大小,较大的数下沉,较小的数冒起来. 过程:比较相邻的两个数据,如果第二个数小,就交换位置 从后向前两两比较,一直到比较最前两个数据.最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了. 继续重复上述过程,依次将第2,3,….,n-1个最小数排好位置. int arr[5]={23,21,45,23,64}; int temp; for (int i=0; i<4; i++) {

算法之贪心思想

这个贪心的行为在算法中也成为了一种指导思想,也就是说贪心算法所作出的选择在当时的环境下是最好的,说深一点就是它只是某种 意义上的局部最优解,但不一定是全局最优解,此时往往接近于最优解. 一: 优点 前面也说了,贪心只是求的当前环境下的最优解,而不是追究整体的最优解,所以贪心就避免了为求的整体最优解而枚举各种方案所 耗费的时间. 二: 问题 ① 不能保证贪心所得出的解是整体最优的. ② 不能用来求最大解和最小解问题. ③ 只能求满足某些约束条件的可行解的范围. 三: 案例 其实说到贪心,基本上都会

机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size

机器学习算法中如何选取超参数:学习速率.正则项系数.minibatch size 本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器学习算法中,如何选取初始的超参数的值.(本文会不断补充) 学习速率(learning rate,η) 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率η.下面讨论在训练时选取η的策略. 固定的学习速率.如果学习速率太小,则会使收敛过慢,如果学习速率太大,则会导致代价

经典算法宝典——动态规划思想(六)(2)

1.01背包问题 有N件物品和一个容量为V的背包,第i件物品的体积是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 解析: 这是最基础的背包问题,特点是每种物品仅有一件,可以选择放或不放.用子问题定义状态,即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值.其状态转移方程便是f[i][v] = max{f[i-1][v], f[i-1][v-c[i]]+w[i]},这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的,所以有必要将它详细解

经典算法宝典——贪婪思想(五)(1)

贪婪法(Greedy)又叫登山法,它的根本思想是逐步到达山顶,即逐步获得最优解,是解决最优化问题时的一种简单但适用范围有限的策略."贪婪"可以理解为以逐步的局部最优,达到最终的全局最优. 贪婪算法没有固定的算法框架,算法设计的关键是贪婪策略的选择.一定要注意,选择的贪婪策略要具有无后向性,即某阶段状态一旦确定以后,不受这个状态以后的决策影响.也就是说某状态以后的过程不会影响以前的状态,只与当前状态有关,也称这种特性为无后效性.因此,适应用贪婪策略解决的问题类型较少,对所采用的贪婪策略一

分类算法中的ROC与PR指标

做过图像识别.机器学习或者信息检索相关研究的人都知道,论文的实验部分都要和别人的算法比一比.可怎么比,人多嘴杂,我说我的方法好,你说你的方法好,各做各的总是不行--没规矩不成方圆.于是慢慢的大家就形成了一种约定,用ROC曲线和PR曲线来衡量算法的优劣.关于ROC曲线和PR曲线的详细介绍可参考资料: ROC Analysis and the ROC Convex Hull Tom Fawcett,An introduction to ROC analysis Jesse Davis,Mark Go