五大常用算法总结_常用的基本算法有

五大常用算法总结_常用的基本算法有引言据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当数据量比较小时,其实根本就不需要什么算法,写一些for循环完全就可以很快速的搞定了,但是当数据量比较大,场景比较复杂的时候,编写for循环

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

引言

据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当数据量比较小时,其实根本就不需要什么算法,写一些for循环完全就可以很快速的搞定了,但是当数据量比较大,场景比较复杂的时候,编写for循环就是一个很不明智的方式了。一是耗时,二是写出的代码绝对是天书。当然还有第三点,这点也是最重要的,写代码是一种艺术,而不是搬砖。前面的文章里对这五种算法都已经做了详细的讲解和归纳,本文主要是一个总结,将这五种算法整理到一起来对比,分析一下。

0) 穷举法

穷举法简单粗暴,没有什么问题是搞不定的,只要你肯花时间。同时对于小数据量,穷举法就是最优秀的算法。就像太祖长拳,简单,人人都能会,能解决问题,但是与真正的高手过招,就颓了。

1) 贪婪算法

贪婪算法可以获取到问题的局部最优解,不一定能获取到全局最优解,同时获取最优解的好坏要看贪婪策略的选择。特点就是简单,能获取到局部最优解。就像打狗棍法,同一套棍法,洪七公和鲁有脚的水平就差太多了,因此同样是贪婪算法,不同的贪婪策略会导致得到差异非常大的结果。
具体的详细解析请参见下面的文章:
http://blog.csdn.net/changyuanchn/article/details/51417211

2) 动态规划算法

当最优化问题具有重复子问题和最优子结构的时候,就是动态规划出场的时候了。动态规划算法的核心就是提供了一个memory来缓存重复子问题的结果,避免了递归的过程中的大量的重复计算。动态规划算法的难点在于怎么将问题转化为能够利用动态规划算法来解决。当重复子问题的数目比较小时,动态规划的效果也会很差。如果问题存在大量的重复子问题的话,那么动态规划对于效率的提高是非常恐怖的。就像斗转星移武功,对手强它也会比较强,对手若,他也会比较弱。
具体的详细解析请参见下面的文章:
http://blog.csdn.net/changyuanchn/article/details/51420028
http://blog.csdn.net/changyuanchn/article/details/51429979

3)分治算法

分治算法的逻辑更简单了,就是一个词,分而治之。分治算法就是把一个大的问题分为若干个子问题,然后在子问题继续向下分,一直到base cases,通过base cases的解决,一步步向上,最终解决最初的大问题。分治算法是递归的典型应用。
具体的详细解析请参见下面的文章:
http://blog.csdn.net/changyuanchn/article/details/17150109
http://blog.csdn.net/changyuanchn/article/details/51465175

4) 回溯算法

回溯算法是深度优先策略的典型应用,回溯算法就是沿着一条路向下走,如果此路不同了,则回溯到上一个
分岔路,在选一条路走,一直这样递归下去,直到遍历万所有的路径。八皇后问题是回溯算法的一个经典问题,还有一个经典的应用场景就是迷宫问题。
具体的详细解析请参见下面的文章:
http://blog.csdn.net/changyuanchn/article/details/17354461

5) 分支限界算法

回溯算法是深度优先,那么分支限界法就是广度优先的一个经典的例子。回溯法一般来说是遍历整个解空间,获取问题的所有解,而分支限界法则是获取一个解(一般来说要获取最优解)。
具体的详细解析请参见下面的文章:
http://blog.csdn.net/changyuanchn/article/details/17102037

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234468.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hexo-theme-matery_文字博客wordpress主题

    hexo-theme-matery_文字博客wordpress主题零、博客作用笔记:概念及部分功能演示;教程:安装和卸载教程;BUG:bug解决方案;优化:在能用的基础上增强实现;字典:汇总常用的知识,便于查阅;展示:个性化展示。一、更改导航栏颜色在主题文件的theme/matery/source/css/matery.css文件中,搜索.bg-color来修改背景颜色:.bg-color{/*backgrou…

    2022年5月3日
    43
  • 认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg「建议收藏」

    认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg「建议收藏」一、Iconfont1.概述在前端作业中,二十年前只有页面中铺满文字就算上线产品,现如今,不加点俏皮的“图标”会让页面显得很Low很Low。图标在写这篇文章之前,我一直以为上图中的“图

    2022年8月5日
    6
  • chrome谷歌浏览器怎么清除指定网站cookie

    chrome谷歌浏览器怎么清除指定网站cookie

    2021年10月15日
    77
  • java转大数据方向学习路线

    java转大数据方向学习路线申明:本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。目录前言一、背景介绍二、大数据介绍正文一、大数据相关工作介绍二、大数据工程师的技能要求必须掌握的技能11条高阶技能6条三、大数据学习规划第一阶段(基础阶段)第二阶段(攻坚阶段)第三阶段(辅助工具工学…

    2022年4月29日
    50
  • Linux shell 字符串匹配

    Linux shell 字符串匹配最近进行脚本学习的时候,遇到了字符串匹配的问题,网上的内容也很乱,在这里我就写一个简单可行的方法吧。      首先假设一个场景:在一个文件夹里有很多后缀为sh的文件,那我怎么移动除了指定的某些文件之外文件到特定文件夹中呢?      具体程序如下(根据程序解决问题):forfilein$(ls*.sh)do ifecho $file|grep’move’ t

    2022年8月21日
    9
  • VS2010专业版_vs2010官网下载安装步骤

    VS2010专业版_vs2010官网下载安装步骤本文转载自https://blog.csdn.net/chy2z/article/details/80080399注意: 中文版为iso镜像文件,使用DaemonTools虚拟光驱软件载入进行安装。中文版镜像已包含Key,安装后即已激活,不需要像英文版所说的卸载时填注册码。 VS2010专业版(中文版本)thunder://QUFlZDJrOi8vfGZpbGV8Y25fdm…

    2022年8月22日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号