다음은 노드, 경로 등을 배우는 알고리즘 클래스에 대한 할당입니다.이 코드는 한 노드가 다른 노드에 도달 할 수 있는지를 확인하도록 설계되었습니다. 아래의 코드는 작동하지만 왜 불분명합니다. G는 각 노드가 키로 연결되어있는 값인 "노드"가있는 "그래프"입니다. 아래의 mark_component 함수는 주어진 노드에서 여러 개의 노드를 반환합니다.이 파이썬 함수는 숫자뿐만 아니라 사전을 어떻게 반환합니까?
그러나 두 노드에 도달 할 수 있으면 True를 반환하도록 설계된 check_connection 함수에서이 함수는 mark_component 함수를 호출 한 다음 노드가 사전에 있는지 테스트합니다.
check_connection은 빈 사전 "marked"로 시작한 다음이 사전을 사용하여 mark_component를 호출합니다. 그런 다음 노드가 추가됩니다. 그러나 mark_component는 숫자를 반환하므로 check_connection 함수가 표시된 내용을 "읽을 수 있습니까?" 그 기능에 관한 한, 나는 표식이 여전히 비어 있다고 생각했다. 아마 마크 된 것은 로컬 변수가 사전을 포함하고 있다고 가정했지만 그것은 분명히 다른 함수로 전달되어 변경 될 수 있습니다.
아무에게도 설명해 줄 수 있습니까? 많은 감사
def mark_component(G, node, marked):
marked[node] = True
total_marked = 1
for neighbor in G[node]:
if neighbor not in marked:
total_marked += mark_component(G, neighbor, marked)
return total_marked
def check_connection(G, v1, v2):
# Return True if v1 is connected to v2 in G
# or False if otherwise
marked = {}
mark_component(G, v1, marked)
return 'a' in marked
G = {'a': {'d': 1, 'g': 1}, 'c': {'g': 1}, 'b': {'f': 1},
'e': {'h': 1, 'f': 1}, 'd': {'a': 1, 'g': 1},
'g': {'a': 1, 'c': 1, 'd': 1}, 'f': {'b': 1, 'e': 1}, 'h': {'e': 1}}
print check_connection(G,'a', 'b')
이것은 다른 곳에서 아주 자세하게 설명되어 있습니다. 예를 들어 [here] (http://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable-by-reference/986145#986145)를 참조하십시오. –