入力(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)を持つ一意キーを判別することはできません。そのためにどのような機能を使用できますか?