参考对象:{ 1, 5, 6, 9, 10, 11 }
其他对象:
A { 2, 4, 5, 6, 8, 10, 11 }
B { 5, 7, 9, 10 }
C { 2, 5, 6, 7, 9, 12 }
D { 1, 3, 4, 5, 6, 8, 9, 10 }
E { 6, 8 }
F { 1, 2, 3, 4, 7, 8, 9, 13, 15 }
... { ... }
难度:应该比O(n*m)快
结果应该是:
Array
(
[D] => 5
[A] => 4
[C] => 3
[B] => 3
[F] => 2
[E] => 1
)
慢速解决方案:
ref = array(1, 5, 6, 9, 10, 11);
foreach (A, B, C, D,.. AS row)
{
foreach (row AS col)
{
if ( exist(col, ref) )
{
result[row] += 1;
}
}
}
sort (result)
..这是一个解决方案,但它的速度很慢。
有没有像模式识别这样的另一种方法,希望在 O(log n) 中?
可以将每个对象保存为其他符号,例如:
ref = "15691011"
A = "2456811"
但我不知道这是否有帮助。