[英]Implementing Shortest Path Algorithm Dijestra
在下圖中實現 Dijestra 算法,比較時 < 運算符出現錯誤:
if new_dist < next.get_distance():
錯誤 Function: heapq.heapify(unvisited_queue)
錯誤:
我們不介意讀者,所以如果您向我們展示您的代碼會更好。
但純粹基於您提供給我們的一點點信息。 您似乎使用“頂點”作為數據結構,而 Python 不知道如何比較兩個頂點結構。
一個很大的可能性是您將(距離,頂點)之類的項目放入堆中,並期望堆能夠對它們進行排序。 但是如果堆中的兩個對象具有相同的距離,則 (distance, vertex1) 和 (distance, vertex2) 最終會比較 vertex1 和 vertex2。
您可以讓您的頂點有一個比較 function,或者您可以保留一個計數器,並通過編寫以下內容將內容添加到堆中:
counter += 1
heapq.heappush(heap, (distance, counter, vertex))
這樣您就可以放心,永遠不會比較頂點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.