给定大量元素| M |具有恒定长度| m |,该算法可以索引| M |长度< | m |?

时间:2013-05-27 16:15:24

标签: math indexing compression codec hash

这个问题与语言无关,所以我要求所有的智能程序员以某种方式帮助我。

给出一组带有| M |的元素“M” = 2 ^ 128个元素。每个元素“m”的位长为128位。

我想发送长度为128位的消息。在这条消息中,我想要包含M的一个元素和一些信息“n”。这意味着,“m”和“n”必须长度

另一方拥有包含所有元素的完整集“M”,但我需要告诉他/她她/她必须使用哪个元素。该指令必须适合一个指令,不能分成几条消息。

所以,我想用algotithm f()索引我的元素,所以f(m)= index_of_m,index_of_m <128位。

换句话说,算法必须在索引上映射长度为128位的2 ^ 128个元素,这些元素的位数少于元素的长度(128位)。

再次正式:

集合:

M=(m1,m2,...mn) with n = 2^128

m1...mn: 128 bits.

的长度

消息"n" < 128 bit。消息长度是可变的,可以是1位。

索引/映射功能:f()

f(m1)=i1  Index 1 of element m1 with the length of i1 < 128 bit., so i1+n=128bit
Wanted: Function f().

思路:

-Hashes不会以简单的方式对元素进行散列,因为具有64位输出的散列可以对2 ^ 128个元素进行编码。具有128位输出的散列将耗尽整个消息,并且“n”将没有位置。

- 从1到2 ^ 128的索引将不起作用,例如,2 ^ 128将用完整个消息。

1 个答案:

答案 0 :(得分:2)

没有

如果通过&#34;一套&#34;你的意思是一个集合,即没有重复的元素和顺序无关紧要,那么你的M就是0..2 128 -1范围内所有整数的集合。

对于所有元素,没有M的所有元素的表示小于128位。如果有,那么只是通过计数,没有足够的表示来映射到所有元素,这是一个矛盾。