计算几何常用算法概览shark888

计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助。

二、目录

本文整理的计算几何基本概念和常用算法包括如下内容:

三、算法介绍

矢量的概念:

如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directedsegment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。

矢量加减法:

设二维矢量P=(x1,y1),Q=(x2,y2),则矢量加法定义为:P+Q=(x1+x2,y1+y2),同样的,矢量减法定义为:P-Q=(x1-x2,y1-y2)。显然有性质P+Q=Q+P,P-Q=-(Q-P)。

矢量叉积:

叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:

若P×Q>0,则P在Q的顺时针方向。若P×Q<0,则P在Q的逆时针方向。若P×Q=0,则P与Q共线,但可能同向也可能反向。

折线段的拐向判断:

折线段的拐向判断方法可以直接由矢量叉积的性质推出。对于有公共端点的线段p0p1和p1p2,通过计算(p2-p0)×(p1-p0)的符号便可以确定折线段的拐向:

若(p2-p0)×(p1-p0)>0,则p0p1在p1点拐向右侧后得到p1p2。

若(p2-p0)×(p1-p0)<0,则p0p1在p1点拐向左侧后得到p1p2。

若(p2-p0)×(p1-p0)=0,则p0、p1、p2三点共线。

具体情况可参照下图:

判断点是否在线段上:

设点为Q,线段为P1P2,判断点Q在该线段上的依据是:(Q-P1)×(P2-P1)=0且Q在以P1,P2为对角顶点的矩形内。前者保证Q点在直线P1P2上,后者是保证Q点不在线段P1P2的延长线或反向延长线上,对于这一步骤的判断可以用以下过程实现:

ON-SEGMENT(pi,pj,pk)

ifmin(xi,xj)<=xk<=max(xi,xj)andmin(yi,yj)<=yk<=max(yi,yj)

thenreturntrue;

elsereturnfalse;

特别要注意的是,由于需要考虑水平线段和垂直线段两种特殊情况,min(xi,xj)<=xk<=max(xi,xj)和min(yi,yj)<=yk<=max(yi,yj)两个条件必须同时满足才能返回真值。

判断两线段是否相交:

我们分两步确定两条线段是否相交:

(1)快速排斥试验

设以线段P1P2为对角线的矩形为R,设以线段Q1Q2为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。

(2)跨立试验如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2,则矢量(P1-Q1)和(P2-Q1)位于矢量(Q2-Q1)的两侧,即(P1-Q1)×(Q2-Q1)*(P2-Q1)×(Q2-Q1)<0。上式可改写成(P1-Q1)×(Q2-Q1)*(Q2-Q1)×(P2-Q1)>0。当(P1-Q1)×(Q2-Q1)=0时,说明(P1-Q1)和(Q2-Q1)共线,但是因为已经通过快速排斥试验,所以P1一定在线段Q1Q2上;同理,(Q2-Q1)×(P2-Q1)=0说明P2一定在线段Q1Q2上。所以判断P1P2跨立Q1Q2的依据是:(P1-Q1)×(Q2-Q1)*(Q2-Q1)×(P2-Q1)>=0。同理判断Q1Q2跨立P1P2的依据是:(Q1-P1)×(P2-P1)*(P2-P1)×(Q2-P1)>=0。具体情况如下图所示:

在相同的原理下,对此算法的具体的实现细节可能会与此有所不同,除了这种过程外,大家也可以参考《算法导论》上的实现。

判断线段和直线是否相交:

有了上面的基础,这个算法就很容易了。如果线段P1P2和直线Q1Q2相交,则P1P2跨立Q1Q2,即:(P1-Q1)×(Q2-Q1)*(Q2-Q1)×(P2-Q1)>=0。

判断矩形是否包含点:

只要判断该点的横坐标和纵坐标是否夹在矩形的左右边和上下边之间。

判断线段、折线、多边形是否在矩形中:

因为矩形是个凸集,所以只要判断所有端点是否都在矩形中就可以了。

判断矩形是否在矩形中:

只要比较左右边界和上下边界就可以了。

判断圆是否在矩形中:

很容易证明,圆在矩形中的充要条件是:圆心在矩形中且圆的半径小于等于圆心到矩形四边的距离的最小值。

判断点是否在多边形中:

判断点P是否在多边形中是计算几何中一个非常基本但是十分重要的算法。以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。

但是有些特殊情况要加以考虑。如图下图(a)(b)(c)(d)所示。在图(a)中,L和多边形的顶点相交,这时候交点只能计算一个;在图(b)中,L和多边形顶点的交点不应被计算;在图(c)和(d)中,L和多边形的一条边重合,这条边应该被忽略不计。如果L和多边形的一条边重合,这条边应该被忽略不计。

为了统一起见,我们在计算射线L和多边形的交点的时候,1。对于多边形的水平边不作考虑;2。对于多边形的顶点和L相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略;3。对于P在多边形边上的情形,直接可判断P属于多边行。由此得出算法的伪代码如下:count←0;以P为端点,作从右向左的射线L;for多边形的每条边sdoifP在边s上thenreturntrue;ifs不是水平的thenifs的一个端点在L上if该端点是s两端点中纵坐标较大的端点thencount←count+1elseifs和L相交thencount←count+1;ifcountmod2=1thenreturntrue;elsereturnfalse;其中做射线L的方法是:设P'的纵坐标和P相同,横坐标为正无穷大(很大的一个正数),则P和P'就确定了射线L。

另外还有一种算法是用带符号的三角形面积之和与多边形面积进行比较,这种算法由于使用浮点数运算所以会带来一定误差,不推荐大家使用。

判断线段是否在多边形内:

线段在多边形内的一个必要条件是线段的两个端点都在多边形内,但由于多边形可能为凹,所以这不能成为判断的充分条件。如果线段和多边形的某条边内交(两线段内交是指两线段相交且交点不在两线段的端点),因为多边形的边的左右两侧分属多边形内外不同部分,所以线段一定会有一部分在多边形外(见图a)。于是我们得到线段在多边形内的第二个必要条件:线段和多边形的所有边都不内交。

线段和多边形交于线段的两端点并不会影响线段是否在多边形内;但是如果多边形的某个顶点和线段相交,还必须判断两相邻交点之间的线段是否包含于多边形内部(反例见图b)。

因此我们可以先求出所有和线段相交的多边形的顶点,然后按照X-Y坐标排序(X坐标小的排在前面,对于X坐标相同的点,Y坐标小的排在前面,这种排序准则也是为了保证水平和垂直情况的判断正确),这样相邻的两个点就是在线段上相邻的两交点,如果任意相邻两点的中点也在多边形内,则该线段一定在多边形内。

证明如下:

命题1:如果线段和多边形的两相邻交点P1,P2的中点P'也在多边形内,则P1,P2之间的所有点都在多边形内。

证明:假设P1,P2之间含有不在多边形内的点,不妨设该点为Q,在P1,P'之间,因为多边形是闭合曲线,所以其内外部之间有界,而P1属于多边行内部,Q属于多边性外部,P'属于多边性内部,P1-Q-P'完全连续,所以P1Q和QP'一定跨越多边形的边界,因此在P1,P'之间至少还有两个该线段和多边形的交点,这和P1P2是相邻两交点矛盾,故命题成立。证毕。

判断折线是否在多边形内:

判断多边形是否在多边形内:

只要判断多边形的每条边是否都在多边形内即可。判断一个有m个顶点的多边形是否在一个有n个顶点的多边形内复杂度为O(m*n)。

判断矩形是否在多边形内:

将矩形转化为多边形,然后再判断是否在多边形内。

判断圆是否在多边形内:

只要计算圆心到多边形的每条边的最短距离,如果该距离大于等于圆半径则该圆在多边形内。计算圆心到多边形每条边最短距离的算法在后文阐述。

判断点是否在圆内:

计算圆心到该点的距离,如果小于等于半径则该点在圆内。

判断线段、折线、矩形、多边形是否在圆内:

因为圆是凸集,所以只要判断是否每个顶点都在圆内即可。

判断圆是否在圆内:

设两圆为O1,O2,半径分别为r1,r2,要判断O2是否在O1内。先比较r1,r2的大小,如果r1

计算点到线段的最近点:

如果该线段平行于X轴(Y轴),则过点point作该线段所在直线的垂线,垂足很容易求得,然后计算出垂足,如果垂足在线段上则返回垂足,否则返回离垂足近的端点;如果该线段不平行于X轴也不平行于Y轴,则斜率存在且不为0。设线段的两端点为pt1和pt2,斜率为:k=(pt2.y-pt1.y)/(pt2.x-pt1.x);该直线方程为:y=k*(x-pt1.x)+pt1.y。其垂线的斜率为-1/k,垂线方程为:y=(-1/k)*(x-point.x)+point.y。

联立两直线方程解得:x=(k^2*pt1.x+k*(point.y-pt1.y)+point.x)/(k^2+1),y=k*(x-pt1.x)+pt1.y;然后再判断垂足是否在线段上,如果在线段上则返回垂足;如果不在则计算两端点到垂足的距离,选择距离垂足较近的端点返回。

计算点到折线、矩形、多边形的最近点:

只要分别计算点到每条线段的最近点,记录最近距离,取其中最近距离最小的点即可。

计算点到圆的最近距离及交点坐标:

如果该点在圆心,因为圆心到圆周任一点的距离相等,返回UNDEFINED。

连接点P和圆心O,如果PO平行于X轴,则根据P在O的左边还是右边计算出最近点的横坐标为centerPoint.x-radius或centerPoint.x+radius。如果PO平行于Y轴,则根据P在O的上边还是下边计算出最近点的纵坐标为centerPoint.y-+radius或centerPoint.y-radius。如果PO不平行于X轴和Y轴,则PO的斜率存在且不为0,这时直线PO斜率为k=(P.y-O.y)/(P.x-O.x)。直线PO的方程为:y=k*(x-P.x)+P.y。设圆方程为:(x-O.x)^2+(y-O.y)^2=r^2,联立两方程组可以解出直线PO和圆的交点,取其中离P点较近的交点即可。

计算两条共线的线段的交点:

对于两条共线的线段,它们之间的位置关系有下图所示的几种情况。图(a)中两条线段没有交点;图(b)和(d)中两条线段有无穷焦点;图(c)中两条线段有一个交点。设line1是两条线段中较长的一条,line2是较短的一条,如果line1包含了line2的两个端点,则是图(d)的情况,两线段有无穷交点;如果line1只包含line2的一个端点,那么如果line1的某个端点等于被line1包含的line2的那个端点,则是图(c)的情况,这时两线段只有一个交点,否则就是图(b)的情况,两线段也是有无穷的交点;如果line1不包含line2的任何端点,则是图(a)的情况,这时两线段没有交点。

计算线段或直线与线段的交点:

设一条线段为L0=P1P2,另一条线段或直线为L1=Q1Q2,要计算的就是L0和L1的交点。1.首先判断L0和L1是否相交(方法已在前文讨论过),如果不相交则没有交点,否则说明L0和L1一定有交点,下面就将L0和L1都看作直线来考虑。

2.如果P1和P2横坐标相同,即L0平行于Y轴

a)若L1也平行于Y轴,

i.若P1的纵坐标和Q1的纵坐标相同,说明L0和L1共线,假如L1是直线的话他们有无穷的交点,假如L1是线段的话可用"计算两条共线线段的交点"的算法求他们的交点(该方法在前文已讨论过);ii.否则说明L0和L1平行,他们没有交点;

b)若L1不平行于Y轴,则交点横坐标为P1的横坐标,代入到L1的直线方程中可以计算出交点纵坐标;

3.如果P1和P2横坐标不同,但是Q1和Q2横坐标相同,即L1平行于Y轴,则交点横坐标为Q1的横坐标,代入到L0的直线方程中可以计算出交点纵坐标;

4.如果P1和P2纵坐标相同,即L0平行于X轴

a)若L1也平行于X轴,

i.若P1的横坐标和Q1的横坐标相同,说明L0和L1共线,假如L1是直线的话他们有无穷的交点,假如L1是线段的话可用"计算两条共线线段的交点"的算法求他们的交点(该方法在前文已讨论过);ii.否则说明L0和L1平行,他们没有交点;

b)若L1不平行于X轴,则交点纵坐标为P1的纵坐标,代入到L1的直线方程中可以计算出交点横坐标;

5.如果P1和P2纵坐标不同,但是Q1和Q2纵坐标相同,即L1平行于X轴,则交点纵坐标为Q1的纵坐标,代入到L0的直线方程中可以计算出交点横坐标;

6.剩下的情况就是L1和L0的斜率均存在且不为0的情况

a)计算出L0的斜率K0,L1的斜率K1;

b)如果K1=K2

求线段或直线与折线、矩形、多边形的交点:

分别求与每条边的交点即可。

求线段或直线与圆的交点:

设圆心为O,圆半径为r,直线(或线段)L上的两点为P1,P2。

1.如果L是线段且P1,P2都包含在圆O内,则没有交点;否则进行下一步。

2.如果L平行于Y轴,

a)计算圆心到L的距离dis;b)如果dis>r则L和圆没有交点;c)利用勾股定理,可以求出两交点坐标,但要注意考虑L和圆的相切情况。3.如果L平行于X轴,做法与L平行于Y轴的情况类似;

4.如果L既不平行X轴也不平行Y轴,可以求出L的斜率K,然后列出L的点斜式方程,和圆方程联立即可求解出L和圆的两个交点;

5.如果L是线段,对于2,3,4中求出的交点还要分别判断是否属于该线段的范围内。

凸包的概念:

点集Q的凸包(convexhull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。下图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。

凸包的求法:

对于一个有三个或以上点的点集Q,Graham扫描法的过程如下:

令p0为Q中Y-X坐标排序下最小的点设为对其余点按以p0为中心的极角逆时针排序所得的点集(如果有多个点有相同的极角,除了距p0最远的点外全部移除压p0进栈S压p1进栈S压p2进栈Sfori←3tomdowhile由S的栈顶元素的下一个元素、S的栈顶元素以及pi构成的折线段不拐向左侧对S弹栈压pi进栈SreturnS;

此过程执行后,栈S由底至顶的元素就是Q的凸包顶点按逆时针排列的点序列。需要注意的是,我们对点按极角逆时针排序时,并不需要真正求出极角,只需要求出任意两点的次序就可以了。而这个步骤可以用前述的矢量叉积性质实现。

THE END
1.算法的要素由计算和什么两部分组成算法的要素由计算和什么两部分组成 网讯 网讯| 发布2021-12-02 算法的控制结构。算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。 https://xue.baidu.com/okam/pages/strategy-tp/index?strategyId=141222241917660&source=natural
2.算法的时间复杂度和空间复杂度总结算法时间复杂度本文深入探讨了算法的时间复杂度和空间复杂度分析方法,提供了时间复杂度的定义、求解步骤及常见复杂度等级,同时介绍了空间复杂度的概念及其在算法设计中的重要性。文章还列举了算法复杂度分析的法则,通过具体示例说明了如何计算不同复杂度的算法,并给出了常见复杂度的对比。最后,阐述了如何通过合理设计算法以提高其执行https://blog.csdn.net/zolalad/article/details/11848739
3.(数据结构)十分钟搞定时间复杂度(算法的时间复杂度)显然如果 T(n) = n^2,那么 T(n) = O(n^2),T(n) = O(n^3),T(n) = O(n^4) 都是成立的,但是因为第一个 f(n) 的增长速度与 T(n) 是最接近的,所以第一个是最好的选择,所以我们说这个算法的复杂度是 O(n^2) 。那么当我们拿到算法的执行次数函数 T(n) 之后怎么得到算法的时间复杂度https://www.jianshu.com/p/f4cca5ce055a
4.10大计算机经典算法「建议收藏」腾讯云开发者社区子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较https://cloud.tencent.com/developer/article/2089934
5.数值计算方法(第3版)最新章节郑继明著为了防止误差传播、积累带来的危害,提高计算的稳定性,将前面分析所得的各种结果归纳起来,得到数值计算中应注意如下几点: ①应选用数值稳定的计算方法,避开不稳定的算式。 ②注意简化计算步骤及公式,减少误差的积累;设法减少乘除法运算,节约计算机的机时。 例如前面讲到过的用秦九韶算法计算多项式,就是一个改变https://m.zhangyue.com/readbook/12566028/9.html
6.算理与算法并重,促进学生计算能力的培养关键字:算理算法计算能力 一、算理与算法之间的关系。 算理是计算的理论依据,是计算过程中的道理,是指计算过程中思维方式,是解决为什么这样算的问题,而算法则是依据算理提炼出来的计算规律和方法,主要是指计算的法则,就是简约了复杂的思维过程、添加了人为规定后的程式化的操作步骤,主要是解决算的方便、准确,它是算https://www.unjs.com/xuexi/jiaoyuwenzhai/20111016201904_703879.html
7.HugeGraph大规模并行图计算实践与架构解析图计算针对上述场景有紧密中立性算法,可以通过算法计算出每个顶点的分值,分值越高就代表此人重要性越高,如果一个人和所有人都直接建立关联,此人肯定是最重要的人之一。总之通过图模型的方式描述一些问题,很简洁,也很符合我们的直觉。 2 图计算能够解决什么业务问题?https://blog.itpub.net/69925873/viewspace-2897616/
8.隔骨算法算男女隔骨算法准不准隔骨算法怎么算隔骨算法计算公式 隔骨和49算法哪个准 算法:有三行需要计算,第一行是截止到怀孕那个月宝爸的虚岁年龄;最后一行是截止到宝妈怀孕那个月的虚岁年龄;中间那一行是宝爸宝妈同房受孕时间的农历月份。 男方在上单岁画一整画,双岁画两半画。女方在下,单岁也是画一整画,双岁画两半画,受胎之月在中间,单月画一整画,双https://www.snsnb.com/post-144943-1.html
9.作业调度算法(含详细计算过程)和进程调度算法浅析简介:作业调度算法(含详细计算过程)和进程调度算法浅析 一.作业调度 作业调度算法需要知道以下公式 周转时间=完成时间 - 到达时间 带权周转时间=周转时间/运行时间 注:带权周转时间越大,作业(或进程)越短;带权周转时间越小,作业(或进程)越长。带权周转时间越小越好 https://developer.aliyun.com/article/1510024
10.2024年土地增值税计算方法纳税人计算土地增值税时,也可用下列简便算法: 计算土地增值税税额,可按增值额乘以适用的税率减去扣除项目金额乘以速算扣除系数的简便方法计算,具体公式如下: (一)增值额未超过扣除项目金额50% 土地增值税税额=增值额×30% (二)增值额超过扣除项目金额50%,未超过100%的土地增值税税额=增值额×40%-扣除项目金额×5%https://www.64365.com/special/2017ntdzzsjsff/
11.改进量子遗传算法在函数寻优中的应用AET本文采用的方法与现有方法的计算结果对比如表3所示,每个函数分别用改进后的算法计算20次。量子遗传算法的种群大小设置为40,迭代次数设置为200,函数的每个变量的二进制长度设置为20,退火初始温度设置为100℃,退火系数为0.95。算法的优化性能从算法的效率与算法质量两个方面进行评价。 http://www.chinaaet.com/article/3000020903
12.SHA256算法加密计算器SHA256算法加密计算器 6296人使用 问AI · 免费试用 正式名称为 SHA 的家族第一个成员发布于 1993年。然而现在的人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-https://www.zaixianjisuan.com/jiamijiemi/sha256suanfajiami.html
13.CORDIC算法在三轴电子罗盘中的应用但将其用于罗盘载体的姿态解算仍然是可行的,这是基于以下两点:(1)由于传感器特性的不一致性,其采集的原始数据均需经过零点、增益等校准后才可用于姿态解算,这就相当于为CORDIC算法的输入矢量模长做了归一化处理;(2)如前所述,利用CORDIC算法计算俯仰角与横滚角并对其加以补偿时,并不需要具体计算三角与反三角函数,https://www.hqew.com/tech/doc/738137.html
14.进化计算机器学习进化计算的四种算法进化计算(Evolutionary Computation)包括遗传算法(Genetic Algorithm,GA)、进化策略(Evolutionary Strategies,ES)和基因编程(Genetic Programming)。进化进算是受进化生物学启发而发展起来的计算模型,其实现过程基于达尔文的物竞天择、适者生存的生物进化原理,通过将现实问题转化为基因染色体表示,并不断进行选择、交换、变异、https://blog.51cto.com/u_16213577/8939331
15.科学网—智能哲学:计算机是人工智能吗?人工智能研究领域一直存在“算法计算”与“代理计算(Agent)”两种路线,对这种现象的认识与争论已经成了人工智能的哲学问题[1],它们在相对的意义上有各种称呼,如符号主义、机能主义、逻辑或程序主义、联接主义等等,达特茅斯会议上提出的“人工智能”这个概念大体包括了这两个方面的工作而被大家接受,但如果区分了算法计算https://blog.sciencenet.cn/blog-2322490-985539.html
16.在线计算器:多项式算法计算器计算一个多项式表达式。表达式包含多项式和运算+,-,/,*,mod—余数, gcd —最大公约数,贝祖恒等式多项式a, 贝祖恒等式多项式b, 前导系数, 次数, 本原部分, 系数的相互最大公约数 , 单一函数。 多项式算法 多项式表达式 计算 计算精度 精确 https://zh.planetcalc.com/8383/
17.MaterialsStudio建模与材料模拟计算工作站方案2021v4重点(1)Materials Studio材料模拟软件计算特点 (2)Materials Studio三维建模/可视化硬件配置推荐 (3)Materials Studio量子力学工作站硬件配置推荐 (4)Materials Studio分子力学与分子动力工作站硬件配置推荐 (一)Materialshttp://www.xasun.com/article/b5/2464.html
18.多源空间数据融合的城市人居环境监测模型与应用研究绿地、水体、道路等地物的特征显著, 差异性较大, 可通过特征空间进行提取, 其中的难点是特征阈值的自适应性问题, 本文提出利用全局最优算法计算阈值, 实现绿地、水体、道路提取。针对建筑物表面复杂性, 特征差异不显著问题, 为提高精度, 提出使用POI点获取单体建筑物的样本, 再根据特征空间, 自动寻找相似对象组成建https://www.ecologica.cn/stxb/ch/html/2019/4/stxb201809111948.htm
19.中国主要统计指标简介农业包含的5个行业采用生产法计算;工业包含的39个行业同时采用生产法和收入法计算;建筑业和第三产业包含的50个行业则采用收入法计算。在94个行业中,基础资料足够充分的51个行业采用直接计算的方法得到增加值,基础资料不够充分的行业,通过比例系数推算法和相关指标推算法间接计算增加值。https://xttj.xiangtan.gov.cn/13228/13230/content_660936.html
20.计算速度50年纪录,DeepMind新研究再刷Nature封面,详细算法已开源出乎研究者们意料的是,AlphaTensor发现的计算矩阵乘法的方法真的挺有效。 例如在英伟达V100 GPU和谷歌TPU v2这两种硬件上,使用AlphaTensor发现的算法计算矩阵乘法,比常用算法要快上10~20%左右。 (当然研究者们也表示,其他处理器还得看硬件逻辑,计算方法不一定针对每个处理器都有这么好的加速作用) https://aidc.shisu.edu.cn/73/c1/c13626a160705/page.htm