不使用哈希的高效查找?

2024-05-13 23:58:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在编写this Python program来实现ACO算法。简单地说,当蚂蚁开始下一步行动时,它知道(1)它在哪个节点上,(2)它还需要访问哪个节点。利用这些信息,它检查每个Edge的属性,以便选择下一个应该访问哪个Node。所以我让蚂蚁使用这些信息来查找相应的Edge。你知道吗

在内部,我使用dictNode对映射到Edge实例。最初,我对Node必须是可散列的限制表示满意。然而,这一直是一个限制,我并不特别喜欢强加,我想消除它,如果有可能的话。你知道吗

目前,我有一个Node类,它通过散列对象的__dict__.items()frozenset来实现__hash__,但对于涉及可变值的情况,这仍然会产生错误(到目前为止,它是我最不喜欢的类-有史以来)。你知道吗

到目前为止,我已经考虑过使用2D矩阵,但是通常的情况是EdgeNode相比很少,这将导致稀疏矩阵,因此浪费大量空间。我曾想过使用一个简单的列表,但后来我失去了超快速查找的能力。你知道吗

TL;DR:

我可以使用什么样的数据结构(如果实现是实心的,则首选)或自实现,以便在不涉及哈希生成的情况下从Node对中快速查找Edges?


Tags: 实例算法信息node利用属性节点情况
1条回答
网友
1楼 · 发布于 2024-05-13 23:58:08

与其直接散列节点,不如创建一个节点数组并为ant节点提供索引。您的密钥变成两个整数或者一个64位整数,其中一个索引位于高32位,一个索引位于低32位。它仍然是基于哈希的,但是实现起来非常简单。你知道吗

相关问题 更多 >