[英]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.