五大常用算法简述

简介: 分治法基本思想将一个问题,分解为多个子问题,递归的去解决子问题,最终合并为问题的解适用情况问题分解为小问题后容易解决问题可以分解为小问题,即最优子结构分解后的小问题解可以合并为原问题的解小问题之间互相独立实例二分查找快速排序合并...

分治法

基本思想

将一个问题,分解为多个子问题,递归的去解决子问题,最终合并为问题的解

适用情况

问题分解为小问题后容易解决
问题可以分解为小问题,即最优子结构
分解后的小问题解可以合并为原问题的解
小问题之间互相独立

实例

  1. 二分查找
  2. 快速排序
  3. 合并排序
  4. 大整数乘法
  5. 循环赛日程表

动态划分算法

基本思想

将问题分解为多个子问题(阶段),按顺序求解,前一个问题的解为后一个问题提供信息

适用情况

  1. 最优化原理:问题的最优解所包含的子问题的解也是最优的,即最优子结构
  2. 无后效性:某个状态一旦确定,就不受以后决策的影响
  3. 有重叠子问题

说明

递推关系是从次小的问题开始到较大问题的转化,往往可以用递归来实现,可以利用之前产生的子问题的解来减少重复的计算


回溯法

基本思想

选优搜索法,走不通就退回重选,按照深度优先搜索的策略,从根节点出发,深度搜索解空间

步骤

确定解空间
确定节点的扩展搜索规则
深度优先方式搜索解空间,用剪枝法避免无效搜索


分支界限法

基本思想

与回溯法类似,也是在解空间里搜索解得算法,不同点是,回溯法寻找所有解,分支界限法搜索一个解或者最优解
分支:广度优先策略或者最小耗费(最大效益)优先
分支搜索方式:FIFO、LIFO、优先队列式、分支界限搜索算法


贪心算法

基本思想

不从总体最优考虑,仅考虑局部最优解,问题必须具备后无效性

步骤

将问题分解为多个子问题
得到问题的局部最优解
合并子问题的局部最优解

适用情况

  1. 局部最优策略能导致全局最优解
  2. 子问题后无效性

个人介绍:

高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。

本文首发在 高广超的简书博客 转载请注明!

img_31e2e3075b097cabfd9b3643cd9abaa5.png
简书博客
img_3b1610566b09db3358ca5dcb3e015a52.png
头条号
目录
相关文章
|
5月前
|
分布式计算 大数据 Hadoop
揭秘MapReduce背后的魔法:从基础类型到高级格式,带你深入理解这一大数据处理利器的奥秘与实战技巧,让你从此不再是编程门外汉!
【8月更文挑战第17天】MapReduce作为分布式计算模型,是大数据处理的基石。它通过Map和Reduce函数处理大规模数据集,简化编程模型,使开发者聚焦业务逻辑。MapReduce分单阶段和多阶段,支持多种输入输出格式如`TextInputFormat`和`SequenceFileInputFormat`。例如,简单的单词计数程序利用`TextInputFormat`读取文本行并计数;而`SequenceFileInputFormat`适用于高效处理二进制序列文件。合理选择类型和格式可有效解决大数据问题。
83 1
|
运维 监控 架构师
第二章 软件过程与思想 第一节 基础
第二章 软件过程与思想 第一节 基础
|
8月前
|
API Python
Python实现大麦网抢票的四大关键技术点解析
随着互联网的普及和发展,线上购票已经成为人们生活中不可或缺的一部分。然而,在抢购热门演出门票时,往往会遇到抢票难、抢票快的问题,有时候一秒钟的延迟就意味着与心仪的演出擦肩而过。为了解决这个问题,技术爱好者们开始探索利用Python多线程技术来提高抢票效率。本文将介绍Python实现大麦网抢票的四大关键技术点,帮助读者了解抢票脚本的核心原理,并通过示例代码详细说明实现过程。
|
8月前
|
存储 算法 程序员
【软件设计师】通俗易懂的去了解算法的特性和要求
【软件设计师】通俗易懂的去了解算法的特性和要求
|
8月前
|
算法
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
66 1
|
8月前
|
存储 自然语言处理 算法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
352 0
|
8月前
|
存储 XML JavaScript
Java入门高频考查基础知识5(扎实技术基础应变一切变化-45题4.2万字参考答案)
数据结构是指在计算机中组织和存储数据的方式,它建立了数据元素之间的关系,以及对这些关系施加的操作。在程序设计中,数据结构是一种非常重要的概念,它对于实现高效的数据存储、检索和操作起着关键性的作用。逻辑结构逻辑结构是数据对象中数据元素之间的逻辑关系,包括线性结构(如数组、链表)、树形结构(如二叉树、平衡树)以及图形结构等。物理结构:物理结构是数据的逻辑结构在计算机中的存储形式,包括顺序存储结构和链式存储结构等。数据操作数据操作是指在一组数据上定义的操作,包括插入、删除、查找、排序等。
121 0
|
8月前
|
存储 算法
【数据结构入门精讲 | 第十八篇】考研408、企业面试图专项练习(一)
【数据结构入门精讲 | 第十八篇】考研408、企业面试图专项练习(一)
73 0
|
存储 搜索推荐 数据建模
(下)原理都懂,就是不会建模?来,顶尖数据模型走一波
(下)原理都懂,就是不会建模?来,顶尖数据模型走一波
|
搜索推荐 领域建模 调度
(上)原理都懂,就是不会建模?来,顶尖数据模型走一波
(上)原理都懂,就是不会建模?来,顶尖数据模型走一波