모든 말풍선에 대해 가장 낮은 그래프의 값을 찾으십시오.
i, j = current_edge = weightList[0]
current_min = graph[i][j]
for edge in weightList[1:]:
i, j = edge
if graph[i][j] < current_min:
current_min = graph[i][j]
current_edge = edge
당신은 당신이 시도하고 낮은 값을 찾기 위해 다른 모든 가장자리에 반복하여 weightList
에서 최초의 가장자리로 시작합니다. 루프를 종료하면 current_edge
이 가장 낮은 값의 가장자리입니다.
그렇다면 코드를 시도하고 이해하는 것이 가치가있을 수 있습니다. sorted
이 무엇인지 알고 있다고 가정합니다. weightList
을 정렬하기 위해 sorted
은 값을 반환하는 함수 인 key
을 사용합니다. 귀하의 경우 귀하의 함수는 의 값을 귀하의 가장자리에서 반환합니다. sorted
은이 값을 사용하여 가장자리를 서로 비교합니다.
따라서 가장 낮은 값을 가진 에지부터 가장 높은 값을 갖는 에지를 모두 정렬합니다. 그런 다음 일단 정렬되면 가장 낮은 값의 가장자리 인 첫 번째 요소를 가져옵니다.
알고리즘으로이 작업에 sorted
을 사용하는 것은 시간 복잡성이 O(n log n)
이므로 좋은 생각이 아닙니다. 비교해 보면, 내 알고리즘은 O(n)
입니다 (하지만 sorted
이 C로 구현되어 있기 때문에 속도가 느려질 수 있습니다). 대신, 당신은 확실히 가장 효율적이고 읽을 수있는 옵션이 세 가지 모두를 벗어 min
를 사용하여 표준 기능을 사용하여 O(n)
에서 같은 결과를 얻을 수 있습니다
edge = min(weightList, key=lambda (i,j): graph[i][j])
그것은 당신이 지금 선을 이해하는 것이 좋아요하지만 '는 외설 말 가치가있을 수도 있습니다 특히 효율적인 방법. 'sorted '대신'min'을 사용해야합니다. –