算法的基本思想_夜阑優琿的博客-程序员宝宝_算法的思想

技术标签: Note  

1.穷举法

穷举法是一种简单、直接地解决问题地方法,是指在问题的解空间范围内逐一测试,找出问题的解的方法。例如:暴力破解法、百鸡百钱问题。

  1. 基本什么问题都能解决。
  2. 效率低下,适合求解小规模问题。
  3. 耗费的时间较高。

2.回溯法

回溯法本质上是一种穷举法,它在问题的解空间中系统地搜索问题的解,通常通过约束条件的判定,排除错误答案等方式提高搜索效率。例如:深度优先遍历、走迷宫问题。

  1. 其有通用解法之称,当一个问题没有显而易见的解法时,可以尝试使用回溯法。

3.递归

递归是间接或直接地调用自身的算法。例如:斐波那契数列求项、汉诺塔问题。

  1. 必须要设置终止递归的条件。
  2. 经常会对某些问题重复调用,导致算法效率不高。

4.分治

分治法将一个复杂的问题分成若干个与原问题同类型的简单子问题进行解决。然后对子问题的结果进行合并,得到原问题的解。例如:二分查找。

  1. 如果子问题还比较大,可反复使用分治算法,直到最后的子问题可以直接求解。

5.贪心法

贪心法将待求解的问题分解成若干个子问题进行分布求解,且每一步总是做出当前的最好选择,得到局部最优解,再整合为原问题的解。例如:最小生成树。

  1. 广泛应用于最优化问题中。

6.动态规划

动态规划将待求解的问题划分成若干个阶段,利用各阶段之间存在的联系,按照自底向上的顺序推导出原问题的解。例如:最短路径,关键路径。

  1. 是求解决策过程最优化的数学方法。

7.迭代

迭代时重复反馈过程的活动,其目的在于逼近所需目标或结果,每一次对过程的重复称为一次迭代。例如:斐波那契求项。

  1. 每一次迭代得到的结果会作为下一次迭代的初始值。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51051177/article/details/112255044

智能推荐

M6636b sae-j1850数据通信协议的汽车局域网传输控制器_weng13924672287的博客-程序员宝宝_j1850协议

M6636b 是基于 sae-j1850数据通信协议的汽车局域网传输控制器。该装置采用PWMbit 编码方法(41.6 kbps)实现数据总线拓扑总线局域网系统。M6636b 除了协议控制电路外,还有一个封闭的石英振荡电路、主机CPU接口(并行接口)、一个发送/接收缓冲器和一个总线接收电路,减少了主机 cpu 的负担.特征:•基于 sae-j1850 b 类数据通信网络接口(1991年8月12日发布)•使用 csma/cd 内部发送缓冲器(1帧)和接收缓冲器(2帧)•调制/解调器: pwm

使用mysql-connector-java-8.0.18.jar的一些注意事项_xxdbdxxdbd的博客-程序员宝宝

使用mysql-connector-java-8.0.18.jar的时候,需要在url最后加上?serverTimezone=GMT%2B8,例如url=“jdbc:mysql://127.0.0.1:3306/aaa?serverTimezone=GMT%2B8”

【Debug】mysql-connector-java-8.0.jar包下载安装,导入jar包方法_荣庆Rqing的博客-程序员宝宝_mysql-connector-j

使用Batch批处理时,需要重新导入新版mysql-connector-java包。不然连接不上数据库。下载jar包进入官网,点击下载。https://dev.mysql.com/downloads/file/?id=477058导入jar包方法先把新jar包复制进工程。右键工程把旧jar包移除。添加新jar包...

linux系统中交换区间(swap file)的解释_yang_chen_shi_wo的博客-程序员宝宝

Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这里的swap空间其实就是操作系统里面所说的虚拟存储空间,用于放置临时被交换出来的页面。那些被释放的空间可能来自一些很长时间没有什么操作的程序,

网办项目经验小结3-Ajax,获取URL参数_luofuIT的博客-程序员宝宝_不断获取ajax url

1:项目中,感觉这一句很有用:jsp中 String contextPath=request.getContextPath();具体说明:/XXXX.jsp">指的是根目录下的xxxx.jsp假设你的要目录http://localhost:8080,你现在访问的页面为http://localhost:8080/admin/manage.jsp则/XXXX.jsp">指向

Outlook Web App简介_weixin_34088583的博客-程序员宝宝

一、什么是Outlook Web AppOutlook Web Access简称OWA是基于微软Hosted Exchange技术的托管邮局的一项Web访问功能。通过访问Outlook Web Access页面,邮箱用户不需要安装Outlook 2007客户端软件,直接使用 Web 浏览器通过 Internet 读取或发送电子邮件、管理他们的日历地址簿,任务等协同办公功能。基于微软Hosted E...

随便推点

眼见不一定为实——视频、图片编辑技术“妖魔化”_systemino的博客-程序员宝宝

我们现在生活在一个PhotoShop时代,PS已经成了一个动词。自从有了PS以后,很多事情变成了可能,因而网上各种图片的真实性变得难以分辨。一、PS技术Adobe作为著名的图形图像和排版软件的生产商,旗下的Photoshop、Premiere、After Effects等软件一直深受好评,特别是Photoshop由于其强大的功能,更是风靡全球。2018年7月,美国时代...

yml的context-path配置版本问题_Share,Keep Life ^_^的博客-程序员宝宝_context-path yml

SpringBoot 2.0.0.RELEASE版本后更新yml写法:server: servlet: context-path: /exampleproperties写法:server.servlet.context-path=/example

VScode代码格式化后不符合ESLint风格问题处理_SilenceJude的博客-程序员宝宝

问题描述vscode中默认代码格式化ctrl+shift+f后,代码无法通过eslint的代码风格检查。 解决方案首先安装eslint,prettier-Code formatter,vetur 这三个插件,大多数情况下vetur已经安装了。 然后文件——首选项——设置,来到用户设置。 用户设置这里配置如下代码, 具体代码:{ "workbench.ed...

Unity3D分割地形Terrain_成都骚壳壳的博客-程序员宝宝

在制作地形的时候通常是直接刷出整个地形,但是在实际使用中也许地形过大,我们不能直接把整个地形完全加载,这样对内存的消耗很高,所以有时需要一小块一小块的加载地形.这时就需要把制作好的地形分割成几块后,再来动态加载.首先我制作了一个完整的地形,如下图:直接上分割地形的代码public class TerrainSlicing : Editor{ public static string Ter_1671465600

K8S 1.25版本安装dashboard_吕海洋的博客-程序员宝宝_kubernetes安装dashboard

新版本k8s安装dashboard 的方式不一样了,不自动生成token。

推荐文章

热门文章

相关标签