我對貪婪執行旅行商問題有以下代碼。我無法將這個代碼中lambda函數的功能包裹起來。在此代碼中執行的lambda函數是什麼?
def distance(p1, p2):
return ((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2) ** 0.5
def tsp_greedy(points, start=None):
if start is None:
start = points[0]
to_visit = points
path = [start]
to_visit.remove(start)
while to_visit:
closest = min(to_visit, key=lambda x: distance(path[-1], x))
path.append(closest)
to_visit.remove(closest)
return path
我意識到它正在創建一個x傳入的匿名函數。但我不確定傳遞給這個函數的是什麼。什麼是x?
x是'to_visit'迭代中的每個值。 'min()'爲每個值計算'key'值,'key'函數的值最低時返回值。 –
這個答案解決你的問題嗎? http://stackoverflow.com/a/18296814/406423 – MadMike
它遍歷路徑中的所有項目,將當前正在訪問的項目作爲x傳遞,並與路徑中的下一個路徑進行比較(如路徑[-1]) 獲得最小距離。 – SerialDev