技术 - 算法设计模式 - 概述

本文概述了算法设计的主要思路,包括分治、回溯、分支限界、动态规划和贪心算法。讨论了算法界的知识图谱,算法设计的引入,以及枚举决策类算法的解空间树。文章还介绍了各种算法的递归和递推实现,以及如何根据问题特性选择合适的算法设计思路。
摘要由CSDN通过智能技术生成

算法设计 - 概述

如需转载请注明出处:http://blog.csdn.net/qingyixiaoxia  

熟知的算法设计思路有五类:分治,回溯,分枝限界,动态规划,贪心。本文作为一个对算法设计的概述,着眼于讨论如下几点:其一,算法界的知识图谱;其二,算法设计思路的引入;其三,枚举决策类算法的解空间树;其四,枚举决策类算法的分类;其五,算法的递归实现和递推实现;其六,如何选择一个算法设计思路;

一  算法界的知识图谱

讨论算法设计思路前,首先我们澄清一下算法相关的知识结构,有三大领域:

这三大领域,互相关联,又相对独立。线/树/图的操作算法,着眼于数据基本操作的性能,有的操作算法也运用了经典的算法设计思路。查找和排序算法,着眼于数据查找和排序的性能,具体的方法和数据结构息息相关,有些方法也同样运用了算法设计思路。而一般的算法设计思路,提供了一些通过运算来求解问题的思路,可以应用于更为广泛的问题。在下面的讨论中,我们focus于典型的几大类算法设计思路。

二  算法设计思路的引入

算法设计,其实是提供了几种通过运算来解决问题的思路,或曰提供了几种通过运算来解决问题的思路模型。我们求解一个问题时,有两类基本方式可以选择。第一类,仔细观察问题特征,并基于其特征,找到一个巧妙的角度来诠释问题,进而得到一个可以通过较少运算来得到答案的思路。第二类,通过暴力运算,来求解得到问题的答案。第一类思路固然很好,但是有的问题没有什么巧妙的思路可以运用,此时唯有通过暴力运算来求解之。

运用算法解决问题,也即通过暴力运算来解决问题,基本思路是不断降低问题的规模,把大问题逐步缩小为小问题,再反过来用较小问题的解求得到较大问题的解。降低问题规模的基本思路有两大类:分割,枚举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值