Questions tagged «algorithms»

以明确的形式描述以明确的方式解决特定问题所需的特定步骤的描述。

7
通过翻牌计数进行算法分析已经过时了吗?
在我的数值分析课程中,我学会了通过计算相对于问题的大小所需的浮点运算(触发器)的数量来分析算法的效率。例如,在Trefethen&Bau的“数值线性代数”一书中,甚至有3D外观的翻牌计数图片。 现在时髦地说“触发器是免费的”,因为获取不在缓存中的任何内容的内存等待时间比触发器的成本大得多。但是,我们仍在教学生数数失败,至少在数值分析课程中是如此。我们应该教他们计算内存访问吗?我们需要写新的教科书吗?还是内存访问太特定于机器而无法花费时间?从瓶颈还是访问内存的角度来看,长期趋势是什么? 注意:以下某些答案似乎是在回答一个不同的问题,例如“我是否应该过分重写我的实现以节省一些触发器或提高缓存性能?” 但是我要问的更多的是“ 用算术运算或内存访问来估计算法复杂性是否更有用?”

7
计算一般矩阵最大特征值的最快方法是什么?
编辑:我正在测试是否任何特征值具有一个或更大的幅度。 我需要找到一个大型的稀疏,非对称矩阵的最大绝对特征值。 我一直在使用R eigen()函数,该函数使用EISPACK或LAPACK中的QR算法查找所有特征值,然后使用它abs()来获取绝对值。但是,我需要做得更快。 我也尝试过在igraphR包中使用ARPACK接口。但是,它给了我的一个矩阵一个错误。 最终实现必须可以从R访问。 可能会有多个相同大小的特征值。 你有什么建议吗? 编辑: 精度只需要是1e-11。到目前为止,“典型”矩阵是。我已经能够对此进行QR分解。但是,也可以有更大的对象。我目前开始阅读有关Arnoldi算法的信息。我了解这与Lanczsos有关。386 × 386386×386386\times 386 EDIT2:如果我有多个矩阵正在“测试”,并且我知道有一个不变的大子矩阵。是否可以忽略/丢弃它?


1
是否有找到渐近斜率的数值算法?
我有一系列数据点,我希望(近似)遵循函数渐近到大的行。本质上,随着趋于零,并且对所有导数,都可以说相同等等。但是,我什至不知道f(x)的函数形式是什么,即使它甚至具有可以用基本函数来描述的形式。ý (X )X ˚F (X )≡ Ý (X )- (一X + b )X →交通∞ ˚F '(X )˚F “(X )˚F (X )(x一世,ÿ一世)(xi,yi)(x_i,y_i)ÿ(x )y(x)y(x)XxxF(X )≡ ÿ(x )− (a x + b )f(x)≡y(x)−(ax+b)f(x) \equiv y(x) - (ax + b)x → ∞x→∞x \to \inftyF′(x )f′(x)f'(x)F′(x )f″(x)f''(x)F(x )f(x)f(x) 我的目标是对渐近斜率a进行最佳估计一种aa。一种明显的粗略方法是挑选出最后几个数据点并进行线性回归,但是,如果F(x )f(x)f(x)在我拥有数据的x范围内没有变得“足够平坦”,那么这当然是不准确的Xxx。明显的粗略方法是假设F(X )≈ EXP(- X )f(x)≈exp⁡(−x)f(x) \approx …
23 algorithms 

10
哪种算法更准确地计算数字排序数组的总和?
给定正数的递增有限序列。以下两种算法中的哪一种更适合计算数字总和?ž1个,ž2,。。。。。žñz1,z2,.....znz_{1} ,z_{2},.....z_{n} s=0; for \ i=1:n s=s + z_{i} ; end 要么: s=0; for \ i=1:n s=s + z_{n-i+1} ; end 在我看来,最好将数字从最大到最小相加,因为误差会越来越小。我们也知道,当我们将一个非常大的数字加到一个非常小的数字上时,近似结果可能就是这个大数字。 它是否正确?还有什么可以说的?

4
(自适应?)函数绘图的算法
我正在寻找算法来绘制可能具有或不具有奇异性的函数的标准2d图形。目的是编写一个“ Mini-CAS”,所以我对功能的类型没有先验知识,用户想画图。 这个问题很老,所以我想在文献中一定有一些标准算法。有一次,我没有太多通过谷歌找到参考文献的成功。 我确实找到了一种有趣的算法,即 “ YACAS-算法集”中的一种名为“自适应函数绘图” 的算法。 简而言之: 有标准算法吗? 是否有针对已知难以绘制功能的测试套件? 有哪些有趣的论文可供阅读?

3
预计算后能否在二次时间内求解对角线加固定对称线性系统?
是否存在方法来求解形式为线性系统,其中A为固定SPD矩阵,D_i为正对角矩阵?O(n3+n2k)O(n3+n2k)O(n^3+n^2 k)kkk(Di+A)xi=bi(Di+A)xi=bi(D_i + A) x_i = b_iAAADiDiD_i 例如,如果每个DiDiD_i是标量,则足以计算A的SVD AAA。但是,由于缺乏可交换性,因此对于一般D而言,这种情况会DDD恶化。 更新:到目前为止,答案为“否”。有谁对为什么有任何有趣的直觉?没有答案意味着没有非平凡的方法来压缩两个非交换运算符之间的信息。这并不出乎意料,但是更好地理解它会很棒。

2
多对多广义分配问题的算法
我似乎找不到关于可用于解决多对多广义分配问题(GAP)的算法的文献,即不仅可以将更多任务分配给一个代理,而且可以将多个代理分配给多个代理的模型。分配给一项任务(Pentico在一篇论文中讨论了一对一和一对多AP)。我几乎不了解分配问题,但是在研究过程中遇到了这样的问题,并且想了解更多有关如何解决它们的知识。这样的多对多GAP是否有可能被冠以另一个名称,或者是否有其他原因可以找到很少的文献? Pentico,D. 作业问题:黄金周年调查。欧洲运筹学杂志(2007); 176(2):774-793。

6
如何编写尺寸无关的代码?
我经常发现自己为给定操作/算法的一维,二维和三维版本编写了非常相似的代码。维护所有这些版本可能会变得乏味。简单的代码生成效果很好,但是似乎认为必须有更好的方法。 有没有一种相对简单的方法可以一次编写一个操作并将其推广到更高或更低的维度? 一个具体的例子是:假设我需要计算频谱空间中速度场的梯度。在三个方面,Fortran循环看起来像: do k = 1, n do j = 1, n do i = 1, n phi(i,j,k) = ddx(i)*u(i,j,k) + ddx(j)*v(i,j,k) + ddx(k)*w(i,j,k) end do end do end do 其中ddx阵列被适当地限定。(也可以使用矩阵乘法来执行此操作。)二维流的代码几乎完全相同,除了:第三维从循环,索引和组件数中删除。有没有更好的表达方式? 另一个例子是:假设我在三维网格上逐点定义了流体速度。为了将速度插值到任意位置(即不对应于网格点),可以在所有三个维度上连续使用一维Neville算法(即降维)。给定简单算法的一维实现,是否存在一种简单的方法来进行降维?

4
Fortuna或Mersenne Twister是否更适合作为算法RNG?
最近的回答提到使用Fortuna或Mersenne Twister随机数生成器(RNG)进行蒙特卡洛模拟。我之前没有听说过Fortuna,所以我查了一下-看起来它主要是供加密使用的。 我目前在生产代码中使用Mersenne Twister播种K-Means算法。 哪种(Fortuna或Mersenne Twister)被认为是“算法播种”应用程序的最佳选择(例如Monte Carlo和K-Means播种)?还是“扔掉”-即使用最方便。 在我所坐的地方,“最佳”应该提供最高质量的随机数,可以快速运行,并且(可能)占用的内存少。其中,质量对于我们大多数人来说可能是最重要的。

1
为什么将八进制用于多极空间分解?
在快速多极子方法(FMM)的大多数(全部)实现中,八叉树用于分解相关域。从理论上讲,八叉树提供了一个简单的体积边界,这对于证明FMM的O(n)运行时很有用。除了这个理论基础之外,使用Octree替代其他树或trie数据结构是否有好处? 使用八叉树确定交互列表可能会更容易,因为单元会知道其直接邻居。但是,使用像Dual Tree Traversal这样的更具动态性的树遍历,则不需要交互列表。 另一种可能是kd树。理论上的一个可能缺点是,施工需要昂贵的中值发现操作。但是,有些kd树的版本不需要在构建过程中求中值-尽管空间分区效率较低。在实现方面,kd树非常简单。 一个甚至更根本的选择可能是R树。 所以,我的问题是:什么使八进制成为FMM的最佳选择?
18 algorithms 

2
是否有一种有效的矩阵值连续分数算法?
假设我有一个矩阵方程递归定义为 A[n] = inverse([1 - b[n]A[n+1]]) * a[n] 然后,A [1]的方程看起来类似于连续分数,为此,存在一些避免繁琐的重新计算的高效方法(有关某些示例,请参见“数字食谱”)。 但是,我想知道是否存在允许系数b [n]和a [n]为矩阵的类似方法,唯一的约束条件是b [n] A [n + 1]为正方形矩阵,从而使矩阵 1 - b[n]A[n+1] 实际上是可逆的。
18 algorithms 


3

3
幂级数映射的用途
我来自加速器物理领域,特别涉及圆形存储环用于同步加速器光源。在磁场的引导下,高能电子在环周围循环。电子循环数十亿次,人们希望预测其稳定性。您可以根据相空间(位置,动量空间)描述电子在环中某一点的运动。绕环每转一圈,粒子将返回到新的位置和动量,这在相空间中定义了一个映射,称为“单转映射”。我们可以假设原点有一个固定点,因此可以按幂级数对其进行扩展。因此,人们想知道迭代幂级数映射的稳定性。对此有很多难题,而且这个话题有很长的历史。已经实现了许多库,以实现所谓的截断幂级数代数。(请参见例如Y. Yan撰写的有关zlib的论文。正规物理方法是更多有关物理学的背景和一种分析方法,例如Bazzani等。等 这里)。现在的问题是如何使用这样的库,以及如何解决稳定性问题。束动力学中使用的主要方法是正常形式分析,我认为这种方法没有成功。我不知道如果某种谱方法已经在其他领域被开发(也许沿着类似的线这?)。有人可以想到另一个领域,在该领域中分析以原点为固定点的迭代幂级数映射的长期稳定性,以便我们可以共享知识或获得一些新想法吗?我知道的一个例子是菲什曼和“加速器模式”在原子物理学中的工作。还有其他吗?还有哪些其他系统可以建模为踢旋的转子或Henon映射?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.