0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

轻松概念性总结分享一下改变世界5大算法

GReq_mcu168 来源:玩转单片机 2020-06-28 17:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

[导读] 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。周末了,今天来轻松概念性总结分享一下改变世界5大算法,当然足以改变世界的算法远不止这5个。比如还有卡尔曼滤波算法啦等等,等以后有机会整理。

Metropolis算法

在统计和统计物理学中,Metropolis-Hastings算法是一种马尔可夫链蒙特卡洛(MCMC)方法,用于从难以直接采样的概率分布中获取随机样本序列。该序列可用于近似分布(例如,生成直方图)或计算积分(例如,期望值)。Metropolis-Hastings和其他MCMC算法通常用于多维分布的采样,尤其是在维数较多时。对于一维分布,通常还有其他方法(例如自适应拒绝采样)可以直接从分布中返回独立样本,并且这些方法不会出现MCMC方法固有的自相关样本问题。

Metropolis算法是一种根据Boltzmann分布生成系统状态的Markov-Chain-Monte-Carlo方法。从该算法中衍生出的更通用的Metropolis-Hastings算法可以模拟随机变量序列,更精确地模拟了期望分布为平稳分布的马尔科夫链,特别是在许多随机变量的分布无法直接模拟的情况下。

该算法以Nicholas Metropolis的名字命名,后者与Arianna W. Rosenbluth,Marshall Rosenbluth,Augusta H. Teller和Edward Teller共同撰写了1953年的文章《Equation of State Calculations by Fast Computing Machines》。

为啥这个算法牛?Metropolis算法是蒙特卡洛方法中最著名的算法,它的应用领域包括统计物理、QCD、天体物理、物理化学、数学、计算生物、人工智能等等,甚至是社会科学。

使用Metropolis-Hastings算法在Rosenbrock函数上运行的3D马尔可夫链的结果。该算法从后验概率高的区域采样,链开始在这些区域混合。

单纯形法

在数学优化中,Dantzig的单纯形算法(或单纯形方法)是用于线性规划的一种流行算法。该算法的名称源自单纯形的概念,由T. S. Motzkin提出。单纯形法(也称为单纯形算法)是用于解决线性优化问题的数值优化方法,也称为线性程序(LP)。它仅需经过有限的多个步骤即可解决此问题,或者确定其不溶性或无限性。单纯形法的基本思想是1947年由George Dantzig提出的。从那以后,通过大量改进,它们已发展成为实际中最重要的线性优化解决方案。单纯形法是枢轴法

一个线性不等式系统将一个多面体定义为一个可行域。单纯形算法从一个起始点开始,沿着多面体的边缘移动,直到到达最优解的顶点。

3D中的单纯形算法多面体:

如今线性规划的理论与算法均非常成熟,在实际问题和生产生活中的应用非常广泛;线性规划问题的诞生标志着一个新的应用数学分支———数学规划时代的到来。过去的 60 年中,数学规划已经成为一门成熟的学科。其理论与方法被应用到经济、 金融、 军事、机器学习等各个领域。数学规划领域内,其他重要分支的很多问题是在线性规划理论与算法的基础上建立起来的, 同时也是利用线性规划的理论来解决和处理的。由此可见, 线性规划问题在整个数学规划和应用数学领域中占有重要地位。因此, 研究单纯形法的产生与发展对于认识整个数学规划的发展有重大意义

快速傅立叶算法

啥是傅立叶变换?表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换。最初傅立叶分析是作为热过程的解析分析的工具被提出的。通过下面几步看一下近似方波近似叠加过程:

如果一个点以恒定的速度绕圆周运动,那么它离地面的高度就是一个正弦函数。点移动的速度对应于频率,圆的半径对应于振幅。

再增加一个速率圆周运

再增加几个看看:

是不是已经很接近方波了?

而快速傅立叶变换(FFT)是用于高效计算离散傅立叶变换(DFT)的算法。它可以用于将数字信号分解为频率分量,然后可以对其进行分析。类似地,存在离散傅里叶逆快速傅里叶逆变换(IFFT)。IFFT使用相同的算法,但具有共轭系数。

下图展示一个时域信号做FFT后的谱线图:

快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

James Cooley:

John Tukey:

计算量小的显著的优点,使得FFT在信号处理技术领域获得了广泛应用,结合高速硬件就能实现对信号的实时处理。例如,对语音信号的分析和合成,对通信系统中实现全数字化的时分制与频分制(TDM/FDM)的复用转换,在频域对信号滤波以及相关分析,通过对雷达、声纳、振动信号的频谱分析以提高对目标的搜索和跟踪的分辨率等等,都要用到FFT。可以说FFT的出现,对数字信号处理学科的发展起了重要的作用。

快速排序算法

大家熟知的快速排序是一种快速的、递归的、非稳定的排序算法,它的工作原理是部分和优势。它是在1960年左右由C.安东尼R.霍尔(C. Antony R. Hoare)开发出来的基本形式,后来经过许多研究人员的改进。该算法的优点是有一个非常短的内部循环(这大大提高了执行速度)。它不需要额外的内存(除了递归调用堆栈上需要的额外空间之外)。

这算法应用在计算机科学中大量应用自不必多说。当然也是本文几个算法相对容易理解的算法。这算法对现代软件编程影响深远,大浪淘沙,流传久远!

计算特征值的QR算法

QR算法是一种计算所有特征值和二次矩阵特征向量的数值方法。QR法或QR迭代法是在QR分解的基础上,由John G. F. Francis和Wera Nikolajewna Kublanowskaja在1961-1962年独立提出的。其前身是Heinz Rutishauser(1958)提出的LR算法,该算法稳定性较差,基于LR分解。QR算法的迭代往往收敛于矩阵的Schur形式。最初的过程相当复杂,因此,即使在今天的计算机上,对于具有数十万行和列的矩阵也是不可行的。

派生的变体,如Z. Bai和James Demmel 1989的多移位方法和K. Braman、R. Byers和R. Mathias 2002的在数值上更稳定的变体,具有实际运行时,其大小为矩阵的立方。后一种方法在数值软件库LAPACK中实现,而后者在许多计算机代数系统(CAS)中用于数值矩阵算法

系统辨识是现代控制理论的重要组成部分。对系统的结构和参数进行辨识在工程上和理论上都占有重要的地位。最小二乘法是系统参数辨识中的重要估计方法,并在众多领域和场合得到了广泛的应用。

QR分解算法在现在火热的人工智能领域更是基础算法之一,有此有其是改变世界的算法并不夸张。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4762

    浏览量

    97189
  • 卡尔曼滤波
    +关注

    关注

    3

    文章

    166

    浏览量

    25316

原文标题:聊聊改变世界的5大算法

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    支付宝“碰一下”的革新背后:国民技术MCU的隐形力量

    近日,全球顶尖金融科技盛会Money20/20公布首届创新大奖TheMoneyAwards结果,“支付宝碰一下”从众多参赛企业中脱颖而出,凭借创新的解决方案和极致的用户体验摘得“支付”类别大奖,成为
    的头像 发表于 11-21 19:15 1112次阅读
    支付宝“碰<b class='flag-5'>一下</b>”的革新背后:国民技术MCU的隐形力量

    请教大家一下DP一致性测试问题

    请教大家一下,DP的Vbios中已经固定了预加重和Swing的值,DP的TX信号一致性测试项中Non Pre-Emphasis Level Test(Swing2/Swing0)-PLTPAT,这个测试项意思是Swing2与Swing0偏差吗?已经固定了Swing中,这
    发表于 11-12 15:57

    SM4算法实现分享(算法原理

    。而解密算法与加密算法采用同结构,只是轮密钥使用的顺序不同,加密采用顺序的,解密采用逆序的。 SM4加密算法是典型的分组密码算法,分组密
    发表于 10-30 08:10

    无刷吸尘器在吸尘器领域带来了革命的提升,其优势是全方位的【其利天下】

    天花板极高,且优化自由度巨大。 ​​软件定义性能:​​ 通过修改FOC算法的参数,可以在不改变任何硬件的情况,对启动特性、加速响应、峰值转矩、效率MAP图进行精细优化。同款电机硬件
    发表于 10-28 09:35

    分享一下多点电极液位开关的特点与优势

    ,都是在监测液位。在工业生产中,会用到很多液体,他们的液位监测又由谁来守护呢?今天我们来了解一下,多点电极液位开关,聊聊它有什么特点和优势? 我们在生活中或是工业中,遇到的开关可能就知道“满了”与“空了”,但
    的头像 发表于 09-24 18:15 522次阅读
    分享<b class='flag-5'>一下</b>多点电极液位开关的特点与优势

    奥比中光助力支付宝碰一下落地电梯场景

    近日,支付宝与分众传媒宣布联合推出“碰一下抢红包”服务。作为创新交互方式,“支付宝碰一下”首次被引入至电梯场景,并已在全国20余个城市的电梯铺设。奥比中光作为“支付宝碰一下”业务的核心供应商,为这
    的头像 发表于 08-12 11:32 999次阅读

    DFT算法与FFT算法的优劣分析

    算法之间有什么不同,采用相关算法的依据。下面就来介绍一下两种算法的不同以及适用的些场合。 DFT算法
    的头像 发表于 08-04 09:30 915次阅读

    “碰一下”支付终端应用在酒店:智能无卡入住与客房控制

    “碰一下”支付终端和“碰一下”支付机具今年已在各种餐饮零售门店推广应用。就连天波小编家附近的村口小超市也用上了“碰一下”支付终端。近日,卤味龙头企业绝味食品宣布,全国门店将接入“支付宝碰一下
    的头像 发表于 07-04 09:57 634次阅读
    “碰<b class='flag-5'>一下</b>”支付终端应用在酒店:智能无卡入住与客房控制

    上电时GPIO控制的LED偶尔诡异地亮了一下

    快速上下电时,主控1.8V的GPIO控制的LED会亮一下。放久点再上电则不会异常亮。仔细排查发现1.8V比0.9V先上电,再深入排查发现快速上下电时1.8V电源的RC延时使能失效,上电时序异常,主控工作异常。
    的头像 发表于 06-18 14:16 638次阅读
    上电时GPIO控制的LED偶尔诡异地亮了<b class='flag-5'>一下</b>

    一下终端,让自助售货机秒变 “家里的冰箱”

    ”支付更多元化支付宝“碰一下”支付终端的多样体现在:除了NFC支付,还能兼容原有的扫码支付。目前可支持支付宝、微信、云闪付等多平台扫码服务,满足不同消费者的支付
    的头像 发表于 06-18 10:49 1454次阅读
    碰<b class='flag-5'>一下</b>终端,让自助售货机秒变 “家里的冰箱”

    只需几步,树莓派轻松掌控物联网世界

    想象一下个图形化的编程工具,像搭积木样简单,却能轻松控制复杂的硬件设备;再想象一下块只
    的头像 发表于 03-31 17:19 793次阅读
    只需几步,树莓派<b class='flag-5'>轻松</b>掌控物联网<b class='flag-5'>世界</b>!

    算法加速的概念、意义、流程和应用

    本文介绍算法加速的概念、意义、流程和应用 、什么是算法加速 面向“最耗时”的部分做专用化处理: 在软件运行时,总有些特定
    的头像 发表于 01-15 09:34 1137次阅读

    “碰一下”支付背后的4G技术

    不知道你是否有留意,近期,在线下支付场景中,多了个支付宝“碰一下”支付的设备,只需要“解锁手机—碰一下—确认”即可完成支付,对比打开付款码支付,步骤确实更加简洁。
    的头像 发表于 01-03 16:27 5030次阅读

    支付宝发布新代AI视觉搜索“探一下

    轻松实现对感兴趣事物的快速识别与搜索。只需打开支付宝,利用摄像头对准目标,无论是花草宠物、潮玩收藏,还是旅游景点的随身讲解,甚至是商品药品的详细信息,都能迅速获取。此外,“探一下”还具备趣味解读功能,能够为用户解读萌
    的头像 发表于 12-31 10:49 960次阅读

    什么是YOLO?RK3568+YOLOv5是如何实现物体识别的?起来了解一下

    、掌握基于YOLOV5算法实现物体识别的方法。三、实验原理YOLOYOLO(YouOnlyLookOnce)v5种非常流行的实时目标检测模型,它提供了出色的
    的头像 发表于 12-19 19:04 1688次阅读
    什么是YOLO?RK3568+YOLOv<b class='flag-5'>5</b>是如何实现物体识别的?<b class='flag-5'>一</b>起来了解<b class='flag-5'>一下</b>!