我试图确定一个哈希函数,它接受输入 (i, k) 并确定一个唯一的解决方案。
(i, k) 的可能输入范围从 0 到 100。将每个 (i, k) 视为一个节点在三叉树中的位置。
Ex: (0, 0) can diverge to (1, 1) (1, 0) (1, -1).
(1, 1) can diverge to (2, 2) (2, 1) (2, 0).
此处给出的示例:
http://www.google.com/imgres?imgurl=http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/tutorials/stfhtmlimg1156.gif&imgrefurl=http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/tutorials/stfhtmlnode41.html&h=413&w=416&sz=4&tbnid=OegDZu-yeVitZM:&tbnh=90&tbnw=91&zoom=1&usg=__9uQWDNYNLV14YioWWbrqPgfa3DQ=&docid=2hhitNyRWjI_DM&hl=en&sa=X&ei=xAfFUIbyG8nzyAHv2YDICg&ved=0CDsQ9QEwAQ
我正在使用地图
map <double, double> hash_table
我需要从对 (i, k) 中确定一个键值以散列到该 (i, k) 的值
到目前为止,我只能提出线性函数,例如: double Hash_function(int i, int k)
{
//double val = pow(i, k) + i;
//return (val % 4294967296);
return (i*3.1415 + k*i*9.12341);
}
但是,我无法确定具有某个(i,k)的唯一键。我可以使用哪些功能来帮助我这样做?