【发布时间】:2015-12-31 07:38:23
【问题描述】:
为双哈希散列表大小选择哪些最佳素数?
侧面信息
- 哈希表是单词分析项目、马尔可夫模型、训练机器人建模和生成文本的一部分,就好像其他人会写一样(这需要大量的单词、句子、成绩单、书籍...... 语料库,更好)
- 我不熟悉围绕素数的大部分数学,但我会阅读你们提出的所有建议,然后尝试从那里开始
我的想法:
- 素数不应该太远/彼此靠近---->我不必经常增加大小,但哈希表不会半空(减少冲突,寻找负载因子和哈希表大小之间的理想比率)
- 最适合大型语料库 - 我不确定我必须选择的素数应该有多大,以前从未这样做过...
- 我还想过实现一个函数(不是散列函数),它只是将散列表的大小加倍,然后查找最接近的素数 ------> 但是它的运行时间为 O(n),因为素数只能被自身整除____(我必须检查直到当前哈希表大小的两倍的所有数字是否具有除零以外的余数,然后将大小增加一/转到下一个奇数并再次测试整个循环)________ ------>您可以想象这会非常慢,所以更好的方法是拥有一组固定的素数数字高达一百万(仅用于说明目的)左右,然后将它们用于任何大小更改
谢谢,如有任何其他问题,欢迎
【问题讨论】:
-
为什么必须动态地找到素数?为什么不预先计算一个 T[i+1] 大约为 2 * T[i] 的素数表 T 并在您的程序中对其进行硬编码?另外,您是否有某些原因要自己执行此操作,而不是简单地使用 python dict?
-
我实际上是在要求这样的数字,该函数只是我探索原因的另一个选择 - 我正在学习所有这些,我想使用我自己的哈希表,探索
标签: python hash hashtable primes double-hashing