当前位置:首页 » 操作系统 » 算法怎么学

算法怎么学

发布时间: 2022-01-20 11:07:00

‘壹’ C语言算法怎么学习

意思就是用C语言写算法,推荐《算法导论》这本书
C语言主要是些驱动和嵌入式的,这些东西对算法要求很高。
学习算法主要要思考,分析。一步一图一代码的去理解算法,最后要动手实现算法,达到真正理解的目的。

‘贰’ 怎么学习算法

找一些关于某种算法的经典代码看,最好是多看代码加深对算法的理解

‘叁’ 怎样学习算法

去自己学校的poj做题目吧,先做那些容易的,然后进阶!

‘肆’ 算法怎么学

贪心算法的定义:

贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

解题的一般步骤是:

1.建立数学模型来描述问题;

2.把求解的问题分成若干个子问题;

3.对每一子问题求解,得到子问题的局部最优解;

4.把子问题的局部最优解合成原来问题的一个解。

如果大家比较了解动态规划,就会发现它们之间的相似之处。最优解问题大部分都可以拆分成一个个的子问题,把解空间的遍历视作对子问题树的遍历,则以某种形式对树整个的遍历一遍就可以求出最优解,大部分情况下这是不可行的。贪心算法和动态规划本质上是对子问题树的一种修剪,两种算法要求问题都具有的一个性质就是子问题最优性(组成最优解的每一个子问题的解,对于这个子问题本身肯定也是最优的)。动态规划方法代表了这一类问题的一般解法,我们自底向上构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,并且以其中的最优值作为自身的值,其它的值舍弃。而贪心算法是动态规划方法的一个特例,可以证明每一个子树的根的值不取决于下面叶子的值,而只取决于当前问题的状况。换句话说,不需要知道一个节点所有子树的情况,就可以求出这个节点的值。由于贪心算法的这个特性,它对解空间树的遍历不需要自底向上,而只需要自根开始,选择最优的路,一直走到底就可以了。

话不多说,我们来看几个具体的例子慢慢理解它:

1.活动选择问题

这是《算法导论》上的例子,也是一个非常经典的问题。有n个需要在同一天使用同一个教室的活动a1,a2,…,an,教室同一时刻只能由一个活动使用。每个活动ai都有一个开始时间si和结束时间fi 。一旦被选择后,活动ai就占据半开时间区间[si,fi)。如果[si,fi]和[sj,fj]互不重叠,ai和aj两个活动就可以被安排在这一天。该问题就是要安排这些活动使得尽量多的活动能不冲突的举行。例如下图所示的活动集合S,其中各项活动按照结束时间单调递增排序。

关于贪心算法的基础知识就简要介绍到这里,希望能作为大家继续深入学习的基础。

‘伍’ 算法到底应该怎么学

我现在也正在学习算法,我有一部分资料


‘陆’ 计算方法怎么学

结合自己学习算法时的一些经历来说,下面一句话要始终记得:

自己之前也是个技术渣,但好在是一直没放弃学习,一方面坚持看书听课学习理论,另一方面自己动手去写、去实践,积累了很多方法和心得,简单地说就是一定要做到看书、听课、做题相结合,缺一不可。

‘柒’ 学计算机算法怎样才能学好

学计算机的算法的话,我建议你还是多看看,先看别人是怎么算得,然后在电脑上进行运用,看看别人的算法的好处在哪,不足是什么。计算机的算法都是在不断地改造中出来的,只有不断地上机去练,去想,去做,才能真正的掌握那些算法。

‘捌’ 如何学习一个新算法

算法很难学。建议结合实现,无论c/c++,Java,Python等等,最好理论结合实现,如果你理论能力逻辑能力强,光推理,也可以。首先要分析出这个新算法都包含了那些知识点,然后在书上找出这些知识点的应用方式,结合新算法来将这些知识点融汇贯通,我推荐这样学会新算法了。

‘玖’ 算法该怎么学感觉好难

很多人都会说"学一样东西难",一开始我也觉得很大程度是因为每个人的智力水平等等不可改变的因素. 但是后来我发现,有一个东西也很能决定一个人是否会觉得一样东西难学,那就是理解方式.

一件事物通过不同的途径让一个人理解效果差异是很大的.就比如说数学里面教你一个圆,有的人看到一个圆就能很快明白什么是圆,有的人却非得看到x^2+y^2 = r^2这种式子才有感觉,甚至有的人需要"到定点距离为定长的点集"这种描述才能理解. 那这个不一定是说谁的智力水平更高,而是因为他们对不同形式事物的敏感程度不同.


回到算法上来.算法本质是一种数学.他是抽象的操作集合.(看这么说你可能会觉得不知所云,但是如果我说他只是一种解决问题的办法可能就好理解). 所以很多书,论文,或者很多老师教的都是一种数学描述的算法,这样子的算法就我个人而言相当难理解,看了就想到代数高数什么的.. 但是如果找一个图文并茂的解释,或者找个人一步一步把一个算法给你我比划一下,我立刻就能理解. 说白了,就是你一定要找很多很多不同的角度来尝试接受一种东西,你一定可以找到一种你相当敏感的角度,用这个角度学习你就会游刃有余. 智力因素并没有太大影响的.


具体点说,你可以试试这几种不同的角度.

  1. 直接看数学形式的算法.我个人最无法接受的形式,但是有人很喜欢..例子就是算法导论上面那种描述.

  2. 听一般语言描述,最理想是找一个明白的人,给你用通俗语言讲讲原理.这个不错,很多我是这么理解的

  3. 图形理解,叫理解的人给你画插图,分布图,结构图等等,来分解一个算法,找到他的思路.说到图,有一个人的博客这方面做得很好:matrix67.

  4. 程序理解.找到一种算法的实现程序,对着程序理解,可以尝试分布运行,观察一下变量的变化,这样来理解算法.

  5. 实在太难的算法,可以边写边改来理解.当时我学习插头dp的时候就是这样,不论怎么总是一知半解,最后硬着头皮写了一遍,改了很久,但是改过了的时候,也就真的明白了是怎么回事了.


也许还有别的什么办法,因为人对事物的接受角度实在是太多了.多想想你平时学习什么比较容易,找出你最敏感的理解方式就行了.


有感而发说的一些东西,不一定都是正确的,只供参考,欢迎指正.

‘拾’ 想学习算法,如何入门

入门的话推荐两本书:《算法图解》和《大话数据结构》,

另外推荐一门视频课程《300分钟搞定数据结构与算法》,不想花时间看书的同学,建议看这个视频课程,是关于数据结构和算法很好的一个课程。

热点内容
删数据库事件 发布:2024-11-15 12:10:54 浏览:457
数据库选课管理系统 发布:2024-11-15 12:10:15 浏览:128
android音乐波形图 发布:2024-11-15 11:57:12 浏览:380
福建社保银行卡初始密码是多少 发布:2024-11-15 11:47:40 浏览:913
游戏多开用什么配置 发布:2024-11-15 11:46:51 浏览:731
管理java版本 发布:2024-11-15 11:44:03 浏览:631
ndk编译的程序如何执行 发布:2024-11-15 11:43:18 浏览:628
轻应用服务器适合搭建网站吗 发布:2024-11-15 11:36:08 浏览:248
c语言的百分号 发布:2024-11-15 11:34:24 浏览:33
一加五安卓8什么时候推送 发布:2024-11-15 11:19:40 浏览:856