由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - hash table的size为什么最好是个质数? (转载)
相关主题
请教一个关于字符指针的简单问题telnet的显示字符?
问个字符串的基本问题今天去interview, 被一个老印搞掉了
C ++ 问题内存管理的问题
EOF一问四道C++面试题
一个面试题目,用C实现请教一个简单字符串程序 (转载)
这段代码为何要这样做?typedef const char *month Table[3]
初学C,对什么该free一直搞不明白A question about cost char*
如何动态分配内存来存储输入的不定长的字符串,char not string类型的在c中如果一个function return 一个字符串
相关话题的讨论汇总
话题: 互质话题: hash话题: uniform话题: 分布话题: char
进入Programming版参与讨论
1 (共1页)
s****A
发帖数: 80
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: studyA (Algorithm), 信区: JobHunting
标 题: hash table的size为什么最好是个质数?
发信站: BBS 未名空间站 (Mon Feb 18 17:32:47 2013, 美东)
而且书上还说,如果来search字符串的话,最好这样计算hash function
( char[0] x s^n + char[1] x s^(n-1)+...+char[n] )% M
这里如果s和M不互质的话,就会导致得到的index分布不uniform
我没想明白为什么,我怎么觉得不管是否互质,只要输入分布uniform得到的index还是
在0到M-1之间uniform分布的啊
谁能给举个例子说明一下s和M不互质的情况下会出什么问题?
最好是例子,一看就明白
谢谢!
X****r
发帖数: 3557
2
输入未必是均匀分布的。s和M互质可以最大范围地使用输入每一个字符的信息。
极端一点,M=s,那hash就等于输入的最后一个字符,前面全部没有用上。
或者比如s=256,M=1024,那只有输入的倒数第二个字符的最低两位和
最后一个字符起了作用。

【在 s****A 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: studyA (Algorithm), 信区: JobHunting
: 标 题: hash table的size为什么最好是个质数?
: 发信站: BBS 未名空间站 (Mon Feb 18 17:32:47 2013, 美东)
: 而且书上还说,如果来search字符串的话,最好这样计算hash function
: ( char[0] x s^n + char[1] x s^(n-1)+...+char[n] )% M
: 这里如果s和M不互质的话,就会导致得到的index分布不uniform
: 我没想明白为什么,我怎么觉得不管是否互质,只要输入分布uniform得到的index还是
: 在0到M-1之间uniform分布的啊
: 谁能给举个例子说明一下s和M不互质的情况下会出什么问题?

c*********e
发帖数: 16335
3
index分布不uniform很正常,每个key对应的是一個linkedlist.

【在 s****A 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: studyA (Algorithm), 信区: JobHunting
: 标 题: hash table的size为什么最好是个质数?
: 发信站: BBS 未名空间站 (Mon Feb 18 17:32:47 2013, 美东)
: 而且书上还说,如果来search字符串的话,最好这样计算hash function
: ( char[0] x s^n + char[1] x s^(n-1)+...+char[n] )% M
: 这里如果s和M不互质的话,就会导致得到的index分布不uniform
: 我没想明白为什么,我怎么觉得不管是否互质,只要输入分布uniform得到的index还是
: 在0到M-1之间uniform分布的啊
: 谁能给举个例子说明一下s和M不互质的情况下会出什么问题?

1 (共1页)
进入Programming版参与讨论
相关主题
在c中如果一个function return 一个字符串一个面试题目,用C实现
请教如何修正这个C程序的bug。这段代码为何要这样做?
这个程序怎么解决初学C,对什么该free一直搞不明白
Re: 问个google面试题 (转载)如何动态分配内存来存储输入的不定长的字符串,char not string类型的
请教一个关于字符指针的简单问题telnet的显示字符?
问个字符串的基本问题今天去interview, 被一个老印搞掉了
C ++ 问题内存管理的问题
EOF一问四道C++面试题
相关话题的讨论汇总
话题: 互质话题: hash话题: uniform话题: 分布话题: char