【发布时间】:2020-01-17 13:16:34
【问题描述】:
我正在尝试计算此图形绘制函数的时间复杂度。我认为时间复杂度为 O(N^2),因为 drap_graph 中有 2 个 for 循环,但 check_letters 函数让我不确定。
谁能帮我理解如何计算?
def check_letters(word1, word2):
if(word1 == word2):
return False
matches = []
letters = word1[-4:]
for char in letters:
if char in word2:
matches.append(char)
result = all(elem in matches for elem in letters)
matches = None
return result
def draw_graph(words):
G = nx.DiGraph()
G.add_nodes_from(words)
for word1 in words:
for word2 in words:
if(check_letters(word1, word2)):
G.add_edge(word1, word2)
nx.draw_networkx(G)
return G
draw_graph(words)
编辑:每个单词都是 5 个字母。
【问题讨论】:
-
如果词长有最大值,则为
O(n^2),否则还要考虑check_letters的复杂度 -
您不能忽略列表中每个单词的大小,因为
check_letters会遍历它们。
标签: python time-complexity big-o