为每个英语单词生成唯一序列号的算法

Upu*_*ara 2 algorithm

对于应用程序,我需要为每个英语单词生成唯一的序列号.

什么是最好的方法?

一个限制是序列号生成算法应该在普通台式计算机中非常有效.

谢谢

Tho*_*ini 7

你有所有可能的单词列表吗?如果是,则从第一个字的0开始,并将每个字的串行递增1.

如果没有,那么保证它们是唯一的简单方法是使用单词本身作为序列.例如,ABC = 0x41 0x42 0x43 = 4276803.正如评论中所建议的那样,还有其他方法(但需要更多工作),例如首先使用例如Huffman来压缩单词.

这当然会因长话而变得尴尬:例如,Pneumonoultramicroscopicsilicovolcanoconiosis系列需要大约100位数字.

否则你可以使用哈希,但不能保证它对所有英语单词都是唯一的.

  • 只是猜测,但也许这些贬值是关于第二段中过于强烈的主张,"唯一的方法"是使用你的ad-hoc算法.显然,这不是唯一的方法. (2认同)
  • 例如,另一种方法是压缩字符串,然后将压缩结果用作唯一值,就像使用未压缩字符串作为值一样.为这样的短字符串找到一个好的压缩方案需要一些工作,但是一种方法是根据从一长串英文单词计算的字母频率构建一个霍夫曼树 (2认同)

小智 6

您似乎在询问完美的散列函数.如果是这样,请查看这篇维基百科文章,以及gperf实用程序.