繁体   English   中英

确定 function 的时间复杂度

[英]Determining time complexity of a function

我有一个计算机科学项目,我的任务是评估这个特定 function 的时间复杂度,并找出一种方法来优化它,方法是使用 hash ZC1C425268E68385D1AB5074C17A94 和数据结构,如集合。

def uber_friends(group, network, current_user):        
    if  current_user not in grumo:                 
        group.append(current_user)
        for x in range(0, len(network)):
            if current_user in network[x]:
                ind = network[x].index(current_user)  
                if ind == 0:
                    uber_friends(group, network, network[x][1])
                if ind == 1:
                    uber_friends(group,network, network[x][0])
    else:
        return None

    return group

为了澄清起见,“group”首先应该是一个空列表,network 应该是一个嵌套列表,其中内部列表中的元素是 2 个 int,current_user 应该是一个 int

弄清楚 function 的时间复杂度的第一步是使用一些示例输入来运行它——然后我们可以跟踪 function 并查看执行可能花费的时间。

uber_friends([], [], 1)
    uber_friends([], [], 1)
  File "test.py", line 2, in uber_friends
    if current_user not in grumo:
NameError: name 'grumo' is not defined

此异常在 function 的第一行引发,无论传递什么参数都会引发。 因此,function 的时间复杂度为 O(1)。

我们可以将实现简化为:

def uber_friends(group, network, current_user):
    raise NameError("name 'grumo' is not defined")

但这并不影响时间复杂度。 涉及数据结构的进一步优化既不可能也没有必要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM