Questions tagged «complexity»

与计算的难度或算法的渐近运行时间有关。

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


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恶化。 更新:到目前为止,答案为“否”。有谁对为什么有任何有趣的直觉?没有答案意味着没有非平凡的方法来压缩两个非交换运算符之间的信息。这并不出乎意料,但是更好地理解它会很棒。

3
科学编程竞赛
我定期参加所谓的“编程竞赛”,在那儿您可以在有限的时间内使用自己的代码和解决问题的技能来解决算法难题。有关这些示例的参考示例,请搜索诸如Google Code Jam或ACM-ICPC之类的比赛。 (如果您知道什么是编程竞赛,则可以跳过以下段落) 在这些竞赛中,您可以在物理站点或在线上进行单独竞赛或团队竞赛,目标是在竞赛结束之前解决尽可能多的问题。每个问题都与解决方案必须满足的某些约束条件有关,例如运行时间,使用的内存等。问题难度的范围可以从“显而易见的解决方法”到“需要大量知识或精通技巧才能破解”。主要目标当然是要玩得开心,但是在某些情况下,成功甚至可能会得到现金奖励,荣誉和机智,甚至与Google等顶尖公司的招聘人员进行面试。 (如果您跳过了上一段,请停止跳过,因为这是我的问题) 通过编程竞赛,我对算法,一般计算机科学以及编码和发展我的问题解决技能的整体意义有了真正的兴趣。我也想在科学计算中这样做。 问题: 是否存在与纯算法类型相同的竞争,但侧重于数值分析,优化等? 我尝试了谷歌搜索,但乍看之下找不到任何信息…… 附录:我得到了建议来检查欧拉计划,但这并不是我真正想要的。我想要的是一个更广阔的舞台,练习更多“肮脏”的数字,例如使用pde的解决方案来创意,解决数字优化问题等。仅作比较,Kaggle是一个您可以在定期举行的各种比赛中练习数据挖掘,机器学习等的网站。我想要类似的东西,但是要用数字方案之类来实现和发挥创意。

1
MD模拟的复杂性
我是分子动力学(MD)模拟的新手。就模拟时间而言,分子动力学模拟的复杂性是多少?换句话说,如果我想将模拟时间从10纳秒增加到20纳秒,那么对于运行时间的增加我有什么期望?

3
Thomas算法是求解对称对角占优稀疏三对角线性系统的最快方法吗
我想知道托马斯算法是否是解决算法复杂性(不寻找像LAPACK之类的实现包)方面最快的方法(可证明?)来解决对称对角占优的稀疏三对角线系统。我知道,托马斯算法和多重网格都为复杂度,但是多重网格的常数因子可能较小吗?在我看来,Multigrid可能不会更快,但我并不乐观。O(n)O(n)O(n) 注意:我正在考虑矩阵很大的情况。可以采用直接方法或迭代方法。

2
矩阵求逆的“辅助因子技术”是否有实际意义?
标题就是问题。该技术涉及使用“辅因子矩阵”或“辅助矩阵”,并为方矩阵逆矩阵的成分提供了明确的公式。对于大于的矩阵,手工操作并不容易3×33×33\times 3。对于一个n×nn×nn\times n矩阵,它需要计算矩阵本身的行列式和计算n2n2n^2决定因素(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1)矩阵。因此,我猜测它对应用程序没有太大用处。但我想确认。 我并不是在问技术证明矩阵定理的理论意义。

4
库功能的FLOP计数
当用一个简单的函数评估FLOP的数量时,通常只需按基本算术运算符就可以了。但是,在涉及偶数除法的数学语句的情况下,不能做到这一点,并且希望能够与仅具有加法和乘法功能的FLOP计数进行比较。当在库中执行该操作时,情况甚至更糟。因此,必须对特殊功能的性能有一些合理的认识。 通过特殊功能,我们的意思是: exp() sqrt() sin / cos / tan() 通常由系统库提供。 确定它们的复杂性的进一步困惑在于,它们中的许多是自适应的并且具有依赖于输入的复杂性。例如,exp()的数字稳定实现通常会自适应地重新缩放并使用查找。我最初的印象是,在这种情况下最好的方法是确定函数的平均行为。 当然,整个讨论高度依赖于体系结构。在此讨论中,我们可以将自己局限于传统的通用体系结构,并排除具有特殊功能单元(GPU等)的那些体系结构。 为了系统与系统之间的比较,人们可以找到相当简单的尝试来针对特定体系结构进行标准化,但是如果人们在乎方法与方法的性能,这是不可接受的。确定这些功能的FLOP复杂度的哪些方法被认为可以接受?有什么大陷阱吗?

2
mpi_allgather操作的计算成本与收集/分散操作相比如何?
我正在研究一个可以通过使用单个mpi_allgather操作或一个mpi_scatter和一个mpi_gather操作来并行化的问题。这些操作在while循环内被调用,因此它们可能被多次调用。 在使用MPI_allgather方案的实现中,我正在将分布式矢量收集到所有进程中以进行重复矩阵求解。在另一种实现中,我将分布式矢量收集到单个处理器(根节点)上,在该处理器上求解线性系统,然后将求解矢量散布到所有进程中。 我很好奇的是,一次收集操作的成本是否比分散和收集操作的总和还要多。消息的长度是否在其复杂性中起重要作用?在mpi的实现之间是否有所不同? 编辑:

3
是否有之间的复杂
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为计算科学堆栈交换的主题。 5年前关闭。 是否存在大于小于的复杂度?O (n log n )O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n)

2
算法的计算量
考虑严格凸无约束优化问题令x_ \ text {opt}表示其唯一最小值,并且x_0是x_ \ text {opt}的给定初始近似值。如果 \ begin {equation} \ frac {|| x-x _ {\ text {opt}} || _2} {|| x_0-x_ \,我们将向量x称为\ mathcal {O}的\ epsilon- close解。文字{opt} || _2} \ leq \ epsilon。\ end {equation}O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} 假设存在两个迭代算法A1A1\mathcal{A}_1和A2A2\mathcal{A}_2以找到具有以下属性的\ mathcal …
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.