假设我有两个列表,每个列表包含一个公共超集的不同子集,是否有算法可以给我一个相似度测量?
示例:
A = { John, Mary, Kate, Peter } 和 B = { Peter, James, Mary, Kate }
这两个列表有多相似?请注意,我并不知道公共超集的所有元素。
更新:我之前的描述不够清晰,可能对“集合”这个词的使用不够严谨,深表歉意。澄清一下:顺序很重要。如果相同的元素在列表中占据相同的位置,那么该元素的相似度最高。相同元素位置相差越远,相似度就越低。如果元素只存在于其中一个列表中,相似度就更低。
我甚至可以增加一个额外的维度,即较低的索引值更为重要,所以 a[1] == b[1] 的价值高于 a[9] == b[9],但这主要是因为我很好奇。
回答:
我会探索两种策略:
- 将列表视为集合,并应用集合操作(交集、差集)
- 将列表视为符号字符串,并应用Levenshtein算法