我有2套A
和B
。
存在表格元素A
到B
的表格。
唯一需要注意的是,一对(表中的行)可以出现多次。
目标是按照标准定义的顺序订购A
的元素:
A
中的元素在表格中出现的次数是一个很好的元素。A
中与B
中的同一元素配对太多次的元素并不好。上述内容当然是定性的,我计划在测试算法时制作正确的量化版本(1
或2
影响好元素的概念)。
您能否建议我应该查看哪些算法和数据结构(如果已存在)?
编辑:一般来说,如果决定哪个元素在哪个之前,取决于两个几乎不是线性的因素,它是如何编写的?
就我而言,
A
中的一个元素几乎完全与B
中出现的相同元素配对,是一个非常“较少”的元素。即使它具有巨大的发生次数,它也会出现在其他所有事物之后。
我不知何故觉得这很混乱,想知道是否有一些资源/研究可以解决这类问题。
答案 0 :(得分:0)
您可以创建一个基本上是:
的结构struct
{
Element // 'A', for example
Count // total number of 'A' elements
HashMap(Element, count) // A hash map keyed by element ('B', for example),
// count is the number of times A is paired with B
Value // computed "quality", based on your criteria
}
如果您浏览映射表并构建这些结构的列表,则可以计算每个元素,并为每个元素计算与其他元素配对的次数。
然后,您可以使用您的条件来确定每个元素的值,最后按该值排序。
如何计算价值是一个悬而未决的问题。一个好的起点是将值1 / sqrt(count)相加。下表显示元素A多次与元素B,C和D配对,以及每个配对的结果值:
A B 1 1/sqrt(1) = 1/1
A C 4 1/sqrt(4) = 1/2
A D 16 1/sqrt(16) = 1/4
所以A的总得分是1 + 0.5 + 0.25,或1.75
您必须使用公式来满足您的需求。我发现,按计数划分太多了(即A-D会给出1/16)。除以平方根有助于最小化过度活跃的项目,但不会完全折扣它们。