算法常用设计模式(子博客)

1. 枚举法

  根据具体问题枚举出各种可能,从中选出有用信息或者问题的解。

  这种方法利用计算机的速度优势,在解决简单问题时十分有效。

2. 贪心法

  如前所述,根据问题的信息尽可能做出部分的解,并基于部分解逐步扩充得到完整的解。

  在解决复杂问题时,这种做法未必能得到最好的解。

3. 分治法

  把复杂问题分解为相对简单的子问题,分别求解,最后通过组合起子问题的解的方式得到原问题的解。

4. 回溯法(搜索法)

   专指通过探索的方式求解。

  如果问题很复杂,没有清晰的求解路径,可能就需要分步骤进行,而每一步骤又可能又多种选择。

  在这种情况下,只能采用试探的方式,根据实际情况选择一个可能方向。

  当后面的求解步骤无法继续时,就需要退回到前面的步骤,另行选择求解路径,这种动作称为回溯。

5. 动态规划方法

  在一些复杂情况下,问题求解很难直截了当地进行,因此需要在前面的步骤中积累信息,在后续步骤中根据

  已知信息,动态选择已知的最好求解路径(同时可能进一步积累信息)。

  这种算法模式被称为动态规划。

6. 分支限界法

  可以看作搜索方法的一种改良形式。

  如果在搜索过程中可以得到一些信息,确定某些可能的选择实际上并不真正有用,就可以及早地将其删除,以缩小可能的求解空间,加速问题求解过程。

说明:

  上述算法设计模式只是人们对经验的总结。

  这些模式并不相互隔绝也不相互排斥。

  算法分析的主要任务就是弄清算法的资源消耗。

  算法分析的最重要作用是作为评价算法的一种标准。

原文地址:https://www.cnblogs.com/HZY258/p/8569769.html

时间: 2024-10-24 20:17:06

算法常用设计模式(子博客)的相关文章

Linux运维常用技术论坛博客网站

Linux运维常用技术论坛博客网站Linux中国开源社区: https://linux.cn/Infoq: https://www.infoq.cn/51CTO: http://www.51cto.com/掘金: https://juejin.im/CSDN: https://www.csdn.net/运维派: http://www.yunweipai.com/开源中国: https://www.oschina.net/ 原文地址:https://blog.51cto.com/13293070/

红黑树-算法大神的博客-以及java多线程酷炫的知识

http://www.cnblogs.com/skywang12345/p/3245399.html 解释第5条:从 ->根节点(或者任意个结点)到->所有的末端节点的路径中 ->黑色节点 数目相同 <一代宗师>,不比武功比想法 计算机中最为重要的课程 1.数学(线性代数,概率统计,集合论图论,矩阵理论) 2.数据结构与算法 3.操作系统

Dijkstra算法课后补分博客

题目名称:Dijkstra算法 题目要求:课上给出相关附图,求解附图顶点A的单源最短路径. 附图: 做题过程 1.了解Dijkstra算法的相关知识,包括定义以及使用方法. 定义:Dijkstra算法是很有代表性的算法.Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式.注意该算法要求图中不存在负权边.具体的定义如下:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的

我的Android进阶之旅------&gt;经典的大牛博客推荐(排名不分先后)!!

本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超博客 Android中文Wiki AndroidStudio-NDK开发-移动开发团队谦虚的天下 - 博客园gundumw100博客 - android进阶分类文章列表 - ITeye技术网站CSDN博文精选:Android系列开发博客资源汇总 - CSDN.NET - CSDN资讯Android笔

iOS开发学习之大牛们的博客

http://blog.csdn.net/iosbird/article/details/51981023 唐巧:http://blog.devtang.com/blog/archives/ 王巍:http://www.onevcat.com/page/2/#blog 破船之家:http://beyondvincent.com/ 池建强:http://www.cnblogs.com/chijianqiang/ 文顶顶播客:http://www.cnblogs.com/wendingding/p/

写博客的目的

我一直觉得人的记忆不可靠,这是我这么多年切身的学习经验. 我现在工作不到一年,至于水平,属于“烂泥扶不上墙的水平”,至于心态,属于“脚踩浮木,以渡洪江”. 有句话说的好,“如果一个人没有在大学的时候成为一个优秀的程序员,那么下一次成为优秀的程序员就要等到孩子上小学的时候了”. 程序员的核心竞争力是什么? 说实话,我不知道. 程序员的基本功是什么? 猜一下, 一门主流语言 数据结构 算法 操作系统 博客的作用 -1.帮助自己更好的打好基本功 -工作中在自己忘记了一些知识点的时候,可以通过博客快速的

牛人博客网址

高手博客: 嵌入式学习园地-华清远见-在21ic的的博客 1. 陈莉君老师的个人空间-仰空冥思2. linuxtrave-linux内核之旅3. edsiontel-和linuxtrave链接4. fudan_abc csdn博客 1. 宋宝华在51的博客2. 刘洪涛 csdn博客3. 周立功 sina博客4. 孙天泽 csdn博客 1. 李先静同志csdn博客2. 李先静同志http://www.limodev.cn/blog/3. 赵春江csdn博客4. 黄刚chinaunix博客5. te

为知笔记 | [插件]发布笔记到博客,更好的博客离线撰写工具

23 二 1 --> [插件]发布笔记到博客,更好的博客离线撰写工具 2011-02-23 功能特性 为知笔记支持绝大部分的博客离线撰写,可以方便地把笔记直接发布为博客. 使用 打开您已经在Wiz的撰写好的文章,然后点击“分享”按钮-发布到博客,如下图: 选择“发布到博客”,出现如下对话框: API地址:就是博客离线撰写发布的API地址,通常每一个博客的API地址都不相同,您可以从博客的帮助里面获得.下面是常用的一些博客API地址:  常用博客 API地址 新浪博客 http://upload.

iOS开发常用三方库、插件、知名博客等等

TimLiu-iOS   Swift版本点击这里 欢迎加入QQ交流群: 594119878 介绍 这是一个用于iOS开发的各种开源库.开源资料.开源技术等等的索引库. github排名 https://github.com/trending,github搜索:https://github.com/search 使用方法 根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性. 问题反馈 期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见(直接提交issues即可).请广大网友只