所以我正在编写this Python program来实现ACO算法。简单地说,当蚂蚁开始下一步行动时,它知道(1)它在哪个节点上,(2)它还需要访问哪个节点。利用这些信息,它检查每个Edge
的属性,以便选择下一个应该访问哪个Node
。所以我让蚂蚁使用这些信息来查找相应的Edge
。你知道吗
在内部,我使用dict
将Node
对映射到Edge
实例。最初,我对Node
必须是可散列的限制表示满意。然而,这一直是一个限制,我并不特别喜欢强加,我想消除它,如果有可能的话。你知道吗
目前,我有一个Node
类,它通过散列对象的__dict__.items()
的frozenset
来实现__hash__
,但对于涉及可变值的情况,这仍然会产生错误(到目前为止,它是我最不喜欢的类-有史以来)。你知道吗
到目前为止,我已经考虑过使用2D矩阵,但是通常的情况是Edge
与Node
相比很少,这将导致稀疏矩阵,因此浪费大量空间。我曾想过使用一个简单的列表,但后来我失去了超快速查找的能力。你知道吗
我可以使用什么样的数据结构(如果实现是实心的,则首选)或自实现,以便在不涉及哈希生成的情况下从Node
对中快速查找Edge
s?
与其直接散列节点,不如创建一个节点数组并为ant节点提供索引。您的密钥变成两个整数或者一个64位整数,其中一个索引位于高32位,一个索引位于低32位。它仍然是基于哈希的,但是实现起来非常简单。你知道吗
相关问题 更多 >
编程相关推荐