나는 다른 친구에게 두 친구가 주어 졌을 때 친구가 친구라는 것을 의미하는 링크가 있으면 true를 반환하고 관련이없는 경우 false를 반환하는 기본 방법을 쓰라고 요청 받았다. (어느 친구 목록에도 아무도 연결되어 있지 않습니다.)이 초보 그래프 검색의 최악의 시간 복잡도는 얼마입니까?
def is_linked(friend_a, friend_b, visited = {}):
is_found = False
friends = friend_a.get_friends()
# You can assume this method is O(1)
if friends.contains(friend_b):
return True
visited[friend_a] = 1
for friend in friends:
# Prevents infinite recursion
# Assume O(1)
if friend in visited:
next
is_found = is_linked(friend, friend_b, visited)
if is_found:
last
del visited[friend_a]
return is_found
이 알고리즘의 최악의 경우 시간 복잡도는 무엇입니까 :
이 사람이 작업을 한 후, 여기에 우리가 함께 제공되는 기본 알고리즘은? 우리는 각각 우리 자신의 대답을 생각해 냈습니다. 우리가 합의에 이르지 못했기 때문에 여기서 독립적으로 검증하기를 희망합니다.
'O (n^2)'를 닮았습니다. –
@AaronMiller - 답변을 설명에 넣어 주시겠습니까? – Dave
'방문한 친구가 있다면'어떤 비용을 부담합니까? 'O (1)'이면 모든 것이'O (n)'입니다. 그렇지 않으면 아론이 옳다고 생각합니다. – dlp