Tag: math

B树比AVL还是RedBlack-Tree快?

我知道性能从来就不是黑白的,通常情况下X的执行速度更快,情况Y的执行速度更慢,但总的来说 – B树快于AVL或RedBlack-Trees? 他们实现AVL树(甚至可能是RedBlack-tree?)要复杂得多,但它们是否更快 (复杂性是否得到了回报)呢? 编辑:我还要补充说,如果他们更快,那么等效的AVL / RedBlack树(节点/内容) – 为什么他们更快?

为什么使用softmax而不是标准的标准化?

在neural network的输出层中,通常使用softmax函数来近似概率分布: 由于指数的原因,计算起来很昂贵。 为什么不简单地执行一个Z变换,使所有的输出都是正的,然后用所有输出的和除以所有输出之和来归一化呢?

获得sqrt(n)的整数部分的最快方法是什么?

我们知道,如果n不是一个完美的正方形,那么sqrt(n)将不是一个整数。 由于我只需要整数部分,我觉得调用sqrt(n)不会那么快,因为计算小数部分也需要时间。 所以我的问题是: 如果不计算sqrt(n)的实际值,我们只能得到sqrt(n)的整数部分吗? 该algorithm应该比sqrt(n) (在<math.h>或<cmath>定义sqrt(n)更快? 如果可能的话,你也可以在asm块中写代码。

如何处理Java BigDecimal的性能?

我写生活的货币交易应用程序,所以我不得不使用货币值(这是一个遗憾的是,Java仍然没有十进制浮点types,没有任何支持任意精度的货币计算)。 “使用BigDecimal!” – 你可能会说。 我做。 但是现在我有一些代码,性能是一个问题,BigDecimal比double基元慢1000倍以上(!)。 计算非常简单:系统所做的是多次计算a = (1/b) * c (其中a , b和c是定点值)。 但问题在于(1/b) 。 由于没有固定点,我不能使用定点算术。 BigDecimal result = a.multiply(BigDecimal.ONE.divide(b).multiply(c)不仅丑陋,而且缓慢。 我可以用什么来取代BigDecimal? 我需要至less10倍的性能提升。 我发现其他优秀的JScience库具有任意精度算术,但它甚至比BigDecimal慢。 有什么build议么?

有没有一种有效的algorithm来生成二维凹面船体?

从GIS文件(城市地图)中获取一组(2D)点,我需要生成定义该地图(边界)的“轮廓”的多边形。 其input参数将是设置的点和“最大边缘长度”。 然后它会输出相应的(可能是非凸的)多边形。 我发现迄今为止最好的解决scheme是生成Delaunay三angular形,然后删除比最大边长更长的外边。 在所有的外部边缘比这个更短之后,我只需要移除内部边缘并得到我想要的多边形。 问题是,这是非常耗时的,我想知道是否有更好的方法。

解释R中的quantile()函数

我一整天都被R分位数函数迷住了。 我有一个分位数如何工作的直观概念,以及一个统计数据中的MS,但男孩哦,男孩,它的文档是令我困惑的。 从文档: Q [i](p)=(1-gamma)x [j] + gamma x [j + 1], 我到目前为止。 对于typesi分位数,它是x [j]和x [j + 1]之间的插值,基于一些神秘的常量gamma 其中1 <= i <= 9,(jm)/ n <= p <(j-m + 1)/ n,x [j]为第j阶统计量,n为样本量,m为常数由样本分位数types。 这里γ取决于g = np + mj的小数部分。 那么,如何计算j? M& 对于连续样本分位数types(4到9),样本分位数可以通过k阶统计量和p(k)之间的线性插值来获得: p(k)=(k-α)/(n-α-β+ 1),其中α和β是由该types确定的常数。 此外,m =α+ p(1-α-β),并且γ= g。 现在我真的迷失了。 这在以前是一个常量,现在显然是一个函数。 所以对于7型分位数,默认值是… types7 p(k)=(k-1)/(n-1)。 在这种情况下,p(k)= mode [F(x [k])]。 这是用于S. […]

什么是导致MD5碰撞的最短的一对弦?

直到string长度为止,可以使用MD5作为哈希,而不必担心碰撞的可能性? 这大概可以通过为特定字符集中的每个可能的string生成一个MD5哈希来计算,直到哈希第二次出现(碰撞)为止。 没有碰撞的string的最大可能长度将比碰撞对中最长的字符小一个字符。 这已经testing了MD5,SHA1等?

简单的统计数据 – 用于计算均值,标准差等的Java包

你可以请build议任何简单的Java统计包? 我不一定需要任何先进的东西。 我很惊讶,似乎没有一个函数来计算在java.lang.Math包中的平均值… 你们为此用什么? 编辑 关于: 写一个计算均值和标准差的简单类有多困难? 好吧,不难。 我只是在手工编码后才问这个问题。 但是,这只会增加我的Java挫败感,而不是在我需要这些最简单的function的时候。 我不记得用心计算stdev的公式:)

为graphics的Y轴select一个有吸引力的线性比例尺

我正在写一些代码来在我们的软件中显示一个条形图(或线条)graphics。 一切都很好。 我难住的东西是Y轴的标签。 来电者可以告诉我他们想要Y标记有多好,但是我似乎被困在了一个“有吸引力”的标签上。 我不能形容“有吸引力”,可能也不是你,但是我们知道的时候我们看到了,对吧? 所以如果数据点是: 15, 234, 140, 65, 90 用户在Y轴上要求10个标签,用纸和铅笔打点一下: 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250 所以在那里有10个(不包括0),最后一个扩展到最高值(234 <250),它是一个“好”增量,每个增量为25。 如果他们要求8个标签,增加30个看起来不错: 0, 30, 60, 90, 120, 150, 180, 210, 240 九个会很棘手。 也许只是使用了8或10,并称它足够接近没关系。 当一些要点是消极的时候该怎么办? 我可以看到Excel很好地解决了这个问题。 有没有人知道一个通​​用的algorithm(甚至一些蛮力是好的)来解决这个问题? 我不必很快就做,但应该看起来不错。

Pow()与const非整数指数的优化?

我在我的代码中有热点,我正在做pow() ,占我执行时间的10-20%左右。 我对pow(x,y)input是非常具体的,所以我想知道是否有一种方法能够以更高的性能滚动两个pow()近似值(每个指数一个) 我有两个常数指数:2.4和1 / 2.4。 当指数为2.4时, x将在范围内(0.090473935,1.0)。 当指数为1 / 2.4时, x将在(0.0031308,1.0)的范围内。 我正在使用SSE / AVX float向量。 如果平台具体可以被利用,就对! 尽pipe我对全精度( float )algorithm也很感兴趣,但最大错误率在0.01%左右是理想的。 我已经使用了一个快速的pow() 近似 ,但是没有考虑到这些限制。 有没有可能做得更好?