2个坐标的快速哈希,顺序无关紧要?

And*_* Gu 7 python hash key hashmap hashcode

有一个公式是2个坐标(a,b)和(c,d)到a,b,c和d为正的一个整数的单向散列吗?为了事在这里,所以给当公式应该给予同样的结果(a, b), (c, d)(c, d), (a, b).每个坐标点中实际数字的顺序很重要((a, b)与之不同(b, a)).速度是关键,公式应该快,并且具有O(1)复杂度.

注意 - 我现在正在做的是使用Python的sort在sort中对这两个坐标进行排序,然后在Python的内置字典中使用它们作为键(因此,内置散列).我需要一种更快的方法来执行此操作,以便我可以自己将两个坐标哈希到一个整数.

Ray*_*ger 5

您可以为此使用Frozensethash()

>>> hash(frozenset([(10, 20), (11, 22)]))
1735850283064117985
>>> hash(frozenset([(11, 22), (10, 20)]))
1735850283064117985
Run Code Online (Sandbox Code Playgroud)

冻结集是专门为这种用例设计的(即,冻结集本质上是无序的,是不可变的和可哈希的)。

希望这个答案将您的权利带给您所需要的:-)