我有一个类表示图中的无向边。每条边都有两个成员 vertex1
和 vertex2
代表它连接的顶点。问题是,一条边可以指定两个方向。我现在的想法是将边的散列定义为其顶点散列的总和。这样,方向不再起作用,散列将是相同的。这有什么陷阱吗?
最佳答案
我不得不解决一个类似的问题,发现使用散列的总和作为散列会导致太多的冲突。哈希总和的分布不够分散。
我发现使用哈希的乘积会导致更少的冲突。这当然取决于各个顶点的哈希值的性质。
设置一个测试台并测试一些对称哈希函数,然后根据冲突选择最佳函数。
你可以试试
h(x,y) = x+y
h(x,y) = x*y
h(x,y) = x * y + (x ^ y)
h(x,y) = x *y + x + y
其中 x^y = min(x,y)
关于python - 将对象的散列定义为其成员散列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021868/