파이썬에서 random 함수로 (x,y) 좌표를 추출하여 최소 거리를 구한후, 해당 좌표를 저장하기
조회수 2568회
제가 (x,y) 형태의 노드로 이뤄진 리스트 V에서, 특정 elements 2개를 random으로 추출하여 두 점 사이의 최소 거리를 반복적으로 구하려고 합니다. 이렇게 코드를 작성하였는데 dist를 설정할 때 오류가 납니다.... 왜 그런 것일까요? 참고로 while len(V) > 0이라는 조건을 붙인 것은 최소 거리를 나오게끔 하는 node를 추출하여 new_path라는 또 다른 리스트에 보관하기 위해서 입니다. V의 원소가 하나도 없는 경우 while을 탈출하기 위해서에요.
import random
import math
def pita(p1, p2):
return math.sqrt( (p1[0] - p2[0]) **2 + (p1[1] - p2[1]) **2 )
new_path = [ ] # 빈 리스트 만들기
while len(V) > 0:
min_dist = None
min_index = None
# min_index 찾기
index= random.randint(0,len(V))
for i in range(len(V)):
dist = pita( V[i], V[index]) # V와 new_path 리스트로 dist를 구하기
if min_dist == None or min_dist > dist:
min_dist = dist
min_index = i
#원소 min_index를 V에서 빼고 new_path에 추가하기
temp_V.pop(i)
new_path.append(i)
# new_path 반환
return new_path
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력