Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >EDA算法探究--20世纪10个影响最大的算法在EDA领域的应用

EDA算法探究--20世纪10个影响最大的算法在EDA领域的应用

作者头像
网络交换FPGA
发布于 2019-10-29 09:56:09
发布于 2019-10-29 09:56:09
3.2K0
举报
文章被收录于专栏:网络交换FPGA网络交换FPGA

21世纪初,科研人员总结了上个世纪对工业界影响最大的10个算法,其中大多数算法都在EDA领域有重要应用。我们今天来看一下,这10大算法,你在大学期间学过哪些?在工作中学过和用到哪些?如果10个算法你全部在工作中应用到,说明你已经对人类一个世纪以来研究的精华掌握得很好了。

10大算法如下:

1. Monte Carlo方法

1946年,在洛斯阿拉莫斯科学实验室工作的John von Neumann,Stan Ulam和Nick Metropolis编制了Metropolis算法,也称为Monte Carlo方法。 Metropolis算法旨在通过模仿随机过程,来得到具有难以控制的大量的自由度的数值问题和具有阶乘规模的组合问题的近似解法。数字计算机是确定性问题的计算的强有力工具,但是对于随机性(不确定性)问题如何当时并不知晓。通过monte Carlo方法,可以在有效的时间内近似得到最优解。

在EDA领域,Monte Carlo算法在电路仿真等多个领域有应用。

2. 线性规划的单纯形方法

1947年,兰德公司的Grorge Dantzig创造了线性规划的单纯形方法。就其广泛的应用而言,Dantzig算法一直是最成功的算法之一。线性规划对于那些要想在经济上站住脚,同时又有赖于是否具有在预算和其他约束条件下达到最优化的能力的工业界,有着决定性的影响(当然,工业中的“实际”问题往往是非线性的;使用线性规划有时候是由于估计的预算,从而简化了模型而促成的)。单纯形法是一种能达到最优解的精细的方法。尽管从理论上可以证明它是指数级而非线性的,但在实践中该算法是高度有效的——它本身说明了有关计算的本质的一些有趣的事情:理论和实践不一定完全一致。

在EDA领域,布局布线工具经常需要用到线性规划或者二次规划求解。

3. Krylov子空间迭代法

1950年,来自美国国家标准局的数值分析研究所的Magnus Hestenes, Eduard Stiefel和Cornelius Lanczos开创了Krylov子空间叠代法的研制。这些算法处理看似简单的求解形为Ax=b的方程的问题。当然隐藏的困难在于A是一个巨型的n*n 矩阵,致使代数解x=b/A 是不容易计算的(确实,矩阵的“相除”不是一个实际上有用的概念)。叠代法——诸如求解形为Kx(k+1)=Kx(k)+b-Ax(k)的方程,其中K 是一个理想地“接近”A 的较为简单的矩阵——导致了Krylov子空间的研究。以俄罗斯数学家NikolaiKrylov命名的Krylov子空间由作用在初始“余量”向量r(0)=b-Ax(0)上的矩阵幂张成的。当 A是对称矩阵时,Lanczos找到了一种生成这种子空间的正交基的极好的方法。对于对称正定的方程组,Hestenes 和Stiefel提出了称为共轭梯度法的甚至更妙的方法。过去的50年中,许多研究人员改进并扩展了这些算法。当前的一套方法包括非对称方程组的求解技巧,像字首缩拼词为GMRES和Bi-CGSTAB那样的算法。(GMRES和Bi-CGSTAB分别首次出现于1986和1992 SIAM journalon Scientific and Statistical computing(美国工业与应用数学学会的科学和统计计算杂志)。

在EDA领域,大部分问题都归结为线性方程组的求解,采用Krylov子空间迭代法是十分高效的算法。我在博士论文研究中,有一年的时间是在开发和改进基于Krylov子空间迭代法的数值算法,最终效果是把GMRES法在边界元素法的迭代次数大大减少,提高了整体运行效率。

4. 矩阵计算的分解方法

1951年,橡树岭国家实验室的A1ston Householder系统阐述了矩阵计算的分解方法。研究证明能把矩阵因子分解为三角、对角、正交和其他特殊形式的矩阵是极其有用的。这种分解方法使软件研究人员能生产出灵活有效的矩阵软件包。这也促进了数值线性代数中反复出现的大问题之一的舍入误差分析问题。(1961年伦敦国家物理实验室的JamesWilkinson基于把矩阵分解为下和上三角矩阵因子的积的LU分解,在美国计算机协会(ACM)的杂志上发表了一篇题为“矩阵逆的直接方法的误差分析”的重要文章。)

在EDA领域,涉及到矩阵分解的算法较多,凡是与矩阵处理相关的计算都需要用到矩阵分解。

5. Fortran最优编译程序

1957年,John Backus在IBM领导一个小组研制Fortran最优编译程序。Fortran的创造可能是计算机编程历史上独一无二的最重要的事件:科学家(和其他人)终于可以无需依靠像地狱那样可怕的机器代码,就可告诉计算机他们想要做什么。虽然现代编译程序的标准并不过分――Fortran I只包含23500条汇编语言指令――早期的编译程序仍然能完成令人吃惊的复杂计算。就像Backus本人在1998年在IEEE annals of theHistory of computing 发表的有关Fortran I,II, III的近代历史的文章中回忆道:编译程序“所产生的如此有效的代码,使得其输出令研究它的编程人员都感到吓了一跳。”

6. 矩阵特征值计算的QR算法

1959—61年,伦敦Ferranti Ltd.的J.G. F. Francis找到了一种称为QR算法的计算特征值的稳定的方法。特征值大概是和矩阵相连在—起的最重要的数了,而且计算它们可能是最需要技巧的。把—个方阵变换为一个“几乎是”上三角的矩阵――意即在紧挨着矩阵主对角线下面的一斜列上可能有非零元素――是相对容易的,但要想不产生大量的误差就把这些非零元素消去,就不是平凡的事了。QR 算法正好是能达到这一目的的方法,基于QR 分解,A可以写成正交矩阵Q 和一个三角矩阵R 的乘积,这种方法叠代地把A=Q(k)R(k)变成A(k+1)==Q(k)R(k) 就加速收敛到上三角矩阵而言多少有点不能指望。20世纪60年代中期QR 算法把一度难以对付的特征值问题变成了例行程序的计算。

在EDA领域,计算矩阵特征值也是一个常见的问题,例如 RCReduction问题。通过QR分解可以把比较困难的直接求解转换为迭代求解,有利于程序实现。

7. 快速排序法

1962:伦敦Elliott Brothers, Ltd.的Tony Hoare提出了快速(按大小)分类法。 把n个事物按数或字母的次序排列起来,表面上看起来是单调平凡的事,它的挑战在于发明一种快速完成排序的方法。Hoare的算法利用了古老的分割开和控制的递归策略来解决问题:挑一个元素作为“主元”、把其余的元素分成“大的”和“小的”两堆(当和主元比较时)、再在每一堆中重复这一过程。尽管可能要做受到严厉责备的做完全部N(N-1)/2 次的比较(特别是,如果你把主元作为早已按大小分类好的表列的第一个元素的话!),快速排序法运行的平均次数具有O(Nlog(N))的有效性,其优美的简洁性使之成为计算复杂性的著名的例子。

在EDA领域,几乎所有的计算都涉及到排序,当然,并一定都用快速排序。比如DRC检查中,针对二维图形的排序常用的算法是x方向采用一种算法,y方向采用另外一种算法,使得效率最优。

8. 快速Fourier变换

1965年,IBM的T. J. Watson研究中心的James Cooley以及普林斯顿大学和AT&T贝尔实验室的John Tukey向公众透露了快速Fourier变换(方法)(FFT)。应用数学中意义最深远的算法,无疑是使信号处理实现突破性进展的FFT。其基本思想要追溯到Gauss(他需要计算小行星的轨道),但是Cooley—Tukey的论文弄清楚了Fourier变换计算起来有多容易。就像快速排序法一样,FFT有赖于用分割开和控制的策略,把表面上令人讨厌的O(N*N)降到令人欢乐的O(Nlog(N)) 。但是不像快速排序法,其执行(初一看)是非直观的而且不那么直接。其本身就给计算机科学一种推动力去研究计算问题和算法的固有复杂性。

9. 整数关系侦查算法

1977年,BrighamYoung大学的HelamanFerguson 和Rodney Forcade提出了整数关系侦查算法。这是一个古老的问题:给定—组实数,例如说x(1),x(2),...,x(n),是否存在整数a(1),a(2),..,a(n) (不全为零),使得a(1)x(1)+a(2)x(2)+...+a(n)x(n)=0.对于n=2 ,历史悠久的欧几里得算法能做这项工作、计算x(1)/x(2)的分数展开中的各项。如果x(1)/x(2) 是有理数,展开会终止,在适当展开后就给出了“最小的”整数a(1) 和a(2)。欧几里得算法不终止——或者如果你只是简单地由于厌倦计算——那么展开的过程至少提供了最小整数关系的大小的下界。Ferguson和Forcade的推广更有威力,尽管这种推广更难于执行(和理解)。例如,他们的侦查算法被用来求得逻辑斯谛(logistic)映射的第三和第四个分歧点,b(3)=3.544090和 b(4)=3.564407所满足的多项式的精确系数。(后者是120 阶的多项式;它的最大的系数是257^30 。)已证明该算法在简化量子场论中的Feynman图的计算中是有用的。

10. 快速多极算法

1987年,耶鲁大学的Leslie Greengard 和VladimirRokhlin发明了快速多极算法。该算法克服了N体模拟中最令人头疼的困难之一:经由引力或静电力相互作用的N个粒子运动的精确计算(想象一下银河系中的星体,或者蛋白质中的原于)看来需要O(N*N)的计算量——比较每一对质点需要一次计算。该算法利用多极展开(净电荷或质量、偶极矩、四矩,等等)来近似遥远的一组质点对当地一组质点的影响,算法复杂度降到了O(N*logN)。快速多极算法的一个明显优点是具有严格的误差估计,这是许多算法所缺少的性质。

在EDA领域,九十年代中期,多极加速算法成功地应用于电容提取算法中,MIT开发的fastcap程序成为当时的主流算法。

看完上述10大算法,你是否觉得EDA领域的挑战对你足够的吸引力?愿意加入这个充满挑战性的领域吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络交换FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
细数 20 世纪最伟大的十大算法
英文:Barry A. Cipra 译者:JULY 链接:blog.csdn.net/v_july_v/article/details/6127953 发明十大算法的其中几位算法大师 一、1946
智能算法
2018/04/02
1.1K0
细数 20 世纪最伟大的十大算法
细数二十世纪最伟大的10大算法(Top10)
[1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]
IT派
2018/07/30
2.8K0
细数二十世纪最伟大的10大算法(Top10)
改变世界的5大算法
[导读] 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。周末了,今天来轻松概念性总结分享一下改变世界5大算法,当然足以改变世界的算法远不止这5个。比如还有卡尔曼滤波算法啦等等,等以后有机会整理
逸珺
2020/06/02
1.7K0
改变世界的5大算法
运筹学教学|十分钟快速掌握单纯形法(附C++代码及算例)
国庆节就要到了! 不如今儿咱就来讨论一下去哪玩耍吧! 南京?丽江?西安?…… 众人(汗):一个月前就没票了。。。 哦……那么,就只能……学习了…… 好巧不巧,运筹学似乎没学完吧? 前几日有童鞋跟小编说, 深夜看了咱公众号运筹学最大流、最短路算法的教学, 在修仙的道路上又有了质的飞跃! 戳此了解或复习: 运筹学教学 | 十分钟快速掌握最大流算法(附C++代码及算例) 运筹学教学 | 十分钟快速掌握最短路算法(附C++代码及算例) 但就是…… 信息量太大, 学完后有点虚, 快学不动了…… 古语云:持之以恒,有朝
用户1621951
2018/04/19
4.2K0
运筹学教学|十分钟快速掌握单纯形法(附C++代码及算例)
数值优化(B)——二次规划(上):Schur补方法,零空间法,激活集方法
这一节我们开始介绍二次规划的相关内容。二次规划也是一类具体的非线性规划的问题,也有对应的方法。
学弱猹
2021/08/09
1.9K0
【数学建模】——【新手小白到国奖选手】——【学习路线】
掌握Python基础是进行数学建模的第一步。Python的易用性和丰富的库使其成为数据科学和数学建模的理想选择。
小李很执着
2024/06/21
1.2K0
【数学建模】——【新手小白到国奖选手】——【学习路线】
数学建模--线性规划法
例如,一个典型的线性规划问题可以表示为: 最大化𝑧=3𝑥1+2𝑥2最大化z=3x1​+2x2​
用户11315985
2024/10/16
2620
数学建模--线性规划法
解决中国“卡脖子”问题:研究求解器的少数者
蔡少伟清晰地记得,2011年夏天他去美国密歇根大学安娜堡分校参加 SAT 会议时,一眼望去,全场只有他一个中国人。
AI科技评论
2021/09/16
2.9K0
线性规划
这样的线性规划问题可以通过一些方法转化为一下 标准形线性规划问题(等式约束和决策变量非负)
爱编程的小明
2022/09/06
1.6K0
线性规划
普林斯顿算法讲义(四)
根据弹性碰撞的法则使用事件驱动模拟模拟 N 个碰撞粒子的运动。这种模拟在分子动力学(MD)中被广泛应用,以理解和预测粒子级别的物理系统的性质。这包括气体中分子的运动,化学反应的动力学,原子扩散,球体堆积,围绕土星的环的稳定性,铈和铯的相变,一维自引力系统以及前沿传播。相同的技术也适用于其他涉及粒子系统的物理建模领域,包括计算机图形学,计算机游戏和机器人技术。我们将在第七章再次讨��其中一些问题。
ApacheCN_飞龙
2024/03/16
1890
普林斯顿算法讲义(四)
GMRES算法原理
,生成Krylov子空间的向量组称为Krylov向量组。这里假定Krylov向量组是线性无关的。
算法之名
2021/04/20
3.6K0
GMRES算法原理
运筹学教学|快速掌握人工变量法(Artificial variable method)(附Java代码及算例)
在之前的推文中,我们学习了单纯形法,顺利解决了约束条件都是“≤”的线性规划问题。同时为了讲解方便,我们都是使用约束方程系数矩阵中带单位矩阵、约束符号为“=”的算例。那肯定有人会问小编:更加常规的线性规划问题如何求解呢?为了响应群众号召,今天,小编就来带大家了解一下人工变量法!学会之后,“≤”“≥”或“=”型的约束的线性规划问题都顺利解决,妥妥的~
用户1621951
2021/03/16
5.9K1
详解各种随机算法
转自:JarvisChu 之前将的算法都是确定的,即对于相同的输入总对应着相同的输出。但实际中也常常用到不确定的算法,比如随机数生成算法,算法的结果是不确定的,我们称这种算法为(随机)概率算法,分为如下四类: 1、数值概率算法 用于数值问题的求解,通常是近似解 2、蒙特卡洛算法Monte Carlo 能得到问题的一个解,但不一定是正确解,正确的概率依赖于算法运行的时间,算法所用的时间越多,正确的概率也越高。求问题的准确解; 3、拉斯维加斯算法 Las Vegas 不断调用随机算法求解,直到求得正确解或调用次
企鹅号小编
2018/02/06
6.3K0
详解各种随机算法
凸优化(1)——引入,优化实例分析,凸集举例与相关性质
这是一个全新的系列,我们会给大家介绍凸优化(Convex Optimization)相关的内容。
学弱猹
2021/08/09
1.5K0
python数据分析——数据分析的数据模型
数据分析的数据模型是决策支持系统的重要组成部分,它通过对大量数据的收集、整理、分析和挖掘,为企业提供有价值的信息,以支持企业的战略规划和日常运营。数据模型的选择和应用,直接关系到数据分析的准确性和有效性,进而影响企业的决策质量和市场竞争力。
鲜于言悠
2024/03/20
3060
python数据分析——数据分析的数据模型
EM算法学习(二)
在上一篇文章中,当我们得到收敛的结果以后,就需要对收敛的速度捷星一个解释,下面可以考虑该方法的收敛阶数.可以看出,EM算法其实本质上是定义了一个映射:
云时之间
2018/04/10
1.1K2
EM算法学习(二)
开发者必读:计算机科学中的线性代数
选自arXiv 作者:Petros Drineas、Michael W. Mahoney 机器之心编译 参与:李泽南、刘晓坤、蒋思源 矩阵计算在计算机科学中占有举足轻重的地位,是每个开发者都需要掌握的数学知识。近日,来自普渡大学的 Petros Drineas 与 UC Berkeley 的 Michael Mahoney 提交了一篇概述论文《Lectures on Randomized Numerical Linear Algebra》可以作为线性代数知识的参考资料,本文将对其中的部分内容(主要为第二章:
机器之心
2018/05/11
1.3K0
【matlab】QR分解
给定一个m×n的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个m×n的各列正交的矩阵,即QTQ=I,矩阵R是一个n×n的上三角矩阵,其对角线元素为正。
叶茂林
2023/12/05
5390
【matlab】QR分解
大数据最核心的关键技术:32个算法
奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。 1、A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序
钱塘数据
2018/03/06
1.8K0
大数据最核心的关键技术:32个算法
数值优化方法及MATLAB实现(一)
读者朋友大家好!我是过冷水,最近在学习的过程中遇到极值寻优问题,觉得寻优问题是很多人关注的一个知识点,于是就准备开一个新的连载和大家一起来解决极值寻优过程中遇到的问题。
巴山学长
2019/07/15
2.8K0
数值优化方法及MATLAB实现(一)
推荐阅读
相关推荐
细数 20 世纪最伟大的十大算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档