这篇文章给大家聊聊关于八大算法思维方法,以及汉诺塔函数解决办法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
本文目录
八大算法思维方法
枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟算法思想。
一、枚举算法思想(暴力算法)
将问题的所有可能答案一一列举,根据判断条件判断此答案是否合适,一般用循环实现。
经典运用:百钱买百鸡、填写运算符
二、递推算法思想
1.顺推法:从已知条件出发,逐步推算出要解决问题的方法。
2.逆推法:从已知结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过程。
经典运用:斐波那契数列(顺推法)、银行存款(逆推法)
三、递归算法思想
1.递归过程一般通过函数或子过程实现;
2.递归算法在函数或子过程的内部,直接或间接调用自己的算法
3.递归算法实际上是把问题转化为规模缩小了的同类问题的子问题,然后再递归调用函数或过程来表示问题的解
注意:必须有一个明确的递归结束条件;如果递归次数过多,容易造成栈溢出。
经典运用:汉诺塔问题、阶乘问题
四、分治算法思想
将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。只要求出子问题的解,就可得到原问题的解。
一般步骤:
1.分解,将要解决的问题划分成若干个规模较小的同类问题
2.求解,当子问题划分得足够小时,用较简单的方法解决
3.合并,按原问题的要求,将子问题的解逐层合并构成原问题的解
经典运用:大数相乘问题、比赛日程安排
五、贪心算法思想
从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出更好的解。
局限:
不能保证最后的解是最优的;
不能求最大最小解问题;
只能求满足某些约束条件的可行解范围。
基本过程:
1.从问题的某一初始解出发
2.while能向给定总目标前进一步
3.求出可行解的一个解元素
4.由所有解元素组合成问题的一个可行解
经典运用:装箱问题、找零方案
六、试探算法(回溯法)
在试探算法中,放弃当前候选解,并继续寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。
(为求得问题的正确解,会先委婉地试探某一种可能情况。在进行试探过程中,一旦发现原来选择的假设情况是不正确的,马上会自觉地退回一步重新选择,然后继续向前试探。反复进行,直到得到解或证明无解时才死心)
基本步骤:
1.针对所给问题,定义问题的解空间
2.确定易于搜索的解空间结构
3.以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索
经典运用:八皇后问题、29选7彩票组合
七、迭代算法(辗转法)
是一种不断用变量的旧值递推新值的过程,解决问题时总是重复利用一种方法。
1.确定迭代变量:直接或间接地不断由旧值递推出新值的变量
2.建立迭代关系式:新值与旧值的公式或关系。(解决迭代问题的关系)
3.对迭代过程进行控制:确定迭代过程什么时候结束
所需的迭代次数是个确定值,可以计算出来:可以构建一个固定次数的循环来实现对迭代过程的控制;
所需的迭代次数无法确定:需要进一步分析出用来结束迭代过程的条件。
经典运用:求平方根问题
八、模拟算法思想
对真实事物或者过程的虚拟。
经典运用:猜数字游戏、掷骰子问题
什么是数学思维
要想学好数学,必须具备一定的数学思维能力,那么什么是数学思维呢?这个概念真的不好去论述,但是是绝对存在的,并且对学生的数学学习有至关重要的影响。
举一个简单的例子来说说数学思维,同样一道题目,有的学生能在很短时间内完整解答,而有的同学需要思考很久才能解答,还有一些同学看了半天也不知道如何下手,还有一些同学连题目的意思都没有理解,甚至还有一部分同学题目都没看就自我放弃了,不同学生在同一道题目上的不同表现除了与基础有关外,与数学思维能力也有一定的关联。
数学思维主要就是思考数学问题的出发点和落脚点,也就是很多人所说的逻辑思维。要解决这个数学问题,第一步该干什么,第二步该干什么,第三步该干什么,……把这些问题给弄明白了,数学题目也就能顺利解答。
很多同学见到数学题目时根本就没有清晰的思路和思维,凭借着记忆照猫画虎解决一些简单的或做过多次的题目,但一旦遇到比较复杂的题目或没见过的题目时就不知道如何下手了,这就是缺乏数学思维能力的体现。
举一个简单的例子,有依据俗语说乱全打死老师傅,胡乱出拳也许能取得一时的胜利,但这种胜利是很难持续的,唯有按照套路去走,夯实基础,掌握基本的规律和方法方能以不变应万变,思路如套路,任何问题的解答都是有其方法和步骤的,我们需要掌握其方法和步骤。
数学思维体现出来也就是做题的思路和方法,你是如何来思考这个题目的,如何运用题目的已知条件的,如何来找到突破口的,为什么用这个方法而不是别的。做数学题如同探案一般,需要从错综复杂的条件中筛选中有用的条件,再加以分析和推导,一步步找到事情的真像,解决问题。
数学思维与联想能力有关,不同的学生见到同样的题目和条件因为产生了不同的联想,最终会导致产生不同的思路,进而导致了最终不同的结果。
一个学生对题目条件的分析和加工处理能力就决定了最终不同的结果,要得到正确的结果就必须具备正确的思路,也就是需要产生有效地联想,这种联想的构建一方面取决于我们的基础知识储备,另一方面也取决于我们之前有意识地练习和强化训练产生的一种条件反射或者说是对应关系。当然这种对应关系在很多时候不是单一的,是会继续拓展和延伸的,于是就形成了发散思维。
来看一道很典型的题目的分析思路:
先分析题目的条件,两相同三角形叠成如图形状,已知一个梯形的三边,求阴影部分的面积。
如何求阴影部分的面积呢?发现阴影部分是一个梯形,想到梯形的面积公式,如果能求出阴影部分梯形的上底下底和高再代入面积公式即可。
但发现根据题目已知条件发现没法直接求出阴影部分梯形的相关长度,那该咋办呢?直接求没办法,那就需要间接来算,如何才能做到呢?
还是先回到题目条件,两个相同的三角形,相同三角形有什么用呢?既然这个题与面积相关,那么相同三角形的面积也就相同,两个三角形面积相同又有什么用呢?与阴影部分的面积有什么关系呢?
发现阴影部分梯形是其中一个直角三角形的一部分,那么阴影部分的面积就等于直角三角形的面积减去空白三角形的面积。然后呢?
发现空白部分与另一个梯形合起来就组成了另一个直角三角形的面积,刚好这个梯形的的相关条件都已知可以算出面积,再根据等量替换就发现这两个梯形的面积是相同的,于是问题就得到解决。
上面就是这道题目的分析过程,先从条件出发,分析已知条件,再看问题,分析解决问题的过程和需要的条件,在尝试解决的过程中遇到问题,再对条件进行分析和转化,最终将问题解决,转化的过程有些困难,这就是学生通过这道题目所需要掌握的,不能直接计算,那就需要转化,转化的过程很重要,这是这道题目解题的核心所在。通过这道题能掌握一种思维和方法这才是收获,在不断的思考和做题中让方法得到积累和升华,在这个过程中思维能力也得到提升,数学思维说白了就是分析和解决数学问题的方式和方法。
如果你还想了解更多这方面的信息,记得收藏关注本站。