首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java算法分析工具

java算法分析工具
EN

Stack Overflow用户
提问于 2010-04-15 01:40:52
回答 1查看 3.9K关注 0票数 10

我正在寻找一个算法分析工具的java,可以计算一个函数的大0。理想的我想让它成为我的构建过程的一部分,以及我的其他代码度量工具。即使在google上搜索之后,我也找不到任何商业工具的开源。欢迎提出任何建议。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-04-15 01:47:32

这并不是通常可以自动完成的事情。大O分析不是一件小事。

你确定你不是在找侧写器吗?

算法的大O分析通常是在设计阶段,在纸和笔上进行的.有些人可能会编写简单的程序,并使用自动化工具来度量和比较各种算法的原型实现,以帮助进行分析,但即使在这种高度假设的情况下,Java也不会是首选语言(Haskell,可能)。

为应用程序编写的实用(但理论上丑陋!)像Java这样的语言,通常在实现之前设计和分析算法,然后将其翻译成Java,然后根据需要对其进行概要分析和优化。此时,您应该已经知道算法的大O复杂度。

这对你来说可能是个惊喜,但是假设你有一个算法的实现,然后优化它,使它现在的速度是原来的两倍。大概三次。可能快十倍。可能要快一百万倍!

然而,就大O分析而言,它的复杂性仍然是一样的!如果你有一个线性算法,改进的百万倍-更快的优化版本仍然是线性的!如果它是二次的,它将保持如此!

这是因为常数因子在渐近分析中是不重要的(例如,随着输入大小走向无穷大,它增长的速度有多快?)。一百万是一个很大的数字,但它仍然只是一个常数。

另一个复杂的因素是,渐近分析实际上有一个阈值,在此阈值之后,边界保持不变。也就是说,对于较小的输入,这些边界可以被打破,但是从这个向无穷远的阈值开始,必须遵守边界。这使得通过测量进行自动分析非常困难,因为您不知道是否达到了阈值。

我建议阅读一些基本的计算机科学教科书来学习更多的这门学科。

有趣的事实:要知道程序是否会停止是不可能的。这就是所谓的停止问题。起初这听起来可能很荒谬,但这有许多严重的理论后果。

另请参阅

关于Java分析器的问题

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2642217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档