假设有一个单词集,我想根据它们的字符包(多重集)对它们进行聚类。例如
{茶、吃、阿爸、阿阿、你好}
将被聚类成
{{茶,吃},{abba,aabb},{你好}}。
abba
and aabb
聚集在一起是因为它们具有相同的字符包,即两个a
和两个b
.
为了提高效率,我能想到的一个天真的方法是将每个单词转换为 char-cnt 系列,例如,abba
and aabb
都将转换为a2b2
,茶/吃将转换为a1e1t1
。这样我就可以建立一本字典并用相同的键对单词进行分组。
这里有两个问题:首先,我必须对字符进行排序以构建密钥;其次,字符串键看起来很别扭,而且性能不如char/int键。
有没有更有效的方法来解决问题?
为了检测字谜,您可以使用基于素数乘积的哈希方案A->2, B->3, C->5
等等将给出“abba”==“aabb”==36(但不同的字母到素数映射会更好)
看我的回答here https://stackoverflow.com/a/14739948/905902.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)