Python 如果我知道k<;=N

Python 如果我知道k<;=N,python,algorithm,complexity-theory,Python,Algorithm,Complexity Theory,我有以下算法: def neat_algorithm(n, k): assert k <= n assert k > 0 sum = 0 for i in range(n): for j in range(n): sum += 1 for i in range(n-k,n): sum += 1 def整洁算法(n,k): 断言k0 总和=0 对于范围(n)中的i: 对于范围(n)内

我有以下算法:

def neat_algorithm(n, k):
    assert k <= n
    assert k > 0

    sum = 0

    for i in range(n):
        for j in range(n):
            sum += 1

    for i in range(n-k,n):
        sum += 1
def整洁算法(n,k):
断言k0
总和=0
对于范围(n)中的i:
对于范围(n)内的j:
总和+=1
对于范围内的i(n-k,n):
总和+=1

乍一看,该算法的运行时间似乎是Θ(n^2)+Θ(k),但除非1,否则它将失败≤ K≤ n、 如果k=n,则会出现最坏的情况。既然我知道关于k的这些事情,那么说最坏情况下的运行时间实际上是Θ(n^2)+Θ(n),或者更确切地说是Θ(n^2),或者我需要在运行时间的语句中保留k吗?在这种特殊情况下,你可以简化Θ(n2+k)=Θ(n2),因为k≤ N≤ n2,所以n2项占主导地位


一般来说,即使0是的,可以说它是Θ(n^2)。(这不仅仅是一个理论问题:一些在连通图上工作的算法有运行时间| E |+| V |,通常被简单地引用为| E |,因为它限制了| V |。)添加了一些代码来澄清我的意思不是“做事情”对循环行为有任何影响。这非常有用,谢谢!听起来我可以在我的具体例子中简化并去掉k,因为k不影响渐近占优的n项,我碰巧知道剩下的k项不可能比n项更渐近占优,是吗?是的。例如,有时可能有两个术语,如O(n+k^2),其中两个术语都不占主导地位,因此无法简化,但您所描述的是正确的。