我有 200 个字符串。每个字符串与其他所有字符串都有关系(由 0 和 1 之间的 float 衡量)。这种关系是双向的;也就是说,关系 A/B == 关系 B/A。这会产生 n(n-1)/2 个关系,即 19,800。
我想做的是将这些关系存储在一个查找表中,以便给定任意两个词我可以快速找到关系值。
我使用的是 C++,所以我可能会使用 std::map 来存储 LUT。问题是,用于此目的的最佳 key 是什么。
key 需要是唯一的,并且需要能够从两个词中快速计算出来。
我的方法是为每个单词对创建一个唯一标识符。例如,给定单词“apple”和“orange”,然后我将它们组合在一起作为“appleorange”(按字母顺序,最小的在前)并将其用作键值。
这是一个好的解决方案还是有人可以提出更聪明的建议? :)
最佳答案
基本上,您是在描述一个具有两个参数的函数,并添加了参数顺序不重要的属性。
如果您在更改顺序时单词之间没有歧义,您的方法就会奏效(我建议在两个单词之间放置一个逗号或类似符号以消除可能的歧义)。任何二维数组也可以。
在尝试查找关系值之前,我可能会将每个关键字转换为某个唯一标识符(使用简单的映射),但它与您的提议没有太大变化。
关于c++ - 给定 200 个字符串,什么是键控关系值 LUT 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711450/