首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三角化码的算法复杂度

三角化码的算法复杂度
EN

Stack Overflow用户
提问于 2013-12-14 16:02:48
回答 1查看 100关注 0票数 0

对于稀疏mxn矩阵A(n是偶数,m=3n/2-2)的三角化,我有以下(部分)代码:

代码语言:javascript
运行
复制
y=0;
for k=1:n
if(mod(k,2)==0)
    y=y+1;
end
    for j=k+1:n
        A(k,j)=A(k,j)-tau*U(k,k);
        if (k<=n-2)
            for i=n-1:n
                A(i,j)=A(i,j)-tau*U(i,k);
            end
        end
        for i=n+1:n-2+y
            A(i,j)=A(i,j)-tau*U(i,k);
        end            
    end
end

我感兴趣的是,作为m和n的函数,它的精确算法复杂度(在大O表示法中)。由于if分支,我得到了不同的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 18:38:02

代码语言:javascript
运行
复制
y=0;
// n times
for k=1:n
    // some constant complexity stuff
    // it basically sets y to floor(k/2)
    if(mod(k,2)==0)
        y=y+1;
    end
    // n-k times
    for j=k+1:n
        A(k,j)=A(k,j)-tau*U(k,k);
        // executed everytime except the last few iteration of the outermost loop
        if (k<=n-2)
            // constant complexity
            for i=n-1:n
                A(i,j)=A(i,j)-tau*U(i,k);
            end
        end
        // executes y-2 times
        for i=n+1:n-2+y
            // so we basically need to bound the number of times this is executed
            A(i,j)=A(i,j)-tau*U(i,k);
        end            
    end
end

k-th迭代中,中间循环迭代n-k时间,最后一个最内部循环迭代y-2,即floor(k/2)-2时间(不管j)。

因此,最内部的赋值为k=1:n时间执行Θ(n^3),即Θ(n^3)

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

https://stackoverflow.com/questions/20585325

复制
相关文章

相似问题

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