㈠ 初学者如何学算法
先看看两本书,一本数据结构,一本离散数学。。。看完以后你就会。。。。
㈡ 高中生适合看算法导论吗
高中生是否适合看算法导论,取决于其编程基础和数学基础:
若基础薄弱:对于大多数高中生而言,如果尚未具备扎实的编程基础和数学基础,算法导论可能显得过于复杂和深奥。此时不适合直接阅读算法导论。建议先通过一些简单的编程练习和入门级算法问题,逐步提升编程能力,并加强数学基础。
若基础扎实:如果高中生已经掌握了良好的编程技能,并且对数学有一定的理解和应用能力,那么可以尝试阅读算法导论。但需注意,阅读此书需要有耐心和毅力,逐步理解书中的概念与算法设计方法。同时,要注重理论与实践相结合,通过实践解决具体问题来加深对算法的理解。
学习策略:在阅读算法导论时,高中生可以制定合理的学习计划,分阶段逐步深入。遇到难以理解的部分,可以查阅其他资源,如在线教程或相关书籍,也可以与同学讨论,共同解决问题。
综上所述,高中生是否适合看算法导论,关键在于其是否具备必要的编程和数学基础。在具备这些基础后,通过有策略的学习,可以逐步探索算法导论的奥秘,为日后的计算机科学学习打下坚实的基础。
㈢ 我是学生,高中,现在想学计算机,自学,那么《算法导论》适合零基础的吗,高数啥的什么都不会,学的好吗
《算法导论》不适合零基础。可以先学习《计算机基础》,然后再学习C语言或Java语言基础,再学习《数据结构》。
㈣ 算法怎么学
贪心算法的定义:
贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。
解题的一般步骤是:
1.建立数学模型来描述问题;
2.把求解的问题分成若干个子问题;
3.对每一子问题求解,得到子问题的局部最优解;
4.把子问题的局部最优解合成原来问题的一个解。
如果大家比较了解动态规划,就会发现它们之间的相似之处。最优解问题大部分都可以拆分成一个个的子问题,把解空间的遍历视作对子问题树的遍历,则以某种形式对树整个的遍历一遍就可以求出最优解,大部分情况下这是不可行的。贪心算法和动态规划本质上是对子问题树的一种修剪,两种算法要求问题都具有的一个性质就是子问题最优性(组成最优解的每一个子问题的解,对于这个子问题本身肯定也是最优的)。动态规划方法代表了这一类问题的一般解法,我们自底向上构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,并且以其中的最优值作为自身的值,其它的值舍弃。而贪心算法是动态规划方法的一个特例,可以证明每一个子树的根的值不取决于下面叶子的值,而只取决于当前问题的状况。换句话说,不需要知道一个节点所有子树的情况,就可以求出这个节点的值。由于贪心算法的这个特性,它对解空间树的遍历不需要自底向上,而只需要自根开始,选择最优的路,一直走到底就可以了。
话不多说,我们来看几个具体的例子慢慢理解它:
1.活动选择问题
这是《算法导论》上的例子,也是一个非常经典的问题。有n个需要在同一天使用同一个教室的活动a1,a2,…,an,教室同一时刻只能由一个活动使用。每个活动ai都有一个开始时间si和结束时间fi 。一旦被选择后,活动ai就占据半开时间区间[si,fi)。如果[si,fi]和[sj,fj]互不重叠,ai和aj两个活动就可以被安排在这一天。该问题就是要安排这些活动使得尽量多的活动能不冲突的举行。例如下图所示的活动集合S,其中各项活动按照结束时间单调递增排序。
关于贪心算法的基础知识就简要介绍到这里,希望能作为大家继续深入学习的基础。
㈤ 《算法导论》有什么好的学习心得
本人没有读过这本书,文化水平不够,就算读了估计也是不知所云,这个应该是比较专业的人看的吧,那我只能从网上摘录些供大家分享。
推荐每学一个算法,就去各个OJ(Online Judge)找一些相关题目做做,有时理论让人很无语,分析代码也是一个不错的选择。