更新:对于以下问题,请参阅最长公共子序列方法的指示。
我遇到了一个案例,其中给出了一个集合地图,条目如下;
<A1, List1>
<A2, List2>
<B1, List3>
<B2, List4>
<C1, List5>
<C2, List6>
<D1, List7>
<D2, List8>
A)以固定的时间间隔,地图中的所有集合都会更新。
B)每次更新发生时,我都需要根据map键的组合在集合中找到元素的交集。使用上面的示例地图;
每次更新时,必须找到2个组合键的元素交集
(2 key combinations)
————————————————————
(A1-B1)
(A1-B2)
(A1-C1)
(A1-C2)
(A1-D1)
(A1-D2)
(B1-C1)
(B1-C2)
(B2-C1)
(B2-C2)
(B2-D1)
(B2-D2)
(C1-D1)
(C1-D2)
(C2-D1)
(C2-D2)
其次是;
C)找到3个组合键的交集
(3 key combinations)
————————————————————
(A1-B1-C1)
(A1-B1-C2)
现在找到3键组合A1-B1-C1,可以通过组合
的2个键组合来完成 (A1-B1) && (B1-C1) OR (A1-C1) && (B1-C1)
所以,如果我使用(A1-B1)&amp;&amp; (B1-C1),根本不需要找到(A1-C1)的组合,因为它是多余的。
D)如C中所述,如何找到找到更高组合键所需的最佳低键组合? 在实际场景中,我正在使用200多个键来获得可能的组合。请注意,较高的组合键只有几百种,而不是所有可能的组合。
(为约瑟夫的评论添加额外的澄清)
E)我需要找到(n-1)关键元组合的原因是因为它可以用于计算其他(n)关键元组。
继续上面的例子:
考虑一下我想要计算
的3键组合 (A1-C1-D1) AND (A1-C1-D2).
现在,不计算(A1-B1)的2键组合而是计算(A1-C1)。由于这样的事实,(A1-C1)的结果可以依次用于计算(A1-B1-C1),(A1-C1-D1)&amp;的三键,三键组合。 (A1-C1-D2)。在(A1-B1)的情况下,它只能用于计算(A1-B1-C1)的1个3键组合
F)因此,我想找到一种方法来找出可用于计算n-key元组组合的最优(n-1)个关键元组。
更新:了解如何使用最长公共子序列。