编程语言
首页 > 编程语言> > java – 计算Big-O复杂性

java – 计算Big-O复杂性

作者:互联网

我最终会给这个程序一个类似60,000个400像素图像的输入文件,所以我试着想一想这个代码如何用大输入运行.为了便于阅读,我用“blah”和所有带有简单字母(nn,mm和kk)的ArrayList名称替换了不重要的东西.

        for (Perceptron P : nn){
            //blah
        }
        for (Perceptron P : mm) {
            //blah
        }
        for (Perceptron P : kk){
            //blah
        }

        for (Perceptron P : mm) {
            for (int i = 0; i < nn; i++) {
                //blah
            }
            for (int j = 0; j < kk; j++){
                //blah
            }
        }

        for (Perceptron X : nn){
            for (Perceptron Y : mm){
                //blah
            }
        }

        for (Perceptron Z : kk){
            for (Perceptron Y : mm){
                //blah
            }
        }

我认为答案是O(nn mm kk mm(nn kk)nnmm kkmm).如果我知道nn是400,mm是300,kk是10,那么这是O(246710).但是现在我被卡住了.我真的不知道O(246710)是什么意思.我是否必须一次仅针对其中一个变量计算big-O?如果是这样,那会有什么好处呢?我只是想知道这将如何表现.谢谢

解决方法:

Big-O仅涉及运行时间中的最大项,在这种情况下为O(mm *(nn kk)).生成此术语的代码部分是以下嵌套循环:

for (Perceptron P : mm) {
    for (int i = 0; i < nn; i++) {
        //blah
    }
    for (int j = 0; j < kk; j++){
        //blah
    }
}

如果你告诉我们kk,mm和nn与图像的实际大小有什么关系,那么我们可以用更有意义的术语来限制你的运行时间.

标签:java,big-o,time-complexity
来源: https://codeday.me/bug/20190727/1556502.html